文小冬 裴以建 王群立 劉強(qiáng)
摘 要: 設(shè)計(jì)一種搭建在移動平臺上的機(jī)械臂控制系統(tǒng)。利用Leap Motion紅外手勢傳感器進(jìn)行實(shí)時的手部動作采集,計(jì)算機(jī)的上位機(jī)軟件Processing通過調(diào)用相關(guān)的庫函數(shù),實(shí)現(xiàn)手勢動作的捕捉,并通過WiFi將數(shù)據(jù)傳送給Arduino控制板,由此實(shí)現(xiàn)機(jī)械臂的手勢控制。機(jī)械臂搭建在一個由Android手機(jī)遠(yuǎn)程控制的、帶攝像頭的移動小車上,可以實(shí)現(xiàn)多種遠(yuǎn)程的抓取任務(wù)。實(shí)驗(yàn)結(jié)果表明,基于移動平臺的手勢控制機(jī)械臂移動靈活、控制便捷、應(yīng)用領(lǐng)域廣泛。
關(guān)鍵詞: 手勢識別; 機(jī)械臂; 傳感器; 上位機(jī)軟件; 遠(yuǎn)程控制; 移動平臺
中圖分類號: TN876?34; TP242.6 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2018)22?0072?03
Abstract: A mechanical arm control system built on the mobile platform is designed. The Leap Motion infrared hand gesture sensor is used for real?time acquisition of hand movements. The relevant library functions are called by using the computer′s upper?computer software Processing to realize capture of gesture motions. Data is transmitted to the Arduino control panel by means of WiFi, so as to realize gesture control of the mechanical arm. The mechanical arm is built on a mobile car with a camera and remotely controlled by an Android mobile phone, so as to realize multiple remote grasping tasks. The experimental results show that the gesture control mechanical arm based on the mobile platform is flexible to move, easy to control and has a wide application field.
Keywords: gesture recognition; mechanical arm; sensor; upper?computer software; remote control; mobile platform
伴隨著信息技術(shù)的快速發(fā)展,機(jī)器人技術(shù)也隨之成熟,并廣泛應(yīng)用于軍事、工業(yè)、農(nóng)業(yè)、醫(yī)學(xué)、科學(xué)研究等領(lǐng)域,涵蓋了人們生活的方方面面。遠(yuǎn)程控制機(jī)器人能夠代替人類實(shí)現(xiàn)惡劣環(huán)境下的作業(yè),因此發(fā)展?jié)摿薮?[1]。體感控制機(jī)器人利用體感設(shè)備進(jìn)行動作捕捉,并將動作信息轉(zhuǎn)換為機(jī)器人的控制信號,交互方式更加靈活、自然。本系統(tǒng)結(jié)合以上兩種控制方式,在Android手機(jī)上編寫了一個APP程序,實(shí)現(xiàn)對小車運(yùn)動方向的無線控制;同時采用Leap Motion手勢感應(yīng)器,將手部運(yùn)動的數(shù)據(jù)傳遞給PC,經(jīng)過Processing軟件處理后,再通過無線方式傳遞給下位機(jī),達(dá)到手勢實(shí)時控制機(jī)械臂的效果 [2]。
本系統(tǒng)采用Leap Motion體感器,利用紅外傳感器來捕捉使用者的手部動作軌跡和姿態(tài)。PC上的Processing調(diào)用Leap Motion函數(shù)庫進(jìn)行手部坐標(biāo)和運(yùn)動幀的分析處理,并將其轉(zhuǎn)換為控制指令,通過WiFi傳遞到Arduino上,并控制機(jī)械臂上的舵機(jī)[3]。機(jī)械臂搭載在一個搭有攝像頭的自制四輪移動小車上,小車是由APP進(jìn)行遠(yuǎn)程WiFi控制[4],從而遠(yuǎn)距離地抓取任務(wù)。系統(tǒng)的整體結(jié)構(gòu)如圖1所示。
2.1 Leap Motion手勢傳感器
Leap Motion是由兩個紅外接收相機(jī)和三個紅外發(fā)射LED組成,它通過雙目視覺深度算法構(gòu)建出手指三維立體空間的運(yùn)動和坐標(biāo)信息,是一款專門用來捕捉手部動作姿態(tài)的體感設(shè)備。Leap Motion可以同時追蹤全部10只手指,精度高達(dá)0.01 mm。手勢跟蹤過程中,傳感器會每隔單位時間向PC發(fā)送一次手部的運(yùn)動幀信息。Leap Motion根據(jù)當(dāng)前幀和之前幀進(jìn)行比對,從而得出手的平移向量、旋轉(zhuǎn)角度等,分析出手的運(yùn)動信息。
2.2 芯片選型
控制板選用的是“颼”多功能Arduino板,處理器型號為ATmega2560,共有75個I/O口,可以實(shí)現(xiàn)更多的I/O口的控制[5]。本系統(tǒng)共采用2塊Arduino控制板,Arduino(I)板只負(fù)責(zé)小車的APP控制;Arduino(Ⅱ)板只負(fù)責(zé)機(jī)械臂的手勢控制。系統(tǒng)中使用兩種類型的WiFi模塊:一種是Openwrt?WiFi模塊,傳輸距離較遠(yuǎn),用于APP對小車運(yùn)動的無線控制;另一種是W5500?WiFi模塊,傳輸更為穩(wěn)定,用于機(jī)械臂的無線控制。
2.3 機(jī)械臂
本系統(tǒng)的機(jī)械臂是使用舵機(jī)進(jìn)行動力輸出的一種機(jī)械臂。操作者手勢的運(yùn)動數(shù)據(jù)信息經(jīng)過上位機(jī)軟件Processing處理后,轉(zhuǎn)化為舵機(jī)轉(zhuǎn)動角度指令,并通過WiFi傳遞到Arduino(Ⅱ)控制板上,從而實(shí)現(xiàn)機(jī)械臂的手勢控制[6]。
3.1 機(jī)械臂的手勢控制
機(jī)械臂手勢識別控制使用Leap Motion官網(wǎng)提供的Windows環(huán)境下的開發(fā)包工具包:SDK文件、Leap Motion驅(qū)動程序(版本號為3.2.0)。上位機(jī)采用的是交互式圖形編程軟件Processing(版本為3.3.5,選擇的是Java語言環(huán)境)。上位機(jī)軟件Processing通過調(diào)用Leap Motion SDK開發(fā)包中的Leap Motion庫函數(shù)de.voidplus.leapmotion和以太網(wǎng)函數(shù)processing.net*,用于手勢數(shù)據(jù)的獲取和手勢控制數(shù)據(jù)的無線傳輸[7]。
Processing中只需讀取手部的5個數(shù)據(jù):手掌掌心骨骼點(diǎn)在x軸上對應(yīng)的坐標(biāo)數(shù)值、手掌掌心骨骼點(diǎn)在y軸上對應(yīng)的坐標(biāo)數(shù)值、手掌掌心骨骼點(diǎn)在z軸上對應(yīng)的坐標(biāo)數(shù)值、手腕骨骼點(diǎn)順時針轉(zhuǎn)動的角度值、大拇指指尖和食指指尖的距離數(shù)值。處理后的數(shù)值依次傳值給hand_x,hand_y,hand_z,hand_dir,hand_dist[8],相關(guān)程序如圖2所示。
在操作者手部動作實(shí)時映射到機(jī)械臂的控制過程中,map()函數(shù)扮演了最重要的角色,在手的5個動作中都有用到。本文中map()函數(shù)的功能是:將手在x,y,z軸正負(fù)6個方向上的運(yùn)動范圍、手腕關(guān)節(jié)順逆時針運(yùn)動的角度范圍、食指和拇指的張合范圍,依次線性映射為對應(yīng)舵機(jī)的轉(zhuǎn)動角度范圍值(0°~179°),如圖3所示。最后通過WiFi將數(shù)據(jù)傳遞給下位機(jī)Arduino[9]。Arduino接收到數(shù)據(jù)后,發(fā)出舵機(jī)控制指令,實(shí)現(xiàn)機(jī)械臂的實(shí)時手勢控制。
3.2 小車的手機(jī)控制
本系統(tǒng)利用Eclipse軟件中的Android SDK,編寫了一個簡易的控制小車移動的手機(jī)APP,其中每按下一個按鍵,就通過WiFi發(fā)送一個相應(yīng)的控制字符[10]。以“前進(jìn)”按鈕為例,圖4為APP操控界面、按鈕布局程序,以及按鈕按下和彈起后發(fā)送不同字符的程序。
控制字符‘a(chǎn)通過WiFi傳輸?shù)紸rduino(I)控制板上。Arduino(I)控制板根據(jù)接收到的字符‘a(chǎn),調(diào)用對應(yīng)的前進(jìn)函數(shù),實(shí)現(xiàn)小車的前進(jìn)運(yùn)動。當(dāng)手指從任意按鍵上松開,手機(jī)就會發(fā)送控制小車停止的字符‘l,這樣小車就實(shí)現(xiàn)了停止。前進(jìn)和停止程序如圖5所示。
本次實(shí)驗(yàn)是由Windows 7系統(tǒng)的電腦、Android手機(jī)和裝有兩塊Arduino控制板的小車共同完成,實(shí)驗(yàn)的具體過程為:
1) 在Android手機(jī)的APP上,按下小車的控制按鈕,會將對應(yīng)的字符指令通過WiFi發(fā)送到Arduino(I)控制板上,然后調(diào)用相應(yīng)的方向控制函數(shù),實(shí)現(xiàn)小車的方向控制[11]。同時攝像頭會將圖像信息不間斷地傳送給接收器,實(shí)時偵查前方情況。
2) 在Leap Motion手勢感應(yīng)器上,手部做出動作后,手部運(yùn)動的信息會通過上位機(jī)Processing轉(zhuǎn)化為對應(yīng)的舵機(jī)運(yùn)動角度的范圍值,如圖6和表1所示。
然后通過WiFi發(fā)送到Arduino(Ⅱ)控制板上,控制相應(yīng)的舵機(jī),從而實(shí)現(xiàn)對機(jī)械臂的控制。
本文針對基于移動小車平臺的機(jī)械臂,提出一種新穎的控制方式:手機(jī)APP控制小車的運(yùn)動、手勢控制五自由度的舵機(jī)機(jī)械臂。實(shí)驗(yàn)成本低,控制靈活方便,能夠到達(dá)較為危險(xiǎn)的環(huán)境,完成遠(yuǎn)程任務(wù)。在軍事偵查、教育科研、醫(yī)學(xué)研究等領(lǐng)域都有較好的應(yīng)用前景。
參考文獻(xiàn)
[1] WEICHERT F, BACHMANN D, RUDAK B, et al. Analysis of the accuracy and robustness of the leap motion controller [J]. Sensors, 2013, 13(5): 6380?6393.
[2] 黃俊,景紅.基于Leap Motion的手勢控制技術(shù)初探[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(10):259?263.
HUANG Jun, JING Hong. Gesture control research based on Leap Motion [J]. Computer systems & applications, 2015, 24(10): 259?263.
[3] 樊博文.基于Leap Motion的仿生機(jī)械手的研究與實(shí)現(xiàn)[J].電子世界,2017(10):25?26.
FAN Bowen. Research and implementation of bionic mechanical arm based on Leap Motion [J]. Electronics world, 2017(10): 25?26.
[4] 羅回彬,劉春麗,董思奇,等.Leap Motion體感控制器的智能移動機(jī)械臂控制系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017,17(1):40?43.
LUO Huibin, LIU Chunli, DONG Siqi, et al. Intelligent mobile manipulator control system based on Leap Motion [J]. Microcontrollers & embedded systems, 2017, 17(1): 40?43.
[5] 謝杰騰,顏曉文.基于Android手機(jī)語音和Arduino控制板的機(jī)器人控制系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2015,5(3):101?102.
XIE Jieteng, YAN Xiaowen. Robot control system based on Android mobile phone voice and Arduino control board [J]. Internet of Things technologies, 2015, 5(3): 101?102.
[6] 呂偉文.全方位輪移動機(jī)構(gòu)的結(jié)構(gòu)設(shè)計(jì)[J].機(jī)械與電子,2006(12):63?65.
L? Weiwen. The structure design of omni?directional moving mechanism [J]. Machinery & electronics, 2006(12): 63?65.
[7] 康楊雨軒,鄭文,李松林,等.基于Leap Motion的機(jī)械臂交互控制研究[J].傳感器與微系統(tǒng),2016,35(6):34?37.
KANG Yangyuxuan, ZHENG Wen, LI Songlin, et al. Research on manipulator interactive control based on Leap Motion [J]. Transducer and microsystem technologies, 2016, 35(6): 34?37.
[8] 寧亞楠.基于Leap Motion的手勢識別在虛擬沙畫中的應(yīng)用研究[D].太原:中北大學(xué),2017.
NING Yanan. Application research of gesture recognition based on Leap Motion in virtual sand painting [D]. Taiyuan: North University of China, 2017.
[9] 陶林,李凱格,王淼.基于Leap Motion手勢識別的機(jī)器人控制系統(tǒng)[J].制造業(yè)自動化,2015,37(24):64?66.
TAO Lin, LI Kaige, WANG Miao. Robot control system based on Leap Motion gesture recognition [J]. Manufacturing automation, 2015, 37(24): 64?66.
[10] 危思思.基于OpenWrt開源平臺的移動智能裝備[D].杭州:浙江大學(xué),2014.
WEI Sisi. Mobile intelligent equipment based on OpenWrt open source platform [D]. Hangzhou: Zhejiang University, 2014.
[11] 燕飛.基于Android平臺的移動機(jī)器人遠(yuǎn)程控制系統(tǒng)[D].杭州:浙江理工大學(xué),2014.
YAN Fei. Android?based remote control system for mobile robot [D]. Hangzhou: Zhejiang Sci?Tech University, 2014.