Apollo自動駕駛入門課程第⑩講 — 控制(下)
線性二次調節器(Linear Quadratic Regulator 或LQR)是基於模型的控制器,它使用車輛的狀態來使誤差最小化。Apollo使用LQR進行橫向控制。橫向控制包含四個元件:橫向誤差、橫向誤差的變化率、朝向誤差和朝向誤差的變化率。變化率與導數相同,我們用變數名上面的一個點來代表。我們稱這四個元件的集合為X,這個集合X捕獲車輛的狀態。除了狀態之外,該車有三個控制輸入:轉向、加速和制動。我們將這個控制輸入集合稱為U。
LQR處理線性控制,這種型別的模型可以用等式來表示(詳見下圖)。x(上方帶點)=Ax+Bu,x(上方帶點)向量是導數,或X向量的變化率。所以x點的每個分量只是x對應分量的導數。等式x點=Ax+Bu,該等式捕捉狀態裡的變化,即x點是如何受當前狀態 x 和控制輸入 u 的影響的。
這個等式是線性的,因為我們用∆x來改變x時,並用∆u來改變u。x點的變化也會讓這個等式成立(見下圖等式)。現在我們瞭解了LQR中的L。
接下來我們學習LQR中的Q。這裡的目標是為了讓誤差最小化,但我們也希望儘可能少地使用控制輸入。由於使用這些會有成本,例如:耗費氣體或電力。為了儘量減少這些因素,我們可以保持誤差的執行總和和控制輸入的執行總和。當車往右轉的特別厲害之際,新增到誤差總和中。當控制輸入將汽車往左側轉時,從控制輸入總和中減去一點。然而,這種方法會導致問題。因為右側的正誤差只需將左側的負誤差消除即可。對控制輸入來說也是如此。相反,我們可以讓x和u與自身相乘,這樣負值也會產生正平方,我們稱這些為二次項。我們為這些項分配權重,並將它們加在一起。
最優的u應該最小化二次項的和隨時間的積分。在數學中我們將這個積分值稱為成本函式(形式見下圖)。我們經常以緊湊的矩陣形式表示加權二次項的總和。
這裡的Q和R代表x和u的權重集合。xT和uT是轉置矩陣,這意味著它們幾乎與x和u相同,只是重新排列以便矩陣相乘。x乘以xT,u乘以uT,實質上是將每個矩陣乘以它自己。最小化成本函式是一個複雜的過程,但通常我們可以依靠數值計算器為我們找到解決方案。Apollo就提供了一個這樣的求解方案。在LQR中,控制方法被描述為u=-Kx。其中,K代表一個複雜的skeme,代表如何從x計算出u。所以找到一個最優的u就是找到一個最優的K。許多工具都可以輕鬆地用來解決K,尤其當你提供了模擬車輛物理特徵的A、B,以及x和u的權重Q、R。
2.模型控制預測
模型預測控制(或MPC)是一種更復雜的控制器,它非常依賴於數學優化,但基本上可以將MPC歸結為三個步驟:1、建立車輛模型。2、使用優化引擎計算有限時間範圍內的控制輸入。3、執行第一組控制輸入。MPC是一個重複過程,它著眼未來,計算一系列控制輸入,並優化該序列。但控制器實際上只實現了序列中的第一組控制輸入,然後控制器再次重複該迴圈。為什麼我們不執行整個控制輸入序列呢?那是因為我們只採用了近似測量與計算。如果實現了整個控制輸入序列,實際產生的車輛狀態與我們的模型有很大差異,最好在每個時間步不斷地重新評估控制輸入的最優序列。
MPC的第一步為定義車輛模型,該模型近似於汽車的物理特性,該模型估計了假如將一組控制輸入應用於車輛時會發生什麼。接下來,我們決定MPC預測未來的能力。預測越深入,控制器就越精確,不過需要的時間也越長。所以,我們需要在準確度與快速獲取結果之間做出取捨。獲取結果的速度越快,越能快速地將控制輸入應用到實際車輛中。
下一步是將模型傳送到搜尋最佳控制輸入的優化引擎。該優化引擎的工作原理是通過搜尋密集數學空間來尋求最佳解決方案。為縮小搜尋範圍,優化引擎依賴於車輛模型的約束條件。
優化引擎可間接評估控制輸入,它通過使用以下方法對車輛軌跡進行建模:通過成本函式對軌跡進行評估。成本函式主要基於與目標軌跡的偏差;其次,基於其他因素,如加速度和提升旅客舒適度的措施。
為使乘客感覺更舒適,對控制輸入的調整應該很小。因為動作變化幅度過大會讓乘客感到不舒服。根據具體情況,我們可能需要為其考慮進一步的成本,並設計成本函式。模型、約束和成本函式合併在一起,並作為優化問題加以解決。我們可以在不同的優化引擎中,選擇一種來尋找最佳解決方案。
3.總結
控制實際上是無人駕駛汽車實現自動移動的方式。在控制中,我們使用轉向、加速和制動來執行我們的目標軌跡。我們研究了幾種不同型別的控制器。PID控制是一種簡單而強大的控制演算法,線性二次調節器和模型預測控制是另外兩種型別的控制器,它們更復雜,但也更強大、更準確。Apollo支援所有這三種控制器,而你也可以選擇最適合自己的控制器!