??汽車(chē)控制如同每個(gè)人駕駛自己車(chē)輛一樣,當你熟悉前方道路的時(shí)候你如何控制你的車(chē)輛?
??顯然,如果你不是專(zhuān)業(yè)的選手的話(huà),你無(wú)法做到一步到位的控制,你需要一邊觀(guān)察車(chē)輛相對于你想要開(kāi)的路線(xiàn)的相對偏差,一邊調整你的方向盤(pán)的角度和油門(mén)踏板的力度,這種基于環(huán)境反饋的控制我們稱(chēng)為反饋控制?。反饋控制是現代控制理論的基礎,這是反饋控制的一般思路:
??我們希望我們控制的對象(無(wú)人車(chē))能夠按照我們希望(規劃好)的路徑行駛,我們會(huì )將環(huán)境當前給我們的反饋(我們當前的位置)和參考線(xiàn)進(jìn)行比較,得到我們當前偏離參考線(xiàn)的距離(誤差),基于這個(gè)誤差,我們設計一定的算法來(lái)產(chǎn)生輸出信號,使得這個(gè)誤差不斷的變小,這樣的過(guò)程就是反饋控制的一般過(guò)程。那么我們如何基于這個(gè)誤差來(lái)產(chǎn)生控制指令呢?我們最直觀(guān)的感覺(jué)就是要讓誤差在我們的控制下逐漸變小直到為0:
? 零誤差就意味著(zhù)車(chē)一直在你想讓它開(kāi)的路徑上開(kāi)。如何減少誤差就是我們這幾篇博客要向大家介紹的內容。
??為了了解反饋控制,我先向大家介紹 PID控制,PID控制是目前利用最為廣泛的控制理論,我們以它為出發(fā)點(diǎn)討論控制理論。
比例、積分、導數:
PID就是指比例(proportion)、積分(integral)、導數(derivative),這三項表示我們如何使用我們的誤差來(lái)產(chǎn)生控制指令,整個(gè)流程如下:
首先是根據反饋和參考值求出誤差,這里的誤差根據具體的情況可以是各種度量,比如說(shuō)控制車(chē)輛按照指定的路徑形式,那么就是車(chē)輛當前位置和參考線(xiàn)的距離,控制車(chē)輛的速度在設定的值,那么就是當前速度和設定速度的差值,求出誤差以后,再根據誤差求比例,積分和微分三項,其中?KpKp?,?KiKi?, 和?KdKd?是三項的系數,它們決定著(zhù)這三項對最后輸出的影響的比重。將 P,I,DP,I,D?三項求和作為最后的輸出信號。我們分別討論這三項的意義。
一、P控制
? 考慮一個(gè)簡(jiǎn)單的情況,假設我們希望無(wú)人車(chē)按照圖中綠線(xiàn)行駛,但是我們的車(chē)在如圖所示的位置:
? 那么我們要轉多少度角呢?如果都按照固定的角度轉(如下圖),那么車(chē)的軌跡將如圖中所示:
? 那么顯然坐這樣的車(chē)是不舒服的。一個(gè)直觀(guān)的解決方法就是使用比例控制。如圖所示,當偏差大的時(shí)候,我們偏轉更多的角度,當偏差小的時(shí)候,則偏轉小一點(diǎn)。
? 那么這就是P control(比例控制)這里我們使用?CTE(Cross Track Error)?作為偏差度量 ,CTE就是我們到參考線(xiàn)的距離。那么這個(gè)時(shí)候轉角就變成了:
steering?angle=Kp?e(t)
? 其中的?e(t)e(t)?就是在t時(shí)刻的CTE,在P控制中系數?KpKp?會(huì )直接影響到實(shí)際的控制效果,在合理的數值范圍內?KpKp?越大控制的效果越好(越快速的回到參考線(xiàn)附近),但是,當本身位置和參考線(xiàn)相距很遠且?KpKp?系數較大的時(shí)候,就會(huì )出現車(chē)輛失去控制的情況:
??所以說(shuō),如果?KpKp?參數設計合理的話(huà),P控制要比固定控制要更好,但是還是不能控制的很好,因為P控制的車(chē)輛容易0值的影響,如圖所示:
??此時(shí)車(chē)輛雖然在參考線(xiàn)上,但是并不是我們希望的狀態(tài)(它在下一刻就會(huì )偏離),但是對于P控制而言,這是理想狀態(tài),此時(shí)控制轉角為0,因此,P控制會(huì )一次又一次的超過(guò)參考線(xiàn)(overshot),為了矯正這種overshot,我們需要考慮一個(gè)額外的誤差項——CTE變化率。
二、PD控制
??
CTE的變化率描述了我們的無(wú)人車(chē)向著(zhù)參考線(xiàn)方向移動(dòng)的有多快,如果我們的無(wú)人車(chē)一直都完美的在參考線(xiàn)上運動(dòng)的話(huà),那么我們的CTE變化率就為0。那么這一項(描述誤差的變化率)就可以用導數來(lái)表示,那么,現在我們的控制輸出就變成了比例項和導數項求和的形式:
steering?angle=Kp?e+Kdd?e(t)dt
其中的?KdKd?就是導數項的系數,它的大小決定了CTE變化率對于反饋控制的影響。此時(shí)我們的控制叫做PD控制,在PD控制中,我們有兩個(gè)系數需要調整,直觀(guān)上來(lái)看,增大?PP?系數將會(huì )增大無(wú)人車(chē)向著(zhù)參考線(xiàn)方向運動(dòng)的傾向;增大?DD?系數將會(huì )增大無(wú)人車(chē)快速向參考線(xiàn)方向的運動(dòng)的“抵抗力”從而使得向參考線(xiàn)方向的運動(dòng)變得更加平滑。使用過(guò)大的 PP?系數,過(guò)小的?DD?系數的系統我們稱(chēng)之為?欠阻尼的(underdamped),這種情況的無(wú)人車(chē)將沿著(zhù)參考線(xiàn)震蕩前進(jìn),反之,如果P系數過(guò)小,D系數過(guò)大,那么我們稱(chēng)之為?過(guò)阻尼的(overdamped),這將使得無(wú)人車(chē)要較長(cháng)的時(shí)間才能糾正其誤差。合適地選擇 PP,DD參數可以使無(wú)人車(chē)能快速回到參考線(xiàn)上的同時(shí)很好的維持在參考線(xiàn)上運動(dòng)。
PD控制似乎已經(jīng)能夠勝任良好的反饋控制了,但其實(shí)還不夠,PD控制器可以保證正常的控制的需求,但是當環(huán)境存在擾動(dòng)的時(shí)候,比如說(shuō)下面這種情況:
?車(chē)在受力發(fā)生輕微偏移以后,由于PD控制中下?PP?項傾向于向參考線(xiàn)方向運動(dòng),而?DD?項則嘗試抵消這種傾向,造成無(wú)人車(chē)始終都無(wú)法沿著(zhù)參考線(xiàn)運動(dòng),這個(gè)問(wèn)題叫做?steady state error?為了解決這個(gè)問(wèn)題,我們再引入一項——?積分項。
三、PID控制
我們將積分項也代入到我們的控制輸出函數中,這個(gè)時(shí)候,無(wú)人車(chē)的轉角就可以表示為:
steering?angle=Kp?e+Kdd?e(t)dt+Ki∫0te(t)dt
? 其中?KiKi?就是積分項系數,積分項在我們這個(gè)例子中其實(shí)很好理解,本質(zhì)就是車(chē)的實(shí)際路線(xiàn)到參考線(xiàn)的圖形的面積,加入積分項以后,控制函數會(huì )盡可能使車(chē)輛路線(xiàn)的積分盡可能?。ㄒ簿褪鞘管?chē)輛路線(xiàn)和實(shí)際運動(dòng)參考線(xiàn)之間形成的形狀的面積盡可能?。?,那么也就避免了steady state這種情況了。
??同樣的,這里的積分項系數的大小也會(huì )影響我們整個(gè)控制系統的穩定性,過(guò)大的?KiKi?會(huì )使控制系統“震蕩”地運行,過(guò)小的?KiKi?又會(huì )使控制的車(chē)輛在遇到擾動(dòng)以后(處于steady state)要很久才能回到參考線(xiàn)上,這在某些情況下勢必會(huì )使車(chē)輛處于一個(gè)危險的境況。
??PID控制就是由這三項共同決定的,還有其他應用于無(wú)人駕駛汽車(chē)的高級控制算法,但是他們都和我們介紹的PID控制的原理相似。