文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.004
中文引用格式: 張雨薇,林雄民. 基于仿生機(jī)械臂的體態(tài)遙控與可視化系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(12):22-24.
英文引用格式: Zhang Yuwei,Lin Xiongmin. Design of motion sensing remote control and visualization system based on bionic robot arm[J].Application of Electronic Technique,2015,41(12):22-24.
0 引言
近年來,多發(fā)的自然災(zāi)害、各種突發(fā)事件以及由生化病毒、輻射性物質(zhì)等帶來的恐怖影響威脅著人類的安全。雖然人類對(duì)各種災(zāi)難的警覺和反應(yīng)能力有所提高, 但救援工作仍然面臨著環(huán)境的復(fù)雜性和危險(xiǎn)性[1]。因此,救援人員在自身安全得不到保證的情況下很難進(jìn)入現(xiàn)場(chǎng)開展救援工作,而救援機(jī)器人可以替代人類在危險(xiǎn)的環(huán)境中完成偵察、作業(yè)等任務(wù)[2]。本文開發(fā)了一套可用于搜救的災(zāi)難救急機(jī)器人系統(tǒng),為現(xiàn)代社會(huì)突發(fā)事件的處置或惡劣環(huán)境的作業(yè)提供了一種新型可靠的解決方案,可以滿足輕量級(jí)任務(wù)的使用。
1 系統(tǒng)工作原理
1.1 系統(tǒng)概述
以Intel Atom EPCM-505C開發(fā)平臺(tái)為核心,借助E645C處理器,F(xiàn)PGA以及Intel IPP、OpenMP、OpenNI、OpenCV等開發(fā)工具完成了該系統(tǒng)的搭建。本系統(tǒng)采用服務(wù)器—客戶端架構(gòu)模式??蛻舳似脚_(tái)裝于遙控小車上,負(fù)責(zé)采集、傳回現(xiàn)場(chǎng)視頻,并在客戶端的屏幕上顯示小車周遭場(chǎng)景。位于服務(wù)器端的用戶根據(jù)傳回的視頻控制小車躲避障礙物進(jìn)入危險(xiǎn)區(qū)域后,首先通過體態(tài)傳感器獲取人體手臂的運(yùn)動(dòng)姿態(tài)并實(shí)時(shí)傳輸給客戶端平臺(tái),然后由平臺(tái)CPU通過PCIe接口將捕獲的數(shù)據(jù)傳至FPGA,進(jìn)而控制仿生機(jī)械臂的運(yùn)動(dòng)。
1.2 系統(tǒng)框架
系統(tǒng)結(jié)構(gòu)圖如圖1所示。其中,客戶端包括基于以Intel Atom E645C處理器為核心的嵌入式系統(tǒng)、裝載在遙控車上的機(jī)械臂以及電源系統(tǒng),并外擴(kuò)了攝像頭。服務(wù)器端包括采集用戶信息的體態(tài)傳感器及視頻顯示終端。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 仿生機(jī)械臂的控制
仿生機(jī)械手臂有5個(gè)自由度,分別由5個(gè)舵機(jī)構(gòu)成。一號(hào)、二號(hào)、三號(hào)舵機(jī)分別負(fù)責(zé)機(jī)械臂左右、前后和上下的擺動(dòng),四號(hào)舵機(jī)負(fù)責(zé)手腕的運(yùn)動(dòng),五號(hào)舵機(jī)負(fù)責(zé)手掌抓取動(dòng)作的實(shí)現(xiàn)。
舵機(jī)控制線的輸入是一個(gè)脈沖寬度調(diào)制(Pulse Width Modulation,PWM)信號(hào),脈沖信號(hào)的周期為20 ms[3]。我們利用調(diào)制占空比來控制舵機(jī)的位置。輸出的轉(zhuǎn)動(dòng)角度和脈沖寬度的關(guān)系式為[4]:α=90(t-0.5)。式中,α為舵機(jī)的輸出轉(zhuǎn)角;t為脈沖寬度,其定義域?yàn)?.5≤t≤2.5。因此,可通過編程在FPGA的輸出端口得到需要的脈沖信號(hào)。
2.2 光耦隔離放大電路
在該系統(tǒng)的電路設(shè)計(jì)中,在機(jī)械臂驅(qū)動(dòng)前增加了高速光電耦合模塊,并且在電源信號(hào)輸入光耦前加入了電流負(fù)反饋放大電路,如圖2所示。由于光電耦合器的輸入輸出之間互相隔離,其具有良好的電絕緣能力和抗干擾能力[5]。PWM信號(hào)經(jīng)過光耦隔離后,再輸入機(jī)械臂的控制線,能夠排除系統(tǒng)的潛在干擾。
2.3 FPGA控制機(jī)械臂的流程圖
系統(tǒng)通過FPGA產(chǎn)生信號(hào)來控制機(jī)械臂運(yùn)動(dòng),其流程如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 體態(tài)數(shù)據(jù)采集核心算法
3.1.1 骨骼坐標(biāo)的采集與濾波
用戶骨骼位置主要是通過捕獲右手手腕、右手肘關(guān)節(jié)及右肩關(guān)節(jié)的三維坐標(biāo)來獲取的。
程序初始化完成之后,OpenNI開始檢測(cè)當(dāng)前可視區(qū)域是否存在用戶。區(qū)域內(nèi)出現(xiàn)用戶后,用戶會(huì)被體態(tài)傳感器一直跟蹤。隨后,OpenNI開始檢測(cè)用戶是否做出“校驗(yàn)”姿勢(shì)。所謂的“校驗(yàn)”姿勢(shì),即用戶雙手舉過頭,作投降狀。當(dāng)用戶做出“校驗(yàn)”動(dòng)作并且被OpenNI成功檢測(cè)出來后,生產(chǎn)鏈路開始工作, OpenNI開始捕獲用戶的骨骼信息。
3.1.2 手臂移動(dòng)角度的采集與濾波
通過上述算法,得到了所需要的骨骼坐標(biāo)。用戶手臂擺動(dòng)時(shí),其骨骼坐標(biāo)也會(huì)隨之變化,將這些變化的坐標(biāo)轉(zhuǎn)化成各關(guān)節(jié)的角度變化。
用戶擺動(dòng)手臂的動(dòng)作,可以分解為左右、前后、上下3個(gè)方向的運(yùn)動(dòng)。手臂的左右擺動(dòng)由右手肩關(guān)節(jié)與腕關(guān)節(jié)的三維坐標(biāo)獲取得到,如圖4中(a)所示。胳膊的前后變動(dòng)主要反映到肘關(guān)節(jié)坐標(biāo)的變動(dòng),如圖4中(b)所示。小臂的前后擺動(dòng)主要反映到腕關(guān)節(jié)相對(duì)肘關(guān)節(jié)的坐標(biāo)的變化[6],如圖4中(c)所示。
3.1.3 手掌張合檢測(cè)算法
由于體態(tài)傳感器無法直接獲取手指的坐標(biāo),通過下面的算法來捕獲手掌的張合:
(1)通過OpenNI得到用戶的深度資料圖,然后用平滑算法將深度圖二值化為灰度圖,并根據(jù)最小的Z值(即指尖的位置)得到手掌區(qū)域部分。
(2)將手掌部分的灰度圖轉(zhuǎn)化成2D矩陣的點(diǎn)集合。通過算法篩選出位于指尖和掌心的點(diǎn),并以此判斷手掌的張合情況。如圖5(a)所示,手掌張開時(shí)可檢測(cè)到指尖點(diǎn)和掌心點(diǎn)。而當(dāng)手掌握合的時(shí)候,只能捕獲到掌心點(diǎn),如圖5(b)所示。
3.2 視頻的采集與傳輸算法
本系統(tǒng)的視頻傳輸采用的是實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol,RTP),利用該協(xié)議能有效解決TCP傳輸速度慢和UDP數(shù)據(jù)丟失的問題[7]。
通過OpenCV獲取攝像頭的視頻流,為了給體態(tài)信息提取騰出更多CPU空間,我們沒有對(duì)視頻進(jìn)行壓縮,而是通過直接截取視頻流里的一幀圖片來進(jìn)行傳輸。由于系統(tǒng)對(duì)視頻清晰度要求不高,我們將行位置和行包含的像素點(diǎn)一起打包,采用隔行傳輸?shù)乃惴?,先傳奇?shù)像素行,再傳偶數(shù)像素行,循環(huán)交替。RTP的傳輸速率很高,隔行傳輸可以明顯提高效率且不影響視頻的實(shí)時(shí)顯示。
3.3 系統(tǒng)軟件流程
系統(tǒng)軟件流程可以分為以下兩個(gè)部分:仿生機(jī)械手臂控制流程和視頻采集傳輸流程,如圖6示。
4 測(cè)試結(jié)果
按照系統(tǒng)工作流程,對(duì)系統(tǒng)進(jìn)行測(cè)試。測(cè)試過程分為以下3個(gè)部分:
(1)遠(yuǎn)程視頻傳輸與接收測(cè)試
程序開始,軟件界面下面的提示欄出現(xiàn)“Waiting For Connection”的消息,幾秒鐘后又出現(xiàn)“Connection Success”。接著,遠(yuǎn)程服務(wù)器軟件界面的視頻顯示窗口出現(xiàn)遙控小車上的攝像頭拍攝到的畫面。如圖7所示,說明本次測(cè)試成功。
(2)體態(tài)傳感器用戶識(shí)別測(cè)試
當(dāng)視頻傳輸開始的時(shí)候,軟件界面下方的信息提示欄出現(xiàn)了如下的信息:“Please Hand Up Both Your Hands And Wait For Detection”。隨后,測(cè)試者舉雙手過頭,信息欄馬上提示“Identification Success, The Program is Capturing data”。同時(shí),軟件界面上開始顯示5路舵機(jī)角度變化的數(shù)據(jù),說明體態(tài)傳感器用戶識(shí)別測(cè)試成功。
(3)用戶控制機(jī)械手臂的動(dòng)作測(cè)試
測(cè)試(2)成功后,我們分析了用戶控制機(jī)械臂運(yùn)動(dòng)的工作情況。采用體型各異的5個(gè)人對(duì)機(jī)械臂各關(guān)節(jié)的運(yùn)動(dòng)進(jìn)行測(cè)試,轉(zhuǎn)動(dòng)角度分別設(shè)為-80°、-50°、30°和90°。每人對(duì)每個(gè)關(guān)節(jié)的每個(gè)角度測(cè)試6組數(shù)據(jù),即每個(gè)舵機(jī)測(cè)試120次,如表1所示。分析下表可知,運(yùn)動(dòng)角度變化越大,識(shí)別的成功率越高。手掌張合檢測(cè)在小角度時(shí)成功率略低,而其他各關(guān)節(jié)的識(shí)別率都高于90%,具有較高的成功率,符合控制要求。
5 結(jié)論
本文引入體態(tài)控制技術(shù)及遠(yuǎn)程視頻監(jiān)控技術(shù),設(shè)計(jì)了仿生機(jī)械臂遠(yuǎn)程實(shí)時(shí)控制系統(tǒng)。該系統(tǒng)可以模擬完成大多數(shù)人體手臂的基本動(dòng)作,并且無線視頻傳輸與接收的實(shí)時(shí)性良好。因此,人體手臂無需穿戴任何傳感器即可直接進(jìn)行遠(yuǎn)程控制。該系統(tǒng)為人機(jī)交互在抗災(zāi)搶險(xiǎn)領(lǐng)域的運(yùn)用提供了新思路。
測(cè)試結(jié)果表明,本系統(tǒng)運(yùn)行穩(wěn)定,實(shí)時(shí)性較好,且具有良好的操控性能,能夠很好地完成輕量級(jí)的任務(wù)。為現(xiàn)代社會(huì)突發(fā)事件的處置或惡劣環(huán)境下的作業(yè)提供了一種新型可靠的解決方案,在國防和民用中都有廣泛的用途,應(yīng)用前景良好。
參考文獻(xiàn)
[1] 盧小輝.RoboCup救援仿真系統(tǒng)中的移動(dòng)智能體行為決策研究[D].廣州:廣東工業(yè)大學(xué),2012.
[2] 劉金國,王越超,李斌,等.災(zāi)難救援機(jī)器人研究現(xiàn)狀、關(guān)鍵性能及展望[J].機(jī)械工程學(xué)報(bào),2006,42(12):1-12.
[3] 韓慶瑤,洪草根,朱曉光,等.基于AVR單片機(jī)的多舵機(jī)控制系統(tǒng)設(shè)計(jì)及仿真[J].計(jì)算機(jī)測(cè)量與控制,2011,19(2):332-334.
[4] 蔡睿妍.基于Arduino的舵機(jī)控制系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2012,08(15).
[5] 程全.基于電話線的單片機(jī)遠(yuǎn)程控制系統(tǒng)[D].鄭州:鄭州大學(xué), 2009.
[6] 王艷淑.基于人機(jī)工程學(xué)評(píng)價(jià)與仿真的人體模型建模[D].哈爾濱:哈爾濱工程大學(xué),2013.
[7] 劉濤.基于RTP的視頻流可靠傳輸[D].鄭州:鄭州大學(xué),2004.