許耀華,王文宇,宋文鳳
(長安大學汽車學院,陜西 西安 710021)
無人駕駛技術[1]。已經成為汽車行業(yè)的熱門話題,為了促進該技術的進步,“全國大學生智能汽車競賽”邀請大學生們以模型車為平臺,制作一輛能在特定賽道上自主尋跡的智能車[3]來參賽。早些年,大家用飛思卡爾公司的 16位芯片XS128[4]作為智能車的控制芯片,但由于處理速度不夠,嚴重影響智能車的行駛速度,現(xiàn)在都普遍使用 32位處理芯片了。除了使用攝像頭[5]作為主傳感器以外,還可以使用電感來檢測鋪設在車道上的通電導線[6],或者使用光電傳感器等作為感知外界環(huán)境的傳感器,但攝像頭傳感器有明顯的優(yōu)勢,它采集到的信息量更大,有利于后期分析,同時其前瞻最遠,能達到1m以上,這為智能車高速行駛提供了保障。
微控制器就是智能車的“大腦”,它必須要有足夠的硬件資源和強大的計算能力。MK60DN512ZVLQ10芯片是飛思卡爾公司推出的一款基于ARM Cortex-M4內核的32位微控制器,其有144個引腳,采用LQFP封裝,且有豐富的可與外部設備相連的接口,在我們的智能車上用到的主要模塊有:DMA(Direct Memory Access)模塊,用來接收攝像頭的信號數(shù)據(jù);PWM(Pulse Width Modulation)模塊,用來輸出信號控制舵機轉向以及電機驅動;PIT(Periodic Interrupt Timer)模塊,用于設定時間以觸發(fā)中斷程序;UART(Universal Asynchronous Receiver and Transmitter)模塊,用來實現(xiàn)微處理器和上位機的數(shù)據(jù)通訊,方便調試程序。
攝像頭就好比智能車的“眼睛”,它為微控制器提供當前的道路信息,可將采集到的圖像信息實時的傳給微控制器進行處理。OV7620是CMOS數(shù)字攝像頭,供電電壓低,只需要 5V,且功耗較低。OV7620的引腳主要有場中斷信號VSYNC引腳:用來判斷是否一幅圖像已經開始;行中斷信號HREF引腳:用來判斷是否是一行圖像的開始;數(shù)據(jù)輸出口Y0-Y7引腳:用來輸出攝像頭的圖像像素數(shù)據(jù);PLCK像素同步信號引腳:一個周期表示一個點的像素值傳到Y0-Y7引腳;電源5V引腳和接地GND引腳為攝像頭供電。
圖1 OV7620與K60的接口電路圖
OV7620與K60的引腳連接如圖1所示,行場及像素中斷信號分別于 K60的外部中斷觸發(fā)引腳 PTB3、PTA5和PTE5,數(shù)據(jù)輸出口 Y0-Y7引腳接到 K60的普通 IO口PTD0-PTD7。
為了減少外界環(huán)境的影響以及提高智能車的識別效率,我們采用藍底白道黑邊的道路供智能車行駛。如圖2所示。
圖2 智能車行駛的道路
攝像頭采集的圖像信息是用二維陣列表示的,其中二維陣列的每個元素表示圖像的一個像素點的灰度值。對于OV7620攝像頭,我們可以根據(jù)場中斷信號 VSYN、行中斷信號HREF、像素中斷信號PCLK的波形來采集圖像信息。用示波器查看以上三個中斷信號的波形,可以看到它們的時序關系如圖3所示。
可以測得以上三個信號的周期分別是 16.48ms、63.58us(只有高電平表示像素點的灰度值輸出,大約占時47.4us)、73ns。因為1s/16.48ms =60.6,16.48ms/63.58us=259,47.4us/73ns=649,所以 OV7620攝像頭的分辨率可以達到標稱的640*240,同時其幀率為60幀/s。
圖3 OV7620中斷信號時序關系圖
針對智能車的圖像采集來說,60幀/s的幀率是足夠的,但640*240的分辨率包含的數(shù)據(jù)太多,會增加微處理器的計算量,在保證圖像清晰度的前提下,我們使用320*200的分辨率就夠了。對于行數(shù),我們采用隔行采集的方法,可以在原有的640行里只將320行的數(shù)據(jù)存到微處理器;對于列數(shù),我們根據(jù)像素中斷信號PCLK,將每行的前20個和后20個數(shù)據(jù)都舍棄,只存儲中間的200個數(shù)據(jù)即可。這樣就可以采集到合適大小的道路灰度圖像,如下圖4所示:
圖4 道路灰度圖像
路徑識別就是根據(jù)攝像頭傳回來的圖像信號,分析道路信息,進而計算出智能車的行駛軌跡。
常用的邊緣檢測算法主要有直接邊緣檢測算法和跟蹤邊緣檢測法。
白色車道的像素值明顯要大于藍底黑邊的像素值,所以可以根據(jù)實際環(huán)境設置一個合適的閾值,將原圖像二值化成只有車道是白色,而其他背景全為黑的圖片,如圖6所示?;诙祷蟮膱D像,采用逐點比較的方法,從最下面一行最左端的第一個數(shù)據(jù)點開始依次向右進行作差。如果第i個數(shù)據(jù)點與第i+1個數(shù)據(jù)點的差值等于255(黑白像素的差值),則把第i點的位置標記為a,如果差值為0,則繼續(xù)向右進行。找出a的位置后繼續(xù)向右做差比較,如果a+j個數(shù)據(jù)點與a+j-1數(shù)據(jù)點的差值等于-255,則把第a+j點的位置標記為b,如果差值為 0,則繼續(xù)向右進行。那么左邊界黑線的位置可以認為就是a,右邊界黑線的位置可以認為就是b,則車道的中心坐標為(a+b)/2。直接邊緣檢測算法的缺點是要對每行的每個像素點都進行計算,這對于K60微控制器來說負荷比較大,占用過多的系統(tǒng)資源,不利于系統(tǒng)性能的發(fā)揮。算法示意圖如圖5所示。
圖5 直接邊緣檢測法示意圖
此算法由直接邊緣檢測算法簡化而來。以左邊緣為例,如果已經找到某行的左邊緣,由于相鄰兩行的兩側邊緣點都比較接近,那么在尋找下一行的左邊緣時,就在上一行左邊緣的附近進行尋找。跟蹤邊緣檢測算法大大簡化了直接邊緣檢測算法,不需要對每個像素點進行比較運算,算法簡單實際,不需要對整幅圖像進行處理,占用系統(tǒng)資源較少,有利于智能車性能的發(fā)揮。
但是以上兩種方法都需要對整幅圖像進行檢測,本文采用了一種比以上兩種方法更簡法的算法。根據(jù)算法檢索點在圖像中的位置將其稱為“十字邊緣檢測法”,如圖6所示。
圖6 十字邊緣檢測法
“十字邊緣檢測法”的算法步驟為:
(1)從圖像第0行的中心點依次向第1行,第2行…直到最后一行的中點進行檢索,找到第一個黑點A,記A點所在的行為第a行;
(2)從a-n行(n由調試實驗確定)的中心點向左檢索,找到第一個黑點B,認為B點是左邊緣的位置;
(3)從a-n行的中心向右檢索,找到第一個黑點C,認為C點是右邊緣的位置;
(4)找到 B,C兩點在第 a-n行的中點,記作點 D,D=(B+C)/2;
(5)認為D點為智能車當前位置,D點與第a-n行的中點位置之差即為偏航量。
根據(jù)算出的偏航量計算智能車下一個周期的行駛方向。
如圖7若發(fā)現(xiàn)A點所在行在足夠遠處,如第60行以上,則認為是小“S”彎或直道,舵機打舵量變小。
圖7 直道和小“S”路徑圖
將要沖出跑道時。采用“十字邊緣檢測法”對圖像進行檢測,如圖8若檢測到A點非常近外,如20行以內,則舵機打舵量變大。
圖8 即將沖出跑道時的圖像
十字路口。當智能車將要行駛到十字路口時,會出兩種情況。第一種是A點出現(xiàn)在足夠遠處,如圖9,認為是直道或小“S”彎。第二種是A點沒有出現(xiàn)在足夠遠處,但此時,B,C兩點必然在圖像的左右兩端,舵機方向回正,智能車直行向前。其中第二種情況出現(xiàn)的概率非常小,只有進入十字路口之前方向沒有調整好時才會出現(xiàn)。
圖9 十字路口路徑圖
本文通過對攝像頭智能車的路徑識別進行研究,在傳統(tǒng)的濾波和二值化的基礎上,介紹了三種路徑識別方法,包括計算效率非常高的“十字邊緣檢測法”,利用此識別算法能夠極大的節(jié)省微處理器的資源,從而縮短了控制周期,提高智能車控制系統(tǒng)的實時性。在此基礎上,我們完成了攝像頭智能車的制作,如圖10所示,基于上述算法的快速性,我們的智能車的最高速度能夠達到 3.1m/s,平均車速能夠達到2.59m/s。
圖12 攝像頭智能車
[1] Gao Y B, Cong J I, Han P W. Design of smart car system with came-rabased path recognition [J]. Journal of Lanzhou University of Tech-nology, 2013.
[2] Chen H, Xiong H. Hardware Design and Path Identification Algori-thm for Smart Track-keeping Car [J].Microcontrollers & Embed-ded Systems, 2010.
[3] Chen M Y, Sun S C, Wang H. The Design and Research of Tracing Smart Car Based on Image Recognition[J]. Journal of Chongqing University of Technology, 2013, 7(1).
[4] Nitzberg M, Shiota T. Nonlinear image filtering with edge and corner enhancement[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1992, 14(8):826-833.
[5] Van Hall R C. Real time binarization of gray images: US, US 67384-96 B1[P]. 2004.
[6] Cumani A. Edge detection in multispectral images[J]. Cvgip Graphi-cal Models & Image Processing, 2010, 53(1):40-51.