羅回彬,劉春麗,董思奇,陳錫柯,楊哲宇
(北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院,珠海 519000)
?
Leap Motion體感控制器的智能移動(dòng)機(jī)械臂控制系統(tǒng)*
羅回彬,劉春麗,董思奇,陳錫柯,楊哲宇
(北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院,珠海 519000)
設(shè)計(jì)一種新型的移動(dòng)機(jī)械臂控制系統(tǒng),可以利用Leap Motion體感控制器替代傳統(tǒng)的人機(jī)交互方式,進(jìn)行手部數(shù)據(jù)采集,將其識(shí)別到的手勢動(dòng)作經(jīng)過計(jì)算機(jī)分析處理后,通過WiFi傳輸給開發(fā)板,進(jìn)而控制機(jī)械臂模仿人手的動(dòng)作,同時(shí)由于機(jī)械臂的載體是一個(gè)加載攝像頭的移動(dòng)小車,可以很好地結(jié)合機(jī)械臂執(zhí)行各種遠(yuǎn)程遙控任務(wù)。實(shí)驗(yàn)結(jié)果表明,該移動(dòng)機(jī)械臂便捷靈活、操作簡單,能很好地應(yīng)用在各種領(lǐng)域。
leap motion;手勢識(shí)別;移動(dòng)機(jī)械臂
機(jī)器人是一種能夠進(jìn)行編程并在自動(dòng)化控制下執(zhí)行某些操作和移動(dòng)作業(yè)任務(wù)的機(jī)械裝置,在工業(yè)、醫(yī)學(xué)、農(nóng)業(yè)、建筑業(yè)甚至軍事等領(lǐng)域中均有重要用途[1-2]。目前機(jī)器人很少是通過體感操控的[3-4],人機(jī)交互通常都是依靠鼠標(biāo)、鍵盤、觸摸屏。因此,人與機(jī)器人交互方式不夠直接和簡單。基于這點(diǎn)提出了一種新的機(jī)器人控制方式——體感控制,即操作者可以通過手勢對(duì)機(jī)器人進(jìn)行控制,讓人直接用自己的手來指揮機(jī)器人進(jìn)行動(dòng)作,完成需要人機(jī)協(xié)作才能完成的任務(wù)。本項(xiàng)目研究的智能移動(dòng)機(jī)械臂可通過Leap Motion控制,實(shí)現(xiàn)機(jī)械臂模仿人類所做的手勢動(dòng)作的功能,同時(shí)小車搭載攝像頭模塊更方便地實(shí)現(xiàn)機(jī)械臂的可操作性,實(shí)現(xiàn)機(jī)器人控制方式上的創(chuàng)新和更加自然的人機(jī)交互。
本項(xiàng)目主要利用Leap Motion的小巧而且識(shí)別度精準(zhǔn)的特性,通過其對(duì)手勢的動(dòng)作進(jìn)行分析轉(zhuǎn)化,并在機(jī)械臂及小車自帶搭載的WiFi環(huán)境下,進(jìn)行對(duì)機(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體感控制器完成對(duì)手部數(shù)據(jù)的采集,對(duì)數(shù)據(jù)進(jìn)行處理并識(shí)別出手勢,PC機(jī)通過WiFi把控制指令傳送給Arduino開發(fā)板;而Arduino開發(fā)根據(jù)不同的指令控制機(jī)械臂各關(guān)節(jié)的旋轉(zhuǎn)角度和小車的運(yùn)動(dòng),從而完成預(yù)期的動(dòng)作。同時(shí),PC端和手機(jī)端也可以通過按鍵方式進(jìn)行相應(yīng)的命令操作,控制機(jī)械臂和小車完成預(yù)期的動(dòng)作。
圖2 系統(tǒng)結(jié)構(gòu)框圖
2.1 Leap Motion體感控制器
Leap Motion是當(dāng)下流行的以手部運(yùn)動(dòng)捕獲為主的體感設(shè)備,利用紅外成像的原理獲取手的運(yùn)動(dòng)圖像,檢測并跟蹤手、手指和類似手指的工具,可以實(shí)時(shí)獲取它們的位置、手勢和動(dòng)作,并將這些靜態(tài)與動(dòng)態(tài)信息提供給操作者。利用Leap Motion根據(jù)每幀和前幀檢測到的數(shù)據(jù)所生成的運(yùn)動(dòng)數(shù)據(jù),捕獲不同手勢和手勢的運(yùn)動(dòng)變化信息[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)對(duì)象的時(shí)候, 其軟件系統(tǒng)還會(huì)自動(dòng)為這個(gè)對(duì)象分配一個(gè)獨(dú)一無二的標(biāo)識(shí)符,在設(shè)備的視野范圍內(nèi)如果持續(xù)檢測到目標(biāo)對(duì)象存在,這個(gè)標(biāo)識(shí)符就保持不變。如果目標(biāo)超出有效視野范圍, 整個(gè)追蹤過程出現(xiàn)丟失或者失而復(fù)得的情況,Leap Motion便會(huì)重新為目標(biāo)對(duì)象分配一個(gè)新的標(biāo)識(shí)符, 同時(shí)使舊的標(biāo)識(shí)符失效。
2.2 機(jī)械臂模塊
如圖4所示,機(jī)械臂主要由大臂、小臂、舵機(jī)和機(jī)械臂爪組成。當(dāng)手勢信息或按鍵命令傳給Arduino控制器后,它就先解析出動(dòng)作指令再操控機(jī)械臂的舵機(jī),讓機(jī)械臂做出相應(yīng)的動(dòng)作,具體功能描述如表1所列。
圖4 機(jī)械臂結(jié)構(gòu)圖
主要組成部分功能描述左舵機(jī)控制左邊的小臂連桿,使機(jī)械臂實(shí)現(xiàn)伸長和縮短的運(yùn)動(dòng)右舵機(jī)控制右邊的大臂,使機(jī)械臂實(shí)現(xiàn)上下的運(yùn)動(dòng)爪舵機(jī)控制機(jī)械臂爪的伸縮
2.3 Arduino開發(fā)板
Arduino開發(fā)板具有開源,模塊化組裝,簡單實(shí)用等特性[9-11],本項(xiàng)目就是利用它的這些特性控制機(jī)械臂的舵機(jī)和小車的馬達(dá),從而實(shí)現(xiàn)對(duì)小車和機(jī)械臂的控制,大大地縮短了開發(fā)的周期。
3.1 整體軟件設(shè)計(jì)及實(shí)現(xiàn)
本項(xiàng)目在軟件設(shè)計(jì)與實(shí)現(xiàn)中,PC端采用Windows系統(tǒng)、C#語言,手機(jī)端采用Android系統(tǒng)、Java語言。如圖5所示,主程序啟動(dòng)后,進(jìn)行Leap Motion操作和按鍵操作的選擇界面,當(dāng)操作者執(zhí)行一個(gè)手勢或者一個(gè)按鍵操作后,PC端或手機(jī)端會(huì)有相應(yīng)的函數(shù)對(duì)操作進(jìn)行解析,再通過WiFi通信發(fā)送給Arduino開發(fā)板,然后Arduino開發(fā)板就會(huì)控制機(jī)械臂的舵機(jī)或者小車的馬達(dá),從而讓它們運(yùn)動(dòng)。
圖5 總體流程圖
3.2 手勢識(shí)別
手勢動(dòng)作具有以下三個(gè)特點(diǎn):
① 時(shí)間可變性:完成同一個(gè)手勢所用的時(shí)間不一致。
② 空間可變性:完成同一個(gè)手勢的空間差異性。
③ 完整可變性:缺少信息或出現(xiàn)重復(fù)信息。
這些特點(diǎn)決定了動(dòng)態(tài)手勢的識(shí)別難度,開發(fā)人員無法抽樣或?qū)⑵渥鳛橐粋€(gè)整體來識(shí)別。因此,本項(xiàng)目主要通過對(duì)一只手手指的運(yùn)動(dòng)來進(jìn)行捕獲,再轉(zhuǎn)換為指定的字母,化繁為簡,來控制機(jī)械臂和小車。
在手勢轉(zhuǎn)換過程中,函數(shù)OnFrame()為最核心的函數(shù)。在這個(gè)函數(shù)中,主要利用Leap Motion SDK開發(fā)包的函數(shù)Extended()對(duì)獲得數(shù)據(jù)進(jìn)行處理,提取手部的運(yùn)動(dòng)特征。本系統(tǒng)可識(shí)別兩類手勢:一種是手指在空間運(yùn)動(dòng),獲得手指數(shù)量;另一種是手指在平面內(nèi)畫圈,包括順時(shí)針畫圈和逆時(shí)針畫圈。隨后,通過一個(gè)Switch()語句對(duì)手指數(shù)量的判斷來轉(zhuǎn)換為相應(yīng)的字母命令,每一個(gè)字母都有自己的指示動(dòng)作,然后通過SendData()函數(shù)將字母傳送到Arduino開發(fā)板,具體流程如圖6所示。
圖6 手勢轉(zhuǎn)換過程流程圖
3.3 小車與機(jī)械臂控制
圖7 Arduino控制機(jī)械臂或 小車操作的流程圖
進(jìn)行手勢識(shí)別和轉(zhuǎn)換后,PC端將數(shù)據(jù)通過WiFi傳送至Arduino,Arduino開發(fā)板會(huì)通過調(diào)用Serial.read()函數(shù)和Switch()語句進(jìn)一步判斷和指定機(jī)械臂或小車做出相應(yīng)的動(dòng)作,具體流程如圖7所示。
3.4 WiFi通信
在Internet中,TCP/IP使用一個(gè)網(wǎng)絡(luò)地址和一個(gè)服務(wù)端口號(hào)來唯一標(biāo)識(shí)設(shè)備。其中,網(wǎng)絡(luò)IP地址用于標(biāo)識(shí)網(wǎng)絡(luò)上的特定設(shè)備;端口號(hào)用于標(biāo)識(shí)要連接到的該設(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)目中,用指定的地址和端口號(hào)初始化 IPEndPoint 類的新實(shí)例,然后通過Socket編程就可以實(shí)現(xiàn)連接并通信。其中,設(shè)置的IP為192.168.8.1,端口號(hào)為2001,協(xié)議是TCP/IP,IPEndPoint類主要有服務(wù)器的IP地址和端口信息,實(shí)現(xiàn)客戶端到服務(wù)器端的連接。Socket編程的基本過程如下:
① 創(chuàng)建一個(gè)Socket實(shí)例對(duì)象。
② 運(yùn)用Connect()方法將Socket實(shí)例對(duì)象連接到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ù)處理識(shí)別出手勢和手掌的運(yùn)動(dòng)軌跡,并將處理后的結(jié)果傳輸給Arduino,小車接收命令和數(shù)據(jù),然后做出相應(yīng)的動(dòng)作,如圖8所示。
圖8 Leap Motion控制小車停止(左)和向前運(yùn)動(dòng)(右)
② 手機(jī)端通過按鍵操作命令,將相應(yīng)的命令數(shù)據(jù)傳輸給Arduino,機(jī)械臂和小車根據(jù)接收的命令和數(shù)據(jù)做出相應(yīng)的動(dòng)作,如圖9所示。
實(shí)驗(yàn)結(jié)果表明,在各功能部件連接通暢的情況下,通過Leap Motion體感控制能很好地識(shí)別操作手勢,實(shí)現(xiàn)對(duì)機(jī)械臂、小車的便捷控制。
[1] 田野,陳曉鵬,賈東永,等.仿人機(jī)器人輕型高剛性手臂設(shè)計(jì)及運(yùn)動(dòng)學(xué)分析[J].機(jī)器人,2013(5):332-335.
[2] 李波,張瑾,李國棟.排爆機(jī)器人機(jī)械臂控制系統(tǒng)設(shè)計(jì)[J].機(jī)電工程,2015(8):1110-1114,1150.
[3] 李澤玲.基于手勢的機(jī)器人自然人機(jī)交互系統(tǒng)[D].廣州:華南理工大學(xué),2015.
[4] 杜釗君.基于體感傳感器的手勢識(shí)別及人機(jī)交互系統(tǒng)研究[D].武漢:武漢科技大學(xué),2013.
[5] 翁省輝,陳韋澔,陳匡林.基于Leap Motion手語翻譯器的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2015(24):114-117.
[6] 陶林,李凱格,王淼.基于Leap Motion手勢識(shí)別的機(jī)器人控制系統(tǒng)[J].制造業(yè)自動(dòng)化,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].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2015(7):1211-1216.
[9] 陳呂洲.Arduino程序設(shè)計(jì)基礎(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è)計(jì)及應(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)練計(jì)劃項(xiàng)目(201513675028)。
TP332
A
?迪娜
2016-07-14)