張雨薇,林雄民
(武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072)
近年來(lái),多發(fā)的自然災(zāi)害、各種突發(fā)事件以及由生化病毒、輻射性物質(zhì)等帶來(lái)的恐怖影響威脅著人類的安全。雖然人類對(duì)各種災(zāi)難的警覺(jué)和反應(yīng)能力有所提高,但救援工作仍然面臨著環(huán)境的復(fù)雜性和危險(xiǎn)性[1]。因此,救援人員在自身安全得不到保證的情況下很難進(jìn)入現(xiàn)場(chǎng)開(kāi)展救援工作,而救援機(jī)器人可以替代人類在危險(xiǎn)的環(huán)境中完成偵察、作業(yè)等任務(wù)[2]。本文開(kāi)發(fā)了一套可用于搜救的災(zāi)難救急機(jī)器人系統(tǒng),為現(xiàn)代社會(huì)突發(fā)事件的處置或惡劣環(huán)境的作業(yè)提供了一種新型可靠的解決方案,可以滿足輕量級(jí)任務(wù)的使用。
以Intel Atom EPCM-505C開(kāi)發(fā)平臺(tái)為核心,借助E645C 處 理 器 ,F(xiàn)PGA 以 及 Intel IPP、OpenMP、OpenNI、OpenCV等開(kāi)發(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ū)域后,首先通過(guò)體態(tài)傳感器獲取人體手臂的運(yùn)動(dòng)姿態(tài)并實(shí)時(shí)傳輸給客戶端平臺(tái),然后由平臺(tái)CPU通過(guò)PCIe接口將捕獲的數(shù)據(jù)傳至FPGA,進(jìn)而控制仿生機(jī)械臂的運(yùn)動(dòng)。
圖1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)結(jié)構(gòu)圖如圖1所示。其中,客戶端包括基于以Intel Atom E645C處理器為核心的嵌入式系統(tǒng)、裝載在遙控車上的機(jī)械臂以及電源系統(tǒng),并外擴(kuò)了攝像頭。服務(wù)器端包括采集用戶信息的體態(tài)傳感器及視頻顯示終端。
仿生機(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)制占空比來(lái)控制舵機(jī)的位置。輸出的轉(zhuǎn)動(dòng)角度和脈沖寬度的關(guān)系式為[4]:α=90(t-0.5)。式中,α為舵機(jī)的輸出轉(zhuǎn)角;t為脈沖寬度,其定義域?yàn)?.5≤t≤2.5。因此,可通過(guò)編程在FPGA的輸出端口得到需要的脈沖信號(hào)。
在該系統(tǒng)的電路設(shè)計(jì)中,在機(jī)械臂驅(qū)動(dòng)前增加了高速光電耦合模塊,并且在電源信號(hào)輸入光耦前加入了電流負(fù)反饋放大電路,如圖2所示。由于光電耦合器的輸入輸出之間互相隔離,其具有良好的電絕緣能力和抗干擾能力[5]。PWM信號(hào)經(jīng)過(guò)光耦隔離后,再輸入機(jī)械臂的控制線,能夠排除系統(tǒng)的潛在干擾。
圖2 電路的組成框圖
系統(tǒng)通過(guò)FPGA產(chǎn)生信號(hào)來(lái)控制機(jī)械臂運(yùn)動(dòng),其流程如圖3所示。
圖3 FPGA控制機(jī)械臂的流程圖
3.1.1 骨骼坐標(biāo)的采集與濾波
用戶骨骼位置主要是通過(guò)捕獲右手手腕、右手肘關(guān)節(jié)及右肩關(guān)節(jié)的三維坐標(biāo)來(lái)獲取的。
程序初始化完成之后,OpenNI開(kāi)始檢測(cè)當(dāng)前可視區(qū)域是否存在用戶。區(qū)域內(nèi)出現(xiàn)用戶后,用戶會(huì)被體態(tài)傳感器一直跟蹤。隨后,OpenNI開(kāi)始檢測(cè)用戶是否做出“校驗(yàn)”姿勢(shì)。所謂的“校驗(yàn)”姿勢(shì),即用戶雙手舉過(guò)頭,作投降狀。當(dāng)用戶做出“校驗(yàn)”動(dòng)作并且被OpenNI成功檢測(cè)出來(lái)后,生產(chǎn)鏈路開(kāi)始工作,OpenNI開(kāi)始捕獲用戶的骨骼信息。
3.1.2 手臂移動(dòng)角度的采集與濾波
通過(guò)上述算法,得到了所需要的骨骼坐標(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)所示。
工科新教師培訓(xùn)為復(fù)雜系統(tǒng)工程。培訓(xùn)方式應(yīng)根據(jù)培訓(xùn)內(nèi)容、培訓(xùn)層次、培訓(xùn)目標(biāo)的不同,本著服務(wù)為導(dǎo)向?qū)嵤┎町惢x擇[7]。兩種或多種培訓(xùn)方式統(tǒng)合使用,是提高培訓(xùn)吸引力,激發(fā)工科新教師培訓(xùn)動(dòng)力,提高培訓(xùn)質(zhì)量的基本策略。
圖4 各關(guān)節(jié)移動(dòng)角度的采集
3.1.3 手掌張合檢測(cè)算法
由于體態(tài)傳感器無(wú)法直接獲取手指的坐標(biāo),通過(guò)下面的算法來(lái)捕獲手掌的張合:
(1)通過(guò) OpenNI得到用戶的深度資料圖,然后用平滑算法將深度圖二值化為灰度圖,并根據(jù)最小的Z值(即指尖的位置)得到手掌區(qū)域部分。
(2)將手掌部分的灰度圖轉(zhuǎn)化成2D矩陣的點(diǎn)集合。通過(guò)算法篩選出位于指尖和掌心的點(diǎn),并以此判斷手掌的張合情況。如圖5(a)所示,手掌張開(kāi)時(shí)可檢測(cè)到指尖點(diǎn)和掌心點(diǎn)。而當(dāng)手掌握合的時(shí)候,只能捕獲到掌心點(diǎn),如圖 5(b)所示。
圖5 手掌張合檢測(cè)
本系統(tǒng)的視頻傳輸采用的是實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol,RTP),利用該協(xié)議能有效解決 TCP傳輸速度慢和UDP數(shù)據(jù)丟失的問(wèn)題[7]。
通過(guò)OpenCV獲取攝像頭的視頻流,為了給體態(tài)信息提取騰出更多CPU空間,我們沒(méi)有對(duì)視頻進(jìn)行壓縮,而是通過(guò)直接截取視頻流里的一幀圖片來(lái)進(jìn)行傳輸。由于系統(tǒng)對(duì)視頻清晰度要求不高,我們將行位置和行包含的像素點(diǎn)一起打包,采用隔行傳輸?shù)乃惴ǎ葌髌鏀?shù)像素行,再傳偶數(shù)像素行,循環(huán)交替。RTP的傳輸速率很高,隔行傳輸可以明顯提高效率且不影響視頻的實(shí)時(shí)顯示。
圖6 系統(tǒng)軟件流程
按照系統(tǒng)工作流程,對(duì)系統(tǒng)進(jìn)行測(cè)試。測(cè)試過(guò)程分為以下3個(gè)部分:
(1)遠(yuǎn)程視頻傳輸與接收測(cè)試
程序開(kāi)始,軟件界面下面的提示欄出現(xiàn)“Waiting For Connection”的消息,幾秒鐘后又出現(xiàn) “Connection Success”。接著,遠(yuǎn)程服務(wù)器軟件界面的視頻顯示窗口出現(xiàn)遙控小車上的攝像頭拍攝到的畫面。如圖7所示,說(shuō)明本次測(cè)試成功。
圖7 測(cè)試界面
(2)體態(tài)傳感器用戶識(shí)別測(cè)試
當(dāng)視頻傳輸開(kāi)始的時(shí)候,軟件界面下方的信息提示欄出現(xiàn)了如下的信息:“Please Hand Up Both Your Hands And Wait For Detection”。隨后,測(cè)試者舉雙手過(guò)頭,信息欄馬上提示“Identification Success,The Program is Capturing data”。同時(shí),軟件界面上開(kāi)始顯示5路舵機(jī)角度變化的數(shù)據(jù),說(shuō)明體態(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%,具有較高的成功率,符合控制要求。
表1 機(jī)械手臂各關(guān)節(jié)測(cè)試
本文引入體態(tài)控制技術(shù)及遠(yuǎn)程視頻監(jiān)控技術(shù),設(shè)計(jì)了仿生機(jī)械臂遠(yuǎn)程實(shí)時(shí)控制系統(tǒng)。該系統(tǒng)可以模擬完成大多數(shù)人體手臂的基本動(dòng)作,并且無(wú)線視頻傳輸與接收的實(shí)時(shí)性良好。因此,人體手臂無(wú)需穿戴任何傳感器即可直接進(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è)提供了一種新型可靠的解決方案,在國(guó)防和民用中都有廣泛的用途,應(yīng)用前景良好。
[1]盧小輝.RoboCup救援仿真系統(tǒng)中的移動(dòng)智能體行為決策研究[D].廣州:廣東工業(yè)大學(xué),2012.
[2]劉金國(guó),王越超,李斌,等.災(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.