楊磊,徐家川,李迪,焦學(xué)健
(山東理工大學(xué) 交通與車輛工程學(xué)院, 山東 淄博 255049)
AGV小車在車間通道運送物料,盡管布局安排會盡量保證AGV的工作路徑上沒有障礙物,但由于車間環(huán)境相對復(fù)雜,難免出現(xiàn)障礙物影響AGV的運行,這就要求AGV小車能夠快速地檢測出行駛前方是否存在障礙物。
傳統(tǒng)的AGV障礙物檢測方法有:超聲波傳感器檢測、紅外線傳感器檢測、激光雷達(dá)檢測、雙目相機檢測以及多種傳感器融合技術(shù)檢測[1]。這些方法雖然可以檢測出行駛環(huán)境中存在的障礙物,但是每種方法都存在一定的局限性,不能很好地適用于室內(nèi)AGV的障礙物檢測。
微軟公司推出一款體感設(shè)備——Kinect相機,如圖1所示,該相機能夠?qū)崟r采集分辨率為512×424、最大幀率為30 fps的深度圖[2]。Kinect相機具有環(huán)境適應(yīng)性好、測量精度高、實時性強、價格低廉等優(yōu)點,符合室內(nèi)AGV障礙物檢測的要求。
圖1 Kinect相機組成
本文對Kinect相機的深度相機標(biāo)定后,從Kinect相機獲取的深度圖像中獲得環(huán)境的點云數(shù)據(jù),基于點云數(shù)據(jù)進(jìn)行AGV小車的實時障礙物檢測。
Kinect相機的“深度眼睛”由一個紅外投影機和紅外攝像機組合而成,投影和接收互為重疊,如圖2所示。Kinect相機以30 幀/s的速度收集視野范圍內(nèi)的每一點,并形成一幅代表周圍環(huán)境的深度圖像。
圖2 Kinect相機的深度傳感器
Kinect相機深度攝像機的測距是基于紅外信號的飛行時間(time of flight,TOF)實現(xiàn)的。如圖3所示,紅外投影機發(fā)出脈沖光,紅外相機接收反射光,通過測量脈沖光之間的傳輸延遲時間計算離目標(biāo)物的距離即深度信息[3]。
圖3 TOF光學(xué)測距
盡管Kinect相機可以獲得環(huán)境中的深度信息,但是得到的仍是2D圖像,且含有大量的噪聲。如果要準(zhǔn)確檢測障礙物相對于相機的位置關(guān)系,需要建立深度圖像的像素點與真實世界物理坐標(biāo)系之間的聯(lián)系,但是從三維世界到二維圖像這一過程是不可逆的。為解決這一問題,如圖4所示,建立一個合適的數(shù)學(xué)模型,求出這個模型的參數(shù),近似相機成像過程,進(jìn)而求解這個數(shù)學(xué)模型的反函數(shù),實現(xiàn)從二維到三維的映射[4]。
圖4 相機標(biāo)定原理
深度攝像機的成像模型與針孔相機模型相似。如圖5所示,針孔相機模型涉及4個坐標(biāo)系:世界坐標(biāo)系Ow-XwYwZw,相機坐標(biāo)系Oc-XcYcZc,圖像物理坐標(biāo)系O-XY,圖像像素坐標(biāo)系Ouv-UV。
圖5 針孔相機成像模型
為方便描述,把針孔相機模型關(guān)于光心Oc對稱翻轉(zhuǎn),如圖6所示。從數(shù)學(xué)的角度來看它們是等價的。接下來介紹世界坐標(biāo)系中任一點M(xw,yw,zw)的成像過程。
圖6 針孔相機翻轉(zhuǎn)對稱成像模型
世界坐標(biāo)系中的物體先成像在相機坐標(biāo)系中,即點M的坐標(biāo)要從世界坐標(biāo)系變換到相機坐標(biāo)系。如圖7所示,從世界坐標(biāo)系到相機坐標(biāo)系的變換屬于剛體變換,只需要進(jìn)行坐標(biāo)系的平移和旋轉(zhuǎn)??傻命cM在相機坐標(biāo)系中的坐標(biāo)Mc(xc,yc,zc)滿足:
圖7 世界坐標(biāo)系變換到相機坐標(biāo)系
如圖8所示,假設(shè)Mc(xc,yc)為M(xc,yc,zc)在像平面上的投影點,當(dāng)忽略相機畸變時,光心Oc、點Mc與M在一條直線上[5]。
圖8 相機坐標(biāo)系變換到圖像物理坐標(biāo)系
根據(jù)三角形相似可得
最后將點Mc的坐標(biāo)從圖像物理坐標(biāo)系變換到到像素坐標(biāo)系,如圖9所示。
圖9 圖像物理坐標(biāo)系變換到圖像像素坐標(biāo)系
由于圖像物理坐標(biāo)系和圖像像素坐標(biāo)系的原點位置不同且單位長度也不一樣,所以需進(jìn)行伸縮變換與平移變換,即
到此實現(xiàn)了世界坐標(biāo)系中的點M(xw,yw,zw)與像素坐標(biāo)系中的M(u,v)在忽略畸變的情況下的映射關(guān)系,即
實際上透鏡的制造工藝和安裝位置會引起相機徑向畸變和切向機畸變,使得光心Oc、點Mc和點M不在同一條直線上,Mc的實際位置可能在Mc′處,如圖10所示。為使前邊的模型成立,需要進(jìn)行消畸變處理。
圖10 考慮相機畸變時的成像模型
對于徑向畸變,常用r=0處的泰勒級數(shù)展開的前幾項來近似描述。矯正徑向畸變前后各點的坐標(biāo)關(guān)系為
對于切向畸變,需要兩個額外的畸變參數(shù)來描述,矯正前后的坐標(biāo)關(guān)系為
綜上,為實現(xiàn)世界坐標(biāo)系與像素坐標(biāo)系的變換需要4個描述坐標(biāo)變換的參數(shù)fx、fy、u0、v0,消除相機畸變需要確定描述透鏡畸變的5個參數(shù)k1、k2、k3、p1和p2,即只要確定這9個參數(shù)就可以確定唯一的針孔相機模型,這個過程稱為相機標(biāo)定。
為了確定像點和物點的對應(yīng)關(guān)系進(jìn)而訓(xùn)練出能夠描述相機成像過程的9個參數(shù),使用標(biāo)定板進(jìn)行相機標(biāo)定。標(biāo)定前需要用Kinect相機從不同的角度采集多張照片,為了避免Kinect相機自帶的紅外投影機產(chǎn)生的紅外線對實驗的干擾,試驗前用黑膠帶擋住紅外投影機,用額外的紅外光源照射物體采集圖像[6],采集的圖像如圖11所示。
圖11 相機標(biāo)定時采集的圖像
圖像采集完成后調(diào)用Matlab工具箱中的標(biāo)定應(yīng)用Camera Calibrator,導(dǎo)入拍攝的圖片,進(jìn)行深度相機的標(biāo)定。如圖12(a)所示,輸出描述相機坐標(biāo)變換的4個參數(shù)和消除畸變的5個參數(shù)。如圖12(b)所示,標(biāo)定平均誤差為0.19 個像素,標(biāo)定標(biāo)準(zhǔn)要求標(biāo)定的平均誤差不超過0.5 個像素,所以此次標(biāo)定結(jié)果符合標(biāo)定標(biāo)準(zhǔn)。
(a)標(biāo)定結(jié)果
相機標(biāo)定完成后,根據(jù)相機成像模型矩陣變換,可以準(zhǔn)確地獲得深度圖中每個像素點在世界坐標(biāo)系中的對應(yīng)點,進(jìn)而獲得點云數(shù)據(jù)。
如圖13所示,Kinect相機空間坐標(biāo)系按如下方法規(guī)定:坐標(biāo)原點(X=0,Y=0,Z=0)位于Kinect相機的紅外相機中心;Z軸方向為順Kinect相機的照射方向,X軸方向為順著Kinect相機的照射方向的左方向,Y軸方向為順著Kinect相機的照射方向的上方向,坐標(biāo)單位為m[7]。
圖13 Kinect相機的坐標(biāo)系
如圖14所示,Kinect相機安裝在AGV小車的前端,保證紅外相機處于車輛的中心位置處。為能夠更好地實現(xiàn)障礙物的檢測,使得相機向下傾斜20°安裝。
圖14 Kinect相機安裝示意圖
當(dāng)小車工作時,Kinect相機實時采集環(huán)境的深度圖像,如圖15所示。將獲得的深度圖像轉(zhuǎn)換成點云數(shù)據(jù),世界坐標(biāo)系中各個點形成的點云在相機三維坐標(biāo)系中表示如圖16所示。
(a)RGB圖像
圖16 深度圖轉(zhuǎn)換的點云圖像
由于相機和地面不在同一水平面上且存在向下傾斜的安裝角度,所以得到的點云數(shù)據(jù)相對于YZ平面也是傾斜的[8]。為方便控制將得到的點云數(shù)據(jù)進(jìn)行繞X軸的旋轉(zhuǎn)變換,使得到的地面點云數(shù)據(jù)平行于坐標(biāo)系YZ平面。經(jīng)坐標(biāo)變換后得到水平面和地面有障礙物時的點云數(shù)據(jù)如圖17所示,從圖17可以看出水平地面形成的點云數(shù)據(jù)中每個點的Y坐標(biāo)值是相等的,處于同一水平面上。當(dāng)有障礙時,障礙物點云數(shù)據(jù)的Y坐標(biāo)值明顯大于周圍點云數(shù)據(jù)的。所以可以通過檢測Kinect相機所獲點云數(shù)據(jù)的Y坐標(biāo)值實現(xiàn)小車行進(jìn)過程中障礙檢測功能。
圖17 坐標(biāo)變換后的點云數(shù)據(jù)
小車工作環(huán)境的地面是平面,所以當(dāng)?shù)孛鏇]有障礙物時,獲得點云數(shù)據(jù)的所有點的Y坐標(biāo)值是相等的;當(dāng)有障礙物時,障礙物點云數(shù)據(jù)的Y坐標(biāo)值會明顯大于周圍點的;當(dāng)障礙物出現(xiàn)在小車兩側(cè)且不影響小車正常通行時,忽略障礙物,即只檢測坐標(biāo)‖X‖大于某個值的范圍內(nèi)的數(shù)據(jù)[9]。檢測規(guī)則如圖18所示。
圖18 障礙物檢測規(guī)則
AGV小車高0.5 m,車體寬0.6 m,根據(jù)Kinect相機安裝角度可得,Kinect相機的前1.2 m內(nèi)的視野是有效檢測范圍。忽略車體左右兩側(cè)0.2 m以外的障礙物,即當(dāng)障礙物出現(xiàn)在相機坐標(biāo)系左右兩側(cè)0.5 m以外時認(rèn)為安全。在檢測過程中,從在圖像坐標(biāo)系的第1行開始進(jìn)行逐行掃描,當(dāng)點云數(shù)據(jù)的‖X‖≤0.5 m,且Y>0.05 m時障礙物檢測系統(tǒng)報警提醒,否則小車安全行駛。由于AGV小車行駛速度比較慢,所以為了減小計算量同時提高檢測的實時性,在檢測時設(shè)定每0.3 s檢測一次。
為驗證算法的準(zhǔn)確性和魯棒性,如圖19所示,以某公司的室內(nèi)AGV小車為實驗平臺進(jìn)行實驗。如圖20所示,分別對障礙物在小車檢測范圍內(nèi)前方,檢測范圍外前方,檢測范圍內(nèi)左側(cè)、右側(cè),檢測范圍外左側(cè)、右側(cè)這6種常見情況進(jìn)行障礙物檢測。得到檢測結(jié)果如圖21所示。
圖19 實驗平臺
圖20 障礙物檢測
圖21 障礙物檢測結(jié)果
由圖21可以發(fā)現(xiàn),當(dāng)障礙物出現(xiàn)在小車正前方1.5 m、行駛軌跡左右0.5 m處時,障礙物檢測系統(tǒng)發(fā)出警告;當(dāng)障礙物出現(xiàn)在小車正前方5 m、行駛軌跡左右0.9 m處時,障礙物檢測系統(tǒng)未發(fā)出警告。通過實驗驗證該方案能夠?qū)崿F(xiàn)室內(nèi)AGV障礙物檢測功能。
本文提出了一種利用Kinect相機獲得的深度信息進(jìn)行障礙物在線快速檢測方法,制定了障礙物檢測規(guī)則并通過實驗驗證了該檢測方法的準(zhǔn)確性,實現(xiàn)了障礙物高效、穩(wěn)定的實時檢測,為AGV小車的安全通行提供了保障。