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