丁亮
?。ê贾蓦娮涌萍即髮W(xué) 計算機(jī)學(xué)院,浙江 杭州 310018)
摘要:傳統(tǒng)的傳感器在移動機(jī)器人障礙物檢測領(lǐng)域都有其各自的局限性。文章提出基于Kinect的障礙物檢測方法:利用Kinect傳感器獲取環(huán)境深度圖像;通過Kinect標(biāo)定配準(zhǔn)之后獲取校準(zhǔn)參數(shù);通過該參數(shù)獲得圖像像素點(diǎn)與空間三維坐標(biāo)的對應(yīng)關(guān)系;通過空間三維坐標(biāo)確定地平面與障礙物區(qū)域,并將障礙物區(qū)域作為感興趣區(qū)域;通過三維坐標(biāo)在x軸和z軸的連續(xù)性對感興趣區(qū)域進(jìn)行處理,分割出各個障礙物。實(shí)驗(yàn)結(jié)果表明,文中算法可以有效且實(shí)時地檢測到障礙物信息。
關(guān)鍵詞:Kinect;障礙物檢測;實(shí)時
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.006
引用格式:丁亮.基于Kinect的實(shí)時障礙物檢測[J].微型機(jī)與應(yīng)用,2017,36(7):1921,25.
0引言
移動機(jī)器人是機(jī)器人學(xué)中的一個重要分支,指通過自身的傳感器獲取周圍的環(huán)境信息和自身狀態(tài),實(shí)現(xiàn)在有障礙物的環(huán)境中自主向目標(biāo)移動,最終完成任務(wù)的機(jī)器人。
關(guān)于獲取環(huán)境信息,眾多科研工作者目前的嘗試可以概括為以下五方面:基于超聲波的檢測方法[12]、基于激光雷達(dá)的檢測方法[3]、基于紅外的檢測方法[4]、基于視覺的檢測方法[56]以及基于傳感器組合的檢測方法[7]。
這些方法都可以有效地感知周圍環(huán)境信息,但也都有其局限性。本文使用微軟的Kinect傳感器,其不同于一般的視覺傳感器,Kinect除了具有RGB彩色攝像頭可提供二維視覺圖像外,還具有深度傳感器可以獲取距離信息。Kinect屬于主動探測,其探測深度信息使用“光編碼”技術(shù)[8]。Kienct價格低廉,獲取信息豐富,非常適用于移動機(jī)器人實(shí)時障礙物檢測。
1Kinect障礙物檢測
1.1Kinect標(biāo)定
使用 Kinect 傳感器進(jìn)行深度信息測量前,需要先對Kinect 傳感器進(jìn)行標(biāo)定[9]。標(biāo)定之后所獲取的校準(zhǔn)參數(shù)是從原始深度圖像坐標(biāo)計算3D坐標(biāo)所必需的。其深度測量的三角測量原理如圖1所示,圖中顯示了待測量物體的點(diǎn)k相對于參考平面的距離與測量的視差d之間的關(guān)系。為了表示對象點(diǎn)的3D坐標(biāo),本文采用深度坐標(biāo)系,其原點(diǎn)在左下角紅外攝像機(jī)的透視原點(diǎn)。z軸正交于朝向物體的像平面;x軸在基線b的方向上并垂直于z軸,y軸與x軸正交。
圖1相對深度和測量差異之間的關(guān)系假設(shè)物體在距離傳感器距離為Z0的參考平面上,并且在紅外相機(jī)的圖像平面上捕獲物體的斑點(diǎn),如果物體移動得離傳感器更近或者更遠(yuǎn),則在圖像平面上的斑點(diǎn)位置將在x方向上移位。這在圖像空間中被測量為對應(yīng)對象空間中點(diǎn)k的視差d。從三角形相似性可知:
其中Zk表示物體空間中點(diǎn)k的距離(深度),b是基本長度表示兩個相機(jī)之間的距離,f是紅外相機(jī)的焦距,D是點(diǎn)k在物體空間中的位移,且d是在圖像空間觀察到的視差。將D從式(2)代入式(1),并根據(jù)其他變量,得到:
其中(xk,yk)是點(diǎn)的圖像坐標(biāo),(x0,y0)是圖像坐標(biāo)的原點(diǎn),(δx,δy)是透鏡畸變的校正參數(shù)。
綜上所述,用于從原始圖像坐標(biāo)測量計算3D坐標(biāo)的數(shù)學(xué)模型中涉及的校準(zhǔn)參數(shù)包括:焦距(f)、主點(diǎn)偏移(x0,y0)、透鏡畸變系數(shù)(δx,δy)、基底長度(b)、參考圖案的距離(Z0)。這些校準(zhǔn)參數(shù)完全限定了圖像測量(x,y,d)與每一個點(diǎn)空間坐標(biāo)(X,Y,Z)之間的關(guān)系。
在標(biāo)定完成之后,可以把深度圖像的像素點(diǎn)坐標(biāo)與投影到Kinect三維空間的點(diǎn)坐標(biāo)進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換后,該Kinect三維空間坐標(biāo)系,即是以Kinect傳感器為坐標(biāo)原點(diǎn),x軸沿水平方向,y軸與x軸垂直,且平行于像素點(diǎn)成像平面,z軸垂直于xy平面。
1.2深度圖像和RGB圖像的配準(zhǔn)
由圖2可以看到,Kinect的彩色攝像頭和紅外攝像頭并不在同一個位置且視角不同,所以Kinect的彩色圖像和深度圖像的每一幀的數(shù)據(jù)空間坐標(biāo)系是不同的,前者的原點(diǎn)是RGB攝像頭,后者的原點(diǎn)是紅外攝像頭,因此兩者之間會有相應(yīng)的誤差。
可以在代碼處理時把深度生成器的視角設(shè)定為彩色生成器的視角,讓它們的視角保持一致。最主要的處理過程是實(shí)現(xiàn)兩個映射函數(shù):DepthToWorld從深度相機(jī)(x,y,d)映射到世界坐標(biāo),WorldToColor將世界坐標(biāo)中的點(diǎn)映射到彩色攝像機(jī)中的像素索引。經(jīng)過深度圖像與彩色圖像對準(zhǔn)之后,彩色圖像的每一個像素點(diǎn)都能在深度圖像中找到對應(yīng)點(diǎn)的深度信息。
2基于深度信息障礙物獲取
在經(jīng)過1.1節(jié)和1.2節(jié)的步驟之后,相當(dāng)于在每一幀RGB圖像的每一個像素上又包含了高度信息。以此為基礎(chǔ),就可以進(jìn)一步獲取每一幀圖像中的障礙物與地平面區(qū)域。其處理過程如圖3所示。
(1)在圖像上提取地平線。因?yàn)楸疚恼J(rèn)為阻礙移動機(jī)器人運(yùn)動軌跡的障礙物為在地面上的凸障礙物,所以可以認(rèn)為障礙物與地面之間的交界線就是地平線。場景中高于地平線的距離超過一個閾值的即可以認(rèn)為是障礙物。所以,可以計算各行像素在移動機(jī)器人坐標(biāo)系的高度平均值:
Hi=∑N-1j=0yi,jN(4)
式中,N表示列的數(shù)目。
(2)識別地平面。通常像素如果處在同一個平面上,其高度變化的趨勢是緩慢的,當(dāng)出現(xiàn)障礙物時,高度會出現(xiàn)階躍性的變化??梢詮膱D像由下至上遍歷每一行像素的高度值,如果某一行的高度的平均值大于其下面區(qū)域的高度平均值時,該行就被認(rèn)為是地平線,而地平線以下的區(qū)域即被認(rèn)為是地平面,如:
式中,l1、ln分別表示起始行和結(jié)束行。
(3)標(biāo)記遠(yuǎn)景和地面。如果像素的高度值與G的差的絕對值小于閾值GA,即可以認(rèn)為是地面,則將該點(diǎn)的像素值灰度值置為0。
C(i,j)=0, If |yi,j-G|<GA(6)
式中,C(i,j)表示像素點(diǎn)(i,j)的灰度值,yi,j表示該像素點(diǎn)的高度。
同時,由于深度相機(jī)隨距離增加的隨機(jī)誤差,需要使用類似的方式標(biāo)記出2.5 m以外的遠(yuǎn)景區(qū)域,即如果深度值大于閾值DA,則將該點(diǎn)的像素灰度值置為0。
C(i,j)=0, If zi,j>DA(7)
式中,zi,j表示該像素點(diǎn)的高度。
?。?)障礙物檢測。經(jīng)過步驟(3)標(biāo)記之后,即非感興趣的區(qū)域的灰度值已經(jīng)被置為0,余下的就是感興趣的區(qū)域。接下來就需要對感興趣區(qū)域做進(jìn)一步處理,以檢測障礙物。文中使用一個3×3結(jié)構(gòu)對二進(jìn)制感興趣區(qū)域進(jìn)行擴(kuò)張(腐蝕)操作,以閉合障礙物像素之間的間隙,這樣就初步得到了障礙物的區(qū)域。不過還不能區(qū)分不同深度的障礙物與同一深度不相連的障礙物。還需要在初步得到的障礙物區(qū)域的基礎(chǔ)上,查看其點(diǎn)的x軸和z軸坐標(biāo),在z軸與x軸不連續(xù)的位置進(jìn)行分割,將不同深度與同一深度不相連的障礙物分離出來,這樣就獲得了障礙物個體。
為了進(jìn)一步說明該障礙物檢測算法的流程,下面將在一個場景中應(yīng)用這個算法來說明,場景選擇為實(shí)驗(yàn)室樓梯口,如圖4所示。其中(a)為場景圖,包括貼近地面的障礙物、普通障礙物和貼有反光帶具有反射干擾的障礙物;(b)為1.1小節(jié)Kinect標(biāo)定后,深度圖像各點(diǎn)對應(yīng)空間的三維坐標(biāo),為了易于查看,使用AntTweakBar將結(jié)果渲染出來;(c)為預(yù)處理之后的深度圖;(d)中實(shí)線部分為提取的地平線;(e)顯示了標(biāo)記遠(yuǎn)景和地面的結(jié)果,因?yàn)樵搱鼍盀槭覂?nèi)場景,所以沒有遠(yuǎn)景,只是標(biāo)記了地平面區(qū)域;(f)為經(jīng)過x軸、z軸不連續(xù)區(qū)域的分割,得到分離后的障礙物。
從圖4可以看到,本文算法可以基于Kinect有效檢測到障礙物。
3結(jié)論
本文研究了基于Kinect傳感器的障礙物檢測方法。首先經(jīng)過Kinect標(biāo)定與配準(zhǔn)之后,可以獲得RGB圖像像素點(diǎn)的三維空間坐標(biāo);第二,根據(jù)每一行像素點(diǎn)高度的平均值確定地平面;第三,以地平線為基礎(chǔ),確定地平面和障礙物區(qū)域,把障礙物區(qū)域作為感興趣區(qū)域;最后,在感興趣區(qū)域中,根據(jù)像素的空間坐標(biāo)的x、z值的連續(xù)性進(jìn)行切分,分割出障礙物。通過實(shí)驗(yàn)驗(yàn)證了本文算法的有效性。
參考文獻(xiàn)
?。?] SANTANA P,GUEDES M, CORREIA L, et al. Stereobased allterrain obstacle detection using visual saliency[J]. Journal of Field Robotics, 2011, 28(2):241-263.
[2] MANSO L J, BUSTOS P, BURGOS P B, et al. Multicue visual obstacle detection for mobile robots[J]. Journal of Physical Agents, 2010, 4(1): 3-10.
?。?] CRISTINA D, LVARO H, ANA J, et al. Ultrasonic array for obstacle detection based on CDMA with Kasami codes[J]. Sensors, 2011, 11(12):11464-11475.