当前位置:   article > 正文

对于线性二次型调节器(LQR)的一些理解_lqr算法 p矩阵如何求得

lqr算法 p矩阵如何求得

最近在研究两轮机器人的平衡控制算法,了解了LQR的一些知识,再加上和研究生学长聊了聊,有一些更深层的理解。LQR的原理网上随便一找就有很详细的说明,本来不想再写一遍了,但是觉得不写出来又讲不清楚。还是再啰嗦一遍...

LQR算法原理

首先,需要建立系统的线性时不变(LTI)动态模型。这通常表示为状态空间方程,其中包含状态向量、控制输入和系统动态矩阵。

\dot{x}(t)=Ax(t)+Bu(t)

我们再设计一个线性反馈控制器:

u(t)=-Kx(t)

则此时的状态方程可以表示为:

\dot{x}(t)=Ax(t)-BKx(t)=(A-BK)x(t)=A_{cl}x(t)

接着我们定义一个常见的二次型成本函数:

J=\int_{0}^{\infty}(x^{T}Qx+u^{T}Ru)dt

其中,Q 和R 分别是正定对称矩阵,分别表示状态和控制输入的权重,即状态和输入对于成本函数的影响程度。

定义一个辅助常量矩阵P,P满足:

\frac{\mathrm{d} }{\mathrm{d} x}x^{T}Px=-(x^{T}Qx+u^{T}Ru)

代入成本函数可得:
J=\int_{0}^{\infty}(x^{T}Qx+u^{T}Ru)dt =-\int_{0}^{\infty}\frac{\mathrm{d} }{\mathrm{d} t}x^{T}Pxdt

=-(x^{T}Px\mid _{0}-x^{T}Px\mid_{\infty})

                                                      =x^{T}(0)Px(0)

显然地,代价函数只与矩阵P 和系统的初始状态有关,即找出最小的P就能让代价函数J 最小。现对P的定义式中左边的微分项进行展开:

\frac{\mathrm{d} }{\mathrm{d} x}x^{T}Px=-(x^{T}Qx+u^{T}Ru)

\dot{x}^{T}Px+x^{T}P\dot{x}+x^{T}Qx+x^{T}K^{T}RKx=0

\dot{x}^{T}(A_{cl}^{T}P+PA_{cl}+Q+K^{T}RK)x=0

该式子要求对于任意状态下的x(t)都满足,所以式子

A_{cl}^{T}P+PA_{cl}+Q+K^{T}RK\equiv 0

可得:

A^{T}P+PA+Q+K^{T}RK-K^{T}B^{T}P-PBK=0

我们定义:K=R^{-1}B^{-1}P,代入上式,可得:

A^{T}P+PA+Q-PBR^{-1}B^{T}P=0

由此,我们可以根据给定的(A,B,Q,R)求出辅助矩阵P,继而求出线性反馈控制器K。

感想与困惑

那么(A,B,Q,R)是怎么得出来的呢?结合两轮机器人这个内容,我们根据机器人运动特点建立动力学模型,根据欧拉—拉格朗日方程求出系统中各个状态量的关系。根据:

\dot{x}(t)=Ax(t)+Bu(t)

不难发现,A、B(系统动态矩阵)两个矩阵就是完全根据机器人系统中各个运动部件的参数而确定的。也就是说,不管实际运动过程中,机器人的姿态如何,只要机器人各运动部件的尺寸不变,A、B两个系统动态矩阵就是确定不变的。那么回顾K的求解过程,唯一会对K产生影响的就是两个权重矩阵P和Q了。

想到这里我不禁想问,在用LQR算法实现平衡控制时,K不变或者说一个机器人型号对应一个K这一特点,会对平衡控制产生什么影响吗?

我们课题组研究的两轮机器人不同于两轮平衡车,在车架平台上加装了两个自由度的机械臂。机械臂在完成指定动作的同时,也会参与到动态平衡控制当中去。

简图如下:

标题

这就和往常的平衡控制情况不太一样了。和研究生学长交流下来,他跟我说采用LQR是很难实现这种多自由度的平衡控制的,但是没有给我一个明确的解释。我之前觉得只要角度采集更新得足够快,就可以实现平衡控制,但是现在也有些怀疑。我也发现,另一种叫做MPC的算法也在平衡控制中比较常用。过几天看了MPC之后再来分享一下我的理解。

希望有大佬可以解答我的困惑。或者有感兴趣的同学可以跟我交流探讨,说不定灵感也就来了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/369316
推荐阅读
相关标签
  

闽ICP备14008679号