LQR控制算法推导-连续与离散形式

1 前言

线性二次调节(Linear Quadratic Regulator,LQR)是一种经典的控制理论方法,用于设计控制器,使得线性系统在给定的性能指标下表现最优。

LQR的原理基于最小二乘优化问题,它的目标是设计一个状态反馈控制器,以最小化系统的性能指标。

2 连续时间系统

2.1 系统描述

考虑线性时不变系统,用状态空间形式表示:

{ x ˙ = A x + B u y = C x + D u (1) \left\{\begin{array}{llllllllll}\dot{x}=Ax+Bu\\ y=Cx+Du\end{array}\right. \tag{1} {x˙=Ax+Buy=Cx+Du(1)
其中 x x x是系统的状态向量, u u u是系统的控制输入, y y y是系统的控制输出, A A A是系统状态矩阵,表示状态量之间的变化关系, B B B是输入矩阵,表示控制输入与状态变量的关系, C C C是输出矩阵,表示状态变量与输出之间的关系, D D D是传递矩阵,表示控制输入与输出之间的关系。

2.2 状态反馈控制器

LQR的目标是找到一个状态反馈控制器,根据状态反馈量 x x x获得控制输入 u u u,即

u = − K x (2) u=-Kx \tag{2} u=Kx(2)

其中 K K K是控制器增益矩阵。

将式(2)代入式(1)的状态方程,可以得到:
x ˙ = A x − B K x = ( A − B K ) x = A c x (3) \dot{x}=Ax-BKx=(A-BK)x=A_c x \tag{3} x˙=AxBKx=(ABK)x=Acx(3)

因此通过选择合适的控制器增益矩阵 K K K,使式(3)的闭环系统矩阵 A c A_c Ac的特征值的实部均为负数,从而实现系统稳定控制。

2.3 代价函数

为了设计最优的控制器增益矩阵 K K K,LQR定义代价函数:
J = ∫ 0 ∞ x T Q x + u T R u   d t (4) J=\int_{0}^{\infty}x^{T}Q x+u^{T}{R u}\,\mathrm{d}t \tag{4} J=0xTQx+uTRudt(4)
其中 Q Q Q是状态向量 x x x的半正定加权矩阵, R R R是控制输入 u u u的正定加权矩阵。加权矩阵中某一元素数值越大,则其对应状态量或输入量越重视。

目标是找到一个最优的控制器增益矩阵 K ∗ K^* K,使代价函数 J J J达到最小值。

2.4 计算推导

将式(2)代入式(4),可以表达为:
J = ∫ 0 ∞ x T ( Q + K T R K ) x d t (5) J=\int_{0}^{\infty}x^{T}(Q+K^TRK)x \mathrm{d}t \tag{5} J=0xT(Q+KTRK)xdt(5)

定义一个常量对称矩阵 P P P P = P T > 0 P=P^T > 0 P=PT>0,假定其满足:
d d t ( x T P x ) = − x T ( Q + K T R K ) x (6) \frac{d}{dt} (x^{T}Px) = -x^{T}(Q+K^TRK)x \tag{6} dtd(xTPx)=xT(Q+KTRK)x(6)

把式(6)展开化简,可以表示为:
x ˙ T P x + x T P x ˙ + x T Q x + x T K T R K x = 0 (7) \dot{x}^T P x + x^T P \dot{x} + x^T Q x + x^TK^TRKx = 0 \tag{7} x˙TPx+xTPx˙+xTQx+xTKTRKx=0(7)

将式(3)代入式(7),有:
x T A c T P x + x T P A c x + x T Q x + x T K T R K x = 0 (8) {x}^T A_c^T P x + x^T P A_c{x} + x^T Q x + x^TK^TRKx = 0 \tag{8} xTAcTPx+xTPAcx+xTQx+xTKTRKx=0(8)

整理后可得:
x T ( A c T P + P A c + Q + K T R K ) x = 0 (9) {x}^T ( A_c^T P + P A_c + Q + K^TRK )x = 0 \tag{9} xT(AcTP+PAc+Q+KTRK)x=0(9)

针对式(9)所示的二次型问题,若式(9)有解,则要求括号内的部分等于0,即:
A c T P + P A c + Q + K T R K = 0 (10) A_c^T P + P A_c + Q + K^TRK = 0 \tag{10} AcTP+PAc+Q+KTRK=0(10)

A c = A − B K A_c = A-BK Ac=ABK代入上式,得到:

A T P + P A + Q + K T R K − P B K − K T B T P = 0 (11) A^T P + PA+ Q+ K^TRK -PBK - K^TB^TP = 0 \tag{11} ATP+PA+Q+KTRKPBKKTBTP=0(11)

K = R − 1 B T P K=R^{-1}B^TP K=R1BTP,则上式可以化简为:
A T P + P A + Q + K T R ( R − 1 B T P ) − P B ( R − 1 B T P ) − K T B T P = A T P + P A + Q + K T B T P − P B R − 1 B T P − K T B T P = A T P + P A + Q − P B R − 1 B T P = 0 (12) A^T P + PA+ Q+ K^TR(R^{-1}B^TP)-PB(R^{-1}B^TP) - K^TB^TP \\ =A^T P + PA+ Q+ K^TB^TP-PBR^{-1}B^TP - K^TB^TP \\ = A^T P + PA+ Q -PBR^{-1}B^TP = 0 \tag{12} ATP+PA+Q+KTR(R1BTP)PB(R1BTP)KTBTP=ATP+PA+Q+KTBTPPBR1BTPKTBTP=ATP+PA+QPBR1BTP=0(12)

式(12)就是连续时间代数Riccati方程,在 A A A B B B Q Q Q R R R已知的情况下,可以求解出矩阵 P P P

2.5 LQR算法

  1. 建立系统状态空间模型,确定 A A A B B B C C C D D D
  2. 选择加权矩阵 Q Q Q R R R
  3. 根据式(12)求解Riccati方程,得到矩阵 P P P
  4. 根据矩阵 P P P计算增益矩阵 K = R − 1 B T P K=R^{-1}B^TP K=R1BTP
  5. 计算控制输入 u = − K x u=-Kx u=Kx

3 离散时间系统

3.1 系统描述

考虑线性时不变离散系统:
{ x t + 1 = A x t + B u t y t = C x t + D u t (13) \left\{\begin{array}{llllllllll} x_{t+1}=Ax_t+Bu_t\\ y_t=Cx_t+Du_t\end{array}\right. \tag{13} {xt+1=Axt+Butyt=Cxt+Dut(13)

3.2 状态反馈控制器

u t = − K t x t (14) u_t=-K_t x_t \tag{14} ut=Ktxt(14)

3.3 代价函数

离散LQR目标函数:
J = ∑ t = 0 N − 1 ( x t T Q x t + u t T R u t ) + x N T Q f x N (15) J=\sum_{t=0}^{N-1}\left(x_t^{{\mathrm{T}}}\mathbf{Q}x_t+u_t^{{\mathrm{T}}}\mathbf{R}u_t \right) + x_N^T Q_f x_N \tag{15} J=t=0N1(xtTQxt+utTRut)+xNTQfxN(15)
其中 Q Q Q是给定的状态加权矩阵, Q f Q_f Qf是最终状态加权矩阵,R是输入加权矩阵,满足 Q = Q T ≥ 0 Q=Q^T \ge 0 Q=QT0 Q f = Q f T ≥ 0 Q_f=Q_f^T \ge 0 Qf=QfT0 R = R T > 0 R=R^T > 0 R=RT>0 N N N是时间范围。

3.4 计算推导

离散系统状态可以表示为:
x 1 = A x 0 + B u 0 x 2 = A x 1 + B u 1 ⋮ x n = A x N − 1 + B u N − 1 (16) x_1 = Ax_0 + Bu_0 \\ x_2 = Ax_1 + Bu_1 \\ \vdots \tag{16}\\ x_n = Ax_{N-1} + Bu_{N-1} x1=Ax0+Bu0x2=Ax1+Bu1xn=AxN1+BuN1(16)
将上式逐个代入,得到:
x 1 = A x 0 + B u 0 x 2 = A 2 x 0 + A B u 0 + B u 1 ⋮ x n = A N x 0 + A N − 1 B u 0 + A N − 2 B u 1 + ⋯ + B u N − 1 (17) x_1 = Ax_0 + Bu_0 \tag{17}\\ x_2 = A^2 x_0 + ABu_0 + Bu_1 \\ \vdots \\ x_n = A^N x_0 + A^{N-1}Bu_0 + A^{N-2}Bu_1 + \cdots + Bu_{N-1} x1=Ax0+Bu0x2=A2x0+ABu0+Bu1xn=ANx0+AN1Bu0+AN2Bu1++BuN1(17)
整理化简:
[ x 0 x 1 ⋮ x N ] = [ 0 ⋯ B 0 ⋯ A B B 0 ⋯ ⋮ ⋮ A N − 1 B A N − 2 B ⋯ B ] [ u 0 u 1 ⋮ u N − 1 ] + [ I A ⋮ A N ] x 0 (18) {\left[\begin{array}{l}{x_{0}}\\ {x_{1}}\\ {\vdots}\\ {x_{N}}\end{array}\right]}={\left[\begin{array}{l l l l l}{0}&{\cdots}&{}&{}\\ {B}&{0}&{\cdots}&{}&{}\\ {A B}&{B}&{0}&{\cdots}\\ {\vdots}&{\vdots}&{}\\ {A^{N-1}B}&{A^{N-2}B}&{\cdots}&{B}\end{array}\right]}{\left[\begin{array}{l}{u_{0}}\\ {u_{1}}\\ {\vdots}\\ {u_{N-1}}\end{array}\right]}+{\left[\begin{array}{l}{I}\\ {A}\\ {\vdots}\\ {A^{N}}\end{array}\right] x_{0}} \tag{18} x0x1xN = 0BABAN1B0BAN2B0B u0u1uN1 + IAAN x0(18)

定义
G = [ 0 ⋯ B 0 ⋯ A B B 0 ⋯ ⋮ ⋮ A N − 1 B A N − 2 B ⋯ B ] G = {\left[\begin{array}{l l l l l}{0}&{\cdots}&{}&{}\\ {B}&{0}&{\cdots}&{}&{}\\ {A B}&{B}&{0}&{\cdots}\\ {\vdots}&{\vdots}&{}\\ {A^{N-1}B}&{A^{N-2}B}&{\cdots}&{B}\end{array}\right]} G= 0BABAN1B0BAN2B0B
H = [ I A ⋮ A N ] H = \left[\begin{array}{l}{I}\\ {A}\\ {\vdots}\\ {A^{N}}\end{array}\right] H= IAAN

则式(18)可以简化为:
X = G U + H x 0 (19) X = GU + Hx_0 \tag{19} X=GU+Hx0(19)

3.4.1 动态规划法

解决多阶段决策过程最优化问题。

3.4.1.1 值函数

定义值函数 V t : R n → R V_t:R^n\to R Vt:RnR,其中 t = ( 0 , … , N ) t=\left(0,\ldots,N\right) t=(0,,N)
V t ( x t ) = min ⁡ u t , . . . , u N − 1 ( ∑ τ = t N − 1 ( x τ T Q x τ + u τ T R u τ ) + x N T Q f x N ) (20) V_t(x_t)=\operatorname*{min}_{u_{t,...,u_{N-1}}}\Bigl(\sum_{\tau=t}^{N-1}(x_{\tau}^TQx_{\tau}+u_{\tau}^TRu_{\tau})+x_N^TQ_fx_N\Bigr) \tag{20} Vt(xt)=ut,...,uN1min(τ=tN1(xτTQxτ+uτTRuτ)+xNTQfxN)(20)
上式表示在t时刻,从状态 x t x_t xt开始的LQR最小代价值。

z = x t z=x_t z=xt V t V_t Vt可以表示为二次型的形式 V t ( z ) = z T P t z V_t(z) = z^T P_t z Vt(z)=zTPtz

t = N t=N t=N时, P N = Q f P_N = Q_f PN=Qf,代价函数为:
V N ( z ) = z T Q f z (21) V_N(z) = z^T Q_f z \tag{21} VN(z)=zTQfz(21)
w = u t w=u_t w=ut,根据动态规划原理,式(8)可以写成如下递归关系式:
V t ( z ) = min ⁡ w ( z T Q z + w T R w + V t + 1 ( A z + B w ) ) (22) V_t(z)=\operatorname*{min}_{w} (z^TQz + w^TRw + V_{t+1}(Az+Bw)) \tag{22} Vt(z)=wmin(zTQz+wTRw+Vt+1(Az+Bw))(22)
其中 z T Q z + w T R w z^TQz + w^TRw zTQz+wTRw t t t时刻产生的代价, V t + 1 ( A z + B w ) V_{t+1}(Az+Bw) Vt+1(Az+Bw)是从 t + 1 t+1 t+1时刻开始产生的最小代价。

提取式(22)中与 w w w无关的项,得到:
V t ( z ) = z T Q z + min ⁡ w ( w T R w + V t + 1 ( A z + B w ) ) (23) V_t(z)=z^TQz + \operatorname*{min}_{w} (w^TRw + V_{t+1}(Az+Bw)) \tag{23} Vt(z)=zTQz+wmin(wTRw+Vt+1(Az+Bw))(23)

上式建立了 V t ( z ) V_t(z) Vt(z) V t + 1 ( z ) V_{t+1}(z) Vt+1(z)之间的递归关系。因此最有控制率 u t u_t ut可以表示为:
u t = a r g min ⁡ w ( w T R w + V t + 1 ( A z + B w ) ) (24) u_t =arg \operatorname*{min}_{w} (w^TRw + V_{t+1}(Az+Bw)) \tag{24} ut=argwmin(wTRw+Vt+1(Az+Bw))(24)

3.4.1.2 求极值

根据上述假设 V t ( z ) = z T P t z V_t(z) = z^T P_t z Vt(z)=zTPtz,则式(24)可以进一步转化为:
u t = a r g min ⁡ w ( w T R w + ( A z + B w ) T P t + 1 ( A z + B w ) ) (25) u_t =arg \operatorname*{min}_{w} (w^TRw + (Az+Bw)^T P_{t+1} (Az+Bw)) \tag{25} ut=argwmin(wTRw+(Az+Bw)TPt+1(Az+Bw))(25)
对式(25)关于 w w w求导,导数为零的点则是极值点:
2 w T R + 2 ( A z + B w ) T P t + 1 B = 0 (26) 2w^TR + 2(Az+Bw)^T P_{t+1} B = 0 \tag{26} 2wTR+2(Az+Bw)TPt+1B=0(26)
进一步推导:
2 w T R + 2 ( A z + B w ) T P t + 1 B = 0 w T R + z T A T P t + 1 B + w T B T P t + 1 B = 0 w T ( R + B T P t + 1 B ) = − z T A T P t + 1 B ( R + B T P t + 1 B ) T w = − B T P t + 1 T A z ( R + B T P t + 1 B ) w = − B T P t + 1 A z w = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A z (27) 2w^TR + 2(Az+Bw)^T P_{t+1} B = 0\\ w^TR +z^T A^T P_{t+1} B +w^T B^T P_{t+1} B = 0 \\ w^T(R+B^T P_{t+1} B) = -z^T A^T P_{t+1} B \\ (R+B^T P_{t+1} B)^T w = - B^T P_{t+1}^T Az \\ (R+B^T P_{t+1} B) w = - B^T P_{t+1} Az \\ w = -(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} Az \tag{27} 2wTR+2(Az+Bw)TPt+1B=0wTR+zTATPt+1B+wTBTPt+1B=0wT(R+BTPt+1B)=zTATPt+1B(R+BTPt+1B)Tw=BTPt+1TAz(R+BTPt+1B)w=BTPt+1Azw=(R+BTPt+1B)1BTPt+1Az(27)

因此,最优控制输入为:
w ∗ = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A z (28) w^* = -(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} Az \tag{28} w=(R+BTPt+1B)1BTPt+1Az(28)

代入式(23),有:
V t ( z ) = z T Q z + w ∗ T R w ∗ + ( A z + B w ∗ ) T P t + 1 ( A z + B w ∗ ) (29) V_t(z)=z^TQz +w^{*T}Rw^* + (Az+Bw^*)^T P_{t+1}(Az+Bw^*) \tag{29} Vt(z)=zTQz+wTRw+(Az+Bw)TPt+1(Az+Bw)(29)

进一步化简:
V t ( z ) = z T Q z + w ∗ T R w ∗ + ( A z + B w ∗ ) T P t + 1 ( A z + B w ∗ ) = z T Q z + w ∗ T R w ∗ + z T A T P t + 1 A z + 2 z T A T P t + 1 B w ∗ + w ∗ T B T P t + 1 B w ∗ = z T Q z + z T A T P t + 1 A z + w ∗ T ( R + B T P t + 1 B ) w ∗ + 2 z T A T P t + 1 B w ∗ = z T ( Q + A T P t + 1 A − A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A ) z (30) \begin{array}{l l l} {{V_{t}(z)}} & {{=}} & {{z^{T}Q z+w^{\ast T}R w^{\ast}+(A z+B w^{\ast})^{T}P_{t+1}(A z+B w^{\ast})}} \\ {{}} & {{=}} & {{z^{T}Q z+w^{\ast T}R w^{\ast}+z^{T}A^{T}P_{t+1}A z+2z^{T}A^{T}P_{t+1}B w^{\ast}+w^{\ast T}B^{T}P_{t+1}B w^{\ast}}} \\ {{}} & {{=}} & {{ z^TQz + z^TA^TP_{t+1}Az + w^{*T}(R+B^TP_{t+1}B)w^* + 2z^TA^TP_{t+1}Bw^* }} \\ {{}} & {{=}} & {{ z^T(Q + A^TP_{t+1}A-A^TP_{t+1}B(R+B^TP_{t+1}B)^{-1}B^TP_{t+1}A)z}} \\ \end{array} \tag{30} Vt(z)====zTQz+wTRw+(Az+Bw)TPt+1(Az+Bw)zTQz+wTRw+zTATPt+1Az+2zTATPt+1Bw+wTBTPt+1BwzTQz+zTATPt+1Az+wT(R+BTPt+1B)w+2zTATPt+1BwzT(Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A)z(30)

则可以得到:
P t = Q + A T P t + 1 A − A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A (31) P_t= Q + A^TP_{t+1}A-A^TP_{t+1}B(R+B^TP_{t+1}B)^{-1}B^TP_{t+1}A \tag{31} Pt=Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A(31)
P t = Q + A T P t + 1 A + A T P t + 1 B K t (32) P_t= Q + A^TP_{t+1}A+A^TP_{t+1}BK_t \tag{32} Pt=Q+ATPt+1A+ATPt+1BKt(32)

3.5 LQR算法

  1. 建立系统状态空间模型,确定 A A A B B B C C C D D D
  2. 选择加权矩阵 Q Q Q Q f Q_f Qf R R R
  3. 确定迭代范围 N N N
  4. 迭代初始值 P N = Q f P_N=Q_f PN=Qf
  5. 循环迭代, t = N , . . . , 1 t=N,...,1 t=N,...,1,根据式(32)计算 P t P_t Pt
  6. 根据矩阵 P t P_t Pt计算增益矩阵 K t = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A K_t=-(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} A Kt=(R+BTPt+1B)1BTPt+1A,时间 t = 0 , . . . , N − 1 t=0,...,N-1 t=0,...,N1
  7. 计算控制输入 u t = − K t x t u_t=-K_tx_t ut=Ktxt

参考文献

基础算法 - LQR - 离散时间有限边界

【控制理论】离散及连续的LQR控制算法原理推导

控制理论基础(LQR)

  • 17
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余加木

想喝蜜雪冰城柠檬水(≧≦)/

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值