楊磊,徐家川,李迪,焦學健
(山東理工大學 交通與車輛工程學院, 山東 淄博 255049)
AGV小車在車間通道運送物料,盡管布局安排會盡量保證AGV的工作路徑上沒有障礙物,但由于車間環境相對復雜,難免出現障礙物影響AGV的運行,這就要求AGV小車能夠快速地檢測出行駛前方是否存在障礙物。
傳統的AGV障礙物檢測方法有:超聲波傳感器檢測、紅外線傳感器檢測、激光雷達檢測、雙目相機檢測以及多種傳感器融合技術檢測[1]。這些方法雖然可以檢測出行駛環境中存在的障礙物,但是每種方法都存在一定的局限性,不能很好地適用于室內AGV的障礙物檢測。
微軟公司推出一款體感設備——Kinect相機,如圖1所示,該相機能夠實時采集分辨率為512×424、最大幀率為30 fps的深度圖[2]。Kinect相機具有環境適應性好、測量精度高、實時性強、價格低廉等優點,符合室內AGV障礙物檢測的要求。

圖1 Kinect相機組成
本文對Kinect相機的深度相機標定后,從Kinect相機獲取的深度圖像中獲得環境的點云數據,基于點云數據進行AGV小車的實時障礙物檢測。
Kinect相機的“深度眼睛”由一個紅外投影機和紅外攝像機組合而成,投影和接收互為重疊,如圖2所示。Kinect相機以30 幀/s的速度收集視野范圍內的每一點,并形成一幅代表周圍環境的深度圖像。

圖2 Kinect相機的深度傳感器
Kinect相機深度攝像機的測距是基于紅外信號的飛行時間(time of flight,TOF)實現的。如圖3所示,紅外投影機發出脈沖光,紅外相機接收反射光,通過測量脈沖光之間的傳輸延遲時間計算離目標物的距離即深度信息[3]。

圖3 TOF光學測距
盡管Kinect相機可以獲得環境中的深度信息,但是得到的仍是2D圖像,且含有大量的噪聲。如果要準確檢測障礙物相對于相機的位置關系,需要建立深度圖像的像素點與真實世界物理坐標系之間的聯系,但是從三維世界到二維圖像這一過程是不可逆的。為解決這一問題,如圖4所示,建立一個合適的數學模型,求出這個模型的參數,近似相機成像過程,進而求解這個數學模型的反函數,實現從二維到三維的映射[4]。

圖4 相機標定原理
深度攝像機的成像模型與針孔相機模型相似。如圖5所示,針孔相機模型涉及4個坐標系:世界坐標系Ow-XwYwZw,相機坐標系Oc-XcYcZc,圖像物理坐標系O-XY,圖像像素坐標系Ouv-UV。

圖5 針孔相機成像模型
為方便描述,把針孔相機模型關于光心Oc對稱翻轉,如圖6所示。從數學的角度來看它們是等價的。接下來介紹世界坐標系中任一點M(xw,yw,zw)的成像過程。

圖6 針孔相機翻轉對稱成像模型
世界坐標系中的物體先成像在相機坐標系中,即點M的坐標要從世界坐標系變換到相機坐標系。如圖7所示,從世界坐標系到相機坐標系的變換屬于剛體變換,只需要進行坐標系的平移和旋轉。可得點M在相機坐標系中的坐標Mc(xc,yc,zc)滿足:

圖7 世界坐標系變換到相機坐標系
如圖8所示,假設Mc(xc,yc)為M(xc,yc,zc)在像平面上的投影點,當忽略相機畸變時,光心Oc、點Mc與M在一條直線上[5]。

圖8 相機坐標系變換到圖像物理坐標系
根據三角形相似可得
最后將點Mc的坐標從圖像物理坐標系變換到到像素坐標系,如圖9所示。

圖9 圖像物理坐標系變換到圖像像素坐標系
由于圖像物理坐標系和圖像像素坐標系的原點位置不同且單位長度也不一樣,所以需進行伸縮變換與平移變換,即
到此實現了世界坐標系中的點M(xw,yw,zw)與像素坐標系中的M(u,v)在忽略畸變的情況下的映射關系,即
實際上透鏡的制造工藝和安裝位置會引起相機徑向畸變和切向機畸變,使得光心Oc、點Mc和點M不在同一條直線上,Mc的實際位置可能在Mc′處,如圖10所示。為使前邊的模型成立,需要進行消畸變處理。

圖10 考慮相機畸變時的成像模型
對于徑向畸變,常用r=0處的泰勒級數展開的前幾項來近似描述。矯正徑向畸變前后各點的坐標關系為
對于切向畸變,需要兩個額外的畸變參數來描述,矯正前后的坐標關系為
綜上,為實現世界坐標系與像素坐標系的變換需要4個描述坐標變換的參數fx、fy、u0、v0,消除相機畸變需要確定描述透鏡畸變的5個參數k1、k2、k3、p1和p2,即只要確定這9個參數就可以確定唯一的針孔相機模型,這個過程稱為相機標定。
為了確定像點和物點的對應關系進而訓練出能夠描述相機成像過程的9個參數,使用標定板進行相機標定。標定前需要用Kinect相機從不同的角度采集多張照片,為了避免Kinect相機自帶的紅外投影機產生的紅外線對實驗的干擾,試驗前用黑膠帶擋住紅外投影機,用額外的紅外光源照射物體采集圖像[6],采集的圖像如圖11所示。

圖11 相機標定時采集的圖像
圖像采集完成后調用Matlab工具箱中的標定應用Camera Calibrator,導入拍攝的圖片,進行深度相機的標定。如圖12(a)所示,輸出描述相機坐標變換的4個參數和消除畸變的5個參數。如圖12(b)所示,標定平均誤差為0.19 個像素,標定標準要求標定的平均誤差不超過0.5 個像素,所以此次標定結果符合標定標準。

(a)標定結果
相機標定完成后,根據相機成像模型矩陣變換,可以準確地獲得深度圖中每個像素點在世界坐標系中的對應點,進而獲得點云數據。
如圖13所示,Kinect相機空間坐標系按如下方法規定:坐標原點(X=0,Y=0,Z=0)位于Kinect相機的紅外相機中心;Z軸方向為順Kinect相機的照射方向,X軸方向為順著Kinect相機的照射方向的左方向,Y軸方向為順著Kinect相機的照射方向的上方向,坐標單位為m[7]。

圖13 Kinect相機的坐標系
如圖14所示,Kinect相機安裝在AGV小車的前端,保證紅外相機處于車輛的中心位置處。為能夠更好地實現障礙物的檢測,使得相機向下傾斜20°安裝。

圖14 Kinect相機安裝示意圖
當小車工作時,Kinect相機實時采集環境的深度圖像,如圖15所示。將獲得的深度圖像轉換成點云數據,世界坐標系中各個點形成的點云在相機三維坐標系中表示如圖16所示。

(a)RGB圖像

圖16 深度圖轉換的點云圖像
由于相機和地面不在同一水平面上且存在向下傾斜的安裝角度,所以得到的點云數據相對于YZ平面也是傾斜的[8]。為方便控制將得到的點云數據進行繞X軸的旋轉變換,使得到的地面點云數據平行于坐標系YZ平面。經坐標變換后得到水平面和地面有障礙物時的點云數據如圖17所示,從圖17可以看出水平地面形成的點云數據中每個點的Y坐標值是相等的,處于同一水平面上。當有障礙時,障礙物點云數據的Y坐標值明顯大于周圍點云數據的。所以可以通過檢測Kinect相機所獲點云數據的Y坐標值實現小車行進過程中障礙檢測功能。

圖17 坐標變換后的點云數據
小車工作環境的地面是平面,所以當地面沒有障礙物時,獲得點云數據的所有點的Y坐標值是相等的;當有障礙物時,障礙物點云數據的Y坐標值會明顯大于周圍點的;當障礙物出現在小車兩側且不影響小車正常通行時,忽略障礙物,即只檢測坐標‖X‖大于某個值的范圍內的數據[9]。檢測規則如圖18所示。

圖18 障礙物檢測規則
AGV小車高0.5 m,車體寬0.6 m,根據Kinect相機安裝角度可得,Kinect相機的前1.2 m內的視野是有效檢測范圍。忽略車體左右兩側0.2 m以外的障礙物,即當障礙物出現在相機坐標系左右兩側0.5 m以外時認為安全。在檢測過程中,從在圖像坐標系的第1行開始進行逐行掃描,當點云數據的‖X‖≤0.5 m,且Y>0.05 m時障礙物檢測系統報警提醒,否則小車安全行駛。由于AGV小車行駛速度比較慢,所以為了減小計算量同時提高檢測的實時性,在檢測時設定每0.3 s檢測一次。
為驗證算法的準確性和魯棒性,如圖19所示,以某公司的室內AGV小車為實驗平臺進行實驗。如圖20所示,分別對障礙物在小車檢測范圍內前方,檢測范圍外前方,檢測范圍內左側、右側,檢測范圍外左側、右側這6種常見情況進行障礙物檢測。得到檢測結果如圖21所示。

圖19 實驗平臺

圖20 障礙物檢測

圖21 障礙物檢測結果
由圖21可以發現,當障礙物出現在小車正前方1.5 m、行駛軌跡左右0.5 m處時,障礙物檢測系統發出警告;當障礙物出現在小車正前方5 m、行駛軌跡左右0.9 m處時,障礙物檢測系統未發出警告。通過實驗驗證該方案能夠實現室內AGV障礙物檢測功能。
本文提出了一種利用Kinect相機獲得的深度信息進行障礙物在線快速檢測方法,制定了障礙物檢測規則并通過實驗驗證了該檢測方法的準確性,實現了障礙物高效、穩定的實時檢測,為AGV小車的安全通行提供了保障。