汽車信息化、智能化是當今汽車研究的重點,已經(jīng)成為衡量各國汽車工業(yè)發(fā)展水平的重要標志[1],智能汽車作為一種全新的汽車概念和汽車產(chǎn)品,將成為汽車生產(chǎn)和汽車市場的主流產(chǎn)品[2]。而“飛思卡爾”杯全國大學生智能車競賽由高等學校自動化專業(yè)教學指導分委員會主辦,飛思卡爾半導體公司協(xié)辦,并由各個分賽區(qū)的承辦大學組織。比賽以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識別、傳感技術(shù)、電子、電氣、計算機、機械等多個學科交叉的科技創(chuàng)意性,旨在培養(yǎng)大學生對知識的把握和創(chuàng)新能力,以及從事科學研究的能力[3]。
根據(jù)“飛思卡爾”智能車大賽規(guī)則要求:使用統(tǒng)一車模,核心控制單元采用飛思卡爾MC9S12DG128CPU。在此基礎上,自主構(gòu)思控制方案及系統(tǒng)控制電路的設計。系統(tǒng)控制電路設計包括:傳感器信號的采集、處理電路設計、驅(qū)動電機及轉(zhuǎn)向舵機控制電路設計以及各類接口電路設計??刂品桨冈O計包括:控制系統(tǒng)的組成設計、各類算法的設計及優(yōu)化等內(nèi)容。系統(tǒng)設計、調(diào)試完成后,在規(guī)定的、標有引導線的賽道上完成自尋跡行走,其賽道是在白色底板上鋪設黑色引導線,以完成時間最短者為優(yōu)勝。比賽分為光電組和攝像頭組。筆者為攝像頭組,采用的是攝像頭尋跡方式。
智能小車(以下簡稱小車)的控制系統(tǒng)主要由三大部分組成:傳感器信號采集及處理、車速控制和轉(zhuǎn)向控制。由攝像頭采集道路信息,經(jīng)處理分析后識別路徑,根據(jù)不同的路徑?jīng)Q策出不同的速度和轉(zhuǎn)向角度[4-5]。在保證安全的基礎上,一方面需要考慮如何提高極限速度,另一方面需要考慮如何提高平均速度,其平均速度的大小最終將決定比賽成績。分析歷屆比賽可以發(fā)現(xiàn),整個賽道中60%~70%的長度為彎道,因此,小車彎道行駛速度很大程度上決定了小車在整個賽道上平均速度的大小。本文將針對小車在行走過程中,就如何利用圖像數(shù)據(jù),給出合理的轉(zhuǎn)向策略進行深入探討。
就普通駕駛員而言,駕駛車輛行駛在公路上,直道時保持高速運行狀態(tài),而彎道時會根據(jù)不同的彎道做出合理的決策。一般為先減速,然后在一個比較低的速度下通過彎道,過彎后加速,最終回到直道速度。而在賽車場上的情景則不同,賽車選手輕易不會選擇普通駕駛員的轉(zhuǎn)彎策略,而是利用前輪轉(zhuǎn)向帶來的向心力并結(jié)合賽車入彎前的固有慣性達到快速轉(zhuǎn)彎的目的。對于一輛有視覺的智能小車是否也可以模擬這種高速運動過程,從而贏得比賽?筆者在綜合分析視覺圖像的特點、舵機模型以及圓周運動的特點后提出了一種可以高速入彎而不必減速或輕微減速、同時又能保證小車不會沖出賽道的安全過彎策略。
1 道路信息提取
要實現(xiàn)一個完整的基于視覺尋跡的智能小車,首先需利用攝像頭獲取道路信息,然后對采集到的原始圖像進行數(shù)據(jù)處理,以獲取賽道中引導線在圖像坐標系中的位置[6-8]。
圖1為攝像頭安裝示意圖。其中,Z1為攝像頭距地面的高度;w為視野場景的寬度,其大小與攝像機安裝的俯角和高度都有關(guān)系;b為輪間距。對場景中的特征點,只要知道其在場景中的位置,即可計算出該點與小車的相對位置。由上往下延Z軸反方向看,可得到場景平面,如圖2所示。其中,場景平面離小車的距離為d,這段距離為盲區(qū),場景平面寬為W,長為H。定義小車的中線為基準線,由攝像頭獲得的圖像即是場景平面。受MC9S12DG128CPU單片機處理能力的限制,選用356×292 CMOS黑白攝像頭,將其設置為逐行掃描模式。單行采樣106點。根據(jù)實驗結(jié)果,綜合考慮各種因素,選取其中64行信息形成一幅64×106的圖像平面,用來判斷彎道、直道以及彎道位置,從而達到減小計算量的目的。圖像如圖3所示。
在圖3圖像平面的基礎上,利用參考文獻[9~10]中的方法逐行掃描提取引導線位置。對于沒有引導線的行將其標記出來并將沒有引導線的邊界行記為row_sure,這個值記錄著64行數(shù)據(jù)中從第幾行開始沒有引導線,簡稱為出界點。得到引導線在圖像中的位置,可根據(jù)引導線的圖像坐標來控制舵機的轉(zhuǎn)角。單行圖像數(shù)據(jù)的圖像坐標與其對應的真實場景坐標呈線性變換關(guān)系,即每行任意兩像素坐標的列差值乘以一個近似固定的比例系數(shù)K就可得到真實場景對應行坐標的差值:
ΔXworld=K×ΔXimage=K×(line2-line1) (1)
式中ΔXworld為真實場景坐標中兩點的距離,ΔXimage為圖像平面對應行上兩點的像素坐標的列差值。
利用上面的關(guān)系,可以間接測量出小車與目標引導線之間的偏角,如圖4所示。若設AB為基準線,即車的中線;AK為引導線;過F點向y軸做垂線,與基準線AB的交點為C,定義C點為基準位置。在三角形AFC中,角β為基準線與引導線之間的夾角:
在理想情況下,控制舵機向左偏轉(zhuǎn)β角度即可讓小車追隨到引導線。但這樣計算角度的計算負擔很重,簡化參考文獻[2]中橫向偏差的測量方法,在基準位置固定的情況下,可用CF的長度近似表示角度β的大小:
|CF|=K×β (3)
式中,K為一個比例系數(shù)。結(jié)合圖像平面與場景平面之間的關(guān)系,定義CF的長度即為偏差,轉(zhuǎn)化到圖像平面為:
err=line1-linem (4)
式中, linem為基準位置對應的列值,line1為同行引導線的列值,err為位置偏差。因此,在實際的軟件設計中,不必得到真實場景坐標,可以直接對引導線實際位置與基準位置間圖像坐標的差(line1-linem)設計控制算法。如增量PID控制器可設計為:
Δu(k)=u(k)-u(k-1)=KP[err(k)-err(k-1)]+KIerr(k)+KD[err(k)-2err(k-1)+err(k-2)]
式中,KP為比例系數(shù),KI為積分系數(shù),KD為微分系數(shù)。Δu為舵機給定的增量[7-11]。
2 轉(zhuǎn)向模型
獲得道路的位置信息,即獲得了此刻小車的轉(zhuǎn)向角。參考文獻[11]中的舵機轉(zhuǎn)向模型,在理想狀態(tài)下,此刻控制舵機使前輪偏轉(zhuǎn)相應角度即可實現(xiàn)小車對道路的跟隨。舵機的轉(zhuǎn)向相當于給車一個向心力,在轉(zhuǎn)角不變時,小車做圓周運動;如果控制驅(qū)動電機的PWM脈寬不變,則小車做勻速圓周運動,驅(qū)動電機的 PWM脈寬對應的小車速度相當于勻速圓周運動的線速度。如圖5所示,設車的側(cè)輪距為b,舵機轉(zhuǎn)角為θ,O為車做圓周運動的圓心,R為外輪所對應半徑,則每一個轉(zhuǎn)角對應圓周運動的半徑[2]如下:
設控制周期為T,小車當前速度為V,α為一個控制周期T內(nèi)小車沿圓周行駛的弧度數(shù),則有:
由以上模型可以看出,不同的速度和轉(zhuǎn)角會在一個控制周期T內(nèi)得到不同的弧度,對上述公式離散化后可以得到:
小車在轉(zhuǎn)彎的過程中,舵機轉(zhuǎn)角受多種因素限制(如:小車轉(zhuǎn)向機構(gòu)造成的轉(zhuǎn)向的延滯、舵機的時間常數(shù)等),是一個漸變的過程,而利用公式(8)進行計算的前提是舵機的方向能隨控制量的改變而立即改變。為了簡化分析,將舵機模型視為僅具有延滯時間TD的延滯環(huán)節(jié)而忽略其時間常數(shù)。如圖6所示,由于TD的存在,速度越大,在滯后時間TD內(nèi),小車行走的距離越遠。
3 轉(zhuǎn)向策略設計
如圖7所示,設小車前方距離D處為彎道,小車此刻速度為V,結(jié)合圖6小車舵機轉(zhuǎn)向理想模型響應曲線,如果讓小車在A點入彎,速度必須滿足:
D=V×TD (9)
在圖4中,對于基準位置1和基準位置2,由道路信息提取的結(jié)果,為了保證A點入彎,基準位置2比基準位置1更早地發(fā)出轉(zhuǎn)向命令,需要更大的速度才可以在A點入彎,在保證兩位置的速度可以安全過彎的前提下,基準位置2得到了更高的入彎速度,所以更早地得到彎道的信息可以提高入彎速度。同時小車要想快速地入彎,必須將基準位置提到一個與此刻速度匹配的位置,才可以抵消舵機延時帶來的附加行駛路徑。但并不是說只要將基準位置選得足夠遠就可以得到很大的入彎速度,答案是否定的。小車的轉(zhuǎn)向為一個近似的圓周運動,不同的速度顯然對應不同的行駛半徑,即不同的路徑。速度快時,半徑大;速度慢時,半徑小。過快的速度會使小車沖出賽道。競賽賽道的彎道主要由360°、180°、90°、S型賽道組成。在圖8所示的180°彎道中,中間的粗實線為引導線,最外圍的實線為賽道邊界,曲線1、2、3、4為小車行駛路線。設所有行駛路線有同樣的入彎角度,曲線1、2、3為B點入彎,速度不同;曲線4為E點入彎,速度與曲線3速度一致。
顯然,曲線1、2、3中曲線3速度為最快,但路徑卻最長,同時還有沖出賽道的危險;曲線2雖“抄近道”,但速度稍慢;曲線1由于速度太慢而無法過彎。不難看出,其實曲線2、3、4的過彎時間相差并不是很大。但是由于曲線2中,由直道AB入彎時需要減速,過彎后需加速,這段時間卻比曲線3、4來得長。經(jīng)綜合考慮,曲線3、4過彎時間最短。曲線3、4中曲線3很顯然有沖出賽道的危險,因此曲線4為過180°彎的最優(yōu)路徑??梢钥闯觯咚贂r提前入彎可以使小車以一個比較高的速度駛過彎道,同時保證了安全而又不會沖出賽道。
對于90°彎道,與180°類似,最優(yōu)的策略是為保持直道高速行駛,通過上述的提前入彎策略保證安全過彎。
對于S道的進入,可以類推。而對于S道的行駛則應適當降低車速并將基準位置適當降低。如圖9所示,最短路徑也為最快速度,兩者是統(tǒng)一的。真實過程中很難做到讓車走CD路線,但是如果能使舵機保持在一個小角度左右調(diào)節(jié)的過程中則可逼近CD路線。實踐證明,高速通過S道時避免劇烈的角度變化給定為最優(yōu)策略。
綜合以上分析,可以得到以下兩點結(jié)論:
(1) 基準位置距小車的距離與速度呈正比關(guān)系。想要不減速入彎,必須改變基準位置,使之可以滿足公式(9)。
(2) 速度與轉(zhuǎn)彎半徑呈正比關(guān)系。保持高速入彎,同時不沖出賽道,提前入彎策略可以有效解決這個問題。
4 策略的實現(xiàn)
由以上分析可知,場景中的基準位置可以近似看成入彎點,并且不同的速度會導致不同的入彎點,也會導致不同的過彎路徑。因此,需完成的控制任務是:高速過彎,在入彎前不減速,為了防止沖出賽道還需要提前入彎。可見,需要在與速度適應的入彎點的基礎上進一步提前基準位置,即基準位置離小車的前端距離為:
L=V×TD+V×τ (10)
式中,L為基準位置離小車的距離,V為此刻小車的速度,V×TD為抵消延遲時間帶來的附加行駛距離,V×τ為提前入彎點的距離。
可以看出,基準位置與小車的距離是一個與小車速度相關(guān)的變量,不同的速度需要不同的取值。對于不同的速度將基準位置按照公式(10)設置,這樣即可以實現(xiàn)高速入彎。為了得到較佳的入彎點,本策略對圖像平面(64×106)做了進一步的處理,針對已經(jīng)得到的圖像平面(64×106),將圖像平面平分為10個區(qū)域,每個區(qū)域求取引導線的平均位置,對于沒有引導線的區(qū)域使用一個不可能出現(xiàn)的值代替,這樣便將引導線信息簡化為10行信息表示,記為:average[i],i=1,2,…,10。其中,average[i]記錄每行信息中引導線的平均位置的列坐標值,i標表示行值。圖10為最終的圖像平面。
圖10中, row_sure(出界點)用來選擇10個點中哪幾個點為可用點。average[1]為離車最近的點,隨著序號增大,離車越遠。在圖10的圖像平面中,計算偏差改為:
err=average[i]-mid (11)
式中, i< P>
當小車車速很高時,選擇較遠處的點求取偏差,等效于時間上提前入彎。這樣由以上策略分析可知,只要入彎點合適,基本不用減速就可以直接入彎,還可以得到不錯的安全系數(shù)。當速度處于一個較低水平時可使用最近處的點,即average[1],這樣就保證車只有走到彎道處才會轉(zhuǎn)向,不會提前入彎,避免提前入彎帶來的沖出內(nèi)道。
5 實驗數(shù)據(jù)
根據(jù)比賽要求,賽道中最小弧度半徑不小于0.5 m,在參考歷屆賽道的基礎上,筆者設計了如圖11的測試賽道,全長約38 m。實驗室測試成績?yōu)?8 s跑完全程,平均速度達到2 m/s。
圖12為90°彎道過彎圖,粗實線為引導線,虛線為賽車實際行駛路線??梢钥闯?小車實現(xiàn)了提前入彎,這是比較好的路徑,有效地節(jié)省了時間。
過彎速度的測量,由無線模塊每40 ms發(fā)回編碼器測得的速度脈沖,先由直道加速后入彎得到如表1所示的數(shù)據(jù)。
由表1可以明顯看出速度的變化,其中62為入彎速度,折合成標準速度為2.4 m/s;彎道速度為40,折合成標準速度為1.5 m/s,這個速度很接近平均速度。
圖13為360°彎道過彎圖,粗實線為引導線,虛線為小車實際的行駛路線??梢钥闯鰧崿F(xiàn)了提前入彎,后半程受舵機最大偏轉(zhuǎn)角的限制,無法繼續(xù)加大偏轉(zhuǎn),造成有一些跑外道。
圖14為S過彎圖,粗實線為引導線,虛線為小車實際的行駛路線??梢钥闯?小車行駛路線已經(jīng)很逼近直道了,由無線模塊每40 ms發(fā)回編碼器測得的速度脈沖,先由直道加速后入彎得到如表2所示的數(shù)據(jù)。
可以看出,S道的速度變化很小,同時彎道速度平均在1.5 m/s以上,很好地逼近了預期的路線。
本文根據(jù)轉(zhuǎn)向模型,通過分析過彎路徑與過彎速度之間的關(guān)系,得到了不同速度對應不同入彎路徑和入彎點的結(jié)論。利用這個結(jié)論,改變控制器偏差計算,達到動態(tài)地設置入彎點,快速入彎,盡量做到不減速或少減速,縮短彎道行駛時間,從而提高小車行駛速度的目的。該方法在其他智能車跟隨引導線的系統(tǒng)中同樣適用,由于其良好的超前預測性能,對于短暫的引導線丟失也可以很好地跟隨。