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