大白話之無人車的模型預測控制方法
最近在讀一本關於模型預測控制的書(感興趣的同志請參考文末參考文獻),在最開始作者舉了一個日常生活的例子,用生動的語言給讀者科普了模型預測控制的基本思想。原力君今天也借用這個例子,用大白話說一下模型預測控制方法的基本思路。
我們每天上班之後,做到工位上,通常要做的第一件事情就是對今天的工作進行規劃。假設上班時間是上午9:00到下午5:00,則有人喜歡早9:00的時候就提前規劃好9:00-10:00,10:00-11:00,。。。。。。,16:00-17:00每個小時要做的事情。要求比較嚴格的公司,可能會將計劃精細到半小時。這裡,計劃的精細程度,即一小時還是半小時為一個階段,在控制領域稱之為取樣時間。
假設現在是9:00,我們任務小組要完成一個無人車系統的模型預測控制模擬。按照習慣,小組要在9:00制定出接下來8個小時的工作計劃,精細到每個小時我們幹什麼。
但是,9:00開始的時候,我們只是按照第1個小時的計劃進行工作。在接下來的時間裡,小組每隔一個小時會根據前一個小時計劃的完成情況,更新工作計劃,每次都對後面8個小時的工作進行重新規劃。
在9:00制定計劃的時候,小組已經對整個任務有了基本的瞭解,任務的輸入輸出,任務的目標,用來完成任務的資源等。假設任務分為建模、設計、模擬、實現四塊內容。
完成這些工作需要很多因素,比如我們要投入多少資源,團隊組合是否合理,是否需要其他人的幫助等等,這些因素都是完成計劃的控制量。通過調整這些控制量,我們可以更好地完成任務。
另外,任務小組也會受到一些條件的限制。比如小組成員對設計問題的理解程度有限,計算機軟硬體工程水平不夠好等。這些都是做計劃是需要考慮的約束。
任務要求、任務的控制量、團隊的約束等這些先驗因素都會對任務規劃產生重要的影響。
考慮以上各種因素後,我們根據設計任務要求對接下來8個小時的工作進行規劃,給出每個小時要完成什麼工作。在規劃時,我們需要考慮自身能力約束,給出一個最好的方法來完成目標。最後,規劃給出的結果是從9:00到17:00每個小時我們需要完成的工作。目前來看,如果每個小時都能很好的完成規劃好的工作,任務就可以完成。
接下來,我們開始按照任務規劃執行第1個小時的任務。到10:00的時候,小組會討論目前任務的完成情況。可能由於某個成員有急事外出,或者我們對無人車模型認識不夠等導致我們沒有完成規劃的任務。
不管怎樣,在10:00的時候,我們會對9:00-10:00之間的工作情況進行評估,重新制定接下來8個小時的工作計劃。規劃的結果可能不變,也可能進行了調整,但是規劃的最終目的是為了更好地完成任務。
接下來,我們按照最新的工作計劃,執行第1個小時的計劃任務。同樣的,在11:00的時候,我們會對任務完成情況進行重新評估,然後制定接下來8個小時的計劃。
如此反覆,不停的制定計劃,工作,評估,重新制定計劃,直到整個任務圓滿完成。
在制定工作計劃的過程中,有三個關鍵因素:第一個是預測未來可以做什麼(基於模型),第二個是評估已經完成了什麼(輸出測量),第三個是執行規劃的任務(實現控制)。在上面的例子中,我麼可以看到:
1)我們每次都是規劃未來8個小時的工作,這裡8個小時是一個固定的數字。做規劃時,如果感覺對任務沒有太多把握,可以改成2個小時,或者4個小時;如果對任務非常瞭解,那可以改成10個小時,或者24個小時。
2)我們需要知道目前任務的完成情況,只有瞭解了目前的狀態,才能去規劃未來需要做什麼
3)我們綜合考慮團隊能力水平、任務完成情況、不可控因素等,給出未來8小時的最好的工作安排。隨著任務的進行,我們每個1個小時,對計劃進行滾動規劃,保證規劃的任務可完成,且實時更新。
上面講的做任務規劃時候用的思路,其實就包含了模型預測控制(model predictive control,MPC)的基本思想:
1)對控制系統進行建模,這個模型儘可能的利用所有已知資訊,儘可能的精確,但是允許有建模誤差的存在。
2)選定一個時間窗,比如規劃未來10秒的控制序列,時間窗定位10秒
3)根據模型和期望的狀態軌跡,綜合考慮控制系統的控制約束、狀態約束、效能約束等,利用優化的方法,得到一組最優的控制序列。這組控制序列,可以讓根據模型算出的未來的軌跡偏離期望軌跡的程度最小,同時這組控制序列可以讓系統的狀態等符合約束。
4)選擇控制序列的第1個元素,作為控制量輸入給被控物件
5)測量被控物件的輸出,然後與利用模型計算出來的這個時刻的輸出比較,利用兩者之間的誤差,對模型推演出來的輸出序列進行修正。
6)利用修正後的預測輸出,以及當前的期望軌跡,重新進行優化,得到下一個10秒的最優控制序列。
7)如此反覆,直到完成控制任務。
上面7條,包含了模型預測控制的幾個關鍵功能模組:參考軌跡、滾動優化控制、模型預測、反饋校正。
參考資料: