01
設(shè)計(jì)概述?
Design Introduction
1.1 設(shè)計(jì)背景 隨著信息技術(shù)的發(fā)展,人機(jī)交互技術(shù)逐漸由以鍵盤、鼠標(biāo)等基于圖形用戶界面的方式,轉(zhuǎn)變?yōu)橐?a href="http://www.xsypw.cn/analog/" target="_blank">模擬和類似人類感知傳輸?shù)男畔㈩愋?。其中,手?shì)識(shí)別因其具有的自然、直接、有效的交互特點(diǎn),越來(lái)越受到研究人員的關(guān)注。傳統(tǒng)的手勢(shì)識(shí)別,需要借助配置有傳感器的手套來(lái)確定具體的手勢(shì)形態(tài),成本高且操作不便,不具有推廣性?;?a href="http://www.xsypw.cn/tags/機(jī)器視覺(jué)/" target="_blank">機(jī)器視覺(jué)的手勢(shì)識(shí)別技術(shù),突破硬件局限,從模式識(shí)別算法層面革新人機(jī)交互方式,更適應(yīng)未來(lái)人機(jī)交互發(fā)展趨勢(shì)。機(jī)械臂作為現(xiàn)代工業(yè)領(lǐng)域自動(dòng)化智能加工中最常見(jiàn)的執(zhí)行終端,通過(guò)各個(gè)關(guān)節(jié)的協(xié)調(diào)運(yùn)動(dòng)與機(jī)械末端的配合,可進(jìn)行多自由度模擬仿真。通過(guò)對(duì)舵機(jī)進(jìn)行控 制設(shè)計(jì),使機(jī)械臂能夠完成抓取分揀、連續(xù)動(dòng)作,從而使其具有比人手更好的動(dòng) 作組合靈活性和指令完成準(zhǔn)確性。
1.2 作品概述
本作品基于機(jī)器視覺(jué),聚焦手勢(shì)識(shí)別,利用攝像頭獲取單目圖像信息,基于 PYNQ 實(shí)現(xiàn)手勢(shì)分割、手勢(shì)建模、手勢(shì)形狀特征提取,對(duì)八種不同手勢(shì)圖像進(jìn)行識(shí)別,以舵機(jī)控制的機(jī)械臂模塊作為響應(yīng)終端,借助手勢(shì)變化來(lái)控制機(jī)械臂執(zhí)行兩種功能:一是按指令分揀物體,二是“井字游戲”人機(jī)大戰(zhàn)。
1.3? 應(yīng)用領(lǐng)域
本作品將手勢(shì)識(shí)別作為人機(jī)交互方式,以機(jī)械臂作為響應(yīng)終端,設(shè)計(jì)了兩種基于上述交互方式和響應(yīng)終端的展示功能。按指令分揀物體,本質(zhì)上是對(duì)機(jī)械臂進(jìn)行開(kāi)環(huán)控制,延長(zhǎng)人手作用范圍,對(duì)于操控大型機(jī)械進(jìn)行物體分揀的工業(yè)自動(dòng)化領(lǐng)域或物流行業(yè),都有極好的應(yīng)用前景?!熬钟螒颉比藱C(jī)大戰(zhàn),僅僅是將手勢(shì)識(shí)別結(jié)合機(jī)械臂控制、簡(jiǎn)單的人工智能技術(shù)進(jìn)行組合開(kāi)發(fā)的例子,“手勢(shì)識(shí)別 +”的探索永無(wú)止境,在娛樂(lè)領(lǐng)域、醫(yī)療領(lǐng)域、教育領(lǐng)域、智能家居領(lǐng)域都有著廣泛的應(yīng)用前景。?
02
系統(tǒng)組成及功能說(shuō)明
System Construction & Function Description
2.1 系統(tǒng)組成 ?
本系統(tǒng)以 Xilinx ZYNQ SoC 作為主控制芯片,分為處理器模塊、攝像頭模塊、顯示器模塊、舵機(jī)驅(qū)動(dòng)模塊、通訊傳輸模塊。通過(guò)攝像頭模塊捕捉手勢(shì)圖像信息,在處理器模塊中完成手勢(shì)分割、手勢(shì)建模、手勢(shì)形狀特征提取、手勢(shì)識(shí)別,手勢(shì)識(shí)別的過(guò)程及結(jié)果通過(guò)顯示器展示,通過(guò)處理器內(nèi)部不同功能的邏輯運(yùn)算,將對(duì)應(yīng)的動(dòng)作指令通過(guò)相應(yīng)的 PWM 信號(hào)輸出給各個(gè)舵機(jī),驅(qū)動(dòng)六自由度機(jī)械臂完成要求動(dòng)作,從而實(shí)現(xiàn)對(duì)應(yīng)的組合功能。
2.2 手勢(shì)識(shí)別核心算法
本作品所采用的是靜態(tài)手勢(shì)識(shí)別算法,算法核心主要由手勢(shì)特征分析、手勢(shì)特征建模及手勢(shì)識(shí)別三部分組成,整體框架如上圖所示。首先通過(guò)圖像采集設(shè)備來(lái)獲取手勢(shì)圖像,通過(guò)手勢(shì)建模將獲取的手勢(shì)圖像用數(shù)學(xué)模型描述出來(lái),最后根據(jù)得到的手勢(shì)識(shí)別所需要的模型參量判別出具體的手勢(shì)形態(tài)。 ?
2.2.1 圖像預(yù)處理
圖像預(yù)處理,由四個(gè)主要步驟組成,分別為定義識(shí)別區(qū)域、顏色空間轉(zhuǎn)換、 膨脹處理、高斯濾波。定義識(shí)別區(qū)域,主要用來(lái)減小識(shí)別區(qū)域面積,從而提高識(shí) 別效率。顏色空間轉(zhuǎn)換,通過(guò)將攝像頭捕捉到的 RGB 顏色空間下的圖像信息轉(zhuǎn) 化為 HSV 顏色空間下的圖像信息,便利后續(xù)對(duì)背景和手部進(jìn)行顏色分割。膨脹 操作,使得識(shí)別區(qū)域高亮區(qū)域增長(zhǎng),消除手部?jī)?nèi)的噪聲點(diǎn)。高斯濾波,通過(guò)加權(quán) 求和的方式,消除圖像內(nèi)的高斯噪聲點(diǎn)。
2.2.2? 手勢(shì)分析
利用道格拉斯-普克(Douglas-Pucker)算法,將手部輪廓擬合為多邊形曲線, 同時(shí)計(jì)算面積,以得到輪廓內(nèi)手部面積最大的手部輪廓。在此基礎(chǔ)上,分別計(jì)算 出輪廓總面積(areacnt)、輪廓中手的面積(areahull)、以及手的面積占輪廓總面 積的百分比(arearatio)。與此同時(shí),得到最大輪廓面積中的凸缺陷(即凹陷)數(shù) (defects),并通過(guò)計(jì)算凸缺陷中起始點(diǎn)、終點(diǎn)、離起始點(diǎn)終點(diǎn)連線最遠(yuǎn)處的點(diǎn)構(gòu) 成的三角形的高(d)和頂角(angle)值,來(lái)去除因噪聲而得到的凸缺陷點(diǎn),得 到消除噪聲點(diǎn)后的凸缺陷數(shù)(l)。 2.2.3 手勢(shì)識(shí)別 ?
由手勢(shì)分析后得到的模型參量通過(guò)上述手勢(shì)識(shí)別流程圖后,輸出“0”“1” “2”“3”“4”“5”“ok”“best of luck”八種手勢(shì)識(shí)別結(jié)果,以便后續(xù)對(duì)結(jié)果進(jìn)行使用。
? 2.3 “井字游戲”人機(jī)大戰(zhàn)算法設(shè)計(jì)
2.3.1 游戲規(guī)則及數(shù)字化設(shè)置 游戲規(guī)則 游戲?qū)?zhàn)的雙方執(zhí)不同棋子,輪流在 3×3 的九宮格中落子,但凡在橫排、 豎排、對(duì)角線上出現(xiàn)三子相同的情況,則執(zhí)該子的一方勝。 數(shù)字化設(shè)置 現(xiàn)在對(duì)九宮格的九個(gè)位置編碼為九個(gè)二維坐標(biāo)(x,y)(x=1,2,3;y=1, 2,3),并賦值為 1,效果如下圖所示。
一方執(zhí)“0”,一方執(zhí)“2”,落在哪個(gè)坐標(biāo)位置上,就把那個(gè)坐標(biāo)位置對(duì)應(yīng)的 值改為“0”或“2”。每次落子后,分別對(duì)每排、每列、每對(duì)角線上的三個(gè)值求和(和可取 0,1,2,3,4,5,6),如果出現(xiàn)“0”則執(zhí)“0”的一方勝,如果出 現(xiàn)“6”則執(zhí)“2”的一方勝。 ? 2.3.2 機(jī)器端落子優(yōu)先級(jí)設(shè)計(jì) 假設(shè)人執(zhí)“0”子,機(jī)器執(zhí)“1”子 (1)中間、邊上、角上三種位置的獲勝方式分別為
所以優(yōu)先落中間,其次落角上,最后落邊上。
(2)情況優(yōu)先級(jí)
第一優(yōu)先級(jí):如果出現(xiàn)“1”,立即將(0,0,1)中的“1”置 2,攔截人勝利。 第二優(yōu)先級(jí):如果出現(xiàn)“5”,立即將(1,2,2)中的“1”置 2,機(jī)器取得游戲勝利。 第三優(yōu)先級(jí):如果出現(xiàn)“4”,且不是“死路”的情況,則將(1,1,2)中任 意一個(gè)“1”置 2。 ? 2.3.3 算法流程圖 ?
?
2.4 模塊介紹
2.4.1 處理器模塊 ? ?
本作品采用基于 ZYNQ-7020 芯片的 PYNQ-Z2 開(kāi)發(fā)板進(jìn)行系統(tǒng)開(kāi)發(fā)。ZYNQ 分為 PS(Processing System)和 PL(Programmable Logic)兩部分,在 PS 上運(yùn) 行 Linux 操作系統(tǒng),在 Linux 操作系統(tǒng)上運(yùn)行 Python,通過(guò)調(diào)用 PYNQ 中的庫(kù)Overlay,對(duì)連接到 PS 端的接口進(jìn)行解析,進(jìn)而控制 FPGA 邏輯資源,加速系統(tǒng) 數(shù)據(jù)處理。
對(duì)于本作品中所設(shè)計(jì)的基于機(jī)器視覺(jué)的手勢(shì)識(shí)別算法和“井字游戲”人機(jī)大 戰(zhàn)算法,直接利用硬件語(yǔ)言進(jìn)行編寫在邏輯上十分復(fù)雜,故采用 Python 進(jìn)行編程實(shí)現(xiàn),利用 FPGA 對(duì)圖像處理部分進(jìn)行硬件加速,不僅提高了圖像處理速度, 還更好地?cái)U(kuò)展了圖像應(yīng)用。
2.4.2 攝像頭(圖像采集)模塊
本作品的手勢(shì)指令輸入由攝像頭采集完成。采用奧尼 C11 款的高清攝像頭對(duì)手勢(shì)進(jìn)行畫面捕捉,通過(guò) USB 完成圖像輸入。相比于傳統(tǒng)的傳感器手套對(duì)手勢(shì)姿態(tài)的采集,攝像頭減輕了硬件端的負(fù)擔(dān),使得整個(gè)系統(tǒng)可推廣性更好。
2.4.3 機(jī)械臂(舵機(jī))模塊 本作品使用的機(jī)械臂,是 Learm 公司開(kāi)發(fā)的一款六自由度機(jī)械臂,能通過(guò)上 位機(jī)對(duì)其進(jìn)行動(dòng)作設(shè)計(jì),通過(guò) PWM 控制舵機(jī)運(yùn)轉(zhuǎn),從而完成抓取和連續(xù)復(fù)雜動(dòng)作兩種不同的模式功能。舵機(jī)(機(jī)械臂)模塊與處理器的模塊采用 UART 串行通信,采用下述通信協(xié)議進(jìn)行指令交互。
2.4.4 顯示器(圖像輸出)模塊 ?
采用顯示屏作為圖像輸出端,展示手勢(shì)識(shí)別圖像處理過(guò)程及結(jié)果,不僅利于 過(guò)程中的算法調(diào)試與驗(yàn)證,并且具有更好地視覺(jué)效果。 2.5? 功能說(shuō)明 ? 2.5.1 ?手勢(shì)識(shí)別 本作品可以對(duì)常用的八種手勢(shì)進(jìn)行識(shí)別處理,分別為“0”“1”、“2”、“3”、 “4”、“5”、“Best of luck”、“ok”。啟動(dòng)系統(tǒng)后,在攝像頭端擺出相應(yīng)手勢(shì),及完 成手勢(shì)輸入,顯示器會(huì)顯示出對(duì)應(yīng)的識(shí)別結(jié)果。顯示器畫面,有矩形框定位識(shí)別區(qū)域,在該矩形框中會(huì)有多邊形框出手部輪廓,右上方會(huì)顯示識(shí)別結(jié)果。當(dāng)識(shí)別區(qū)域沒(méi)有放入手進(jìn)行識(shí)別時(shí),顯示器畫面靜止。
2.5.2 ?機(jī)械臂驅(qū)動(dòng) 機(jī)械臂動(dòng)作設(shè)計(jì)及存儲(chǔ)機(jī)制
機(jī)械臂內(nèi)部封裝有存儲(chǔ)“動(dòng)作組”的部件,用來(lái)存儲(chǔ)動(dòng)作指令。用戶如果要 進(jìn)行動(dòng)作設(shè)計(jì),在機(jī)械臂通電的情況下,通過(guò) USB 通信與電腦端上位機(jī)進(jìn)行連接,在上位機(jī)中設(shè)置傳輸給六個(gè)舵機(jī)的 PWM 值,形成一個(gè)包含這個(gè)動(dòng)作指令的 “動(dòng)作組”,下載進(jìn)存儲(chǔ)部件以便后續(xù)調(diào)用。
機(jī)械臂驅(qū)動(dòng)機(jī)制
通過(guò) UART(串口通信)的方式來(lái)調(diào)用“動(dòng)作組”,進(jìn)而驅(qū)動(dòng)機(jī)械臂完成相 應(yīng)動(dòng)作。這里需要注意的是,必須將處理器模塊與機(jī)械臂模塊進(jìn)行“共地”操作, 否則二者無(wú)法完成通信,機(jī)械臂不能按指令動(dòng)作。
2.5.3 功能 1:按指令分揀物體 預(yù)設(shè)四個(gè)不同的區(qū)域,分別編號(hào)為“1”“2”“3”“4”,作為一組一維位置坐 標(biāo)。設(shè)計(jì)機(jī)械臂在四個(gè)不同區(qū)域內(nèi)抓取、放開(kāi)動(dòng)作,共八個(gè)動(dòng)作組。手勢(shì)輸入“ok”, 告訴系統(tǒng)下一個(gè)輸入的是初始坐標(biāo)。待控制板上亮起指示燈后,通過(guò)人眼觀測(cè)物 體初始位置坐標(biāo),通過(guò)手勢(shì)輸入該坐標(biāo)(可輸入“1”、“2”、“3”、“4”)。待控制板上亮起指示燈后,手勢(shì)輸入“5”,告訴系統(tǒng)下一個(gè)輸入的是初始坐標(biāo)。待控制板上亮起指示燈后,通過(guò)手勢(shì)輸入目標(biāo)位置坐標(biāo)(可輸入“1”、“2”、“3”、“4”)。用戶端操作結(jié)束,發(fā)送指令給機(jī)械臂完成分揀全過(guò)程。機(jī)械臂依次完成抓取、移動(dòng)、放下,即完成一次按指令分揀。
2.5.4 功能 2:“井字游戲”人機(jī)大戰(zhàn) 游戲規(guī)則參看“2.3‘井字游戲’人機(jī)大戰(zhàn)算法設(shè)計(jì)”。手勢(shì)輸入“ok”,告訴 系統(tǒng)接下來(lái)輸入人落子的坐標(biāo)區(qū)域(x,y)。待控制板上亮起指示燈后,手勢(shì)輸 入“5”,告訴系統(tǒng)接下來(lái)輸入橫向坐標(biāo)(可輸入“1”、“2”、“3”),待控制板上 亮起指示燈后,輸入縱向坐標(biāo)(可輸入“1”、“2”、“3”)。用戶端操作結(jié)束,可 以發(fā)送指令給機(jī)械臂完成人落子的操作,機(jī)械臂完成在棋盤上的人落子操作后, 繼續(xù)完成機(jī)器落子操作。依次進(jìn)行下去,直至出現(xiàn)有一方勝利。亮紅燈表示“人 贏”,亮綠燈表示“機(jī)器贏”,亮白燈表示“平局”。
03
作品成效總結(jié)與分析
Summary?and?Analysis?of?the?Effect?of the Works
3.1 系統(tǒng)測(cè)試性能指標(biāo)
3.1.1 手勢(shì)識(shí)別
本作品算法下的手勢(shì)識(shí)別功能,在 FPGA 加速下能較好地平衡識(shí)別次數(shù)和識(shí) 別時(shí)間的沖突。根據(jù)測(cè)試結(jié)果,本作品取 60 作為整個(gè)作品的手勢(shì)識(shí)別循環(huán)次數(shù)。
3.1.2 機(jī)械臂驅(qū)動(dòng) 機(jī)械臂能通過(guò)用戶端“動(dòng)作組”的設(shè)計(jì),進(jìn)行抓取、移動(dòng)等連續(xù)復(fù)雜動(dòng)作, 具有很好的靈活性。作為機(jī)電設(shè)計(jì)的響應(yīng)終端,能很好地完成多種功能的指令要求。
3.1.3 ?按指令分揀物體 ?
“按指令分揀物體”能很好地完成初始坐標(biāo)輸入、目標(biāo)位置輸入,同時(shí)能在 較短的時(shí)間內(nèi)快速完成抓取與投遞。 ? 3.1.4 “井字游戲”人機(jī)大戰(zhàn) ?
“井字游戲”算法能很好地遍歷所有可能結(jié)果,所以人和機(jī)器對(duì)戰(zhàn)只會(huì)出現(xiàn) “平局”、“機(jī)器贏”兩種結(jié)果。并且,較為穩(wěn)定、準(zhǔn)確的機(jī)器識(shí)別以及人工智能 算法,能夠使整個(gè)游戲流暢進(jìn)行?!笆謩?shì)識(shí)別”結(jié)合“機(jī)械臂”具有很強(qiáng)的視覺(jué)觀賞性,與此同時(shí),游戲的模式使整個(gè)功能更具有趣味性。 ? 3.2? 成效得失對(duì)比分析
本作品整體而言,不僅將手勢(shì)識(shí)別功能實(shí)現(xiàn),還在此基礎(chǔ)上結(jié)合機(jī)械臂運(yùn)動(dòng)特點(diǎn)進(jìn)行了多功能開(kāi)發(fā),總體完成度較高,視覺(jué)效果較好,兼具靈活性、趣味性及可拓展性。開(kāi)發(fā)本作品采用的手勢(shì)識(shí)別算法,為了得到較高的識(shí)別精度,必須要以延長(zhǎng)識(shí)別時(shí)間、增加單次識(shí)別次數(shù)作為犧牲,使得在應(yīng)用開(kāi)發(fā)時(shí)增加較多的時(shí)間負(fù)擔(dān),不能夠凸顯人機(jī)交互的便利性。從手勢(shì)識(shí)別算法及對(duì)識(shí)別結(jié)果的處理技術(shù)層面出發(fā),整個(gè)作品還有較大提升空間。
3.3? 創(chuàng)新特色總結(jié)展望 本作品使用最新的基于機(jī)器視覺(jué)的手勢(shì)識(shí)別技術(shù)作為人機(jī)交互方式,革新人 機(jī)交互的使用體驗(yàn),具有極佳的技術(shù)前瞻性。使用機(jī)械臂作為執(zhí)行終端,貼近目前工業(yè)設(shè)計(jì)的最新潮流。在設(shè)計(jì)功能時(shí),基于數(shù)學(xué)建模,設(shè)計(jì)出更具有人機(jī)互動(dòng)性質(zhì)的小游戲,體現(xiàn)人工智能的靈活與智慧。 機(jī)電一體化開(kāi)發(fā),充分發(fā)揮基于 Python 編程的代碼靈活的特點(diǎn),以實(shí)現(xiàn)復(fù) 雜算法,利用 FPGA 硬件加速的優(yōu)勢(shì),提高視覺(jué)處理速度。 在本作品的基礎(chǔ)上,優(yōu)化識(shí)別算法,加快識(shí)別速度,提高識(shí)別精度,“手勢(shì) 識(shí)別+”將在未來(lái)發(fā)揮出自身更強(qiáng)的優(yōu)勢(shì),在教育領(lǐng)域、娛樂(lè)領(lǐng)域、工業(yè)領(lǐng)域、 醫(yī)療領(lǐng)域、智能家居領(lǐng)域都具有越來(lái)越廣闊的應(yīng)用前景。 ?
審核編輯:黃飛
?
評(píng)論
查看更多