irpas技术客

LQR控制算法的浅析_路在脚下,梦在心里_lqr控制算法

网络 8207

目录

前言

一、知识点补充

? ? ? ? 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://·/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),一起在控制的海洋中前进!!!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #lqr控制算法 #LQR控制算法的浅析