基於運動學模型的模型預測控制


  • 將PID控制應用於無人車的問題


PID作為一種反饋控制方法,因其簡單易實現被大量應用。但是在實際的車輛控制中,車輛往往不能立刻執行我們所下的指令,這其中存在一定的延遲,也就是說,我們的控制指令會在“未來的車輛狀態”被執行,但是,由於PID是一種反饋控制,控制的指令使用當前車輛所處的狀態決定的,然而當制動的指令被執行的時候,由於存在一定的延遲,車輛已經處於“未來的狀態“了,在這個”未來的狀態”使用這個指令去制動就會有一定的危險性。這是在無人車控制中使用PID算法的最大問題。

  • 什么是模型預測控制


模型預測控制(MPC)是一種致力於將更長時間跨度、甚至於無窮時間的最優化控制問題,分解為若干個更短時間跨度,或者有限時間跨度的最優化控制問題,並且在一定程度上仍然追求最優解。模型預測控制由如下三個要素組成:

    預測模型:預測模型能夠在短時間內很好地預測系統狀態的變化
    在線滾動優化:通過某種最優化算法來優化未來一段短時間的控制輸入,使得在這種控制輸入下預測模型的輸出與參考值的差距最小
    反饋校正:到下一個時間點根據新的狀態重新進行預測和優化

下面我們分別從這三個方面來討論模型預測控制理論。

  • 預測模型


在本文中,我們使用運動學自行車模型作為預測模型,它的形式如下:

那么各個狀態量的更新公式如下:

 

 

 
其中 β,可以由如下公式計算求得:

 

 

 



基於以上的公式,在給定一個控制指令的情況下,我們的這個預測模型能夠根據運動學的規律計算出 dt時間以后車輛的狀態 (x,y,ψ,v),這個預測模型(自行車模型)本身是建立在一定的假設前提的,所以計算出來的狀態只是理論上車輛的可能狀態。

我們從下圖的情況出發進行討論,下圖是一條彎道,圖中的實線是我們的參考線,我們控制的目標是讓車輛盡量沿着參考線行駛:

 

 

 我們選取10個 dt,假設 dt=0.05s ,那么根據預測模型,在已知一組控制輸入的前提下,我們可以計算出車輛在未來 0.5s的狀態(本質上是一些離散的狀態),如下圖中的虛線所示:

  • 在線滾動優化


那么現在問題就變成了一個最優化的問題,參照我們在神經網絡優化中的經驗,首先我們需要定義損失函數(Loss function),在本問題中,我們首先想到的一個損失函數就是我們的模型預測的軌跡和參考線之間的“差距”, 即 CTE(Cross Track Error),我們優化的目標就是找出一組控制量(即 (a,δf)油門剎車系數和方向盤轉角),使得我們的Loss function最小化。

 

 
上文中我們只考量未來10個時間間隔內的模型預測,所以i的取值范圍是 (1,10)是預測點到實際參考線的距離。為了完善我們的控制,我們可以給我們的損失函數添加更多的項,比如說我們不僅僅想控制車輛按照參考線行駛,還想控制車輛在這個短時間范圍內在每個點上的速度,那么就可以在損失函數添加一項速度的平方差:

 

 
再進一步,損失函數還可添加許多項使控制變得更加平滑,比如我們希望油門系數不要突變(即緩慢的才油門和剎車,這樣乘客的體驗會更加舒適),那么我們就可以將前后兩個油門系數的差值的平方作為一項加入到損失函數中:

 


以此類推,損失函數還可以更加完善,損失函數設計得越合理,模型預測控制的輸出也就也符合人的需求。當然,除了損失函數意外,我們的這個最優化問題中的變量還是 帶約束的 ,比如說車輛的前輪轉角 δf
的取值范圍,車輛油門系數 a的取值范圍(通常我們取值為-1到1,-1意味着滿剎車,1意味着滿油門)。 PID控制中遇到的制動延遲問題也可以通過添加約束來解決 ,具體來說:

假設我們車輛的制動延遲是 100ms, 本文中模型采用10步預測,每步間隔為 50ms ,即模型預測的前兩步實際上是制動延遲的時間內,即實際上這兩步中車輛仍然在執行上一個狀態的制動指令,那么為了讓模型更加貼近實際,我們就約束這2步的制動指令,即 (a,delta_f)為上一狀態的指令,這樣,我們的模型預測控制就將制動延遲考慮了進來。

  • 反饋矯正


如圖所示是MPC的簡化示意圖,可以看出,MPC本質上還是一種反饋控制,當我們通過最優化方法得到一組控制輸出以后(本例中就是未來10步的控制輸出),車輛執行控制指令,並且繼續以一定的頻率反饋當前車輛的狀態 zt。這個狀態會被同時輸入到路徑規划模塊以及MPC控制模塊,路徑規划模塊會依據新的車輛狀態,結合感知模塊的信息以及地圖信息重新做出規划。MPC則根據新的參考路徑和車輛當前狀態進行新一輪的預測控制。需要注意的是,車輛真實狀態的反饋並不是一個預測時間段的控制執行完以后才反饋的,反饋的時間間隔往往小於一個預測時間段(在本文的例子中,預測時間段長度為 0.05×10=0.5s)。

 

 

 

  • 小結


通過使用不同的預測模型和損失函數,可以構造出各種模型預測控制器,但是,總的來說,模型預測控制往往可以分解成如下幾步:
1. 從 t時刻開始,預測未來 a 步系統的輸出信號
2. 基於模型的控制信號以及相應的輸出信號,構造損失函數,並且通過調整控制信號最優化損失函數
3. 將控制信號輸入到系統
4. 等到下一個時間點,在新的狀態重復步驟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM