很遺憾,因您的瀏覽器版本過低導致無法獲得最佳瀏覽體驗,推薦下載安裝谷歌瀏覽器!
LeapMotion體感控制器的智能移動機械臂控制系統(tǒng)
2017-3-17 來源:北京理工大學珠海學院 作者:羅回彬,劉春麗,董思奇,陳錫柯,楊哲宇
摘要:設(shè)計一種新型的移動機械臂控制系統(tǒng),可以利用 Leap?。停铮簦椋铮铙w感控制器替代傳統(tǒng)的人機交互方式,進行手部數(shù)據(jù)采集,將其識別到的手勢動作經(jīng)過計算機分析處理后,通過 WiFi傳輸給開發(fā)板,進而控制機械臂模仿人手的動作,同時由于機械臂的載體是一個加載攝像頭的移動小車,可以很好地結(jié)合機械臂執(zhí)行各種遠程遙控任務(wù)。實驗結(jié)果表明,該移動機械臂便捷靈活、操作簡單,能很好地應(yīng)用在各種領(lǐng)域。
關(guān)鍵詞:leap?。恚铮簦椋铮?;手勢識別;移動機械臂
0.引言
機器人是一種能夠進行編程并在自動化控制下執(zhí)行某些操作和移動作業(yè)任務(wù)的機械裝置,在工業(yè)、醫(yī) 學、農(nóng)業(yè)、建筑業(yè)甚至軍事等領(lǐng)域中均有重要用途[1-2]。目前機器人很少是通過體感操控的[3-4],人機交互通常都是依靠鼠標、鍵盤、觸摸屏。因此,人與機器人交互方式不夠直接和簡單。基于這點提出了一種新的機器人控制方式———體感控制,即操作者可以通過手勢對機器人進行控制,讓人直接用自己的手來指揮機器人進行動作,完成需要人機協(xié)作才能完成的任務(wù)。本項目研究的智能移動機械臂可通過 Leap Motion控制,實現(xiàn)機械臂模仿人類所做的手勢動作的功能,同時小車搭載攝像頭模塊更方便地實現(xiàn)機械臂的可操作性,實現(xiàn)機器人控制方式上的創(chuàng)新和更加自然的人機交互。
1.總體結(jié)構(gòu)與原理
本項目主要利用 Leap?。停铮簦椋铮畹男∏?而 且 識 別 度 精準的特性,通過其對手勢的動作進行分析轉(zhuǎn)化,并在機械臂及小車自帶搭載的 WiFi環(huán)境下,進行對機械臂的控制,如圖1所示。
圖1 整體效果示意圖
本系統(tǒng)主要由上位機系統(tǒng)和下位機系統(tǒng)組成,上位機系統(tǒng)由 PC機、Leap通過 WiFi把控制指令傳送給 Arduino開發(fā)板;而 Arduino開發(fā)根據(jù)不同的指令控制機械臂各關(guān)節(jié)的旋轉(zhuǎn)角度和小車的運動,從而完成預期的動作。同時,PC端和手機端也可以通過按鍵方式進行相應(yīng)的命令操作,控制機械臂和小車完成預期的動作。
圖2 系統(tǒng)結(jié)構(gòu)框圖
2.主要硬件模塊選型與設(shè)計
2.1LeapMotion體感控制器
Leap?。停铮簦椋铮钍钱斚铝餍械囊允植窟\動捕獲為主的體感設(shè)備,利用紅外成像的原理獲取手的運動圖像,檢測并跟蹤手、手指和類似手指的工具,可以實時獲取它們的位置、手勢和動作,并將這些靜態(tài)與動態(tài)信息提供給操作者。利用 LeapMotion根據(jù)每幀和前幀檢測到的數(shù)據(jù)所生成的運動數(shù)據(jù),捕獲不同手勢和手勢的運動變化信息[5]。Leap?。停铮簦椋铮畈捎昧说芽栕鴺讼担ǎ茫幔颍簦澹螅椋幔睢。悖铮铮颍洌椋睿幔簦澹螅鴺说脑c是設(shè)備的中心,坐標的 X軸平行于設(shè)備,Y軸指向上方,Z軸指向背離屏幕的方向,單位為真實世界的 mm[6-8],如圖3所示。
圖3?。蹋澹幔稹。停铮簦椋铮畹牡芽栕鴺讼?/span>
Leap?。停铮簦椋铮顧z測 到 手 掌 或 者 手 指 等 目 標 對 象 的 時候,其軟件系統(tǒng)還會自動為這個對象分配一個獨一無二的標識符,在設(shè)備的視野范圍內(nèi)如果持續(xù)檢測到目標對象存在,這個標識符就保持不變。如果目標超出有效視野范圍,整 個 追 蹤 過 程 出 現(xiàn) 丟 失 或 者 失 而 復 得 的 情 況,LeapMotion便會重新為目標對象分配一個新的標識符,同時使舊的標識符失效。
2.2機械臂模塊
如圖4所示,機械臂主要由大臂、小臂、舵機和機械臂爪組成。當手勢信息或按鍵命令傳給 Arduino控制器后,它就先解析出動作指令再操控機械臂的舵機,讓機械臂做出相應(yīng)的動作,具體功能描述如表1所列。
圖4 機械臂結(jié)構(gòu)圖
表1 機械臂功能描述
2.3Arduino開發(fā)板
Arduino開發(fā)板具 有 開 源,模 塊 化 組 裝,簡 單 實 用 等特性[9-11],本項目就是利用它的這些特性控制機械臂的舵機和小車的馬達,從而實現(xiàn)對小車和機械臂的控制,大大地縮短了開發(fā)的周期。
3.軟件設(shè)計及實現(xiàn)
3.1整體軟件設(shè)計及實現(xiàn)
本項目在軟件設(shè)計與實現(xiàn)中,PC端采用 Windows系統(tǒng)、C# 語 言,手 機 端 采 用 Android 系 統(tǒng)、Java語 言。 如圖5所示,主程序啟動后,進行 Leap?。停铮簦椋铮畈僮骱?按 鍵操作的選擇界面,當操作者執(zhí)行一個手勢或者一個按鍵操作后,PC端或手機端會有相應(yīng)的函數(shù)對操作進行解析,再通過 WiFi通信發(fā)送給 Arduino開發(fā)板,然 后 Arduino開發(fā)板就會控制機械臂的舵機或者小車的馬達,從而讓它們運動。
3.2手勢識別
手勢動作具有以下三個特點:
① 時間可變性:完成同一個手勢所用的時間不一致。
② 空間可變性:完成同一個手勢的空間差異性。
③ 完整可變性:缺少信息或出現(xiàn)重復信息。
這些特點決定了動態(tài)手勢的識別難度,開發(fā)人員無法抽樣或?qū)⑵渥鳛橐粋€整體來識別。因此,本項目主要通過對一只手手指的運動來進行捕獲,再轉(zhuǎn)換為指定的字母,化繁為簡,來控制機械臂和小車。
圖5 總體流程圖
在手勢轉(zhuǎn)換過程中,函數(shù) OnFrame()為最 核 心 的 函數(shù)。在這個函數(shù)中,主要利用 Leap Motion?。樱模?開發(fā)包的函數(shù) Extended()對獲得數(shù)據(jù)進行處理,提取手部的運動特征。本系統(tǒng)可識別兩類手勢:一種是手指在空間運動,獲得手指數(shù)量;另一種是手指在平面內(nèi)畫圈,包括順時針畫圈和逆時針畫圈。隨后,通過一個 Switch()語句對手指數(shù)量的判斷來轉(zhuǎn)換為相應(yīng)的字母命令,每一個字母都有自己的指示動作,然后通 過 SendData()函 數(shù) 將 字 母 傳 送 到Arduino開發(fā)板,具體流程如圖6所示。
圖6 手勢轉(zhuǎn)換過程流程圖
3.3小車與機械臂控制
進行手勢識別和轉(zhuǎn)換后,PC端將數(shù)據(jù)通過 WiFi傳 送至 Arduino,Arduino 開 發(fā)板會通過調(diào)用Serial.read()函數(shù)和 witch()語句進一步判斷和指定機械臂或小車做出相應(yīng)的動作,具體流程如圖7所示。
圖7?。粒颍洌酰椋睿锟刂茩C械臂或小車操作的流程圖
3.4WiFi通信
在 Internet 中,TCP/IP使用一個網(wǎng)絡(luò)地址和一個服務(wù)端 口 號 來 唯 一 標 識 設(shè) 備。其中,網(wǎng) 絡(luò)IP 地 址 用 于 標 識網(wǎng)絡(luò)上的特定設(shè)備;端口號用于標識要連接到的該設(shè)備上的特定服務(wù)。根據(jù)上述原理,本項目的服務(wù)器可以理解為PC端和手機端,而客戶端則是 Arduino開發(fā)板。利用 Ar-duino開發(fā)板自帶的串口 WiFi模塊構(gòu)建 WiFi局域網(wǎng),將電腦或手機連接到已經(jīng)搭建的 WiFi環(huán)境中,實現(xiàn) Socket連接及通信。
在本項目中,用指定的地址和端口號初始化 IPEnd-Point類的新實例,然后通過 Socket編程就可以實現(xiàn)連接并通 信。 其 中,設(shè) 置 的 IP 為 192.168.8.1,端 口 號 為2001,協(xié)議是 TCP/IP,IPEndPoint類 主 要 有 服 務(wù) 器 的IP地址和端口信息,實現(xiàn)客戶端到服務(wù)器端的連接。Socket編程的基本過程如下:
① 創(chuàng)建一個 Socket實例對象。
② 運用 Connect()方法將 Socket實例對象連接到IPEndPoint。
③ 接收并發(fā)送信息。
④ 最后用 Close()方法來關(guān)閉 Socket。
4.實驗結(jié)果
本項 目 在 Windows7 系 統(tǒng) 和 Android 智能手機進行實驗,實驗演示過程具體如下:
① Leap?。停铮簦椋铮铙w感控制器將 手 部 信 息發(fā)給 PC端,PC 端 經(jīng) 過 數(shù) 據(jù) 處 理 識 別 出 手 勢和手掌的 運 動 軌 跡,并 將 處 理 后 的 結(jié) 果 傳 輸給 Arduino,小車 接 收 命 令 和 數(shù) 據(jù),然 后 做 出相應(yīng)的動作,如圖8所示。
② 手機端通過按鍵操作命令,將相應(yīng)的命令數(shù)據(jù)傳輸給 Arduino,機械臂和小車根據(jù)接收 的 命 令 和 數(shù) 據(jù) 做 出 相 應(yīng) 的 動 作,如 圖 9所示。
圖8?。蹋澹幔稹。停铮簦椋铮羁刂菩≤囃V梗ㄗ螅┖拖蚯斑\動(右)
圖9 按鍵控制(上)攝像頭觀測顯示(下)
實驗結(jié)果表明,在各功能部件連接通暢的情況下,通過 Leap?。停铮簦椋铮铙w感控制能很好地識別操作手勢,實現(xiàn)對機械臂、小車的便捷控制。
5.結(jié)語
本項目設(shè)備成本低、體積小巧、操作簡便、便攜靈活,能適用于各種復雜環(huán)境和特殊任務(wù),在軍事偵察、可疑物品排爆、工業(yè)操作、醫(yī)療應(yīng)用及日常生活等都有較好的應(yīng)用前景和實用價值?!?/span>