自動(dòng)尋跡智能" title="智能">智能車涉及到當(dāng)前高技術(shù)領(lǐng)域內(nèi)的許多先進(jìn)技術(shù),,其中最主要的是傳感技術(shù)、路徑規(guī)劃和運(yùn)動(dòng)控制,。本課題是以飛思卡爾智能車競賽為背景,,以單片機(jī)作為核心控制單元,以攝像頭" title="攝像頭">攝像頭作為路徑識(shí)別傳感器,,以直流電機(jī)作為小車的驅(qū)動(dòng)裝置,,以舵機(jī)控制小車轉(zhuǎn)向。車模競賽的賽道是一個(gè)具有特定幾何尺寸約束,、摩擦系數(shù)及光學(xué)特性的KT板,,其中心貼有對(duì)可見光及不可見光均有較強(qiáng)吸收特性的黑色條帶作為引導(dǎo)線,寬度為2.5 cm,。在行駛過程中,,系統(tǒng)通過攝像頭獲取前方賽道的圖像數(shù)據(jù),同時(shí)通過測速傳感器實(shí)時(shí)獲取智能車的速度,,采用路徑搜索算法進(jìn)行尋線判斷和速度分析,,然后作控制決策,控制轉(zhuǎn)向舵機(jī)和直流驅(qū)動(dòng)電機(jī)工作,。智能車通過實(shí)時(shí)對(duì)自身運(yùn)動(dòng)速度及方向等進(jìn)行調(diào)整來“沿”賽道快速行駛,。本文主要介紹攝像頭通過提取賽道黑線信息交予單片機(jī)處理,通過單片機(jī)輸出控制信號(hào)控制舵機(jī)轉(zhuǎn)向來控制車模的轉(zhuǎn)向,,從而很好的自動(dòng)循跡,。
1 總體軟硬件結(jié)構(gòu)及思路
此智能車輛定位系統(tǒng)用攝像頭拍攝車輛前方的賽道,通過MC9S12XS128采樣視頻信號(hào),,獲得圖像數(shù)據(jù),。然后用合適的算法,如跟蹤邊緣檢測算法,,分析圖像數(shù)據(jù),,提取目標(biāo)指引線,。然后,系統(tǒng)根據(jù)目標(biāo)指引線的位置信息,,對(duì)舵機(jī)和電機(jī)施以合適的控制,。本智能車運(yùn)動(dòng)系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
因?yàn)橄到y(tǒng)是一個(gè)有機(jī)的整體,,所以需配合好系統(tǒng)的攝像頭,、控制單片機(jī)、電機(jī)(包括直流伺服電動(dòng)機(jī),、光電編碼器),、舵機(jī)和輔助電路(電源板、電機(jī)驅(qū)動(dòng)板)等各個(gè)部分,。舵機(jī)是實(shí)時(shí)控制車模的轉(zhuǎn)向,,是比賽快速性和穩(wěn)定性的關(guān)鍵,舵機(jī)控制有很多的控制算法,,如:PID" title="PID">PID經(jīng)典控制算法,、模糊算法、人工智能算法等,。
2 系統(tǒng)程序總體控制流程
系統(tǒng)的基本軟件流程是:首先,,對(duì)各功能模塊和控制參數(shù)進(jìn)行初始化;然后,,通過圖像采集模塊獲取前方賽道的圖像數(shù)據(jù),,同時(shí)通過速度傳感器模塊獲取賽車的速度。采用PID對(duì)舵機(jī)進(jìn)行反饋控制,。另外根據(jù)檢測到的速度,,結(jié)合速度控制策略,對(duì)賽車速度不斷進(jìn)行適當(dāng)調(diào)整,,使賽車在符合比賽規(guī)則的前提下,沿賽道快速行駛,。系統(tǒng)的基本軟件結(jié)構(gòu)流程圖,,如圖2所示。
系統(tǒng)的軟件要求控制的準(zhǔn)確性,、穩(wěn)定性,。采樣提取黑線是控制輸入量的基礎(chǔ),要求采樣的精確穩(wěn)定,。輸入量給舵機(jī)以后又要求舵機(jī)輸出的快速相應(yīng)性,、穩(wěn)定性和準(zhǔn)確性。經(jīng)過多次實(shí)驗(yàn)及近一個(gè)學(xué)期的調(diào)車經(jīng)驗(yàn),,選用了并改進(jìn)了經(jīng)典的PID控制器對(duì)車模的舵機(jī)進(jìn)行控制調(diào)節(jié),。
3 圖像識(shí)別
用CCD" title="CCD">CCD攝像頭采集車模前方一定距離內(nèi)的黑線,,從中提取相關(guān)量,用來控制舵機(jī)的轉(zhuǎn)向,,實(shí)現(xiàn)智能車的自動(dòng)循跡,。由于單片機(jī)數(shù)據(jù)處理能力和速度有限,不能在短短的20 ms時(shí)間內(nèi)處理整場圖像,。本系統(tǒng)設(shè)置攝像頭前瞻為1.2 m,。在不影響道路檢測精度需要的前提下,本系統(tǒng)采用隔行采集來壓縮圖像數(shù)據(jù),,即相隔不同的有效行采集一行數(shù)據(jù)(近處相隔的少,,遠(yuǎn)處相隔的多),一共可采集44行數(shù)據(jù),。此外為了進(jìn)一步提高A/D轉(zhuǎn)換的速度,,本系統(tǒng)還適當(dāng)?shù)貙S12的CPU超頻運(yùn)行并且設(shè)置A/D轉(zhuǎn)換器的精度為8位,這樣每行能采樣到67個(gè)點(diǎn),,形成了一個(gè)面陣,,而黑線在其中占據(jù)了某些點(diǎn)位。由于我們一行采集67個(gè)點(diǎn),,故中間值為33,。圖像是智能車的底層,圖像的采集正確與否在以后的控制中尤為重要,,故一定要確保采集回來的黑線的真實(shí)有效性,,并且要增加濾波算法,比如在有效前瞻很小的時(shí)候,,本來只要判斷出黑線的轉(zhuǎn)向即可,,給舵機(jī)以極限轉(zhuǎn)角可以讓車急轉(zhuǎn)彎。但是有效行很少的時(shí)候,,如果不用特殊的濾波方法,,只要有一行的黑線提錯(cuò),,就可能讓小車轉(zhuǎn)錯(cuò),,至于轉(zhuǎn)出界。
4 分段" title="分段">分段PID控制
4.1 圖像信息提取量
從采集回來的圖像中提取控制量來控制舵機(jī)的轉(zhuǎn)向,,實(shí)現(xiàn)智能車的自動(dòng)循跡,。本系統(tǒng)采用黑線偏移量even_diff和黑線某段斜率D_diff-erent對(duì)舵機(jī)進(jìn)行控制,,可稱為PD控制器。由于車模是個(gè)隨動(dòng)系統(tǒng),,在攝像頭1.2 m前瞻內(nèi)覆蓋的黑線不一定有設(shè)置的44行,,特別是前方的彎特別急的時(shí)候,在攝像頭前瞻視角范圍內(nèi)覆蓋的黑線會(huì)特別少,,比如13行或13行以下,。根據(jù)這個(gè)特點(diǎn),,可設(shè)置一個(gè)有效前瞻量valid_line作為對(duì)前方的彎的平緩程度的反應(yīng)。
把每一行的黑線位置值與中間值作差,,得到該行的偏移量,,中間值33位賽道的中心位置點(diǎn),偏移量表示在車模的視角下黑線處于賽道中的位置值,。把每一行的偏移量相加之和除以攝像頭前瞻范圍內(nèi)的提取出的黑線行數(shù),,得到黑線相對(duì)于車模中心的整體偏移量even_diff,用有效行內(nèi)的遠(yuǎn)處某些行與近處某些行(如前半場與后半場)偏移量之差得到有效行內(nèi)的黑線斜率D_differen,。
這樣,,從一場的黑線位置數(shù)據(jù)中,系統(tǒng)提取了有效行valid_line,、even_diff,、D_different 3個(gè)量來對(duì)舵機(jī)進(jìn)行控制。在實(shí)際情況中,,D_different可以很靈活,,因?yàn)榍胺胶诰€的斜率可以取不同段得到,可以根據(jù)實(shí)際要求得到不同段的斜率值,,如速度快時(shí)可以適當(dāng)?shù)娜【嘬囕^遠(yuǎn)處的黑線斜率,,以實(shí)現(xiàn)超前控制。
在智能車調(diào)試參數(shù)的時(shí)候,,對(duì)這3個(gè)量的理解很是重要,,具體來說,valid_line表征車模的有效前瞻,,即看得有多遠(yuǎn),,對(duì)于智能車在道路上行駛,看得遠(yuǎn)說明黑線都在前方,,看不遠(yuǎn)說明智能車前方的黑線已經(jīng)偏左或者偏右,,而這個(gè)量的大小正好可以表征彎的平緩與急切。另外,,看得遠(yuǎn)則攝像頭采集的黑線多,,系統(tǒng)信息量大,那么怎么處理這些大量的信息為我們所用就變得很關(guān)鍵,,如看得1.2 m都能看見,說明小車必然在長直道上,,不然也是小S彎,,稍作處理就可以過濾掉小S彎了,讓小車像都是在直道上跑,;看得很近說明彎已經(jīng)很急,,這時(shí)候,,只要能夠判斷出彎往那邊拐就可以給舵機(jī)一個(gè)極值急拐。even_diff表征在某一個(gè)特定視野下,,小車與黑線偏離的程度,,這個(gè)量可以讓智能車在某個(gè)特定視野下決定給舵機(jī)多大的轉(zhuǎn)角。D_different則在有效前瞻遠(yuǎn)的時(shí)候尤為關(guān)鍵,,因?yàn)樗梢灶A(yù)判前方的彎,,從而超前的轉(zhuǎn)彎。
4.2 PD控制器形式
系統(tǒng)把這3個(gè)量處理成PD控制器的形式:
其中a為根據(jù)賽道有效前瞻確定的不同有效行,。Centre為舵機(jī)走直線的控制中間值,。Steer為PD控制器給舵機(jī)的輸入量。由于車模舵機(jī)轉(zhuǎn)向控制是一個(gè)非線性系統(tǒng),,而設(shè)置了入口條件“有效行判斷”,,正好可以把這個(gè)非線性系統(tǒng)分割成不同段,在每一段可近似認(rèn)為轉(zhuǎn)向控制系統(tǒng)是線性的,。即在某一小段范圍內(nèi),,得到的黑線位置和對(duì)應(yīng)的舵機(jī)PID參照角度處理成一次線性關(guān)系。最終實(shí)現(xiàn)簡單分段PID控制,。
5 分段PID控制參數(shù)規(guī)律
在實(shí)際的調(diào)車過程中,,我們總結(jié)發(fā)現(xiàn),PD控制器的參數(shù)Kp,、Kd與有效前瞻valid_line,、車模的速度相關(guān)。簡單點(diǎn)說,,即小車速度越快,,車模遇彎提前拐彎的應(yīng)越早??偨Y(jié)下來,,有如下關(guān)系:
其中A為Kp的基礎(chǔ)值,valid_line為車模運(yùn)行到某個(gè)狀態(tài)的有效前瞻(用提取的黑線數(shù)量來估定),,speed為小車一場時(shí)間內(nèi)的脈沖值,,表征車模時(shí)刻運(yùn)行的速度。低速時(shí),,可近似認(rèn)為speed/C為零,,通過試驗(yàn)法可以確定A值大小。在確定Kp基礎(chǔ)值之后,,即可加速,,在小車速度稍高的時(shí)候調(diào)試得出合適的B值、C值,,最終使小車平穩(wěn)準(zhǔn)確的切線,,循跡而行,。此關(guān)系式可知,有效前瞻的變化是對(duì)Kp值影響最大也是最直接的一個(gè)量,,我們平時(shí)調(diào)車經(jīng)驗(yàn)而知,,B參數(shù)應(yīng)比C敏感很多才行。有效行減少一行,,對(duì)舵機(jī)轉(zhuǎn)向角的影響要遠(yuǎn)大于小車速度speed對(duì)Kp的對(duì)影響,。而speed對(duì)舵機(jī)急轉(zhuǎn)快速性在車模高速的時(shí)候很是明顯。
為增加系統(tǒng)的魯棒性,,并且更好的解決系統(tǒng)的非線性問題,,我們將小車的前瞻分段,我們1.2 m的前瞻里面,,總共有44行黑線,,直道上全部提取回來,可以分為有效行37行一下,、有效行30行以上,、有效行24行以上、有效行18行以上,、有效行13行以上與有效行13行以下7段,。
處理成控制程序的形式為:
雖然分為7段,各段單獨(dú)控制,,參數(shù)單獨(dú)調(diào)節(jié),,但是,Kp值與有效行(有效前瞻)成負(fù)相關(guān)的關(guān)系仍然成立,,故Kp,、Kp1、Kp2,、Kp3,、Kp4、Kp5依然大體上遵循與有效行負(fù)相關(guān)的關(guān)系,,即Kp隨有效行的減小線性增加,。
在每一段里面調(diào)節(jié)PD控制器的參數(shù),使小車能夠行使不同類別不同半徑的彎道,。這樣就形成分段PD控制,,小車的非線性問題可以很好的解決,系統(tǒng)的魯棒性也能夠增強(qiáng),。同時(shí),,為保護(hù)舵機(jī)不至于向左向右打得太狠,可以限定舵機(jī)的左右極限值:
通過調(diào)試參數(shù)A、B,、C,調(diào)節(jié)不同的Kp值,,實(shí)踐證明,,小車能夠平穩(wěn)、快速的自動(dòng)巡線前行,。
6 結(jié)束語
該算法把舵機(jī)的轉(zhuǎn)向的Kp系數(shù)與車速相關(guān)起來,,能夠很好地配合車速與舵機(jī)轉(zhuǎn)向,提出以具體的智能車參數(shù)分段PD參數(shù)的規(guī)律,,對(duì)智能車實(shí)際制作很有幫助,,在智能車比賽中具有很廣的推廣價(jià)值。
實(shí)踐證明,,參數(shù)調(diào)節(jié)合適的時(shí)候智能車能夠很好的適應(yīng)賽道,,跑出希望的最佳路徑。為了參加第五屆“飛思卡爾”杯全國大學(xué)生智能汽車競賽,,此控制算法在校級(jí)代表隊(duì)資格選拔賽中表現(xiàn)完美,,最終跑出2.5 m/s的好成績,成功入選華北賽區(qū)參加比賽,。實(shí)踐證明了智能車舵機(jī)分段PID控制轉(zhuǎn)向具有可行性和實(shí)用性,。