控制算法之二:LQR控制

1.前言

线性二次调节(Linear Quadratic Regulator,LQR)是一种经典的现代控制理论方法,用于构造线性系统的最优控制器,它的目标是在控制系统的动态过程中,尽可能减少误差能耗。LQR 的目标是通过最优控制输入,使系统状态最小化某一代价函数(即性能指标),以实现最佳控制。

2.应用场景

LQR 广泛用于工业控制、自动驾驶、航天器姿态控制、无人机控制等场景,特别是那些需要平衡控制精度和能量消耗的系统。

3.系统方程

对于一个系统\dot{x} = Ax + Bu,假设设计状态反馈控制器 u = -Kx,将控制输入带入系统方程中,则可以得到: 

\dot{x} = (A - BK) x = A_{mex} x......................................................................................................(1)

由于让系统稳定的条件是矩阵^{A_{mex}}特征值的实部全为负的,其实设计一个控制律使系统稳定并不难,我们可以随便找几个具有负实部的特征值,从而得到系统的特征方程,然后利用待定系数,从而得到K值,利用这种方法,我们其实可以得到好多控制量。但是,如果我们想得到一个好的或者最优的控制量,那怎么办呢?

这里,就引出了代价函数的定义:

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

其中,Q 和 R 是两个对角参数矩阵,分别决定了状态向量 x 和输入向量 u 的重要性。显然,J是一个二次型函数,这也是LQR中“Q”的由来

4. 代价函数的意义

考虑一个双变量系统,即x = \begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}, 则控制器设计为u = \begin{bmatrix} k{_{1}} & k{_{2}} \end{bmatrix} * \begin{bmatrix} x{_{1}}\\ x{_{2}} \end{bmatrix} = -k_{1}* x_{1}-k_{2}* x_{2}

假设Q = \begin{bmatrix} q_{1}& 0\\0 & q_{2} \end{bmatrix}R = r, 则 代价函数可以写成:

J = \int_{0}^{\infty } (q_{1}x_{1}^2{}+q_{2}x_{1}^2{}+ru^{2})dt...............................................................................................(3)

如果令q_{1}>q_{2}>r,则状态变量x{_{1}}在代价函数的占比最大,x{_{1}}的收敛速度较快;反之,r>q_{1}>q_{2},则说明u的占比最大,如果想要使代价函数最小,则控制量需要最小,这也就意味着更加节省能量。

接下来,就是如何来确定K

5.LQR控制器的设计

将控制律 u = -Kx 代入(2),可得代价函数:

J = \int_{0}^{\infty }[x^{T}(Q+K^{T}RK)x]dt...............................................................................................(4)

定义一个常量对称矩阵P = P^{T} > 0,且矩阵满足:

\frac{\mathrm{d} }{\mathrm{d} x}(x^{T}Px) = -x^{T}(Q+K^{T}RK)x.........................................................................................(5)

由式(4)和(5)可得:

J =- \int_{0}^{\infty }[\frac{\mathrm{d} }{\mathrm{d} x}(x^{T}Px)]dt = -(x^{T}Px|_{\infty }-x^{T}Px|_{0 }) =x^{T}(0)Px(0)...............................(6)

所以,由(6)可知,代价函数的大小只与系统的初始状态和P有关,若想使代价函数最小,也就是使P最小。那么就转换成为求P的最小值。

将式子(5)进行展开,可得:

\dot{x}^{T}Px+{x}^{T}P\dot{x}+{x}^{T}Qx+{x}^{T}{K}^{T}RKx = 0........................................................................(7)

将式(1)代入,可得:

x^{T}A_{mex}^{T}Px + x^{T}PA_{mex}x+ x^{T}Qx+ x^{T} K^{T}RKx=0.....................................................(8)

化简可得:

x^{T}(A_{mex}^{T}P+P A_{mex}+Q+ K^{T}RK)x=0........................................................................(9)

A_{mex} = A-BK代入,若要式(9)成立,那么则有

A^{T}P+P A+Q+ K^{T}RK-PBK-K^{T}B^{T}P=0.....................................................(10)

在这里,我们取

K=R^{-1}B^{T}P..........................................................................................................................(11)

注意,关于这里K的取值,由于时间关系,本人也没去研究,后续如果有时间再进行补充。(在网上也看到部分关于K的推导过程,但是本人感觉有待商榷,所以就没有借鉴)

然后将(11)代入(10)中,最后可得:

A^{T}P+PA+Q-PBR^{-1}B^{T}P = 0................................................................................(12)

上式被称为连续时间Algebraic Riccati Equation (ARE)或者Riccati方程。ARE是一个矩阵二次方程,对于给定的(A,B,Q,R)可以解出辅助矩阵P。之后,优化反馈控制器的K就可通过式(11)得出。

6.LQR总结

(1)根据系统的状态空间模型,确定A,B,C,D;

(2)设计参数矩阵Q,R;

(3)根据式(12)Riccati方程计算出辅助矩阵P;

(4)根据式(11)计算出K,根据u = -Kx 设计出控制器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值