沈莉麗
(南京航空航天大學(xué)金城學(xué)院,南京 211156)
基于Kinect視覺識別的智能居家機(jī)器人系統(tǒng)
沈莉麗
(南京航空航天大學(xué)金城學(xué)院,南京 211156)
為了更好的給老年人提供服務(wù),提出了基于Kinect視覺識別功能的智能居家機(jī)器人控制系統(tǒng)。首先通過Kinect攝像頭獲取人體景深圖像,然后利用姿態(tài)識別算法對人體姿態(tài)進(jìn)行識別,最后將識別結(jié)果轉(zhuǎn)換為控制命令傳輸?shù)街悄芫蛹覚C(jī)器人使其完成自主抓取、傳遞物品等一系列動作。實(shí)驗(yàn)表明,基于Kinect視覺識別的控制方式能準(zhǔn)確控制智能居家機(jī)器人,實(shí)現(xiàn)了機(jī)器人控制方式上的創(chuàng)新,對服務(wù)型機(jī)器人領(lǐng)域的發(fā)展研究具有很好的參考價(jià)值。
Kinect;機(jī)器人;體感識別;景深圖像
隨著現(xiàn)代社會工作、生活節(jié)奏的不斷加快,人口老齡化問題日趨嚴(yán)重,空巢式家庭及失能老人數(shù)量快速增長,使得家庭護(hù)理問題成為一個重大的社會問題[1]。具有一定護(hù)理能力的服務(wù)機(jī)器人代替專人幫助老年人生活起居,可以大幅提高老年人行動自由度,具有重大的社會意義。
對于機(jī)器人的操控,常用的控制方式有紅外線遙控方式、語音控制方式、基于WiFi無線網(wǎng)絡(luò)控制方式和基于GSM/GPRS網(wǎng)絡(luò)的遠(yuǎn)程控制方式等,這些控制方式滿足機(jī)器人控制需求,但是這幾種控制方式存在不便于攜帶、移動性較差和控制環(huán)境需要網(wǎng)絡(luò)等問題[2]。針對以上問題,本文提出了利用Kinect視覺識別功能實(shí)現(xiàn)對智能居家機(jī)器人控制的解決方法。Kinect是美國微軟公司開發(fā)的一款體感攝像頭,是以獲取目標(biāo)物體三維坐標(biāo)的機(jī)器視覺設(shè)備[3]?;贙inect視覺識別是通過攝像頭獲取人體圖像景深數(shù)據(jù),利用姿態(tài)識別技術(shù)處理景深數(shù)據(jù),實(shí)時對用戶的運(yùn)動姿態(tài)進(jìn)行識別,并轉(zhuǎn)換成相應(yīng)的指令進(jìn)行人機(jī)交互,實(shí)現(xiàn)控制功能。該系統(tǒng)成本較低、操作靈活方便,經(jīng)實(shí)驗(yàn)表明,使用者的動作姿態(tài)能夠準(zhǔn)確控制智能居家機(jī)器人完成自主抓取、傳遞物品等一系列動作,實(shí)現(xiàn)了機(jī)器人控制方式上的創(chuàng)新,也體現(xiàn)了更加自然的人機(jī)交互。
系統(tǒng)整體結(jié)構(gòu)如圖1所示,系統(tǒng)由上位機(jī)和下位機(jī)兩部分組成。上位機(jī)部分包括Kinect攝像頭,計(jì)算機(jī)及無線通訊模塊,實(shí)現(xiàn)人體動作姿態(tài)對下位機(jī)的遠(yuǎn)程控制。Kinect通過USB連接到計(jì)算機(jī),完成人體骨骼參數(shù)的采集,姿態(tài)識別算法分析判斷人體姿態(tài)動作,生成相應(yīng)的控制指令,通過2.4G無線數(shù)據(jù)傳送模塊,控制機(jī)器人完成相應(yīng)動作,使其更加智能化。
圖1 系統(tǒng)結(jié)構(gòu)圖
下位機(jī)為智能居家機(jī)器人,主要由主控制器、無線通訊模塊、霍爾測速傳感器、三自由度機(jī)械臂、直流減速電機(jī)模塊及超聲波避障模塊等構(gòu)成。機(jī)器人主控制器采用Arduino Due作為主控芯片,Arduino Due作為Arduino第一塊使用32位ARM核心單片機(jī)的主控板擁有54個數(shù)字輸入輸出引腳,以及12個模擬輸入引腳,CPU使用Atmel SAM3X8E ARM Cortex-M3,擁有84MHz時鐘,非常適合作為系統(tǒng)部分的主控芯片。機(jī)器人機(jī)械結(jié)構(gòu)主要由三自由度機(jī)械臂和承載機(jī)械臂的可移動底盤組成。三自由度機(jī)械臂前端爪頭由一個舵機(jī)控制其開合,負(fù)責(zé)抓取物體。爪頭的設(shè)計(jì)用ProE軟件3D建模后,由3D打印機(jī)打印而成,實(shí)現(xiàn)了更好的齒輪配合和抓取時更大的接觸面積和摩擦力。圖2為機(jī)械臂爪頭實(shí)物圖。三自由度機(jī)械臂由鋁合金支架和舵機(jī)構(gòu)成。三自由度的機(jī)械臂通過調(diào)節(jié)兩個舵機(jī)轉(zhuǎn)過的角度來確定多種動作,這些動作可以滿足體感控制需要機(jī)械臂實(shí)現(xiàn)的功能,如抓取地上的物體并實(shí)現(xiàn)傳遞。機(jī)械支撐結(jié)構(gòu)由兩層亞克力板構(gòu)成,中間用50mm銅柱連接,下層底盤下方用于連接電機(jī),在其上方搭載驅(qū)動電路,控制電路以及電池。上層底盤用于承載機(jī)械臂和主控芯片。機(jī)械臂置于下位機(jī)最前端,方便機(jī)械臂運(yùn)動不受到底盤干擾,同時將電池與驅(qū)動模塊置于底盤下層,穩(wěn)定重心。將主控制器置于頂層方便程序調(diào)試和下載。整體設(shè)計(jì)如圖3所示。
圖2 3D打印的機(jī)械臂爪頭 圖3 智能居家機(jī)器人實(shí)物圖
傳統(tǒng)姿態(tài)識別大部分是對RGB彩色圖像的處理,并在一定條件下取得較好的識別效果。其中包括很多不同的算法,如Mahmoud等人提出了基于馬爾科夫(HMM)模型的手勢識別系統(tǒng)[4];Ghotkar等人提出了一種基于手部分割的手勢識別方法[5]。但是RGB彩色圖像對光照變化比較敏感[6],難適應(yīng)復(fù)雜背景,應(yīng)用范圍受到極大的限制。利用Kinect攝像頭的姿態(tài)識別算法不受光照和背景噪聲影響,通過獲取景深圖像,并在景深圖像數(shù)據(jù)基礎(chǔ)上提取人體骨骼參數(shù),建立人體各關(guān)節(jié)3D坐標(biāo),計(jì)算關(guān)節(jié)點(diǎn)之間的角度,最后將計(jì)算的角度與姿態(tài)庫中的角度閾值范圍進(jìn)行匹配,從而實(shí)現(xiàn)人體姿態(tài)識別。
2.1.1 景深圖像的獲取與轉(zhuǎn)換
Kinect有三個鏡頭,中間鏡頭是RGB彩色攝像頭,用來采集彩色圖像,分辨率為640×480;左右兩邊鏡頭分別是紅外發(fā)射器和紅外CMOS攝像頭,它們共同組成景深傳感器,輸出景深圖像分辨率為320×240[7-8]。Kinect景深圖像獲取采用光編碼技術(shù),利用紅外發(fā)射器發(fā)射紅外線,紅外線打到不均勻介質(zhì)上形成散斑,再由紅外CMOS攝像頭讀取散斑信息并傳給系統(tǒng)芯片,系統(tǒng)芯片對其解碼計(jì)算后生成景深圖像。景深圖像中每個像素是Kinect獲取的深度信息,因此需要將以像素為單位的深度信息轉(zhuǎn)換成以實(shí)際距離為單位的數(shù)據(jù)。由文獻(xiàn)[9]首先利用獲取的深度值求出目標(biāo)物到Kinect攝像頭的實(shí)際距離d。
d=Ktan(Hdr+L)-O
(1)
其中,dr為深度值,H=3.5×10-4rad,K=12.36cm,L=1.18rad,O=3.7cm。
根據(jù)實(shí)際距離的深度信息值,文獻(xiàn)[10]給出了由深度坐標(biāo)點(diǎn)(xd,yd)到實(shí)際坐標(biāo)點(diǎn)(x,y,z)的轉(zhuǎn)換公式:
(2)
其中,F(xiàn)=0.0021,Kinect的分辨率w×h為640×480。
利用上述公式可以將深度圖像每一個像素點(diǎn)轉(zhuǎn)化成3D坐標(biāo),Kinect的三維坐標(biāo)系不同于常見的空間三維坐標(biāo)系[11],其中x軸與y軸的零點(diǎn)與傳統(tǒng)空間坐標(biāo)系相同,但其z軸坐標(biāo)零點(diǎn)為Kinect傳感器,正方向?yàn)镵inect指向的正前方。
2.1.2 關(guān)節(jié)點(diǎn)角度計(jì)算
Kinect可以獲取人體骨架結(jié)構(gòu)的20個關(guān)節(jié)點(diǎn)信息[12],系統(tǒng)中應(yīng)用雙手9個關(guān)節(jié)點(diǎn)識別姿態(tài)動作。如圖4所示,計(jì)算左肘關(guān)節(jié)的角度,可以利用左肩關(guān)節(jié)、左肘關(guān)節(jié)和左腕關(guān)節(jié)的3D坐標(biāo)進(jìn)行求解。假設(shè)左肩關(guān)節(jié)的3D坐標(biāo)為(x1,y1,z1),左肘關(guān)節(jié)的3D坐標(biāo)為(x2,y2,z2),左腕關(guān)節(jié)的3D坐標(biāo)為(x3,y3,z3),左肩關(guān)節(jié)和左肘關(guān)節(jié)連線構(gòu)成直線l1,左肘關(guān)節(jié)和左腕關(guān)節(jié)連線構(gòu)成直線l2。那么直線l1在XOY平面的傾角k1為:
(3)
圖4 關(guān)節(jié)點(diǎn)角度計(jì)算圖示
直線l2在XOY平面的傾角k2為:
(4)
直線l1和l2之間的夾角:
(5)
以此可以得到左肘關(guān)節(jié)角度,其他關(guān)節(jié)點(diǎn)角度也類似計(jì)算。
2.1.3 人體姿態(tài)匹配
姿態(tài)庫中的人體姿態(tài)由關(guān)節(jié)點(diǎn)之間的夾角來確定,姿態(tài)識別時根據(jù)不同的精度要求設(shè)定不同的閾值,如果所有關(guān)節(jié)點(diǎn)角度都在閾值范圍內(nèi),則可以判定為有效姿勢。假定閾值為δ,所有關(guān)節(jié)點(diǎn)角度滿足式(6),則判定姿勢識別成功,若其中有一個關(guān)節(jié)角度不滿足,則姿勢識別不成功,需要重新開始識別。
(6)
其中,αi為關(guān)節(jié)點(diǎn)測量角度,βi為關(guān)節(jié)點(diǎn)期望角度。為了保證對機(jī)器人動作控制的精準(zhǔn)性,將閾值設(shè)定為10°,對人體姿態(tài)識別時,當(dāng)所有的角度都滿足規(guī)定姿勢的閾值范圍,就可以正確識別出人體各個姿態(tài)。
上位機(jī)軟件部分接收Kinect傳送來的深度圖像,計(jì)算每幀圖片的骨骼節(jié)點(diǎn)空間坐標(biāo),由姿態(tài)識別算法識別人體動作,產(chǎn)生控制指令并完成與下位機(jī)通信。軟件是在Visual Studio 2010環(huán)境下開發(fā)的,采用C#語言進(jìn)行編程。首先設(shè)置串口,調(diào)用KinectNuiInit()函數(shù),初始化Kinect設(shè)備,設(shè)置攝像頭仰角,打開顏色流、深度流和骨架流;然后調(diào)用KinectGetFrame()、KinectDeptFrameToimage()和KinectColorFrameToImage()函數(shù)來獲取數(shù)據(jù)幀,轉(zhuǎn)化為對應(yīng)圖像類型;再利用姿態(tài)識別算法進(jìn)行數(shù)據(jù)處理,KinectJudgeTrack()函數(shù)分析景深數(shù)據(jù)提取骨骼節(jié)點(diǎn)空間坐標(biāo),IsAngle()函數(shù)判斷姿態(tài)動作,mycomm.WriteLine()發(fā)送串口數(shù)據(jù);最后調(diào)用KinectNuiInit()函數(shù),關(guān)閉顏色流、深度流和骨架流,關(guān)閉Kinect設(shè)備。
智能家居機(jī)器人通過接收無線通訊模塊nRF2401發(fā)來的控制字并執(zhí)行相應(yīng)指令,能實(shí)現(xiàn)對底盤、機(jī)械臂運(yùn)動的同時控制。具體控制流程如圖5所示。
在外部中斷中,主控制器記錄減速電機(jī)的轉(zhuǎn)速,存入輸入結(jié)構(gòu)體。而在時鐘中斷中,電機(jī)控制系統(tǒng)利用輸入結(jié)構(gòu)體中的轉(zhuǎn)速數(shù)據(jù)計(jì)算出下一時刻PWM波的占空比,在主函數(shù)的循環(huán)中更新PWM波,并且在時鐘中斷中主控制器也更新了機(jī)械臂伺服電機(jī)的狀態(tài)。
圖5 智能居家機(jī)器人程序流程圖
上位機(jī)軟件利用Kinect攝像頭采集景深圖像,通過姿態(tài)識別算法對景深圖像進(jìn)行處理,識別人體姿態(tài)動作,并將控制信號傳送給智能居家機(jī)器人,機(jī)器人根據(jù)接收到的指令實(shí)時完成前進(jìn)、后退、轉(zhuǎn)向、機(jī)械臂爪頭的開閉及機(jī)械臂的舉起放下等動作。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)具有較高的識別成功率,而且操作者的身高、體型對姿態(tài)識別沒有影響,系統(tǒng)通用性較好。圖6為機(jī)器人抓取物體,圖7為機(jī)器人抓取物體后,抬起機(jī)械臂準(zhǔn)備傳遞物品。操作者姿態(tài)動作識別屬于靜態(tài)識別,在操作過程中,操作者作出相應(yīng)動作后需持續(xù)1s以上,若動作變化太快,會降低整體操作流暢性。同時,受Kinect精度限制,人與Kinect傳感器的理想識別距離為1.2~5.0m,對操作者的活動有一定限制。
圖6 機(jī)器人抓取物品 圖7 機(jī)器人舉起機(jī)械臂
本文設(shè)計(jì)了一種基于Kinect視覺識別的智能居家機(jī)器人控制系統(tǒng)。系統(tǒng)利用Kinect攝像頭對操作者進(jìn)行景深數(shù)據(jù)采集,設(shè)計(jì)姿態(tài)識別算法,從而生成對應(yīng)的控制指令,遠(yuǎn)程控制機(jī)器人完成相應(yīng)動作任務(wù)。實(shí)驗(yàn)證明,基于Kinect視覺識別的控制方式能準(zhǔn)確控制智能居家機(jī)器人完成抓取、傳遞物品等一系列任務(wù),能較好地滿足老年人的日常需要,實(shí)現(xiàn)了機(jī)器人控制方式上的創(chuàng)新,對服務(wù)型機(jī)器人領(lǐng)域的發(fā)展研究也具有很好的參考價(jià)值。
[1] 徐方,張希偉,杜振軍.我國家庭服務(wù)機(jī)器人產(chǎn)業(yè)發(fā)展現(xiàn)狀調(diào)研報(bào)告[J]. 機(jī)器人技術(shù)與應(yīng)用,2009(2):14-19.
[2] 王素青,黃文龍.基于 Android 的雙輪機(jī)器人控制系統(tǒng)研究與設(shè)計(jì)[J].組合機(jī)床與自動化加工技術(shù),2016(12):60-64.
[3] JW Kang, DJ Seo, DS Jung. A Study on the control Method of 3-Dimensional Space Application using KINECT System [J]. International Journal of Computer Science and Network Security, 2011,11(9): 55-59.
[4] Elmezain M, Al-Hamadi A. Gesture Recognition for Alphabets from Hand Motion Trajectory Using Hidden Markov Models[C]//Signal Processing and Information Technology, 2007 IEEE International Symposium on IEEE, 2008:1192-1197.
[5] Ghotkar A S, Kharate G K. Hand Segmentation Techniques to Hand Gesture Recognition for Natural Human Computer Interaction[J]. International Journal of Human-Computer Interaction, 2012, 3(1):15-25.
[6] 湯穎,張宏鑫,張美玉. 基于圖形硬件的紋理圖像編碼與實(shí)時繪制算法[J]. 計(jì)算機(jī)學(xué)報(bào),2007,30(2):272-280.
[7] 韓崢,劉華平,黃文炳,等. 基于Kinect的機(jī)械臂目標(biāo)抓取[J]. 智能系統(tǒng)學(xué)報(bào),2013,8(2):149-155.
[8] 吳國斌,李斌,閻驥洲.Kinect人機(jī)交互開發(fā)實(shí)踐[M]. 北京:人民郵電出版社, 2013.
[9] Raheja L J,Chaudhary A,Singal K,et al.Tracking of fingertips and centers of palm using Kinect[C]//2011 Third International Conference on Computational Intelligence, Modelling and Simulation, 2011:248-252.
[10] Satyavolu S,Bruder G,Willemsen P,et al.Analysis of IR-based virtual reality tracking using multiple Kinects[C]∥IEEE Virtual Reality Conference,2012:149-150.
[11] 陳曉明,蔣樂天,應(yīng)忍冬. 基于Kinect深度信息的實(shí)時三維重建和濾波算法研究[J]. 計(jì)算機(jī)應(yīng)用研究,2013,30(4): 1216-1218.
[12] 黃季冬.動態(tài)手勢識別技術(shù)研究與實(shí)現(xiàn)[D].武漢: 華中科技大學(xué),2012.
IntelligentHomeRobotControlSystemBasedontheVisualIdentitybyKinect
SHEN Li-li
(Jincheng College,Nanjing University of Aeronautics and Astronautics, Nanjing 211156, China)
In order to better provide services to the elderly, an intelligent home robot control system based on Kinect was designed in this paper. First of all, the computer was used to obtain the depth image data of human body through Kinect camera. Then, the recognition control algorithm was used to recognize the human body posture. Finally, the recognition result was converted to control command that transmitted to the robot to complete a series of actions such as grabbing and delivering objects, that meet old. Experimental results indicated that the control method based on visual identity can accurately control the intelligent home robot, that realizes the innovation of robot control mode. In reality, it has some potential benefits for the applications in the field of humanoid robot research.
Kinect; robot; somatosensory recognition; depth image
TH165;TG659
A
1001-2265(2017)12-0078-03
10.13462/j.cnki.mmtamt.2017.12.019
2017-07-11;
2017-08-31
沈莉麗(1984—),女,江蘇南通人,南京航空航天大學(xué)金城學(xué)院講師,碩士,研究方向?yàn)樾盘柼幚砼c控制系統(tǒng),(E-mail)shirely_ivy@163.com。
(編輯李秀敏)