01
設計概述
Design Introduction
1.1 設計背景 隨著信息技術的發展,人機交互技術逐漸由以鍵盤、鼠標等基于圖形用戶界面的方式,轉變為以模擬和類似人類感知傳輸的信息類型。其中,手勢識別因其具有的自然、直接、有效的交互特點,越來越受到研究人員的關注。傳統的手勢識別,需要借助配置有傳感器的手套來確定具體的手勢形態,成本高且操作不便,不具有推廣性。基于機器視覺的手勢識別技術,突破硬件局限,從模式識別算法層面革新人機交互方式,更適應未來人機交互發展趨勢。機械臂作為現代工業領域自動化智能加工中最常見的執行終端,通過各個關節的協調運動與機械末端的配合,可進行多自由度模擬仿真。通過對舵機進行控 制設計,使機械臂能夠完成抓取分揀、連續動作,從而使其具有比人手更好的動 作組合靈活性和指令完成準確性。
1.2 作品概述
本作品基于機器視覺,聚焦手勢識別,利用攝像頭獲取單目圖像信息,基于 PYNQ 實現手勢分割、手勢建模、手勢形狀特征提取,對八種不同手勢圖像進行識別,以舵機控制的機械臂模塊作為響應終端,借助手勢變化來控制機械臂執行兩種功能:一是按指令分揀物體,二是“井字游戲”人機大戰。
1.3 應用領域
本作品將手勢識別作為人機交互方式,以機械臂作為響應終端,設計了兩種基于上述交互方式和響應終端的展示功能。按指令分揀物體,本質上是對機械臂進行開環控制,延長人手作用范圍,對于操控大型機械進行物體分揀的工業自動化領域或物流行業,都有極好的應用前景。“井字游戲”人機大戰,僅僅是將手勢識別結合機械臂控制、簡單的人工智能技術進行組合開發的例子,“手勢識別 +”的探索永無止境,在娛樂領域、醫療領域、教育領域、智能家居領域都有著廣泛的應用前景。
02
系統組成及功能說明
System Construction & Function Description
2.1 系統組成
本系統以 Xilinx ZYNQ SoC 作為主控制芯片,分為處理器模塊、攝像頭模塊、顯示器模塊、舵機驅動模塊、通訊傳輸模塊。通過攝像頭模塊捕捉手勢圖像信息,在處理器模塊中完成手勢分割、手勢建模、手勢形狀特征提取、手勢識別,手勢識別的過程及結果通過顯示器展示,通過處理器內部不同功能的邏輯運算,將對應的動作指令通過相應的 PWM 信號輸出給各個舵機,驅動六自由度機械臂完成要求動作,從而實現對應的組合功能。
2.2 手勢識別核心算法
本作品所采用的是靜態手勢識別算法,算法核心主要由手勢特征分析、手勢特征建模及手勢識別三部分組成,整體框架如上圖所示。首先通過圖像采集設備來獲取手勢圖像,通過手勢建模將獲取的手勢圖像用數學模型描述出來,最后根據得到的手勢識別所需要的模型參量判別出具體的手勢形態。
2.2.1 圖像預處理
圖像預處理,由四個主要步驟組成,分別為定義識別區域、顏色空間轉換、 膨脹處理、高斯濾波。定義識別區域,主要用來減小識別區域面積,從而提高識 別效率。顏色空間轉換,通過將攝像頭捕捉到的 RGB 顏色空間下的圖像信息轉 化為 HSV 顏色空間下的圖像信息,便利后續對背景和手部進行顏色分割。膨脹 操作,使得識別區域高亮區域增長,消除手部內的噪聲點。高斯濾波,通過加權 求和的方式,消除圖像內的高斯噪聲點。
2.2.2 手勢分析
利用道格拉斯-普克(Douglas-Pucker)算法,將手部輪廓擬合為多邊形曲線, 同時計算面積,以得到輪廓內手部面積最大的手部輪廓。在此基礎上,分別計算 出輪廓總面積(areacnt)、輪廓中手的面積(areahull)、以及手的面積占輪廓總面 積的百分比(arearatio)。與此同時,得到最大輪廓面積中的凸缺陷(即凹陷)數 (defects),并通過計算凸缺陷中起始點、終點、離起始點終點連線最遠處的點構 成的三角形的高(d)和頂角(angle)值,來去除因噪聲而得到的凸缺陷點,得 到消除噪聲點后的凸缺陷數(l)。 2.2.3 手勢識別
由手勢分析后得到的模型參量通過上述手勢識別流程圖后,輸出“0”“1” “2”“3”“4”“5”“ok”“best of luck”八種手勢識別結果,以便后續對結果進行使用。
2.3 “井字游戲”人機大戰算法設計
2.3.1 游戲規則及數字化設置 游戲規則 游戲對戰的雙方執不同棋子,輪流在 3×3 的九宮格中落子,但凡在橫排、 豎排、對角線上出現三子相同的情況,則執該子的一方勝。 數字化設置 現在對九宮格的九個位置編碼為九個二維坐標(x,y)(x=1,2,3;y=1, 2,3),并賦值為 1,效果如下圖所示。
一方執“0”,一方執“2”,落在哪個坐標位置上,就把那個坐標位置對應的 值改為“0”或“2”。每次落子后,分別對每排、每列、每對角線上的三個值求和(和可取 0,1,2,3,4,5,6),如果出現“0”則執“0”的一方勝,如果出 現“6”則執“2”的一方勝。 2.3.2 機器端落子優先級設計 假設人執“0”子,機器執“1”子 (1)中間、邊上、角上三種位置的獲勝方式分別為
所以優先落中間,其次落角上,最后落邊上。
(2)情況優先級
第一優先級:如果出現“1”,立即將(0,0,1)中的“1”置 2,攔截人勝利。 第二優先級:如果出現“5”,立即將(1,2,2)中的“1”置 2,機器取得游戲勝利。 第三優先級:如果出現“4”,且不是“死路”的情況,則將(1,1,2)中任 意一個“1”置 2。 2.3.3 算法流程圖
2.4 模塊介紹
2.4.1 處理器模塊
本作品采用基于 ZYNQ-7020 芯片的 PYNQ-Z2 開發板進行系統開發。ZYNQ 分為 PS(Processing System)和 PL(Programmable Logic)兩部分,在 PS 上運 行 Linux 操作系統,在 Linux 操作系統上運行 Python,通過調用 PYNQ 中的庫Overlay,對連接到 PS 端的接口進行解析,進而控制 FPGA 邏輯資源,加速系統 數據處理。
對于本作品中所設計的基于機器視覺的手勢識別算法和“井字游戲”人機大 戰算法,直接利用硬件語言進行編寫在邏輯上十分復雜,故采用 Python 進行編程實現,利用 FPGA 對圖像處理部分進行硬件加速,不僅提高了圖像處理速度, 還更好地擴展了圖像應用。
2.4.2 攝像頭(圖像采集)模塊
本作品的手勢指令輸入由攝像頭采集完成。采用奧尼 C11 款的高清攝像頭對手勢進行畫面捕捉,通過 USB 完成圖像輸入。相比于傳統的傳感器手套對手勢姿態的采集,攝像頭減輕了硬件端的負擔,使得整個系統可推廣性更好。
2.4.3 機械臂(舵機)模塊 本作品使用的機械臂,是 Learm 公司開發的一款六自由度機械臂,能通過上 位機對其進行動作設計,通過 PWM 控制舵機運轉,從而完成抓取和連續復雜動作兩種不同的模式功能。舵機(機械臂)模塊與處理器的模塊采用 UART 串行通信,采用下述通信協議進行指令交互。
2.4.4 顯示器(圖像輸出)模塊
采用顯示屏作為圖像輸出端,展示手勢識別圖像處理過程及結果,不僅利于 過程中的算法調試與驗證,并且具有更好地視覺效果。 2.5 功能說明 2.5.1 手勢識別 本作品可以對常用的八種手勢進行識別處理,分別為“0”“1”、“2”、“3”、 “4”、“5”、“Best of luck”、“ok”。啟動系統后,在攝像頭端擺出相應手勢,及完 成手勢輸入,顯示器會顯示出對應的識別結果。顯示器畫面,有矩形框定位識別區域,在該矩形框中會有多邊形框出手部輪廓,右上方會顯示識別結果。當識別區域沒有放入手進行識別時,顯示器畫面靜止。
2.5.2 機械臂驅動 機械臂動作設計及存儲機制
機械臂內部封裝有存儲“動作組”的部件,用來存儲動作指令。用戶如果要 進行動作設計,在機械臂通電的情況下,通過 USB 通信與電腦端上位機進行連接,在上位機中設置傳輸給六個舵機的 PWM 值,形成一個包含這個動作指令的 “動作組”,下載進存儲部件以便后續調用。
機械臂驅動機制
通過 UART(串口通信)的方式來調用“動作組”,進而驅動機械臂完成相 應動作。這里需要注意的是,必須將處理器模塊與機械臂模塊進行“共地”操作, 否則二者無法完成通信,機械臂不能按指令動作。
2.5.3 功能 1:按指令分揀物體 預設四個不同的區域,分別編號為“1”“2”“3”“4”,作為一組一維位置坐 標。設計機械臂在四個不同區域內抓取、放開動作,共八個動作組。手勢輸入“ok”, 告訴系統下一個輸入的是初始坐標。待控制板上亮起指示燈后,通過人眼觀測物 體初始位置坐標,通過手勢輸入該坐標(可輸入“1”、“2”、“3”、“4”)。待控制板上亮起指示燈后,手勢輸入“5”,告訴系統下一個輸入的是初始坐標。待控制板上亮起指示燈后,通過手勢輸入目標位置坐標(可輸入“1”、“2”、“3”、“4”)。用戶端操作結束,發送指令給機械臂完成分揀全過程。機械臂依次完成抓取、移動、放下,即完成一次按指令分揀。
2.5.4 功能 2:“井字游戲”人機大戰 游戲規則參看“2.3‘井字游戲’人機大戰算法設計”。手勢輸入“ok”,告訴 系統接下來輸入人落子的坐標區域(x,y)。待控制板上亮起指示燈后,手勢輸 入“5”,告訴系統接下來輸入橫向坐標(可輸入“1”、“2”、“3”),待控制板上 亮起指示燈后,輸入縱向坐標(可輸入“1”、“2”、“3”)。用戶端操作結束,可 以發送指令給機械臂完成人落子的操作,機械臂完成在棋盤上的人落子操作后, 繼續完成機器落子操作。依次進行下去,直至出現有一方勝利。亮紅燈表示“人 贏”,亮綠燈表示“機器贏”,亮白燈表示“平局”。
03
作品成效總結與分析
Summary and Analysis of the Effect of the Works
3.1 系統測試性能指標
3.1.1 手勢識別
本作品算法下的手勢識別功能,在 FPGA 加速下能較好地平衡識別次數和識 別時間的沖突。根據測試結果,本作品取 60 作為整個作品的手勢識別循環次數。
3.1.2 機械臂驅動 機械臂能通過用戶端“動作組”的設計,進行抓取、移動等連續復雜動作, 具有很好的靈活性。作為機電設計的響應終端,能很好地完成多種功能的指令要求。
3.1.3 按指令分揀物體
“按指令分揀物體”能很好地完成初始坐標輸入、目標位置輸入,同時能在 較短的時間內快速完成抓取與投遞。 3.1.4 “井字游戲”人機大戰
“井字游戲”算法能很好地遍歷所有可能結果,所以人和機器對戰只會出現 “平局”、“機器贏”兩種結果。并且,較為穩定、準確的機器識別以及人工智能 算法,能夠使整個游戲流暢進行。“手勢識別”結合“機械臂”具有很強的視覺觀賞性,與此同時,游戲的模式使整個功能更具有趣味性。 3.2 成效得失對比分析
本作品整體而言,不僅將手勢識別功能實現,還在此基礎上結合機械臂運動特點進行了多功能開發,總體完成度較高,視覺效果較好,兼具靈活性、趣味性及可拓展性。開發本作品采用的手勢識別算法,為了得到較高的識別精度,必須要以延長識別時間、增加單次識別次數作為犧牲,使得在應用開發時增加較多的時間負擔,不能夠凸顯人機交互的便利性。從手勢識別算法及對識別結果的處理技術層面出發,整個作品還有較大提升空間。
3.3 創新特色總結展望 本作品使用最新的基于機器視覺的手勢識別技術作為人機交互方式,革新人 機交互的使用體驗,具有極佳的技術前瞻性。使用機械臂作為執行終端,貼近目前工業設計的最新潮流。在設計功能時,基于數學建模,設計出更具有人機互動性質的小游戲,體現人工智能的靈活與智慧。 機電一體化開發,充分發揮基于 Python 編程的代碼靈活的特點,以實現復 雜算法,利用 FPGA 硬件加速的優勢,提高視覺處理速度。 在本作品的基礎上,優化識別算法,加快識別速度,提高識別精度,“手勢 識別+”將在未來發揮出自身更強的優勢,在教育領域、娛樂領域、工業領域、 醫療領域、智能家居領域都具有越來越廣闊的應用前景。
上一篇:PLC控制柜設計接線圖和原理圖
下一篇:無處不在的無刷電機,你了解多少?
- 熱門資源推薦
- 熱門放大器推薦
- 利用驗證框架 JAIST揭示開源自動駕駛系統的安全漏洞
- 現代汽車集團擬采用VR模擬器替代道路測試 提升未來車型的競爭力
- 研究人員開發光驅動致動器 可用于驅動水下機器人
- 吉利將發射“千里浩瀚”衛星,實現輔助駕駛系統與衛星功能深度融合
- 以鴻道工業操作系統為核心 打造工業智能機器人新生態
- UNIST研發出新表面處理技術 延長下一代鋰金屬電池的壽命
- 車載SerDes芯片行業的"DeepSeek"時刻——瑞發科HSMT SerDes閃耀2025上海車展
- 豐田顛覆傳統,固態電池明年就能量產,最受傷的將是中國?
- 基于恩智浦與onsemi的駕駛員監控系統方案
- 機器人行業周報|5月27日:宇樹G1格斗賽、人形機器人技術與場景融合趨勢