孫欣欣,李珊紅
(合肥學(xué)院 人工智能與大數(shù)據(jù)學(xué)院,安徽 合肥 230601)
AGV(Automated Guided Vehicle,自動(dòng)導(dǎo)引車)是指安裝有電磁或光學(xué)等自動(dòng)導(dǎo)引裝置,能夠沿規(guī)定的導(dǎo)引路徑行駛,具有安全保護(hù)以及各種移載功能的運(yùn)輸車[1]。作為現(xiàn)代制造業(yè)柔性物流系統(tǒng)中的自動(dòng)化物料運(yùn)輸工具,AGV 是實(shí)現(xiàn)柔性化、自動(dòng)化、智能化生產(chǎn)車間和現(xiàn)代物流系統(tǒng)的物料運(yùn)輸關(guān)鍵設(shè)備,具有靈活性強(qiáng)、自動(dòng)化程度高和穩(wěn)定可靠等優(yōu)點(diǎn)。
當(dāng)前AGV已經(jīng)被廣泛應(yīng)用于自動(dòng)化生產(chǎn)、現(xiàn)代物流倉(cāng)儲(chǔ)運(yùn)輸?shù)雀鱾€(gè)行業(yè),其中大部分是室內(nèi)應(yīng)用場(chǎng)景,本文則針對(duì)高速公路應(yīng)急車道上自動(dòng)巡警AGV 的室外復(fù)雜應(yīng)用場(chǎng)景進(jìn)行研究,該AGV 的主要功能是白天在高速公路應(yīng)急車道上自動(dòng)巡邏,拍攝違章車輛信息。導(dǎo)航方式是自動(dòng)巡警AGV 技術(shù)研究的核心,目前常見(jiàn)的AGV導(dǎo)航方式包括電磁導(dǎo)航、磁帶導(dǎo)航、慣性導(dǎo)航和視覺(jué)導(dǎo)航等。本研究采用視覺(jué)導(dǎo)航方式實(shí)現(xiàn)AGV自動(dòng)導(dǎo)引,主要因?yàn)橐曈X(jué)導(dǎo)航方式與其他導(dǎo)航方式相比有以下優(yōu)勢(shì):1.不需要預(yù)先鋪設(shè)導(dǎo)引車運(yùn)行軌道,成本較低;2.對(duì)外界環(huán)境的適應(yīng)性更強(qiáng),可以應(yīng)用于更為復(fù)雜的室外環(huán)境。
路徑識(shí)別技術(shù)是AGV視覺(jué)導(dǎo)航的關(guān)鍵技術(shù),路徑識(shí)別的準(zhǔn)確度和實(shí)時(shí)性直接影響了AGV 自動(dòng)導(dǎo)引的控制精度。目前很多學(xué)者對(duì)路徑識(shí)別技術(shù)進(jìn)行了相關(guān)研究。喻俊等設(shè)計(jì)了一種基于曲率角估計(jì)的路徑模型分類算法,提高了對(duì)于復(fù)雜曲線路徑的測(cè)量精度[2];彭江濤等人設(shè)計(jì)實(shí)現(xiàn)了一種簡(jiǎn)易邊緣檢測(cè)算法,一定程度上提高了路徑識(shí)別的準(zhǔn)確度[3]。但以上研究都未考慮到室外復(fù)雜環(huán)境下路徑圖像的預(yù)處理效果以及車道線識(shí)別的精度。
本文針對(duì)高速公路上復(fù)雜室外環(huán)境,研究并實(shí)現(xiàn)了一套路徑識(shí)別算法,通過(guò)畸變校正、圖像灰度化、基于Sobel 算子邊緣檢測(cè)及顏色閾值化方法相結(jié)合的圖像分割算法完成室外路徑圖像預(yù)處理,然后利用透視變換和移動(dòng)窗口算法進(jìn)行車道線擬合,獲得前方路徑信息,為自動(dòng)巡警AGV的路徑跟蹤提供相關(guān)參數(shù)。該算法能夠滿足AGV 室外視覺(jué)導(dǎo)航的準(zhǔn)確度和實(shí)時(shí)性要求。
自動(dòng)巡警AGV 以ARM 處理器為硬件平臺(tái),運(yùn)行嵌入式Linux OS。整個(gè)系統(tǒng)在電源模塊的支持下工作,首先由單目攝像頭采集高速公路路徑圖像,送到ARM 處理器進(jìn)行處理。圖像經(jīng)過(guò)路徑識(shí)別程序的一系列處理之后,得到包括路徑距離偏移量和角度偏移量的路徑參數(shù)。接下來(lái),將路徑參數(shù)傳入AGV的控制模塊,控制模塊基于傳入?yún)?shù)進(jìn)行計(jì)算,輸出控制指令,驅(qū)動(dòng)AGV 小車完成路徑跟蹤任務(wù)。系統(tǒng)總體設(shè)計(jì)框架如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)中,單目攝像頭安裝在AGV的上方中心靠前位置,視野朝向正前方。攝像頭的成像過(guò)程需要經(jīng)過(guò)若干個(gè)坐標(biāo)系的轉(zhuǎn)換,空間中的某一點(diǎn)由世界坐標(biāo)系經(jīng)過(guò)一系列轉(zhuǎn)換落到圖像平面的圖像像素坐標(biāo)系,該轉(zhuǎn)換過(guò)程由于攝像頭本身的誤差會(huì)導(dǎo)致圖像發(fā)生畸變。因此,為提高攝像頭工作的準(zhǔn)確性,降低路徑測(cè)量的系統(tǒng)誤差,需要首先對(duì)單目攝像頭進(jìn)行標(biāo)定,得到該攝像頭的內(nèi)參數(shù)矩陣、外參數(shù)矩陣和畸變系數(shù)。每一幀拍攝的路徑圖像都需要基于標(biāo)定得到的參數(shù)進(jìn)行畸變校正,以獲得該圖像所有像素點(diǎn)在真實(shí)世界中的空間坐標(biāo)信息,提高圖像處理的準(zhǔn)確度。高速公路上道路原始圖像和畸變校正之后的圖像如圖2所示。
圖2 畸變校正前和畸變校正后的圖像
圖像灰度化是指將攝像頭拍到的彩色RGB 圖像轉(zhuǎn)化為灰度圖像[4]。單目攝像頭拍攝到的是24位RGB 彩色圖像,如果直接基于該彩色圖像進(jìn)行圖像處理,會(huì)占用大量的存儲(chǔ)空間和計(jì)算資源,無(wú)法達(dá)到AGV對(duì)于實(shí)時(shí)性的要求。因此,在不丟失圖像處理所需特征的基礎(chǔ)上,可以通過(guò)圖像灰度化將圖像信息進(jìn)行降維操作,以提高系統(tǒng)的運(yùn)算速度。本文采用加權(quán)平均法對(duì)圖像進(jìn)行灰度化處理,計(jì)算公式為:
經(jīng)過(guò)圖像灰度化之后,后續(xù)進(jìn)行圖像處理的特征并未丟失,在滿足需求的基礎(chǔ)上大大提高了系統(tǒng)的運(yùn)算速度。
圖像分割的目的,是把圖像分割成目標(biāo)區(qū)域和背景區(qū)域。在路徑識(shí)別中,需要識(shí)別的目標(biāo)區(qū)域是道路上的車道線,而車道線區(qū)域通常與周圍道路背景區(qū)域有較明顯的邊界,在邊界周圍,圖像的灰度值變化非常明顯,因此,首先可以基于圖像灰度梯度進(jìn)行邊緣檢測(cè),找到車道線邊界[5]。本文采用So‐bel 算子完成車道線邊緣檢測(cè),該算子在3*3 鄰域上計(jì)算水平梯度和垂直梯度,公式為:
在圖像上每一點(diǎn),結(jié)合水平梯度和垂直梯度,求出其近似梯度公式為:
在高速路上,車道線有白色和黃色兩種顏色,在將車道線邊界檢測(cè)到之后,可以結(jié)合顏色特征進(jìn)行識(shí)別,將車道線區(qū)域標(biāo)記出來(lái)。通過(guò)攝像頭獲取的圖像是RGB 彩色圖像,而在圖像處理中,RGB 顏色空間并不能很好地反映物體的顏色信息,因此需要將圖像從RGB空間轉(zhuǎn)換為HLS空間,再進(jìn)行顏色閾值化處理,將白色和黃色區(qū)域標(biāo)記出來(lái)[6]。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,HLS 圖像的S分量在[230,255]之間時(shí),車道線的白色和黃色區(qū)域的識(shí)別效果較好。
將邊緣檢測(cè)結(jié)果與顏色閾值化結(jié)果進(jìn)行組合,對(duì)圖像進(jìn)行二值化處理,將目標(biāo)區(qū)域設(shè)置為白色(灰度值為255),背景區(qū)域標(biāo)記為黑色(灰度值為0)。經(jīng)過(guò)邊緣檢測(cè)、基于HLS 空間的顏色閾值化、圖像二值化處理之后,得到圖像分割結(jié)果如圖3所示。
圖3 圖像分割結(jié)果
經(jīng)過(guò)圖像預(yù)處理,可以在圖像上將車道線區(qū)域標(biāo)記出來(lái),人眼可以基于該圖片觀察并判斷車道線位置,但是計(jì)算機(jī)并不清楚哪些像素是車道線,哪些像素不是,所以需要進(jìn)一步通過(guò)透視變換和移動(dòng)窗口算法識(shí)別車道線,并計(jì)算前方路徑相關(guān)參數(shù)。
透視變換可以更直觀地被叫做“空間變換”。通過(guò)攝像頭拍攝到的圖像,兩條車道線會(huì)在遠(yuǎn)方交匯,而在實(shí)際三維空間中,兩條車道線是平行的,因此在做車道線擬合之前,需要先通過(guò)透視變換將攝像頭拍到的圖像轉(zhuǎn)換為垂直于道路平面的鳥(niǎo)瞰圖。透視變換是基于4 個(gè)固定頂點(diǎn)的變換,即確定4 個(gè)頂點(diǎn)在變換前后的坐標(biāo)值,就可以求出變換矩陣的所有參數(shù),進(jìn)而完成圖像上所有像素點(diǎn)的空間變換[7]。在本研究中,攝像頭視野朝向正前方,拍攝圖像的下半部分是包含了車道線信息的,因此只選取圖像下半部分進(jìn)行透視變換,將圖像上無(wú)用信息直接過(guò)濾掉。4 個(gè)固定點(diǎn)的選擇如圖3 中圓點(diǎn)標(biāo)記位置所示,這4 個(gè)固定點(diǎn)分別對(duì)應(yīng)透視變換之后圖像矩形的4 個(gè)頂點(diǎn)位置。透視變換之后的圖像如圖4所示。
圖4 透視變換之后的圖像
本文采用移動(dòng)窗口算法識(shí)別圖像中屬于車道線的像素點(diǎn),之后將這些像素點(diǎn)進(jìn)行多項(xiàng)式擬合,得到車道線曲線的表達(dá)式,最終計(jì)算得到車道線與AGV的偏移距離和偏移角度。
移動(dòng)窗口算法的原理如下:
(1)設(shè)置一個(gè)移動(dòng)窗口
該窗口的寬度要比車道線寬度值大,具體取值可以根據(jù)攝像頭安裝高度進(jìn)行調(diào)整,一般設(shè)置為車道線寬度值的4 倍到6 倍,高度設(shè)置為整張圖片像素高度的1/10。
(2)確定左右兩條車道線的大致位置
將圖片中所有像素值沿縱軸累加,找到兩個(gè)峰值區(qū)域,即為兩條車道線在橫軸上的大致位置。
(3)從圖片底部開(kāi)始確定兩條車道線準(zhǔn)確的起始位置
取圖片底部1/10 高度的區(qū)域和在上一步確定的兩個(gè)峰值區(qū)域的交匯區(qū)域,再次累加縱軸的像素值,找到峰值所在位置,確定車道線在底部準(zhǔn)確的起始位置,如果在某個(gè)峰值區(qū)域沒(méi)有找到車道線像素,則將上一步該峰值區(qū)域的橫軸中心點(diǎn)作為該車道線的起始位置。
(4)自底向上滑動(dòng)移動(dòng)窗口找到所有車道線像素點(diǎn)
將上一步找到的圖片底部車道線起始位置作為移動(dòng)窗口的中心點(diǎn),自底向上滑動(dòng)該窗口,將窗口內(nèi)所有像素值不為0 的點(diǎn)記錄為車道線像素點(diǎn),并計(jì)算窗口內(nèi)不為0 的像素點(diǎn)數(shù)量,如果超過(guò)了一定閾值,就將這些點(diǎn)的中心位置作為下一個(gè)移動(dòng)窗口的中心點(diǎn),依此類推,找到車道線的所有像素點(diǎn)。
圖5為經(jīng)過(guò)移動(dòng)窗口算法處理后得到的車道線所有像素點(diǎn)識(shí)別結(jié)果,其中白色區(qū)域?yàn)橐苿?dòng)窗口的滑行軌跡,白色區(qū)域中間的黑色線條部分為識(shí)別到的車道線。
圖5 車道線像素點(diǎn)識(shí)別結(jié)果
接下來(lái)利用openCV的多項(xiàng)式擬合方法得到兩條車道線的曲線表達(dá)式,根據(jù)圖片中心點(diǎn)到左右兩側(cè)車道線的距離確定AGV的偏移距離,根據(jù)左側(cè)車道線曲線的切線斜率計(jì)算AGV的偏移角度。實(shí)驗(yàn)中計(jì)算得到的車道線偏移前方車道中心的距離是-0.2537m(偏左行駛),前方車道線傾斜角度是87.03°。
本文針對(duì)高速公路上的復(fù)雜室外環(huán)境,研究并實(shí)現(xiàn)了一套路徑識(shí)別算法,通過(guò)畸變校正、圖像灰度化、基于Sobel 算子邊緣檢測(cè)及顏色閾值化方法相結(jié)合的圖像分割算法,完成室外路徑圖像預(yù)處理,然后利用透視變換和移動(dòng)窗口算法進(jìn)行車道線像素點(diǎn)識(shí)別,通過(guò)車道線擬合計(jì)算得到AGV偏移距離和偏移角度,為自動(dòng)巡警AGV的路徑跟蹤提供相關(guān)參數(shù)。實(shí)驗(yàn)結(jié)果表明該算法能夠滿足AGV 室外視覺(jué)導(dǎo)航的準(zhǔn)確度和實(shí)時(shí)性要求。