羅回彬,劉春麗,董思奇,陳錫柯,楊哲宇
(北京理工大學(xué)珠海學(xué)院 計算機(jī)學(xué)院,珠海 519000)
?
Leap Motion體感控制器的智能移動機(jī)械臂控制系統(tǒng)*
羅回彬,劉春麗,董思奇,陳錫柯,楊哲宇
(北京理工大學(xué)珠海學(xué)院 計算機(jī)學(xué)院,珠海 519000)
設(shè)計一種新型的移動機(jī)械臂控制系統(tǒng),可以利用Leap Motion體感控制器替代傳統(tǒng)的人機(jī)交互方式,進(jìn)行手部數(shù)據(jù)采集,將其識別到的手勢動作經(jīng)過計算機(jī)分析處理后,通過WiFi傳輸給開發(fā)板,進(jìn)而控制機(jī)械臂模仿人手的動作,同時由于機(jī)械臂的載體是一個加載攝像頭的移動小車,可以很好地結(jié)合機(jī)械臂執(zhí)行各種遠(yuǎn)程遙控任務(wù)。實(shí)驗(yàn)結(jié)果表明,該移動機(jī)械臂便捷靈活、操作簡單,能很好地應(yīng)用在各種領(lǐng)域。
leap motion;手勢識別;移動機(jī)械臂
機(jī)器人是一種能夠進(jìn)行編程并在自動化控制下執(zhí)行某些操作和移動作業(yè)任務(wù)的機(jī)械裝置,在工業(yè)、醫(yī)學(xué)、農(nóng)業(yè)、建筑業(yè)甚至軍事等領(lǐng)域中均有重要用途[1-2]。目前機(jī)器人很少是通過體感操控的[3-4],人機(jī)交互通常都是依靠鼠標(biāo)、鍵盤、觸摸屏。因此,人與機(jī)器人交互方式不夠直接和簡單?;谶@點(diǎn)提出了一種新的機(jī)器人控制方式——體感控制,即操作者可以通過手勢對機(jī)器人進(jìn)行控制,讓人直接用自己的手來指揮機(jī)器人進(jìn)行動作,完成需要人機(jī)協(xié)作才能完成的任務(wù)。本項(xiàng)目研究的智能移動機(jī)械臂可通過Leap Motion控制,實(shí)現(xiàn)機(jī)械臂模仿人類所做的手勢動作的功能,同時小車搭載攝像頭模塊更方便地實(shí)現(xiàn)機(jī)械臂的可操作性,實(shí)現(xiàn)機(jī)器人控制方式上的創(chuàng)新和更加自然的人機(jī)交互。
本項(xiàng)目主要利用Leap Motion的小巧而且識別度精準(zhǔn)的特性,通過其對手勢的動作進(jìn)行分析轉(zhuǎn)化,并在機(jī)械臂及小車自帶搭載的WiFi環(huán)境下,進(jìn)行對機(jī)械臂的控制,如圖1所示。

圖1 整體效果示意圖
本系統(tǒng)主要由上位機(jī)系統(tǒng)和下位機(jī)系統(tǒng)組成,上位機(jī)系統(tǒng)由PC機(jī)、Leap Motion體感控制器和手機(jī)組成。下位機(jī)則由Arduino開發(fā)板、控制機(jī)械臂和控制小車組成。系統(tǒng)結(jié)構(gòu)框圖如圖2所示,Leap Motion體感控制器完成對手部數(shù)據(jù)的采集,對數(shù)據(jù)進(jìn)行處理并識別出手勢,PC機(jī)通過WiFi把控制指令傳送給Arduino開發(fā)板;而Arduino開發(fā)根據(jù)不同的指令控制機(jī)械臂各關(guān)節(jié)的旋轉(zhuǎn)角度和小車的運(yùn)動,從而完成預(yù)期的動作。同時,PC端和手機(jī)端也可以通過按鍵方式進(jìn)行相應(yīng)的命令操作,控制機(jī)械臂和小車完成預(yù)期的動作。

圖2 系統(tǒng)結(jié)構(gòu)框圖
2.1 Leap Motion體感控制器
Leap Motion是當(dāng)下流行的以手部運(yùn)動捕獲為主的體感設(shè)備,利用紅外成像的原理獲取手的運(yùn)動圖像,檢測并跟蹤手、手指和類似手指的工具,可以實(shí)時獲取它們的位置、手勢和動作,并將這些靜態(tài)與動態(tài)信息提供給操作者。利用Leap Motion根據(jù)每幀和前幀檢測到的數(shù)據(jù)所生成的運(yùn)動數(shù)據(jù),捕獲不同手勢和手勢的運(yùn)動變化信息[5]。Leap Motion采用了笛卡爾坐標(biāo)系(Cartesian coordinates),坐標(biāo)的原點(diǎn)是設(shè)備的中心,坐標(biāo)的X軸平行于設(shè)備,Y軸指向上方,Z軸指向背離屏幕的方向,單位為真實(shí)世界的mm[6-8],如圖3所示。

圖3 Leap Motion的笛卡爾坐標(biāo)系
Leap Motion檢測到手掌或者手指等目標(biāo)對象的時候, 其軟件系統(tǒng)還會自動為這個對象分配一個獨(dú)一無二的標(biāo)識符,在設(shè)備的視野范圍內(nèi)如果持續(xù)檢測到目標(biāo)對象存在,這個標(biāo)識符就保持不變。如果目標(biāo)超出有效視野范圍, 整個追蹤過程出現(xiàn)丟失或者失而復(fù)得的情況,Leap Motion便會重新為目標(biāo)對象分配一個新的標(biāo)識符, 同時使舊的標(biāo)識符失效。
2.2 機(jī)械臂模塊
如圖4所示,機(jī)械臂主要由大臂、小臂、舵機(jī)和機(jī)械臂爪組成。當(dāng)手勢信息或按鍵命令傳給Arduino控制器后,它就先解析出動作指令再操控機(jī)械臂的舵機(jī),讓機(jī)械臂做出相應(yīng)的動作,具體功能描述如表1所列。

圖4 機(jī)械臂結(jié)構(gòu)圖

主要組成部分功能描述左舵機(jī)控制左邊的小臂連桿,使機(jī)械臂實(shí)現(xiàn)伸長和縮短的運(yùn)動右舵機(jī)控制右邊的大臂,使機(jī)械臂實(shí)現(xiàn)上下的運(yùn)動爪舵機(jī)控制機(jī)械臂爪的伸縮
2.3 Arduino開發(fā)板
Arduino開發(fā)板具有開源,模塊化組裝,簡單實(shí)用等特性[9-11],本項(xiàng)目就是利用它的這些特性控制機(jī)械臂的舵機(jī)和小車的馬達(dá),從而實(shí)現(xiàn)對小車和機(jī)械臂的控制,大大地縮短了開發(fā)的周期。
3.1 整體軟件設(shè)計及實(shí)現(xiàn)
本項(xiàng)目在軟件設(shè)計與實(shí)現(xiàn)中,PC端采用Windows系統(tǒng)、C#語言,手機(jī)端采用Android系統(tǒng)、Java語言。如圖5所示,主程序啟動后,進(jìn)行Leap Motion操作和按鍵操作的選擇界面,當(dāng)操作者執(zhí)行一個手勢或者一個按鍵操作后,PC端或手機(jī)端會有相應(yīng)的函數(shù)對操作進(jìn)行解析,再通過WiFi通信發(fā)送給Arduino開發(fā)板,然后Arduino開發(fā)板就會控制機(jī)械臂的舵機(jī)或者小車的馬達(dá),從而讓它們運(yùn)動。

圖5 總體流程圖
3.2 手勢識別
手勢動作具有以下三個特點(diǎn):
① 時間可變性:完成同一個手勢所用的時間不一致。
② 空間可變性:完成同一個手勢的空間差異性。
③ 完整可變性:缺少信息或出現(xiàn)重復(fù)信息。
這些特點(diǎn)決定了動態(tài)手勢的識別難度,開發(fā)人員無法抽樣或?qū)⑵渥鳛橐粋€整體來識別。因此,本項(xiàng)目主要通過對一只手手指的運(yùn)動來進(jìn)行捕獲,再轉(zhuǎn)換為指定的字母,化繁為簡,來控制機(jī)械臂和小車。
在手勢轉(zhuǎn)換過程中,函數(shù)OnFrame()為最核心的函數(shù)。在這個函數(shù)中,主要利用Leap Motion SDK開發(fā)包的函數(shù)Extended()對獲得數(shù)據(jù)進(jìn)行處理,提取手部的運(yùn)動特征。本系統(tǒng)可識別兩類手勢:一種是手指在空間運(yùn)動,獲得手指數(shù)量;另一種是手指在平面內(nèi)畫圈,包括順時針畫圈和逆時針畫圈。隨后,通過一個Switch()語句對手指數(shù)量的判斷來轉(zhuǎn)換為相應(yīng)的字母命令,每一個字母都有自己的指示動作,然后通過SendData()函數(shù)將字母傳送到Arduino開發(fā)板,具體流程如圖6所示。

圖6 手勢轉(zhuǎn)換過程流程圖
3.3 小車與機(jī)械臂控制

圖7 Arduino控制機(jī)械臂或 小車操作的流程圖
進(jìn)行手勢識別和轉(zhuǎn)換后,PC端將數(shù)據(jù)通過WiFi傳送至Arduino,Arduino開發(fā)板會通過調(diào)用Serial.read()函數(shù)和Switch()語句進(jìn)一步判斷和指定機(jī)械臂或小車做出相應(yīng)的動作,具體流程如圖7所示。
3.4 WiFi通信
在Internet中,TCP/IP使用一個網(wǎng)絡(luò)地址和一個服務(wù)端口號來唯一標(biāo)識設(shè)備。其中,網(wǎng)絡(luò)IP地址用于標(biāo)識網(wǎng)絡(luò)上的特定設(shè)備;端口號用于標(biāo)識要連接到的該設(shè)備上的特定服務(wù)。根據(jù)上述原理,本項(xiàng)目的服務(wù)器可以理解為PC端和手機(jī)端,而客戶端則是Arduino開發(fā)板。利用Arduino開發(fā)板自帶的串口WiFi模塊構(gòu)建WiFi局域網(wǎng),將電腦或手機(jī)連接到已經(jīng)搭建的WiFi環(huán)境中,實(shí)現(xiàn)Socket連接及通信。
在本項(xiàng)目中,用指定的地址和端口號初始化 IPEndPoint 類的新實(shí)例,然后通過Socket編程就可以實(shí)現(xiàn)連接并通信。其中,設(shè)置的IP為192.168.8.1,端口號為2001,協(xié)議是TCP/IP,IPEndPoint類主要有服務(wù)器的IP地址和端口信息,實(shí)現(xiàn)客戶端到服務(wù)器端的連接。Socket編程的基本過程如下:
① 創(chuàng)建一個Socket實(shí)例對象。
② 運(yùn)用Connect()方法將Socket實(shí)例對象連接到IPEndPoint。
③ 接收并發(fā)送信息。
④ 最后用Close()方法來關(guān)閉Socket。
本項(xiàng)目在Windows7系統(tǒng)和Android智能手機(jī)進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)演示過程具體如下:
① Leap Motion體感控制器將手部信息發(fā)給PC端,PC端經(jīng)過數(shù)據(jù)處理識別出手勢和手掌的運(yùn)動軌跡,并將處理后的結(jié)果傳輸給Arduino,小車接收命令和數(shù)據(jù),然后做出相應(yīng)的動作,如圖8所示。

圖8 Leap Motion控制小車停止(左)和向前運(yùn)動(右)
② 手機(jī)端通過按鍵操作命令,將相應(yīng)的命令數(shù)據(jù)傳輸給Arduino,機(jī)械臂和小車根據(jù)接收的命令和數(shù)據(jù)做出相應(yīng)的動作,如圖9所示。
實(shí)驗(yàn)結(jié)果表明,在各功能部件連接通暢的情況下,通過Leap Motion體感控制能很好地識別操作手勢,實(shí)現(xiàn)對機(jī)械臂、小車的便捷控制。

[1] 田野,陳曉鵬,賈東永,等.仿人機(jī)器人輕型高剛性手臂設(shè)計及運(yùn)動學(xué)分析[J].機(jī)器人,2013(5):332-335.
[2] 李波,張瑾,李國棟.排爆機(jī)器人機(jī)械臂控制系統(tǒng)設(shè)計[J].機(jī)電工程,2015(8):1110-1114,1150.
[3] 李澤玲.基于手勢的機(jī)器人自然人機(jī)交互系統(tǒng)[D].廣州:華南理工大學(xué),2015.
[4] 杜釗君.基于體感傳感器的手勢識別及人機(jī)交互系統(tǒng)研究[D].武漢:武漢科技大學(xué),2013.
[5] 翁省輝,陳韋澔,陳匡林.基于Leap Motion手語翻譯器的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2015(24):114-117.
[6] 陶林,李凱格,王淼.基于Leap Motion手勢識別的機(jī)器人控制系統(tǒng)[J].制造業(yè)自動化,2015(24):64-66,81.
[7] 胡弘,晁建剛,林萬洪,等.Leap Motion虛擬手構(gòu)建方法及其在航天訓(xùn)練中的應(yīng)用[J].載人航天,2015(3):257-262.
[8] 胡弘,晁建剛,楊進(jìn),等.Leap Motion關(guān)鍵點(diǎn)模型手姿態(tài)估計方法[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2015(7):1211-1216.
[9] 陳呂洲.Arduino程序設(shè)計基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2014:5-6.
[10] 于欣龍,張陽,張巖,等.Arduino機(jī)器人權(quán)威指南[M].北京:電子工業(yè)出版社,2014.
[11] Michael Margolis.學(xué)Arduino玩轉(zhuǎn)機(jī)器人制作[M].臧海波,譯.北京:人民郵電出版社,2014.
羅回彬(碩士)、劉春麗、董思奇(在讀本科生),主要研究方向?yàn)榍度胧较到y(tǒng)設(shè)計及應(yīng)用。
Intelligent Mobile Manipulator Control System Based on Leap Motion
Luo Huibin,Liu Chunli,Dong Siqi,Chen Xike,Yang Zheyu
(Department of Computer,Zhuhai Campus Beijing Institute of Technology,Zhuhai 519000,China)
A new design of mobile manipulator control system is proposed,which can replace the traditional way of human-computer interaction.In this design,you can use leap motion sensing controller to realize the gestures data acquisition,and the recognition of gestures are analyzed by the computer,then the data is transmitted to the development board through WiFi to control the manipulator imitate hand movements.Because the mobile car loaded a camera is the carrier of the manipulator,so it is a good combination of the manipulator to perform the various remote control tasks.The experiment results show that the mobile manipulator is convenient and flexible,simple operation,it can be used in various fields.
leap motion;gesture recognition;mobile manipulator
廣東省大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項(xiàng)目(201513675028)。
TP332
A
?迪娜
2016-07-14)