<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Apollo代碼學習—MPC與LQR比較

YB7m_Apollo_Dev ? 來源:lp ? 2019-03-22 17:08 ? 次閱讀

LQR (線性二次調解器)理論是現代控制理論中發展最早也最為成熟的一種狀態空間設計法。特別可貴的是,LQR可得到狀態線性反饋的最優控制規律,易于構成閉環最優控制。

LQR 最優設計是指設計出的狀態反饋控制器 K 要使二次型目標函數 J 取最小值,而 K 由權矩陣 Q 與 R 唯一決定,故此 Q、R 的選擇尤為重要。

MPC(模型預測控制)是一種先進的過程控制方法,在滿足一定約束條件的前提下,被用來實現過程控制,它的實現依賴于過程的動態模型(通常為線性模型)。

在控制時域(一段有限時間)內,它主要針對當前時刻進行優化,但也考慮未來時刻,求取當前時刻的最優控制解,然后反復優化,從而實現整個時域的優化求解。

本文由社區開發者——呂伊鵬撰寫,對MPC與LQR進行了較為詳細的比較,希望這篇文給感興趣的同學帶來更多幫助。

Apollo中用到了PID、MPC和LQR三種控制器,其中,MPC和LQR控制器在狀態方程的形式、狀態變量的形式、目標函數的形式等有諸多相似之處,因此結合自己目前了解到的信息,將兩者進行一定的比較。

MPC(Model Predictive Control,模型預測控制)和LQR(Linear–Quadratic Regulator,線性二次調解器) 在狀態方程、控制實現等方面,有很多相似之處,但也有很多不同之處,如工作時域、最優解等,基于各自的理論基礎,從研究對象、狀態方程、目標函數、求解方法等方面,對MPC和LQR做簡要對比分析。

本文主要參考內容:

【1】龔建偉,姜巖,徐威.無人駕駛車輛模型預測控制[M].北京理工大學出版社, 2014.

【2】Model predictive control-Wikipedia.

【3】Linear–quadratic regulator-Wikipedia.

【4】Inverted Pendulum: State-Space Methods for Controller Design.

【5】王金城. 現代控制理論[M]. 化學工業出版社, 2007。

LQR的研究對象是現代控制理論中以狀態空間方程形式給出的線性系統。MPC的研究對象可以是線性系統,也可以是非線性系統,只不過為了某些需求,如時效性,計算的便捷,操控性等,一般會將非線性系統轉換為線性系統進行計算。非線性系統的線性化可參考上一篇文章。

Apollo中,LQR和MPC控制器都選用的單車動力學模型作為研究對象,單車動力學模型為非線性系統,但LQR和MPC控制器的目的是為了求最優控制解,在具體的優化求解時,均通過線性化方法將狀態方程轉化為線性方程進行求解,所以,可以說Apollo中LQR和MPC控制器的研究對象均為線性系統。

LQR的狀態方程多以微分方程的形式給出,如:

是一個連續線性系統,在計算過程中需要轉換為如公式3的離散線性系統。

MPC的狀態方程可以為線性系統,可以為非線性系統,非線性系統形如下:

線性系統如公式3所示:

但LQR和MPC在計算求解時基本都是基于離散線性方程計算的。公式1可以很方便的轉化為公式3的形式。

按照維基百科的說法:

LQR在一個固定的時域上求解,且一個時域內只有一個最優解,而MPC在一個逐漸消減的時域內(in a receding time window)求解最優解,且最優解經常更新。

可以結合MPC的滾動優化,以及圖1進行理解:

圖1 MPC和LQR的工作時域

針對同一工作時域[t,t+N],LQR在該時域中,有唯一最優控制解u?(t),而MPC僅在t時刻有最優解u?(t),但它會計算出一個控制序列U(t) ,并僅將序列的第一個值u?(t)作為控制量輸出給控制系統,然后在下一采樣時間結合車輛當前狀況求取下一個最優控制解u?(t+1),這就是MPC所謂的滾動優化。

這么做的目的是為了使控制效果在一定時間內可期,并且能根據控制效果盡早調整控制變量,使實際狀態更切合期望狀態。

此外,LQR的工作時域可以拓展到無限大,即可以求取無限時域的最優控制解。而MPC只針對有限時域。

優化求解問題一般離不開目標函數的設計。

LQR的目標函數的一般形式為:

其中,終端狀態,

正定的終端加權矩陣,x為狀態變量,多為各種誤差,u為控制變量,Q為半正定的狀態加權矩陣,R為正定的控制加權矩陣,實際應用中,Q、R多為對角矩陣。

MPC的目標函數的一般形式為:

其中,

從形式上可以看出,LQR的目標函數為積分形式,MPC的目標函數為求和形式,但其實都是對代價的累計。

兩者第一部分均為終端代價函數,當系統對終端狀態要求極嚴的情況下才添加,一般情況下可省略。

跟蹤代價,表示跟蹤過程中誤差的大小,控制代價,表示對控制的約束或要求等。

正如工作時域所述,針對同一工作時域,LQR有唯一最優控制解,也就是在該控制周期內,LQR只進行一次計算。

而MPC滾動優化的思想,使其給出該時域內的一組控制序列對應不同的采樣時刻(采樣周期和控制周期不一定相同),但是只將該序列的第一個值輸出給被控系統,作為該時刻的最優控制解。

因此,對于工作時域[t,t+N],LQR只有唯一解,對于線性MPC,本質是凸優化問題,只有唯一解;但非線性MPC,可能會有N個local optimal。

最優控制解的求取多基于目標函數進行,取線性約束下的目標函數的極值為最優控制解。對于系統為線性,目標函數為狀態變量和控制變量的二次型函數的線性二次性問題,最優解具有統一的解析表達式。

Apollo中的MPC將優化問題轉化為二次規劃問題,利用二次規劃求解器進行求解。橫向控制中用的是LQR調節器,它通過假設控制量u(t)不受約束,利用變分法求解。

此外,LQR對整個時域進行優化求解,且求解過程中假設控制量不受約束,但是實際情況下,控制量是有約束的。

而MPC通常在比整個時域更小的時間窗口中解決優化問題,因此可能獲得次優解,且對線性不作任何假設,它能夠處理硬約束以及非線性系統偏離其線性化工作點的遷移,這兩者都是MPC的缺點。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 線性系統
    +關注

    關注

    0

    文章

    41

    瀏覽量

    14560
  • Apollo
    +關注

    關注

    5

    文章

    326

    瀏覽量

    18294
  • LQR
    LQR
    +關注

    關注

    1

    文章

    6

    瀏覽量

    3107

原文標題:開發者說 | Apollo代碼學習—MPC與LQR比較

文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LQR線性二次調制系統的記錄

    LQR 控制本blog主要記錄LQR 線性二次調制系統的,學習教程為兩個B站的教學視頻。狀態空間4-LQR控制 MATLAB官方教程視頻鏈接: [原創翻譯]狀態空間4-
    發表于 08-30 08:00

    如何對Apollo2.5 CANBUS進行全面調試?

    前言:CANBUS是Apollo需要根據你的底盤寫代碼的地方,感覺也是Apollo最難調試的部分。這部分首先要選好CAN卡,因為不是Apollo推薦的CAN卡,驅動程序和對應接口,可能
    發表于 08-30 06:02

    Apollo Heritage版音頻接口附帶的插件

     Universal Audio在去年推出的Apollo Heritage版音頻接口提供了5個或10個獲獎的UAD插件,包括Teletronix?、Fairchild?、Pultec?、Helios
    發表于 01-24 08:59

    如何學習MPC5744P CAN總線?

    如何學習MPC5744P CAN總線?
    發表于 02-07 08:58

    MPC8240與MPC106的性能比較

    This paper discusses some of the major performance differences between the MPC8240Õsmemory
    發表于 07-01 12:28 ?8次下載

    MPC5XX系列芯片比較

    MPC5XX系列芯片性能比較
    發表于 05-10 16:36 ?38次下載
    <b class='flag-5'>MPC</b>5XX系列芯片<b class='flag-5'>比較</b>

    一級倒立擺的LQR控制與遺傳算法下的LQR控制算法

    LQR的算法與遺傳算法下的LQR算法相結合,得到最優化下的轉態空間反饋矩陣
    發表于 10-28 11:41 ?2次下載

    MPC82G516 MCU的LCM示例代碼

    MPC82G516 MCU的LCM示例代碼分享
    發表于 07-01 10:34 ?0次下載
    <b class='flag-5'>MPC</b>82G516 MCU的LCM示例<b class='flag-5'>代碼</b>

    MPC82系列MCU的ADC(模數轉換)采樣代碼

    MPC82系列MCU的ADC(模數轉換)采樣代碼文件下載
    發表于 07-01 10:32 ?0次下載
    <b class='flag-5'>MPC</b>82系列MCU的ADC(模數轉換)采樣<b class='flag-5'>代碼</b>

    MPC82系列MCU的鍵掃描和斷電示例代碼

    MPC82系列MCU的鍵掃描和斷電示例代碼免費下載。
    發表于 07-01 10:28 ?0次下載
    <b class='flag-5'>MPC</b>82系列MCU的鍵掃描和斷電示例<b class='flag-5'>代碼</b>

    MPC82系列MCU的PCA捕獲模式示例代碼

    MPC82系列MCU的PCA捕獲模式示例代碼免費下載。
    發表于 07-01 10:27 ?0次下載
    <b class='flag-5'>MPC</b>82系列MCU的PCA捕獲模式示例<b class='flag-5'>代碼</b>

    MPC82G516 MCU的串行UART中斷示例代碼

    MPC82G516 MCU的串行UART中斷示例代碼
    發表于 06-30 17:32 ?0次下載
    <b class='flag-5'>MPC</b>82G516 MCU的串行UART中斷示例<b class='flag-5'>代碼</b>

    MPC82G516 MCU的串行UART示例代碼

    MPC82G516 MCU的串行UART示例代碼
    發表于 06-30 17:24 ?0次下載
    <b class='flag-5'>MPC</b>82G516 MCU的串行UART示例<b class='flag-5'>代碼</b>

    MPC82G516 MCU的ISP函數示例代碼

    MPC82G516 MCU的ISP函數示例代碼免費下載。
    發表于 06-28 17:36 ?0次下載
    <b class='flag-5'>MPC</b>82G516 MCU的ISP函數示例<b class='flag-5'>代碼</b>

    LQR控制算法之最優控制

    LQR算法是最優控制中經典的算法,而且LQR是一個應用較多的控制算法,所以在這里我以最優控制為起點介紹LQR控制算法。 注意LQR控制算法的基礎是你要有現代控制理論的基礎,需要知
    的頭像 發表于 05-19 16:33 ?3325次閱讀
    <b class='flag-5'>LQR</b>控制算法之最優控制
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>