LQR控制算法的浅析
目錄
前言
一、知識(shí)點(diǎn)補(bǔ)充
? ? ? ? 1、拉格朗日乘子法
? ? ? ? 2、積分中值定理
? ? ? ? 3、向前歐拉法,向后歐拉法,中點(diǎn)歐拉法
????????4、向量的導(dǎo)數(shù)
? ? ? ? 5、矩陣求逆引理(記住就好,推導(dǎo)見鏈接)
二、連續(xù)時(shí)間下的LQR推導(dǎo)
? ? ? ? 1、系統(tǒng)狀態(tài)方程
? ? ? ? 2、推導(dǎo)過程
????????3、例子-------手平衡小桿? ??
????????3.1、系統(tǒng)模型
????????3.2、simulink模型仿真
????????????????3.2.1、開環(huán)情況(k1=k2=0,初值設(shè)置為5)
? ? ? ? ? ? ? ? 3.2.2、閉環(huán)情況
? ? ? ? ? ? ? ? 仿真結(jié)果:
三、離散時(shí)間下的LQR推導(dǎo)(重要)
? ? ? ? 1、狀態(tài)方程離散化
? ? ? ? 2、離散LQR的解法
總結(jié)
???
前言
這里的部分內(nèi)容和之前的轉(zhuǎn)載文章有相同的地方LQR控制算法及matlab/simulink仿真_陌路兩立的博客-CSDN博客_lqr matlab,寫這篇文章的目的是為了增強(qiáng)自己對(duì)LQR控制算法的理解。
一、知識(shí)點(diǎn)補(bǔ)充
? ? ? ? 1、拉格朗日乘子法
? ? ? ? ? ? ? ? 假設(shè)需要求極值的目標(biāo)函數(shù)為,約束條件為。設(shè),定義一個(gè)新函數(shù),則用偏導(dǎo)數(shù)方法列出方程:
? ? ? ? 2、積分中值定理
? ? ? ? ? ? ? ? 若函數(shù)在閉區(qū)間上連續(xù),則在積分區(qū)間上至少存在一個(gè)點(diǎn),使得下式成立:
其中,,滿足:。
? ? ? ? 3、向前歐拉法,向后歐拉法,中點(diǎn)歐拉法
? ? ? ? ? ? ? ? 向前歐拉法:;
? ? ? ? ? ? ? ? 向后歐拉法:;
? ? ? ? ? ? ? ? 中點(diǎn)歐拉法:。
????????4、向量的導(dǎo)數(shù)
????????????????
? ? ? ? ? ? ? ? ? ? ?參考:? ?向量的導(dǎo)數(shù)_影子飛揚(yáng)的博客-CSDN博客_向量的導(dǎo)數(shù)
? ? ? ? 5、矩陣求逆引理(記住就好,推導(dǎo)見鏈接)
????????
? ? ? ? ? ? ? ? ? ? 參考:矩陣求逆引理(matrix inversion lemma)_UESTC_C2_403的博客-CSDN博客_矩陣求逆引理
二、連續(xù)時(shí)間下的LQR推導(dǎo)
? ? ? ? 1、系統(tǒng)狀態(tài)方程
? ? ? ? ? ? ? ? 開環(huán):;
? ? ? ? ? ? ? ? 閉環(huán):,設(shè)計(jì),可以得到,通過改變可以改變的特征值從而控制系統(tǒng)表現(xiàn)。
? ? ? ? 2、推導(dǎo)過程
? ? ? ? ? ? ? ? 系統(tǒng)的狀態(tài)發(fā)生變化的原因是在上一個(gè)狀態(tài)時(shí),有外界干擾或者系統(tǒng)的輸入發(fā)生變化引起的,忽略外界干擾的影響,這里引入cost function(能量函數(shù),損失函數(shù)):
其中,Q和R均為自己設(shè)計(jì)的半正定矩陣。我們的目的就是通過設(shè)計(jì)Q和R使得能量函數(shù)最小。?
能量函數(shù)的理解:
????????? ? ? ? ? ?Q=,能量函數(shù)前面部分可以寫成,當(dāng)時(shí),Q表現(xiàn)為懲罰;R越大,u對(duì)J的影響越大,希望J越小,可以使得u減小。
假設(shè)Q=,當(dāng)?時(shí),J將會(huì)變得非常大,對(duì)J有較大的影響,為了使得J減小,只能希望快速收斂。
? ? ? ? ? ? ? ? 將控制器?代入到能量函數(shù)中:
? ? ? ? ? ? ? ? ? ? ?
?????????????????為了找到,假設(shè)存在一個(gè)常量矩陣,使得
????????????????????????
? ? ? ? ? ? ? ? 隨后得到:
???????????????????
?????
? ? ? ? ? ? ? ? 將代入到上式中得:
? ? ? ? ? ? ? ? 為了使上式恒成立,我們可以得到:
????????????????
? ? ? ? ? ? ? ? 通過令?,上式可以化簡(jiǎn)為:
該式就是著名的Riccati方程。其中??是系統(tǒng)矩陣已知,選取合適的?,可以解出?,從而得到,控制器。
注:k的由來
????????3、例子-------手平衡小桿? ??
????????3.1、系統(tǒng)模型
???????????????下面是B站大佬DR_CAN對(duì)LQR控制算法的講解(知識(shí)的搬運(yùn)工)。
? ? ? ? ? ? ? ?運(yùn)動(dòng)學(xué)方程:
????????????????
其中:?表示桿子的長(zhǎng)度,?表示重力加速度,?表示桿子與垂直方向的夾角,?表示手的移動(dòng)。
? ? ? ? ? ? ? 通過令?? 可以得到:
? ? ? ? ? ? ? 令??得:
????????3.2、simulink模型仿真
????????????????3.2.1、開環(huán)情況(k1=k2=0,初值設(shè)置為5)
?
? ? ? ? ? ? ? ? 3.2.2、閉環(huán)情況
? ? ? ? ? ? ? ? ? ? ? ? LQR求k代碼:? ? ? ? ? ??
%% 系統(tǒng)參數(shù) A=[0 1;10 0]; B=[0;-1];%% 大Q情況 Q=[100 0;0 1]; R=.01; K=lqr(A,B,Q,R);%% 大R情況 % Q=[1 0;0 1]; % R=100; % K=lqr(A,B,Q,R);%% 求解出來 k1=K(1,1); k2=K(1,2);? ? ? ? ????????????????simulink模型:
?
?
?大R情況:k1=-20.000499987499590,k2=-6.325424884938331;
?大Q情況:k1=-1.104987562112088e+02,k2=-17.916403445513760;
? ? ? ? ? ? ? ? 仿真結(jié)果:
?
?
?????????????????結(jié)論:通過選取不同的Q和R可以得到不同的系統(tǒng)表現(xiàn),其中大Q決定的是系統(tǒng)的狀態(tài)能否快速達(dá)到收斂效果,大R決定的是系統(tǒng)的能耗(輸入)。
參考:?1、視頻鏈接:https://www.bilibili.com/video/BV1RW411q7FDshare_source=copy_web
? ? ? ? ? ? 2、LQR控制算法及matlab/simulink仿真_陌路兩立的博客-CSDN博客_lqr matlab
三、離散時(shí)間下的LQR推導(dǎo)(重要)
? ? ? ? 1、狀態(tài)方程離散化
? ? ? ? ? ? ? ? 離散之后最重要的一個(gè)就是不可以使用微分方程描述系統(tǒng)了。
? ? ? ? ? ? ? ? 動(dòng)力學(xué)方程:,對(duì)動(dòng)力學(xué)方程兩邊同時(shí)求積分得:
其中,這里我們需要知道是?是 ?維的,?稱為采樣周期。
使用到的知識(shí)點(diǎn):狀態(tài)??去??使用的是中間歐拉法,控制輸入??去??使用的是向前歐拉法(因?yàn)槲覀儫o法知道)。
? ? ? ? 2、離散LQR的解法
? ? ? ? ? ? ? ? step 1:和連續(xù)時(shí)間下的LQR相同,首先引入能量函數(shù)(cost function):
? ? ? ? ? ? ? ? step 2:引入約束函數(shù):
注:為什么cost function只有,卻沒有呢?
答:如果改為的話,可是約束函數(shù)只能覆蓋,所以cost function只能為。
? ? ? ? ? ? ? ? step 3:拉格朗日乘子法求解cost function:
? ? ? ? ? ? ? ? ? ? ? ? 首先將約束函數(shù)寫為:
????????
? ? ? ? ? ? ? ? ? ? ? ? 然后構(gòu)造新函數(shù):? ? ? ?
? ? ? ? ? ? ??
其中?。
注:注意這里的維度問題,?是維的。
? ? ? ? ? ? ? ? ? ? ? ? 接下來對(duì)構(gòu)造的函數(shù)求偏導(dǎo):
? ? ? ? ? ? ? ? 首先對(duì)??求偏導(dǎo):
????????????????
????????????????綜上所述:
? ? ? ? ? ? ? ? 然后對(duì)??求導(dǎo):
? ? ? ? ? ? ? ? 最后對(duì)求導(dǎo):
????????????????
? ? ? ? ? ? ? ? 綜上所述:
其中,。
? ? ? ? ? ? ? ? step 4:遞推式
? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)?時(shí):
通過對(duì)比?和可以推出:
其中?(Riccati方程)。
可以得到:
其中??認(rèn)為已知。
LQR控制實(shí)際為:
首先,取矩陣??初值為,然后,代入離散時(shí)間下的Riccati方程?中迭代,求出矩陣??(一般只需要迭代幾十次,?就會(huì)收斂),最后,將??代入到??中得到?。
總結(jié)
這里是我自己學(xué)LQR控制算法的推導(dǎo)過程,數(shù)學(xué)原理很大,總結(jié)起來就是,通過選取Q和R,然后將A,B,Q,R代入LQR控制算法中(A,B是系統(tǒng)的狀態(tài)矩陣,認(rèn)為是已知的),從而得到K,然后將K代入到反饋控制輸入?中,從而得到控制輸入,其中Q決定的是收斂速度,R決定的是能耗。因此,我們需要通過選擇合適的Q和R使得cost function達(dá)到最優(yōu)。歡迎大家來討論指正(我的QQ1012154405),一起在控制的海洋中前進(jìn)!!!
總結(jié)
以上是生活随笔為你收集整理的LQR控制算法的浅析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个40岁老程序员的2022年中总结 -
- 下一篇: 台式电脑主机前面耳机插孔没声音的解决方法