溫盛軍, 孫宇昂
(1.中原工學(xué)院 中原彼得堡航空學(xué)院, 河南 鄭州 450007; 2.中原工學(xué)院 電子信息學(xué)院, 河南 鄭州 450007)
近年來(lái),機(jī)器人技術(shù)作為高新技術(shù)的代表得到了飛速發(fā)展,全自主仿人機(jī)器人成為了機(jī)器人研究的主要方向,機(jī)器人的目標(biāo)識(shí)別和步態(tài)規(guī)劃正是仿人機(jī)器人研究的重要內(nèi)容[1]。NAO機(jī)器人(即仿人智能機(jī)器人)將傳感器、視覺(jué)系統(tǒng)和控制系統(tǒng)集于一體,是學(xué)術(shù)領(lǐng)域迄今為止使用最廣泛的全自主仿人機(jī)器人[2-3]。梁付新等針對(duì)NAO機(jī)器人識(shí)別目標(biāo)準(zhǔn)確率過(guò)低的問(wèn)題,提出了一種基于HSV顏色空間的輪廓信息特征識(shí)別算法,提高了圖像識(shí)別的精度[4]。宗鵬程采用YUV顏色空間來(lái)采集圖像,并對(duì)圖像進(jìn)行分割,提取目標(biāo)圖像,通過(guò)去噪處理,獲取了目標(biāo)輪廓和坐標(biāo)[5]。白雪冰提出了航向修正與機(jī)體側(cè)移相結(jié)合的校正方法,達(dá)到了在迷宮中找尋物體、抓取物體并按最優(yōu)路徑返回指定位置的目的[6]。柏雪峰等對(duì)圖像進(jìn)行二值化處理后采用腐蝕、膨脹方法去噪,并通過(guò)高斯濾波平滑處理獲取了目標(biāo)[7]。王中成等采用攝像機(jī)小孔透視模型,通過(guò)幾何關(guān)系將圖像二維坐標(biāo)映射為三維坐標(biāo),雖然實(shí)現(xiàn)了基于NAO機(jī)器人單目視覺(jué)的空間目標(biāo)定位,但是目標(biāo)識(shí)別后的位置誤差較大,達(dá)5 cm,所確定位置坐標(biāo)無(wú)法作為機(jī)器人行走的依據(jù)[8]。
本文以NAO機(jī)器人為研究平臺(tái),結(jié)合目標(biāo)識(shí)別和行走控制,搭建基于NAO機(jī)器人的目標(biāo)識(shí)別行走系統(tǒng),首先建立單目視覺(jué)定位模型,從圖像坐標(biāo)與空間坐標(biāo)的關(guān)系確定目標(biāo)位置的坐標(biāo);然后對(duì)目標(biāo)位置的坐標(biāo)進(jìn)行誤差補(bǔ)償[9],縮小位置坐標(biāo)的誤差;在位置坐標(biāo)的誤差縮至2 cm后,進(jìn)行NAO機(jī)器人的步態(tài)規(guī)劃,使其能以很小誤差行走至目標(biāo)物體的前方。
NAO機(jī)器人采用的是單攝像頭工作方式,因此本文采用單目視覺(jué)定位技術(shù)進(jìn)行目標(biāo)定位,在建立單目視覺(jué)定位模型[10]后,通過(guò)幾何計(jì)算將圖像中二維坐標(biāo)轉(zhuǎn)換為機(jī)器人坐標(biāo)系下的三維坐標(biāo),來(lái)實(shí)現(xiàn)空間目標(biāo)的定位。單目視覺(jué)系統(tǒng)是典型的視覺(jué)定位系統(tǒng)[11]。目前,關(guān)于目標(biāo)位置定位模型的研究成果已有很多,但大都未考慮實(shí)際目標(biāo)物體的高度,而基于NAO機(jī)器人的抓取實(shí)驗(yàn)中需要物體具有一定的高度,這就導(dǎo)致基于平面目標(biāo)的定位方法無(wú)法滿足實(shí)際要求。本文首先通過(guò)圖像識(shí)別方法獲取目標(biāo)中心在圖像坐標(biāo)系下的位置坐標(biāo);然后采用單目視覺(jué)定位模型建立空間固定高度下的位置坐標(biāo)與圖像坐標(biāo)之間的關(guān)系;最后得到目標(biāo)在NAO機(jī)器人坐標(biāo)系下的位置坐標(biāo)。
圖像預(yù)處理是目標(biāo)識(shí)別的基礎(chǔ),也是后續(xù)圖像處理的前提。圖像預(yù)處理需要對(duì)圖像進(jìn)行特定通道的分離和濾波[12]。NAO機(jī)器人支持的彩色圖像格式(簡(jiǎn)稱顏色空間)主要有YUV422、RGB和HSV。其中RGB顏色空間是最常見(jiàn)的,由R(紅)、G(綠)、B(藍(lán))3種顏色組合而成,其他顏色都是由它們變換而來(lái)的[13]。HSV顏色空間包含的顏色參數(shù)為H(色調(diào))、S(飽和度)和V(亮度)。無(wú)論是采用RGB顏色空間還是采用HSV顏色空間,通常都能準(zhǔn)確地將紅球分割出來(lái),但在光線過(guò)強(qiáng)或較弱的情況下,HSV顏色空間更加穩(wěn)定。因此,本文采用HSV顏色空間來(lái)處理NAO機(jī)器人的視覺(jué)圖像。
根據(jù)閾值將目標(biāo)從圖像中分離出來(lái),是機(jī)器人目標(biāo)識(shí)別的重要任務(wù)之一。對(duì)用攝像頭獲取的彩色圖像來(lái)說(shuō),根據(jù)一個(gè)閾值進(jìn)行二值化處理的方法,很難將目標(biāo)分離出來(lái),因此需要對(duì)3個(gè)分量的閾值進(jìn)行采樣標(biāo)定。
本文,首先在實(shí)驗(yàn)環(huán)境的光照條件下,選取目標(biāo)在圖像中的顏色區(qū)域,統(tǒng)計(jì)各點(diǎn)的顏色特征,獲取HSV顏色空間每個(gè)分量的上下限值[14];然后,根據(jù)閾值對(duì)圖像進(jìn)行二值化處理,觀察結(jié)果并及時(shí)進(jìn)行調(diào)整,在效果理想時(shí)記錄對(duì)應(yīng)的閾值,并將其作為所確定的閾值;最后,對(duì)圖像進(jìn)行濾波。由于高斯濾波[15]能有效地抑制噪聲,平滑圖像,因此可利用高斯濾波讓圖像局部信息模糊,以便下一步進(jìn)行Hough圓檢測(cè)[16]。
雖然在圖像的預(yù)處理階段已經(jīng)將圖像紅色區(qū)域標(biāo)記出來(lái),但這些區(qū)域包含了一些干擾點(diǎn),需要進(jìn)一步對(duì)圖像的幾何特征進(jìn)行提取。本文通過(guò)Hough圓檢測(cè),對(duì)目標(biāo)圖像做進(jìn)一步的幾何特征提取,以獲取它的中心坐標(biāo)。通過(guò)Hough圓變換,讓圖像的每個(gè)邊界像素點(diǎn)(x,y) 都能采用Canny檢測(cè)算法[17]來(lái)提取。這里,檢測(cè)圓的3個(gè)參數(shù)可表示為C(x0,y0,r0)。其中(x0,y0)為檢測(cè)圓的圓心坐標(biāo);r0為檢測(cè)圓的半徑。通過(guò)Hough圓檢測(cè),選出一組峰值,作為檢測(cè)圓的圓心坐標(biāo)和半徑。
實(shí)驗(yàn)中用Hough圓檢測(cè)所得小球的數(shù)量可能很多,檢測(cè)結(jié)果也可能包含一些噪聲。本文針對(duì)每次測(cè)出的紅球,以紅球圓心為中心,以紅球半徑的4倍為邊長(zhǎng),畫出一個(gè)綠色的外接正方形,計(jì)算了外接正方形區(qū)域內(nèi)紅色色素、綠色色素各占全部色素點(diǎn)的比例。理想情況下,紅色色素占比為0.196,綠色色素占比為0.804。這里給出的紅色色素占比計(jì)算式為:
πr2/(16r2)=0.196
(1)
式中,r為小球半徑。
考慮到實(shí)際檢測(cè)存在很多不確定因素(如圓檢測(cè)誤差、光線不均勻?qū)е碌念伾兓?、干擾物的存在等),很難達(dá)到理想情況,本文將紅色色素占比和綠色色素占比分別設(shè)定為0.12和0.10。
針對(duì)圖1所示的單目視覺(jué)定位模型,可采用小孔透視模型的處理方法,經(jīng)過(guò)圖像坐標(biāo)與實(shí)際空間坐標(biāo)的變換,確定目標(biāo)在空間的具體位置。對(duì)目標(biāo)物體進(jìn)行機(jī)器人坐標(biāo)系下的定位時(shí),需要滿足目標(biāo)高度低于相機(jī)高度這一條件。由單目視覺(jué)定位模型得到的目標(biāo)圖像及其圖像坐標(biāo)系如圖2所示。
圖2中:θhead pitch為頭部俯仰角,可在圖像預(yù)處理后通過(guò)內(nèi)部函數(shù)獲取其值;θball pitch為小球的垂直視角;H為攝像頭高度,可在圖像預(yù)處理后通過(guò)內(nèi)部函數(shù)獲??;w為圖像像素寬度;h為圖像像素高度;(X0,Y0) 為小球圖像坐標(biāo)系的坐標(biāo);(X1,Y1) 為小球世界坐標(biāo)系的坐標(biāo);θc_pitch為圖像預(yù)處理后的相機(jī)垂直視角;θc_yaw為圖像預(yù)處理后的相機(jī)俯仰角。
圖1 單目視覺(jué)定位模型Fig. 1 Monocular visual localization model
(a) 目標(biāo)俯視圖
(b) 目標(biāo)側(cè)視圖
(c) 圖像坐標(biāo)系圖2 由單目視覺(jué)定位模型得到的目標(biāo)圖像及其圖像坐標(biāo)系Fig. 2 Vertical view, side view and image coordinate
在圖像預(yù)處理后,檢測(cè)圓的圓心坐標(biāo)也是(X0,Y0),而相機(jī)坐標(biāo)(Xcamera,Ycamera)可通過(guò)內(nèi)部函數(shù)獲取。
小球的垂直視角計(jì)算式為:
(2)
小球的水平視角計(jì)算式為:
(3)
小球到攝像頭的距離為:
(4)
式中,θc_direction為相機(jī)位置的視角。
小球的世界坐標(biāo)系坐標(biāo)為:
(5)
式中,θhead yaw為頭部偏轉(zhuǎn)角。
當(dāng)小球具有一定高度時(shí),以NAO機(jī)器人坐標(biāo)系作為三維空間坐標(biāo)系,設(shè)小球高度為h1,則式(4)可轉(zhuǎn)化為:
(6)
將式(6)代入式(5),可得到小球在一定高度時(shí)的坐標(biāo)。小球在機(jī)器人坐標(biāo)系下的坐標(biāo)為(X1,Y1,r+h1-h2)。其中,h2為機(jī)器人坐標(biāo)系下原點(diǎn)距地面的高度。
通過(guò)上述計(jì)算獲得的小球坐標(biāo)存在一定的誤差,為了消除其誤差,可使用誤差系數(shù)k對(duì)實(shí)際坐標(biāo)進(jìn)行補(bǔ)償。誤差補(bǔ)償后的小球坐標(biāo)為:
(7)
誤差補(bǔ)償系數(shù)k可以用四次多項(xiàng)式求解,即
k=ax4+bx3+cx2+dx+e
(8)
式中:a,b,c,d,e為多項(xiàng)式系數(shù)。
進(jìn)行NAO機(jī)器人步態(tài)規(guī)劃時(shí),在確定目標(biāo)小球的位置后,應(yīng)讓NAO機(jī)器人能行走至小球附近。NAOqi系統(tǒng)的ALMotion模塊含有的行走函數(shù)為MoveTo(x,y,theta)。選用MoveTo(x,y,theta)行走函數(shù),并設(shè)定X軸、Y軸以及機(jī)器人繞Z軸旋轉(zhuǎn)的角度后,即可讓NAO機(jī)器人開始行走。但實(shí)驗(yàn)中發(fā)現(xiàn),NAO機(jī)器人在此行走函數(shù)下,步伐不穩(wěn)定,在行走距離遠(yuǎn)的情況下很容易出現(xiàn)相對(duì)目標(biāo)的較大偏移。
針對(duì)NAO機(jī)器人行走問(wèn)題,本文通過(guò)控制NAO機(jī)器人的步態(tài)參數(shù),使機(jī)器人能夠在行走中減小誤差。
機(jī)器人行走前,需要對(duì)其路徑進(jìn)行規(guī)劃。為了保證機(jī)器人行走至目標(biāo)的距離最近,本文選擇了直線行走方案。機(jī)器人首先在原地轉(zhuǎn)向,讓小球處于機(jī)器人的X軸方向,然后再行走至小球位置。根據(jù)單目視覺(jué)定位測(cè)距所得小球的空間位置坐標(biāo)和圖像位置坐標(biāo),讓機(jī)器人首先進(jìn)行兩次轉(zhuǎn)向(兩次轉(zhuǎn)向后,小球基本上在X軸方向),然后以每步0.1 m的長(zhǎng)度行走,最后行走至剩下距離小于0.1 m處,到達(dá)目標(biāo)小球前。
在NAOqi系統(tǒng)中,ALMotion模塊下還有一個(gè)函數(shù),即setFootSteps()。通過(guò)該函數(shù),可自定義NAO機(jī)器人的步態(tài)參數(shù),通過(guò)調(diào)整每步的距離,讓機(jī)器人行走步態(tài)更加穩(wěn)定,誤差更小。該函數(shù)的FootSteps格式[x,y,theta],包括機(jī)器人左腳或右腳邁出一步后,兩腳之間X軸方向的距離、Y軸方向的距離以及繞Z軸的旋轉(zhuǎn)角度。實(shí)驗(yàn)發(fā)現(xiàn),將步態(tài)參數(shù)設(shè)置為[0.15,0.1,0]時(shí),NAO機(jī)器人的行走過(guò)程基本上每步都是0.1 m。
行走總距離包括下列兩部分:每步距離大于0.1 m 時(shí),機(jī)器人按setFootSteps()函數(shù)行走;每步距離小于0.1 m 時(shí),機(jī)器人按MoveTo()行走函數(shù)行走。采用誤差補(bǔ)償策略,使NAO機(jī)器人能以很小誤差行走至小球前。
機(jī)器人目標(biāo)定位實(shí)驗(yàn)包括作為目標(biāo)的紅色小球放置在箱子上和放置在地面上兩個(gè)實(shí)驗(yàn)。
在紅色小球放置在地面的實(shí)驗(yàn)中,發(fā)現(xiàn)小球距離NAO機(jī)器人越遠(yuǎn),得到位置坐標(biāo)的誤差就越大;特別是在X軸方向,小球距離NAO機(jī)器人越遠(yuǎn),實(shí)驗(yàn)距離與實(shí)際距離的誤差就越大,但Y軸方向基本準(zhǔn)確。因此,本文將小球放在NAO機(jī)器人正前方,并盡量保證小球在Y軸方向到NAO機(jī)器人的距離為零,通過(guò)采集視野內(nèi)不同位置的坐標(biāo)信息,統(tǒng)計(jì)各離散點(diǎn)的實(shí)驗(yàn)距離X0與實(shí)際距離x,計(jì)算了相應(yīng)的位置誤差。實(shí)驗(yàn)距離與實(shí)際距離如表1所示。
為了進(jìn)行誤差補(bǔ)償,考慮到四次多項(xiàng)式(8)中的5個(gè)未知系數(shù),至少需要5個(gè)約束條件才能求解。因此,本文將0.25~0.65 m的離散點(diǎn)位置分為兩部分求解,得到了兩個(gè)誤差補(bǔ)償系數(shù)k1和k2。
表1 實(shí)驗(yàn)距離與實(shí)際距離
k1=a1x4+b1x3+c1x2+d1x+e1
(9)
式中:a1=-3 978.190 470 159 66;
b1=4 678.636 094 834 16;
c1=-2 046.828 429 567 13;
d1=395.300 067 760 91;
e1=-27.262 122 550 00。
k2=a2x4+b2x3+c2x2+d2x+e2
(10)
式中:a2=3 281.857 153 256 74;
b2=-5 815.255 086 348 00;
c2=3 839.508 513 031 15;
d2=-1 118.757 348 607 49;
e2=122.592 359 760 91。
將誤差補(bǔ)償系數(shù)代入式(7),計(jì)算后進(jìn)行誤差補(bǔ)償。在誤差補(bǔ)償后,將小球放置在NAO機(jī)器人所在地面的X軸方向上各點(diǎn)位(橫坐標(biāo)分別為0.30 m、0.40 m、0.45 m、0.50 m、0.55 m和0.60 m)處,再次進(jìn)行了實(shí)驗(yàn)。對(duì)應(yīng)地面上小球各點(diǎn)位橫坐標(biāo)的實(shí)際距離(10組數(shù)據(jù))如表2所示。
表2 對(duì)應(yīng)地面上小球各點(diǎn)位橫坐標(biāo)的實(shí)際距離(10組數(shù)據(jù))
從表2可看出,誤差補(bǔ)償后的實(shí)際距離與實(shí)驗(yàn)距離之間的誤差被縮小至2 cm左右,能夠滿足設(shè)計(jì)要求。當(dāng)小球在箱子上時(shí),同樣存在X軸方向的位置誤差,因此還需要對(duì)X軸方向的位置坐標(biāo)進(jìn)行誤差補(bǔ)償。本文針對(duì)0.10~0.30 m的離散點(diǎn)位置,通過(guò)求解得到了誤差補(bǔ)償系數(shù)k3。
k3=a3x4+b3x3+c3x2+d3x+e3
(11)
式中:a3=8 751.202 730 574 65;
b3=-6 153.748 948 425 56;
c3=1 592.462 715 453 89;
d3=-177.345 005 935 16;
e3=8.075 123 346 135 31。
將誤差補(bǔ)償系數(shù)k3代入式(7),計(jì)算后進(jìn)行誤差補(bǔ)償。在誤差補(bǔ)償后,將小球放置在NAO機(jī)器人X軸方向上各點(diǎn)位(橫坐標(biāo)分別為0.15 m、0.20 m和0.30 m)處,再次進(jìn)行了實(shí)驗(yàn)。對(duì)應(yīng)箱子上小球各點(diǎn)位橫坐標(biāo)的實(shí)際距離(10組數(shù)據(jù))如表3所示。
從表3可看出,對(duì)于小球放置在箱子上的情況,NAO機(jī)器人的目標(biāo)定位結(jié)果雖然存在一定的距離誤差,但通過(guò)多項(xiàng)式誤差補(bǔ)償后,能將距離誤差縮小至2 cm 左右,可滿足讓機(jī)器人行走至小球附近的要求,為機(jī)器人行走路徑規(guī)劃創(chuàng)造條件。
表3 對(duì)應(yīng)箱子上小球各點(diǎn)位橫坐標(biāo)的實(shí)際距離(10組數(shù)據(jù))
NAO機(jī)器人的行走實(shí)驗(yàn)也包括小球在地面上和箱子上兩種情況。小球在地面上時(shí),針對(duì)小球在機(jī)器人正前方、左前方和右前方3個(gè)方向分別做行走實(shí)驗(yàn)(見(jiàn)圖3);小球在箱子上時(shí),針對(duì)小球在機(jī)器人正前方做行走實(shí)驗(yàn)(見(jiàn)圖4)。
正前方 左前方 右前方圖3 針對(duì)小球在地面上的機(jī)器人行走實(shí)驗(yàn)Fig. 3 A robot walking experiment with a small ball on the ground
在機(jī)器人行走實(shí)驗(yàn)中發(fā)現(xiàn):NAO機(jī)器人只采用內(nèi)置的MoveTo()函數(shù)時(shí),其行走誤差較明顯;采用本文提出的步態(tài)規(guī)劃誤差補(bǔ)償策略后,機(jī)器人行走過(guò)程較為穩(wěn)定,對(duì)于目標(biāo)小球放置于不同位置的情況,其行走路線均不會(huì)偏移,能達(dá)到直線行走的要求。
圖4 針對(duì)小球在箱子上的機(jī)器人行走實(shí)驗(yàn)Fig. 4 A robot walking experiment with a small ball on the box
本文采用單目視覺(jué)定位算法,對(duì)目標(biāo)進(jìn)行定位和步態(tài)規(guī)劃,建立了基于NAO機(jī)器人的目標(biāo)識(shí)別行走系統(tǒng),讓NAO機(jī)器人在可視范圍內(nèi)通過(guò)視覺(jué)獲取目標(biāo)的位置坐標(biāo)后,行走至目標(biāo)附近。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),誤差補(bǔ)償后的目標(biāo)位置誤差在2 cm左右,為機(jī)器人行走路徑規(guī)劃提供了條件。本文提出的步態(tài)規(guī)劃誤差補(bǔ)償策略能夠滿足NAO機(jī)器人目標(biāo)識(shí)別及行走要求,達(dá)到預(yù)期目標(biāo)。對(duì)機(jī)器人進(jìn)行步態(tài)規(guī)劃時(shí),應(yīng)對(duì)其每一步的距離進(jìn)行控制,以便較好地解決機(jī)器人的行走偏差問(wèn)題。