基于CCD攝像頭智能車分段PID控制算法設計
3 圖像識別
用CCD攝像頭采集車模前方一定距離內(nèi)的黑線,從中提取相關量,用來控制舵機的轉向,實現(xiàn)智能車的自動循跡。由于單片機數(shù)據(jù)處理能力和速度有限,不能在短短的20 ms時間內(nèi)處理整場圖像。本系統(tǒng)設置攝像頭前瞻為1.2 m。在不影響道路檢測精度需要的前提下,本系統(tǒng)采用隔行采集來壓縮圖像數(shù)據(jù),即相隔不同的有效行采集一行數(shù)據(jù)(近處相隔的少,遠處相隔的多),一共可采集44行數(shù)據(jù)。此外為了進一步提高A/D轉換的速度,本系統(tǒng)還適當?shù)貙S12的CPU超頻運行并且設置A/D轉換器的精度為8位,這樣每行能采樣到67個點,形成了一個面陣,而黑線在其中占據(jù)了某些點位。由于我們一行采集67個點,故中間值為33。圖像是智能車的底層,圖像的采集正確與否在以后的控制中尤為重要,故一定要確保采集回來的黑線的真實有效性,并且要增加濾波算法,比如在有效前瞻很小的時候,本來只要判斷出黑線的轉向即可,給舵機以極限轉角可以讓車急轉彎。但是有效行很少的時候,如果不用特殊的濾波方法,只要有一行的黑線提錯,就可能讓小車轉錯,至于轉出界。
4 分段PID控制
4.1 圖像信息提取量
從采集回來的圖像中提取控制量來控制舵機的轉向,實現(xiàn)智能車的自動循跡。本系統(tǒng)采用黑線偏移量even_diff和黑線某段斜率D_diff-erent對舵機進行控制,可稱為PD控制器。由于車模是個隨動系統(tǒng),在攝像頭1.2 m前瞻內(nèi)覆蓋的黑線不一定有設置的44行,特別是前方的彎特別急的時候,在攝像頭前瞻視角范圍內(nèi)覆蓋的黑線會特別少,比如13行或13行以下。根據(jù)這個特點,可設置一個有效前瞻量valid_line作為對前方的彎的平緩程度的反應。
把每一行的黑線位置值與中間值作差,得到該行的偏移量,中間值33位賽道的中心位置點,偏移量表示在車模的視角下黑線處于賽道中的位置值。把每一行的偏移量相加之和除以攝像頭前瞻范圍內(nèi)的提取出的黑線行數(shù),得到黑線相對于車模中心的整體偏移量even_diff,用有效行內(nèi)的遠處某些行與近處某些行(如前半場與后半場)偏移量之差得到有效行內(nèi)的黑線斜率D_differen。
這樣,從一場的黑線位置數(shù)據(jù)中,系統(tǒng)提取了有效行valid_line、even_diff、D_different 3個量來對舵機進行控制。在實際情況中,D_different可以很靈活,因為前方黑線的斜率可以取不同段得到,可以根據(jù)實際要求得到不同段的斜率值,如速度快時可以適當?shù)娜【嘬囕^遠處的黑線斜率,以實現(xiàn)超前控制。
在智能車調(diào)試參數(shù)的時候,對這3個量的理解很是重要,具體來說,valid_line表征車模的有效前瞻,即看得有多遠,對于智能車在道路上行駛,看得遠說明黑線都在前方,看不遠說明智能車前方的黑線已經(jīng)偏左或者偏右,而這個量的大小正好可以表征彎的平緩與急切。另外,看得遠則攝像頭采集的黑線多,系統(tǒng)信息量大,那么怎么處理這些大量的信息為我們所用就變得很關鍵,如看得1.2 m都能看見,說明小車必然在長直道上,不然也是小S彎,稍作處理就可以過濾掉小S彎了,讓小車像都是在直道上跑;看得很近說明彎已經(jīng)很急,這時候,只要能夠判斷出彎往那邊拐就可以給舵機一個極值急拐。even_diff表征在某一個特定視野下,小車與黑線偏離的程度,這個量可以讓智能車在某個特定視野下決定給舵機多大的轉角。D_different則在有效前瞻遠的時候尤為關鍵,因為它可以預判前方的彎,從而超前的轉彎。
4.2 PD控制器形式
系統(tǒng)把這3個量處理成PD控制器的形式:
其中a為根據(jù)賽道有效前瞻確定的不同有效行。Centre為舵機走直線的控制中間值。Steer為PD控制器給舵機的輸入量。由于車模舵機轉向控制是一個非線性系統(tǒng),而設置了入口條件“有效行判斷”,正好可以把這個非線性系統(tǒng)分割成不同段,在每一段可近似認為轉向控制系統(tǒng)是線性的。即在某一小段范圍內(nèi),得到的黑線位置和對應的舵機PID參照角度處理成一次線性關系。最終實現(xiàn)簡單分段PID控制。
5 分段PID控制參數(shù)規(guī)律
在實際的調(diào)車過程中,我們總結發(fā)現(xiàn),PD控制器的參數(shù)Kp、Kd與有效前瞻valid_line、車模的速度相關。簡單點說,即小車速度越快,車模遇彎提前拐彎的應越早??偨Y下來,有如下關系:
其中A為Kp的基礎值,valid_line為車模運行到某個狀態(tài)的有效前瞻(用提取的黑線數(shù)量來估定),speed為小車一場時間內(nèi)的脈沖值,表征車模時刻運行的速度。低速時,可近似認為speed/C為零,通過試驗法可以確定A值大小。在確定Kp基礎值之后,即可加速,在小車速度稍高的時候調(diào)試得出合適的B值、C值,最終使小車平穩(wěn)準確的切線,循跡而行。此關系式可知,有效前瞻的變化是對Kp值影響最大也是最直接的一個量,我們平時調(diào)車經(jīng)驗而知,B參數(shù)應比C敏感很多才行。有效行減少一行,對舵機轉向角的影響要遠大于小車速度speed對Kp的對影響。而speed對舵機急轉快速性在車模高速的時候很是明顯。
為增加系統(tǒng)的魯棒性,并且更好的解決系統(tǒng)的非線性問題,我們將小車的前瞻分段,我們1.2 m的前瞻里面,總共有44行黑線,直道上全部提取回來,可以分為有效行37行一下、有效行30行以上、有效行24行以上、有效行18行以上、有效行13行以上與有效行13行以下7段。
pid控制器相關文章:pid控制器原理
評論