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