鄭少華,李偉光,劉維民,黃愛華(華南理工大學(xué) 機(jī)械與汽車工程學(xué)院,廣東 廣州 510640)
視覺導(dǎo)航AGV多路徑快速檢測算法研究
鄭少華,李偉光,劉維民,黃愛華
(華南理工大學(xué) 機(jī)械與汽車工程學(xué)院,廣東 廣州510640)
為了實(shí)現(xiàn)視覺導(dǎo)航AGV在分叉路下的自動(dòng)導(dǎo)引,提出了一種多路徑快速檢測算法。首先對(duì)圖像進(jìn)行灰度化、平滑、邊緣檢測等操作得到梯度圖像,然后結(jié)合多路徑圖像特征,利用行掃描方式提取各路徑邊緣坐標(biāo),最后利用改進(jìn)的增量式最小二乘法擬合路徑中心線。實(shí)驗(yàn)表明,該算法運(yùn)算簡單、實(shí)時(shí)性強(qiáng),適用于基于嵌入式系統(tǒng)開發(fā)的視覺導(dǎo)航AGV。
視覺導(dǎo)航AGV;多路徑;最小二乘法;實(shí)時(shí)性
自動(dòng)導(dǎo)引小車(Antomated Guided Vehicle,AGV)是指裝備有電磁或光學(xué)等自動(dòng)導(dǎo)引裝置,可以在規(guī)定的導(dǎo)航路徑上行駛,是具有安全保護(hù)以及各種移載功能的運(yùn)輸小車[1]。AGV的導(dǎo)引方式有電磁導(dǎo)引、磁帶導(dǎo)引、激光導(dǎo)引、視覺導(dǎo)引等,其中視覺導(dǎo)引相比其他導(dǎo)引方式,具有成本低、柔性好、安裝維護(hù)方便等優(yōu)點(diǎn),是當(dāng)今AGV導(dǎo)引技術(shù)的研究熱點(diǎn)。目前的視覺導(dǎo)引技術(shù)研究主要針對(duì)單一路線下的路徑檢測,無法實(shí)現(xiàn)分叉路下多路徑的檢測與跟蹤。文中對(duì)多路徑圖像識(shí)別算法進(jìn)行研究,提出了一種多路徑快速檢測方法。
本文采用的視覺導(dǎo)航AGV模型如圖1所示,AGV為四輪結(jié)構(gòu),其中后兩輪為獨(dú)立驅(qū)動(dòng)的驅(qū)動(dòng)輪,前兩輪為萬向輪。CCD攝像機(jī)放置于AGV縱軸線的前段,并與地面垂直。攝像機(jī)兩邊設(shè)有LED燈帶作為光源。
AGV通過CCD攝像機(jī)采集到的圖像數(shù)據(jù)識(shí)別導(dǎo)航路徑。簡單的視覺導(dǎo)航模型[2]如圖2所示。模型將導(dǎo)航路徑簡化為一條直線,通過圖像識(shí)別算法識(shí)別該路徑并得到其中心線的直線方程y=ax+b。根據(jù)直線方程計(jì)算車體縱軸線與中心線的側(cè)向偏差d及方向偏差θ。所得偏差數(shù)據(jù)作為導(dǎo)航參數(shù)傳入運(yùn)動(dòng)控制模塊從而實(shí)現(xiàn)AGV的視覺導(dǎo)航。
圖1 AGV結(jié)構(gòu)模型
圖2 視覺導(dǎo)航模型
在實(shí)際應(yīng)用場合存在T字路口和十字路口,相應(yīng)的AGV行駛路徑除了單路徑外還存在二叉路和三叉路,如圖3(a)和3(b)所示。當(dāng)攝像頭位于分叉點(diǎn)時(shí),采集圖像中會(huì)出現(xiàn)多條路徑。本文通過圖像處理算法識(shí)別多條路徑并從上位機(jī)獲取路徑選擇信息從而實(shí)現(xiàn)AGV在不同路況下的正常行駛。
圖3 分叉路類型
實(shí)時(shí)準(zhǔn)確獲取AGV與預(yù)設(shè)導(dǎo)航路徑的相對(duì)位置是保證AGV安全運(yùn)行的重要前提。由于AGV的使用場合大多為工廠車間,所采集的圖像除了包括路徑和站點(diǎn)信息外,還有可能存在因底面反光或路徑標(biāo)線污染造成的干擾信息[3]。為實(shí)現(xiàn)路徑識(shí)別和偏差提取的速度及精度,本文對(duì)采集的圖像進(jìn)行預(yù)處理、邊緣檢測后,結(jié)合上位機(jī)路徑選擇信息對(duì)路徑進(jìn)行識(shí)別和提取,從而獲取偏差信息。
2.1圖像預(yù)處理
圖像預(yù)處理主要是在像素級(jí)上進(jìn)行處理,主要包括圖像的幾何校正、圖像的灰度變換處理、圖像噪聲濾除的平滑處理等[4]。由于攝像機(jī)垂直于地面安裝,其拍攝圖像變形較小,不需對(duì)圖像進(jìn)行幾何校正。因此主要的圖像預(yù)處理內(nèi)容為灰度變換和平滑處理。
由攝像頭采集到的圖像是24位的RGB真彩色圖像。該格式的圖像每一個(gè)像素的顏色值由R、G、B分量表示,每一個(gè)分量都分配一個(gè)0~255的強(qiáng)度值。由于這種格式圖像占用大量內(nèi)存,且會(huì)降低系統(tǒng)的處理速度,因此需要將其轉(zhuǎn)換為灰色圖像以節(jié)約內(nèi)存空間及提高處理速度。灰度化處理的方法主要有3種[5]:最大值法,即取R、G、B中的最大值為該點(diǎn)像素的顏色值;平均值法,即取R、G、B的平均值為該點(diǎn)像素的顏色值;加權(quán)平均值法,即取R、G、B的加權(quán)平均值為該點(diǎn)像素的顏色值,每個(gè)分量的權(quán)值由其重要程度或其他指標(biāo)給定。根據(jù)理論推導(dǎo)和實(shí)驗(yàn)證明,當(dāng)該點(diǎn)像素值取為0.299R+ 0.587G+0.114B[6]時(shí),能夠得到最理想的灰度圖像。
圖像形成、傳輸過程中會(huì)產(chǎn)生各種內(nèi)部干擾和外部干擾。由這些干擾造成的噪聲會(huì)惡化圖像質(zhì)量,影響分析效率,因此去除噪聲是圖像處理的關(guān)鍵步驟。由于典型的噪聲由灰度級(jí)的急劇變化組成,而平滑處理使用模板確定的鄰域內(nèi)像素的平均灰度值代替圖像中每個(gè)像素的值,這種處理的結(jié)構(gòu)降低了圖像灰度的“尖銳”變化,因此平滑處理可以很好地降低噪聲。本文通過調(diào)整攝像機(jī)的焦距使成像輕微模糊,通過硬件模擬平滑處理從而提高了圖像預(yù)處理的速度。
2.2邊緣檢測
本文采用布置在淺色地面背景上的黑色條帶作為預(yù)設(shè)路徑標(biāo)記。路徑邊緣與地面背景間存在灰度的突然變化,因此可通過計(jì)算圖像灰度變化的一階導(dǎo)數(shù)檢測路徑邊緣。本文采用sobel梯度算子對(duì)圖像進(jìn)行邊緣檢測操作。sobel算子的模板[7]如圖4所示。
圖4 一副圖像的3x3區(qū)域(z項(xiàng)是灰度值)和計(jì)算z5處梯度的sobel模板
利用sobel算子的兩個(gè)模板對(duì)整個(gè)圖像進(jìn)行濾波,可得到圖像每個(gè)像素位置的水平梯度gx和垂直梯度gy:
利用所得梯度分量計(jì)算梯度向量的幅值M(x,y)和角度α(x,y):
如果梯度M(x,y)大于某一閾值,則認(rèn)為該點(diǎn)(x,y)為邊緣點(diǎn)。
sobel算子根據(jù)像素點(diǎn)上下、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測邊緣。算法計(jì)算簡單,對(duì)噪聲具有平滑作用,提供較為精確的邊緣方向信息
2.3路徑提取
路徑提取的主要思想是對(duì)邊緣化后圖像進(jìn)行行掃描,從行掃描線中得到路徑的左邊緣及右邊緣位置,通過將左右邊緣位置求平均得到導(dǎo)航路徑中心線在該行圖像的位置。
圖5為行掃描線的示意圖。圖像經(jīng)過sobel邊緣處理后,具有明顯邊緣的區(qū)域具有較大的灰度值,而勻色區(qū)域具有較小的灰度值。可經(jīng)過閾值將各像素點(diǎn)分為對(duì)象點(diǎn)(灰度值為255)和背景點(diǎn)(灰度值為0)。在本實(shí)驗(yàn)場景中,噪聲主要表現(xiàn)為隨機(jī)分布的高灰度值獨(dú)立點(diǎn)。而路徑邊緣表現(xiàn)為連續(xù)R個(gè)(可根據(jù)實(shí)驗(yàn)測得)高灰度值點(diǎn),因此可通過判斷連續(xù)R個(gè)像素點(diǎn)的灰度值的和是否大于閾值T來確定路徑邊緣位置。
圖5 行掃描線示意圖
路徑提取需考慮以下幾個(gè)情況:
1)為避免多次選取到同一路徑邊緣上的點(diǎn),當(dāng)選取到某一路徑邊緣點(diǎn)時(shí),下一掃描點(diǎn)位置為該邊緣點(diǎn)位置加LineW/ 2(導(dǎo)航路徑寬度)。即邊緣點(diǎn)位置為i時(shí),則下一掃描點(diǎn)位置為i+LineW/2。
2)考慮到AGV運(yùn)行的車間中存在T字路口和十字路口,因此視場中可能出現(xiàn)2條或3條路徑,相應(yīng)的有4條或者6條路徑邊緣。當(dāng)視場中出現(xiàn)面積較大的干擾物時(shí),邊緣化后會(huì)出現(xiàn)和路徑邊緣相似的特征。為避免干擾物對(duì)檢測路徑邊緣的影響,當(dāng)從行掃描線中得到非2條、4條或者6條路徑邊緣時(shí),則認(rèn)為該行路徑邊緣提取錯(cuò)誤。
本算法如下:
Step1:對(duì)某行掃描線進(jìn)行逐點(diǎn)掃描,計(jì)算以當(dāng)前掃描點(diǎn)i為首連續(xù)R個(gè)像素點(diǎn)的灰度值f的和Si。
Step2:將Si與閾值T進(jìn)行比較。若Si≤T,認(rèn)為未檢測到邊緣,i加1。若Si>T,認(rèn)為檢測到一個(gè)邊緣,記錄當(dāng)前i值,已檢測邊緣數(shù)n加1,同時(shí)i+LineW/2
Step3:將i+R與ImageW(圖像寬度)進(jìn)行比較。若i+R≤ImageW,返回步驟Step1;若i+R>ImageW,認(rèn)為本行掃描完畢,進(jìn)入步驟Step4。
Step4:判斷n的值。若n分別為2、4、6,則分別檢測到2條、4條、6條邊緣,對(duì)應(yīng)為1條、2條、3條路徑,根據(jù)n的值將記錄的i值分別存入各路徑邊緣坐標(biāo)數(shù)組中,同時(shí)相應(yīng)計(jì)數(shù)器加1(單路徑OneLineN,雙路徑TwoLineN,三路徑ThreeLineN)。若n不為2、4或6,則認(rèn)為該行檢測錯(cuò)誤,不記錄坐標(biāo)值。
Step5:結(jié)束本行掃描,讀入下行4數(shù)據(jù),重新進(jìn)行行掃描。
路徑提取算法流程圖如圖6所示。
圖6 路徑提取算法流程圖
經(jīng)過試驗(yàn)發(fā)現(xiàn),一幀圖像中等間距掃描30行即可達(dá)到很好的檢測效果,不需要進(jìn)行逐行掃描,提高了程序運(yùn)行速度。2.4直線擬合
首先根據(jù) OneLineN、TwoLineN、ThreeLineN的值判斷當(dāng)前的路徑類型,讀取相應(yīng)路徑數(shù)組中的左右邊緣坐標(biāo),并取其平均值作為路徑的中心點(diǎn)進(jìn)行直線擬合。
由于曲線路徑可近似為直線處理,因此路徑擬合問題可看作線性回歸問題。線性方程為y=ax+b,根據(jù)最小二乘法,誤差函數(shù)為
各偏導(dǎo)為:
于是得到關(guān)于a,b的線性方程組:
其中n為參與最小二乘法的點(diǎn)數(shù)。
設(shè)A=Σx2i,B=Σxi,C=Σyixi,D=Σyi則方程化為:
解出a,b得:
最小二乘法計(jì)算簡單快速,但錯(cuò)誤點(diǎn)對(duì)直線擬合效果有很大影響,因此需對(duì)其進(jìn)行改進(jìn)。改進(jìn)的關(guān)鍵是對(duì)錯(cuò)誤點(diǎn)的判別及剔除,考慮到A、B、C、D均為變量的和,因此可以利用增量式的最小二乘法進(jìn)行直線擬合。通過前n個(gè)點(diǎn)計(jì)算A、B、C、D進(jìn)而得到a、b,然后計(jì)算第n個(gè)點(diǎn)和第n+1個(gè)點(diǎn)所在直線與坐標(biāo)軸的角度并與之前n個(gè)點(diǎn)擬合所得直線的角度進(jìn)行比較,若兩者差值大于閾值則認(rèn)為第n+1個(gè)點(diǎn)為錯(cuò)誤點(diǎn),剔除之。若兩者差值小于閾值則利用第n+1點(diǎn)坐標(biāo)更新A、B、C、D得到新的擬合直線方程。該算法如下:
Step1:利用前兩個(gè)點(diǎn)擬合直線:
計(jì)算直線斜率lsp、直線角度ldeg、直線截距l(xiāng)int:
初始化已參與直線擬合點(diǎn)數(shù)i=2。
Step2:計(jì)算第i個(gè)點(diǎn)和第i+1個(gè)點(diǎn)所在直線的斜率tsp及角度tdeg:
Step3:比較ldeg和tdeg。若兩者差值大于閾值T1則認(rèn)為第i+1個(gè)點(diǎn)為錯(cuò)誤點(diǎn),錯(cuò)誤點(diǎn)計(jì)數(shù)器FPoint+1;若兩者差值小于閾值則為正確點(diǎn),更新A、B、C、D:
更新直線方程:
Step4:i+1,比較i和n(參與直線擬合的點(diǎn)數(shù))。若i≤n,則返回Step2;若i>n,進(jìn)入Step5。
Step5:若錯(cuò)誤點(diǎn)計(jì)數(shù)器FPoint小于閾值T2,輸出當(dāng)前l(fā)deg和lint;若FPoint大于等于閾值T2,則當(dāng)前幀直線角度及截距l(xiāng)deg、lint為上一幀直線角度及截距preldeg、prelint。當(dāng)前幀直線擬合結(jié)束。
直線擬合算法流程圖如圖7所示。
圖7 直線擬合算法流程圖
當(dāng)初始化的兩點(diǎn)存在錯(cuò)誤點(diǎn)時(shí),利用這兩點(diǎn)擬合的直線為錯(cuò)誤直線,這會(huì)直接導(dǎo)致后面的錯(cuò)誤點(diǎn)判斷失敗。針對(duì)這種情況,進(jìn)行如下處理:記錄本算法對(duì)前5個(gè)點(diǎn)的處理結(jié)果,若FPoint>2,則認(rèn)為初始點(diǎn)存在錯(cuò)誤點(diǎn)。刪去首個(gè)點(diǎn)后重新執(zhí)行直線擬合算法。
為了驗(yàn)證所提多路徑快速檢測算法的有效性,本文在四輪視覺導(dǎo)航AGV上進(jìn)行實(shí)機(jī)測試。安裝在AGV底部的USB攝像機(jī)采集圖像數(shù)據(jù)發(fā)送至PC,PC上的上位機(jī)軟件采用所提算法對(duì)圖像數(shù)據(jù)進(jìn)行處理后將所得偏差數(shù)據(jù)發(fā)送至AGV上的運(yùn)動(dòng)控制卡TMS320F28335,由控制卡對(duì)AGV驅(qū)動(dòng)輪進(jìn)行控制。其中USB攝像機(jī)采集圖像分辨率為640480,上位機(jī)PC參數(shù)為Intel奔騰雙核T4300、2G內(nèi)存,上位機(jī)軟件采用C語言在Visual Studio2010上編寫。
圖8顯示了本算法對(duì)單路徑、雙路徑及三路徑的處理效果。其中每個(gè)小圖左側(cè)為原始圖像。原始圖像上部分黑色部分是AGV車體,在圖像處理中不會(huì)對(duì)該部分進(jìn)行處理。由于采用LED燈帶作為光源,路徑上部分亮度較大,且路徑下部分存在反光現(xiàn)象,另外路面存在大量污漬,因此原始圖像干擾信息較多。小圖右側(cè)為經(jīng)過本文算法處理后的包含路徑中心線的最終圖像??梢钥吹郊词乖诖嬖诜垂饧拔蹪n等干擾信息的情況下仍能準(zhǔn)確地尋找到路徑中心位置。這是由于本算法對(duì)每行檢測到的邊緣點(diǎn)進(jìn)行篩選,只有滿足要求的點(diǎn)才認(rèn)為是路徑邊緣點(diǎn),因此極大地提高了本算法的魯棒性。
由于本算法避免復(fù)雜的圖像預(yù)處理和特征提取算法,采用攝像機(jī)調(diào)焦代替平滑處理,采用均勻掃描30行代替全局掃描,采用最小二乘法代替hough變換,極大地提高了本算法的運(yùn)行效率。在上述硬件測試平臺(tái)下,平均每幀圖像的處理時(shí)間僅為16 ms,完全滿足AGV對(duì)于實(shí)時(shí)性的要求,有利于本算法在基于嵌入式系統(tǒng)開發(fā)的視覺導(dǎo)航AGV上的應(yīng)用。
圖8 實(shí)驗(yàn)結(jié)果
文中針對(duì)視覺導(dǎo)航AGV在分叉路上的路況特征,提出了一種有效的AGV多路徑快速檢測算法。該算法對(duì)于反光、路面污漬、亮斑等具有良好的魯棒性,同時(shí)通過簡化預(yù)處理步驟、采用行掃描路徑提取方法、優(yōu)化最小二乘法等方式極大提高了運(yùn)行效率。AGV實(shí)機(jī)測試表明該算法結(jié)合上位機(jī)的路徑選擇信息,可以實(shí)現(xiàn)多路徑下對(duì)特定路徑的提取和跟蹤。本文提出的算法具有高實(shí)時(shí)性、魯棒性的特點(diǎn),有利于在嵌入式視覺導(dǎo)航AGV上的應(yīng)用。
[1]李西鋒,魏生民,閆小超.視覺引導(dǎo)AGV的數(shù)字圖像處理方法研究[J].科學(xué)技術(shù)與工程,2010,10(10):2515-2519.
[2]李進(jìn).視覺導(dǎo)航智能車輛的路徑識(shí)別和跟蹤控制[D].合肥:合肥工業(yè)大學(xué),2008.
[3]蔡國斌,烏建中.數(shù)字圖像處理技術(shù)在AGV上的應(yīng)用[J].電力機(jī)車與城軌車輛,2005,28(4):51-53.
[4]黃霞.嵌入式自動(dòng)導(dǎo)引小車(AGV)系統(tǒng)研究與設(shè)計(jì)[D].南京:南京理工大學(xué),2009.
[5]班躍海.基于光流法的機(jī)器人視覺導(dǎo)航[D].南京:南京理工大學(xué),2012.
[6]劉全丹.基于機(jī)器視覺導(dǎo)引的AGV系統(tǒng)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[7](美)Rafael C.Gonzalez,Richard E.Woods著.數(shù)字圖像處理[M].3版.阮秋琦,等,譯.北京:電子工業(yè)出版社,2011.
The research of fast multi-path detection algorithm for visual AGV
ZHENG Shao-hua,LI Wei-guang,LIU Wei-ming,HUANG Ai-hua
(School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510640,China)
In order to achieve the automated guide for visual AGV under thefork,a fast multi-path detection algorithm is designed in this paper.First the gradient imageisgained by processes of graying,smoothing,and edge detection.Thenwith multi-path image features,path's edge is extracted by line scanning.Finally the center line of path is fitted by improved incremental least square method.The experiment demonstrates that the algorithm with simple operation and hard real-time is suitable for visual AGV based on embedded system.
visual navigation AGV;multi-path;least square method;real-time
TN911.73
A
1674-6236(2016)11-0177-04
2015-06-17稿件編號(hào):201506183
廣東省數(shù)控一代機(jī)械產(chǎn)品創(chuàng)新應(yīng)用示范工程專項(xiàng)資金項(xiàng)目(2013B011301026);省部產(chǎn)學(xué)研結(jié)合項(xiàng)目(2012B091100311)
鄭少華(1990—),男,廣東韶關(guān)人,碩士研究生。研究方向:數(shù)字圖像處理、模式識(shí)別。