• 正文
    • 01、設計概述
    • 02、系統(tǒng)組成及功能說明
    • 03、作品成效總結與分析
  • 相關推薦
申請入駐 產業(yè)圖譜

基于FPGA的手勢識別的多功能機械臂

05/26 14:47
463
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大俠好,歡迎來到FPGA技術江湖,江湖偌大,相見即是緣分。大俠可以關注FPGA技術江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。

01、設計概述

1.1設計背景

隨著信息技術的發(fā)展,人機交互技術逐漸由以鍵盤、鼠標等基于圖形用戶界面的方式,轉變?yōu)橐阅M和類似人類感知傳輸的信息類型。其中,手勢識別因其具有的自然、直接、有效的交互特點,越來越受到研究人員的關注。傳統(tǒng)的手勢識別,需要借助配置有傳感器的手套來確定具體的手勢形態(tài),成本高且操作不便,不具有推廣性?;?a class="article-link" target="_blank" href="/tag/%E6%9C%BA%E5%99%A8%E8%A7%86%E8%A7%89/">機器視覺的手勢識別技術,突破硬件局限,從模式識別算法層面革新人機交互方式,更適應未來人機交互發(fā)展趨勢。機械臂作為現代工業(yè)領域自動化智能加工中最常見的執(zhí)行終端,通過各個關節(jié)的協(xié)調運動與機械末端的配合,可進行多自由度模擬仿真。通過對舵機進行控 制設計,使機械臂能夠完成抓取分揀、連續(xù)動作,從而使其具有比人手更好的動 作組合靈活性和指令完成準確性。

1.2作品概述

本作品基于機器視覺,聚焦手勢識別,利用攝像頭獲取單目圖像信息,基于 PYNQ 實現手勢分割、手勢建模、手勢形狀特征提取,對八種不同手勢圖像進行識別,以舵機控制的機械臂模塊作為響應終端,借助手勢變化來控制機械臂執(zhí)行兩種功能:一是按指令分揀物體,二是“井字游戲”人機大戰(zhàn)。

1.3?應用領域

本作品將手勢識別作為人機交互方式,以機械臂作為響應終端,設計了兩種基于上述交互方式和響應終端的展示功能。按指令分揀物體,本質上是對機械臂進行開環(huán)控制,延長人手作用范圍,對于操控大型機械進行物體分揀的工業(yè)自動化領域或物流行業(yè),都有極好的應用前景?!熬钟螒颉比藱C大戰(zhàn),僅僅是將手勢識別結合機械臂控制、簡單的人工智能技術進行組合開發(fā)的例子,“手勢識別 +”的探索永無止境,在娛樂領域、醫(yī)療領域、教育領域、智能家居領域都有著廣泛的應用前景。

02、系統(tǒng)組成及功能說明

2.1系統(tǒng)組成

本系統(tǒng)以 Xilinx ZYNQ SoC 作為主控制芯片,分為處理器模塊、攝像頭模塊、顯示器模塊、舵機驅動模塊、通訊傳輸模塊。通過攝像頭模塊捕捉手勢圖像信息,在處理器模塊中完成手勢分割、手勢建模、手勢形狀特征提取、手勢識別,手勢識別的過程及結果通過顯示器展示,通過處理器內部不同功能的邏輯運算,將對應的動作指令通過相應的 PWM 信號輸出給各個舵機,驅動六自由度機械臂完成要求動作,從而實現對應的組合功能。

 

2.2手勢識別核心算法

 

本作品所采用的是靜態(tài)手勢識別算法,算法核心主要由手勢特征分析、手勢特征建模及手勢識別三部分組成,整體框架如上圖所示。首先通過圖像采集設備來獲取手勢圖像,通過手勢建模將獲取的手勢圖像用數學模型描述出來,最后根據得到的手勢識別所需要的模型參量判別出具體的手勢形態(tài)。

 

2.2.1圖像預處理

 

圖像預處理,由四個主要步驟組成,分別為定義識別區(qū)域、顏色空間轉換、 膨脹處理、高斯濾波。定義識別區(qū)域,主要用來減小識別區(qū)域面積,從而提高識 別效率。顏色空間轉換,通過將攝像頭捕捉到的 RGB 顏色空間下的圖像信息轉 化為 HSV 顏色空間下的圖像信息,便利后續(xù)對背景和手部進行顏色分割。膨脹 操作,使得識別區(qū)域高亮區(qū)域增長,消除手部內的噪聲點。高斯濾波,通過加權 求和的方式,消除圖像內的高斯噪聲點。

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”八種手勢識別結果,以便后續(xù)對結果進行使用。

2.3“井字游戲”人機大戰(zhàn)算法設計

2.3.1游戲規(guī)則及數字化設置

游戲規(guī)則游戲對戰(zhàn)的雙方執(zhí)不同棋子,輪流在 3×3 的九宮格中落子,但凡在橫排、 豎排、對角線上出現三子相同的情況,則執(zhí)該子的一方勝。

數字化設置現在對九宮格的九個位置編碼為九個二維坐標(x,y)(x=1,2,3;y=1, 2,3),并賦值為 1,效果如下圖所示。

一方執(zhí)“0”,一方執(zhí)“2”,落在哪個坐標位置上,就把那個坐標位置對應的 值改為“0”或“2”。每次落子后,分別對每排、每列、每對角線上的三個值求和(和可取 0,1,2,3,4,5,6),如果出現“0”則執(zhí)“0”的一方勝,如果出 現“6”則執(zhí)“2”的一方勝。

2.3.2機器端落子優(yōu)先級設計

假設人執(zhí)“0”子,機器執(zhí)“1”子(1)中間、邊上、角上三種位置的獲勝方式分別為

所以優(yōu)先落中間,其次落角上,最后落邊上。

(2)情況優(yōu)先級

第一優(yōu)先級:如果出現“1”,立即將(0,0,1)中的“1”置 2,攔截人勝利。第二優(yōu)先級:如果出現“5”,立即將(1,2,2)中的“1”置 2,機器取得游戲勝利。第三優(yōu)先級:如果出現“4”,且不是“死路”的情況,則將(1,1,2)中任 意一個“1”置 2。

2.3.3算法流程圖

2.4模塊介紹

2.4.1處理器模塊

本作品采用基于 ZYNQ-7020 芯片的 PYNQ-Z2 開發(fā)板進行系統(tǒng)開發(fā)。ZYNQ 分為 PS(Processing System)和 PL(Programmable Logic)兩部分,在 PS 上運 行 Linux 操作系統(tǒng),在 Linux 操作系統(tǒng)上運行 Python,通過調用 PYNQ 中的庫Overlay,對連接到 PS 端的接口進行解析,進而控制 FPGA 邏輯資源,加速系統(tǒng) 數據處理。

對于本作品中所設計的基于機器視覺的手勢識別算法和“井字游戲”人機大 戰(zhàn)算法,直接利用硬件語言進行編寫在邏輯上十分復雜,故采用 Python 進行編程實現,利用 FPGA 對圖像處理部分進行硬件加速,不僅提高了圖像處理速度, 還更好地擴展了圖像應用。

2.4.2攝像頭(圖像采集)模塊

 

本作品的手勢指令輸入由攝像頭采集完成。采用奧尼 C11 款的高清攝像頭對手勢進行畫面捕捉,通過 USB 完成圖像輸入。相比于傳統(tǒng)的傳感器手套對手勢姿態(tài)的采集,攝像頭減輕了硬件端的負擔,使得整個系統(tǒng)可推廣性更好。

2.4.3機械臂(舵機)模塊

本作品使用的機械臂,是 Learm 公司開發(fā)的一款六自由度機械臂,能通過上 位機對其進行動作設計,通過 PWM 控制舵機運轉,從而完成抓取和連續(xù)復雜動作兩種不同的模式功能。舵機(機械臂)模塊與處理器的模塊采用 UART 串行通信,采用下述通信協(xié)議進行指令交互。

2.4.4顯示器(圖像輸出)模塊

采用顯示屏作為圖像輸出端,展示手勢識別圖像處理過程及結果,不僅利于 過程中的算法調試與驗證,并且具有更好地視覺效果。

2.5?功能說明

2.5.1?手勢識別

本作品可以對常用的八種手勢進行識別處理,分別為“0”“1”、“2”、“3”、 “4”、“5”、“Best of luck”、“ok”。啟動系統(tǒng)后,在攝像頭端擺出相應手勢,及完 成手勢輸入,顯示器會顯示出對應的識別結果。顯示器畫面,有矩形框定位識別區(qū)域,在該矩形框中會有多邊形框出手部輪廓,右上方會顯示識別結果。當識別區(qū)域沒有放入手進行識別時,顯示器畫面靜止。

2.5.2?機械臂驅動

機械臂動作設計及存儲機制

機械臂內部封裝有存儲“動作組”的部件,用來存儲動作指令。用戶如果要 進行動作設計,在機械臂通電的情況下,通過 USB 通信與電腦端上位機進行連接,在上位機中設置傳輸給六個舵機的 PWM 值,形成一個包含這個動作指令的 “動作組”,下載進存儲部件以便后續(xù)調用。

機械臂驅動機制

通過 UART(串口通信)的方式來調用“動作組”,進而驅動機械臂完成相 應動作。這里需要注意的是,必須將處理器模塊與機械臂模塊進行“共地”操作, 否則二者無法完成通信,機械臂不能按指令動作。

2.5.3功能 1:按指令分揀物體

預設四個不同的區(qū)域,分別編號為“1”“2”“3”“4”,作為一組一維位置坐 標。設計機械臂在四個不同區(qū)域內抓取、放開動作,共八個動作組。手勢輸入“ok”, 告訴系統(tǒng)下一個輸入的是初始坐標。待控制板上亮起指示燈后,通過人眼觀測物 體初始位置坐標,通過手勢輸入該坐標(可輸入“1”、“2”、“3”、“4”)。

待控制板上亮起指示燈后,手勢輸入“5”,告訴系統(tǒng)下一個輸入的是初始坐標。待控制板上亮起指示燈后,通過手勢輸入目標位置坐標(可輸入“1”、“2”、“3”、“4”)。用戶端操作結束,發(fā)送指令給機械臂完成分揀全過程。機械臂依次完成抓取、移動、放下,即完成一次按指令分揀。

2.5.4功能 2:“井字游戲”人機大戰(zhàn)

游戲規(guī)則參看“2.3‘井字游戲’人機大戰(zhàn)算法設計”。手勢輸入“ok”,告訴 系統(tǒng)接下來輸入人落子的坐標區(qū)域(x,y)。待控制板上亮起指示燈后,手勢輸 入“5”,告訴系統(tǒng)接下來輸入橫向坐標(可輸入“1”、“2”、“3”),待控制板上 亮起指示燈后,輸入縱向坐標(可輸入“1”、“2”、“3”)。

用戶端操作結束,可 以發(fā)送指令給機械臂完成人落子的操作,機械臂完成在棋盤上的人落子操作后, 繼續(xù)完成機器落子操作。依次進行下去,直至出現有一方勝利。亮紅燈表示“人 贏”,亮綠燈表示“機器贏”,亮白燈表示“平局”。

03、作品成效總結與分析

3.1系統(tǒng)測試性能指標

3.1.1手勢識別

本作品算法下的手勢識別功能,在 FPGA 加速下能較好地平衡識別次數和識 別時間的沖突。根據測試結果,本作品取 60 作為整個作品的手勢識別循環(huán)次數。

3.1.2機械臂驅動

機械臂能通過用戶端“動作組”的設計,進行抓取、移動等連續(xù)復雜動作, 具有很好的靈活性。作為機電設計的響應終端,能很好地完成多種功能的指令要求。

3.1.3?按指令分揀物體

“按指令分揀物體”能很好地完成初始坐標輸入、目標位置輸入,同時能在 較短的時間內快速完成抓取與投遞。

3.1.4“井字游戲”人機大戰(zhàn)

“井字游戲”算法能很好地遍歷所有可能結果,所以人和機器對戰(zhàn)只會出現 “平局”、“機器贏”兩種結果。并且,較為穩(wěn)定、準確的機器識別以及人工智能 算法,能夠使整個游戲流暢進行?!笆謩葑R別”結合“機械臂”具有很強的視覺觀賞性,與此同時,游戲的模式使整個功能更具有趣味性。

3.2?成效得失對比分析

本作品整體而言,不僅將手勢識別功能實現,還在此基礎上結合機械臂運動特點進行了多功能開發(fā),總體完成度較高,視覺效果較好,兼具靈活性、趣味性及可拓展性。開發(fā)本作品采用的手勢識別算法,為了得到較高的識別精度,必須要以延長識別時間、增加單次識別次數作為犧牲,使得在應用開發(fā)時增加較多的時間負擔,不能夠凸顯人機交互的便利性。從手勢識別算法及對識別結果的處理技術層面出發(fā),整個作品還有較大提升空間。

3.3?創(chuàng)新特色總結展望

本作品使用最新的基于機器視覺的手勢識別技術作為人機交互方式,革新人 機交互的使用體驗,具有極佳的技術前瞻性。使用機械臂作為執(zhí)行終端,貼近目前工業(yè)設計的最新潮流。

在設計功能時,基于數學建模,設計出更具有人機互動性質的小游戲,體現人工智能的靈活與智慧。機電一體化開發(fā),充分發(fā)揮基于 Python 編程的代碼靈活的特點,以實現復 雜算法,利用 FPGA 硬件加速的優(yōu)勢,提高視覺處理速度。

在本作品的基礎上,優(yōu)化識別算法,加快識別速度,提高識別精度,“手勢 識別+”將在未來發(fā)揮出自身更強的優(yōu)勢,在教育領域、娛樂領域、工業(yè)領域、 醫(yī)療領域、智能家居領域都具有越來越廣闊的應用前景。

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

任何技術的學習就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。