伍建軍,姚志博,李嘉豪,李光昌,鞠 慶
(江西理工大學(xué) 機電工程學(xué)院,贛州 341000)
當(dāng)下流行的手勢識別是通過將不同的手勢動作轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)信號,并與預(yù)設(shè)模板進行匹配,根據(jù)匹配結(jié)果完成手勢識別。手勢是人與人之間信息交流的重要方式,也是人與機器交互的重要發(fā)展組成部[1]。手勢識別信息的采集可以通過攝像頭或傳感器,采集到的數(shù)據(jù)經(jīng)過PC端視覺技術(shù)或相關(guān)算法的處理,識別不同手勢并反饋對應(yīng)的手勢識別結(jié)果[2]。文獻[3]以Arduino為主控制器,結(jié)合彎曲、加速度傳感器對手指彎曲和手掌的移動信息進行采集,可識別手勢并控制電腦端光標(biāo)的點擊與移動。文獻[4]利用紅外線傳感器和環(huán)境光傳感器對手部動作進行無接觸式的手勢識別。文獻[5]運用卷積神經(jīng)網(wǎng)絡(luò),將YOLO算法應(yīng)用到了手勢識別中,在背景色相近和光線較暗的場景下獲得了良好的表現(xiàn)?;谝曈X或傳感器的手勢識別涉及了先進感知技術(shù)與PC端視覺處理相關(guān)技術(shù),是當(dāng)下熱點的研究領(lǐng)域。然而,由于手勢識別技術(shù)通用性不足,難移植及手勢語義的復(fù)雜性,手勢識別技術(shù)在真正實現(xiàn)人機交互方面還有很多問題需要挑戰(zhàn)。計算機視覺技術(shù)在分割、提取動態(tài)移動手勢時,受照相機拍攝質(zhì)量及光照影響巨大,效果不佳。而使用PAJ7620傳感器的手勢識別系統(tǒng)在處理動態(tài)移動手勢及暗光時刻的表現(xiàn)都要優(yōu)于計算機視覺,并且經(jīng)過實驗驗證具有良好可靠性、實時性、準(zhǔn)確性,可以滿足常規(guī)的使用要求。
本手勢識別控制系統(tǒng)以STM32F103ZET6為主控制器,采用PAJ7620手勢識別傳感器對手勢信息進行獲取,手勢傳感器獲取的的數(shù)據(jù),通過I2C總線與STM32主控芯片進行通訊,主控芯片根據(jù)預(yù)設(shè)指令控制移動機器人進行移動,并將數(shù)據(jù)通過無線傳輸模塊NRF24L01傳輸給PC端,對移動機器人進行遠(yuǎn)距離手勢控制。上位機軟件界面實時顯示手勢及控制命令執(zhí)行情況,下位機軟件界面通過OLED屏幕實時顯示手勢傳感器采集到的數(shù)據(jù)。系統(tǒng)總體設(shè)計框架如圖1所示。
圖1 系統(tǒng)總體設(shè)計框架
采用STM32F103ZET6作為主控芯片。芯片是專為微系統(tǒng)設(shè)計的控制芯片,負(fù)責(zé)手勢傳感器的操作控制和無線數(shù)據(jù)傳輸。芯片通過模擬I2C引腳對手勢識別模塊進行初始化配置。在手勢傳感器產(chǎn)生中斷后,芯片讀取傳感器芯片對應(yīng)地址的數(shù)據(jù)得到不同的手勢信息,同時,主控芯片通過串口連接無線模塊,將數(shù)據(jù)傳輸給PC端,將對應(yīng)檢測到的手勢實時顯示在PC端。系統(tǒng)硬件設(shè)計框架如圖2所示。
圖2 系統(tǒng)硬件設(shè)計框架
2.2.1 手勢識別的概述
手勢識別模塊體積小巧,光學(xué)式數(shù)組傳感器集成在了芯片內(nèi)部,是一款高性能的手勢識別傳感器模塊。可以識別左、右、上、下、手部揮動及距離接近的操作。在順時針旋轉(zhuǎn)及逆時針旋轉(zhuǎn)手勢動作方面識別率不高,識別旋轉(zhuǎn)手勢時需要手勢規(guī)范操作,但在經(jīng)常使用的手勢如:左、右、上、下?lián)]手方面識別率足以支持在嵌入式設(shè)備上的開發(fā)。模塊外觀如圖3所示。
圖3 手勢識別傳感器
2.2.2 工作原理
手勢識別傳感器模塊功能框圖如圖4所示。
圖4 PAJ7620手勢識別傳感器功能框圖
圖4中,SDA和SCL是連接STM32主控芯片的I2C接口,主控芯片通過I2C接口來讀取手勢識別傳感器數(shù)據(jù)??驁D中,手勢識別傳感器芯片中自帶LED驅(qū)動器模塊、傳感器感應(yīng)陣列模塊、特征獲取模塊和手勢識別模塊。工作時通過內(nèi)部LED驅(qū)動器,驅(qū)動紅外LED向外發(fā)射紅外線信號,當(dāng)物體在傳感器陣列的有效探測距離內(nèi)被檢測到時,特征獲取模塊會對進入檢測區(qū)域的物體進行特征信息的采集,采集的信息會儲存在寄存器中,同時手勢識別模塊將對采集到的信息進行識別處理,最后將判別的手勢儲存到寄存器指定地址當(dāng)中,操作人員通過I2C接口對模塊采集的信息和反饋的手勢進行處理。
紅外接收器LED陣列分布如圖5所示,紅外接收器位于紅外LED的正中心,四周為紅外LED。最常用的左、右、前、后揮手操作可通過傳感器檢測到。
圖5 紅外接收器LED陣列分布圖
2.2.3 識別算法
手勢接近檢測原理:由實驗數(shù)據(jù)可知,只有在接近類手勢中,傳感器檢測到的亮度變化幅度最大。根據(jù)數(shù)據(jù)分析得出接近類手勢的閾值。當(dāng)亮度變化幅度大于接近類手勢的閾值。則判斷為接近類。手勢識別芯片獲取到的原始數(shù)據(jù)將轉(zhuǎn)化為距離數(shù)據(jù)。根據(jù)距離數(shù)據(jù)來判斷手部的實時距離變化,在距離數(shù)據(jù)變化的定時判別手部的位置。根據(jù)檢測到原始物體的體積大小及亮度數(shù)據(jù)的大小判斷手勢是靠近還是離開。
手勢移動檢測原理:當(dāng)沒有手勢進入到紅外LED上方時,沒有任何信號輸入到紅外接收器,當(dāng)有手勢進入到紅外LED上方時,紅外接收器接收到反射回來的LED發(fā)出的光信號,進而接收到不同強度的光信號,經(jīng)過ADC的轉(zhuǎn)換將不同強度的光信號轉(zhuǎn)換為了電信號,隨后將原始數(shù)據(jù)儲存進指定的寄存器地址。以紅外LED D1為例,手部越靠近LED D1,紅外接收器采集到的光亮度越強,即輸出的電信號越強。同理,手部越遠(yuǎn)離光源,即輸出的電信號越弱。
當(dāng)檢測到有手勢在靠近或者離開時,首先判斷探測到手部的是四個方向紅外LED中的哪一個,同時將判斷手部是正在靠近或是離開。例如:當(dāng)左邊的紅外LED檢測到手部時,將判斷檢測結(jié)果是手部向右“揮動”、手部“靠近”、手部“離開”中的哪一個。此時手勢控制芯片進入檢測等待延時,在規(guī)定的閾值范圍內(nèi)如果檢測到了靠近的手部,則反饋的手勢結(jié)果為“靠近”。否則,在規(guī)定的閾值范圍內(nèi)如果沒有檢測到靠近或者離開的的手部,則反饋的手勢結(jié)果為手部向右“揮動”。其余手勢向“左”、“上”、“下”揮動三種手勢都是如像右“揮動”手勢一樣的檢測思路。手勢識別檢測流程如圖6所示。
圖6 手勢識別檢測流程
移動機器人根據(jù)無線傳感器傳輸來的命令執(zhí)行相應(yīng)的移動及轉(zhuǎn)向動作。手勢傳感器識別相應(yīng)的手勢并處理,由主控芯片通過無線傳輸模塊發(fā)送給PC端在軟件中顯示運行狀態(tài),并實時控制移動機器人的移動。無線傳輸模塊采用NRF24L01模塊,無線傳輸模塊是手勢傳感器與PC端,PC端與移動機器人進行數(shù)據(jù)交互的核心部件。一體化帶USB串口的硬件結(jié)構(gòu)負(fù)責(zé)PC端的數(shù)據(jù)通信。手勢識別PC端軟件實時顯示手勢操作的模塊連接方式如圖7所示。
圖7 手勢識別模塊接入圖
除手勢命令控制移動機器人進行移動,還可由PC端軟件發(fā)送命令來控制移動。PC端與移動機器人連接方式與圖7相似,僅由手勢傳感器模塊替換為機器人模塊。NRF24L01無線傳輸模塊負(fù)責(zé)接收PC端軟件的命令及數(shù)據(jù)傳輸,機器人搭載的無線傳感器模塊將接收對應(yīng)的控制命令傳輸給STM32主控芯片。主控芯片控制電機執(zhí)行移動或轉(zhuǎn)向操作。
軟件設(shè)計分為PC端上位機的軟件設(shè)計、移動機器人端軟件設(shè)計兩個部分。
STM32F103ZET6主控芯片讀取手勢傳感器采集到的信息,經(jīng)過處理后,通過OLED屏幕顯示實時的操作手勢,當(dāng)檢測到手勢為向右移動則在OLED屏幕上顯示“手勢向右”,并顯示移動機器人的實時“左轉(zhuǎn)”、“右轉(zhuǎn)”、“前進”、“后退”等控制情況。移動機器人轉(zhuǎn)向及加減速情況通過OLED屏幕來顯示如圖8所示。
圖8 OLED屏幕顯示
PC端軟件采用QT/C++技術(shù)進行編寫。軟件界面由QT編寫,C++作為編程語言。PC端采用2.4G無線協(xié)議同移動機器人進行信息交互。為保證數(shù)據(jù)傳輸速度,采用多線程。PC端軟件界面分為一條主程序和一條子程序。軟件界面主線程負(fù)責(zé)刷新軟件界面和實時捕獲對于軟件界面的操作,同時將捕獲的操作命令發(fā)給子模塊進行處理。PC軟件端界面及工作流程如圖9所示。
圖9 PC端軟件界面、軟件工作流程
前輪轉(zhuǎn)向,操作靈敏。后輪驅(qū)動,動力輸出強勁。后軸通過電機的轉(zhuǎn)動帶動移動機器人前行。前輪通過電機、齒輪、齒條調(diào)整前輪的姿態(tài)從而改變移動機器人的轉(zhuǎn)動方向。輪式車輛四種常規(guī)的轉(zhuǎn)向方式:獨立轉(zhuǎn)向、鉸接轉(zhuǎn)向、差速轉(zhuǎn)向、阿克曼轉(zhuǎn)向。阿克曼轉(zhuǎn)向通過連桿結(jié)構(gòu)協(xié)調(diào)兩側(cè)車輪的轉(zhuǎn)向。大部分輪式車輛都是采用阿克曼轉(zhuǎn)向方式轉(zhuǎn)彎。下面的運動學(xué)分析基于阿克曼轉(zhuǎn)向模型來建立[6]。阿克曼、自行車模型轉(zhuǎn)向分析如圖10所示。
圖10 阿克曼、自行車模型轉(zhuǎn)向示意圖
通過三角關(guān)系的求解,可以得到左前輪和右前輪的轉(zhuǎn)角的求解公式為:
其中,L是軸距,R是轉(zhuǎn)向半徑,B是中心距,我們可以將雙軌車輛模型簡化為一個單軌的自行車模型,自行車模型轉(zhuǎn)角的相互關(guān)系為:
圖11中:φ為車體的橫擺角(航向角),δf為前輪偏角,vr為車輛后軸中心速度,vf為車輛前軸中心速度。阿克曼轉(zhuǎn)向因為前輪轉(zhuǎn)角會受到最大前輪轉(zhuǎn)角的約束,在采用阿克曼轉(zhuǎn)向的車輛的固有特性上,得到運動學(xué)模型為:
圖11 運動學(xué)模型
在坐標(biāo)系OXY下面Xr.Yr代表車輛后軸位置,Xf,Yf代表車輛前軸位置,聯(lián)立前后軸的運動約束及后軸的速度公式,可以得到后軸中心X,Y方向的速度,R為后輪的轉(zhuǎn)向半徑,M為車輛后軸的中心,P為瞬心,N為前軸的軸心,此處假設(shè)轉(zhuǎn)向過程中的車輛的質(zhì)心側(cè)偏角保持不變,即在車輛轉(zhuǎn)彎的每一瞬時,車輛的轉(zhuǎn)動半徑與道路的曲率半徑相同。
聯(lián)立前后軸的運動約束方程及后軸的側(cè)向速度為零的約束,最終得到車輛的橫擺角速度的關(guān)系,車輛的運動學(xué)模型為如式(9)所示:
根據(jù)移動機器人在平整路面的適應(yīng)性,移動機器人采取前輪轉(zhuǎn)向,后輪驅(qū)動的方案設(shè)計。實驗驗證在STM32主控芯片控制電機驅(qū)動的移動機器人上進行。采用成熟的電機齒輪控制轉(zhuǎn)向,結(jié)構(gòu)簡單,減少了移動端的部署的難度。移動機器人本體由轉(zhuǎn)向電機、驅(qū)動電機、鋰電池、減震彈簧、轉(zhuǎn)向拉桿、輪胎、車架等組成。采用復(fù)合材料,結(jié)構(gòu)簡單,容易維修。
移動機器人轉(zhuǎn)向結(jié)構(gòu)的設(shè)計如圖12(a)所示,移動機器人在檢測到手部向左、向前、向右手勢動作后作出車輪向左、向前、向右轉(zhuǎn)動的狀態(tài)如圖12(b)、圖12(c)、圖12(d)。
圖12 轉(zhuǎn)向結(jié)構(gòu)及轉(zhuǎn)向圖
為驗證本設(shè)計的精確及可靠性,對幾種常見的手勢控制操作方式進行驗證。測試中,對每個手勢動作重復(fù)測試200次,采集到1200個實驗樣本,手勢控制移動機器人轉(zhuǎn)向、啟停識別精度結(jié)果如表1所示,綜合識別率96.33%。
表1 手勢控制移動機器人轉(zhuǎn)向、啟停識別精度表
闡述了手勢識別傳感器原理及在控制移動機器人進行轉(zhuǎn)向、移動方面的具體應(yīng)用。本系統(tǒng)經(jīng)過實驗測試表明,可根據(jù)檢測到的手勢操作命令可靠的完成從檢測手勢、顯示運行狀態(tài)、移動機器人移動及轉(zhuǎn)向等操作。實現(xiàn)了基于手勢傳感器的移動機器人的研究,該系統(tǒng)具有操作靈敏,反饋實時、可靠性高等特點。相對基于計算機視覺的手勢識別在暗光環(huán)境下識別率提高顯著,在人機交互方面具有廣闊的應(yīng)用前景。隨后的研究可考慮將傳感器與視覺結(jié)合起來,提高手勢識別的精度及識別種類。