前言
LQR(Linaer Quadratic Regulator),即线性二次型调节器,是一种现代控制理论中设计状态反馈控制器(State Variable Feedback,SVFB)的方法。
算法解释
对于一个系统
x
˙
=
A
x
+
B
u
\dot{x}=Ax+Bu
x˙=Ax+Bu,假设我们要设计一个线性反馈控制器
u
=
−
K
x
u=-Kx
u=−Kx,则此时状态方程可以写为
x
˙
=
A
x
−
B
K
x
=
(
A
−
B
K
)
⏟
A
c
l
x
(1)
\dot{x}=Ax-BKx=\underbrace{(A-BK)}_{A_{cl}}x \tag{1}
x˙=Ax−BKx=Acl
(A−BK)x(1)
由于让系统稳定的条件是矩阵
A
c
l
A_{cl}
Acl的特征值的实部均为负数,因此我们可以手动选择几个满足上述条件的特征值,然后反解出
K
K
K,从而得到控制器。
那么问题来了,我们该如何选择特征值,才能让控制器的控制效果最好呢?
现在我们定义一种代价函数(cost function)
J
J
J:
J
=
∫
0
∞
x
T
Q
x
+
u
T
R
u
d
t
(2)
J=\int_0^\infty {x^TQx+u^TRu}\ \mathrm{d}t \tag{2}
J=∫0∞xTQx+uTRu dt(2)
其中,
Q
Q
Q和
R
R
R是两个对角参数矩阵,分别决定了状态向量
x
x
x和输入向量
u
u
u的重要性。显然,J是一个二次型函数,这也是LQR中“Q”的由来。
线性代数中定义形如 x T A x x^TAx xTAx的形式为二次型。具体可参考矩阵的二次型,矩阵的迹、正定矩阵、Hessian矩阵、实对称_kking_edc的博客-CSDN博客_矩阵二次型。
我们希望的是在满足系统稳定的前提下,通过设计合适的 K K K,让代价函数 J J J最小。
下面我们来分析代价函数的意义。
代价函数的意义
考虑一个双变量系统,即 x = [ x 1 x 2 ] x=\begin{bmatrix}x_1\\x_2\end{bmatrix} x=[x1x2],我们希望设计的控制器可以表示为 u = − [ k 1 k 2 ] [ x 1 x 2 ] = − k 1 x 1 − k 2 x 2 u=-[k_1\ k_2]\begin{bmatrix}x_1\\x_2\end{bmatrix}=-k_1x_1-k_2x_2 u=−[k1 k2][x1x2]=−k1x1−k2x2。
此时代价函数可以写为:
J
=
∫
0
∞
[
x
1
x
2
]
Q
[
x
1
x
2
]
+
(
−
[
k
1
k
2
]
[
x
1
x
2
]
)
T
R
(
−
[
k
1
k
2
]
[
x
1
x
2
]
)
d
t
(3)
J=\int_0^\infty [x_1\ x_2]Q \begin{bmatrix}x_1\\x_2\end{bmatrix} + \left(-[k_1\ k_2]\begin{bmatrix}x_1\\x_2\end{bmatrix}\right)^TR\left(-[k_1\ k_2]\begin{bmatrix}x_1\\x_2\end{bmatrix}\right)\ \mathrm{d}t \tag{3}
J=∫0∞[x1 x2]Q[x1x2]+(−[k1 k2][x1x2])TR(−[k1 k2][x1x2]) dt(3)
令
Q
Q
Q和
R
R
R分别为
Q
=
[
q
1
q
2
]
R
=
r
(
u
是一维向量
)
(4)
\begin{aligned} Q&=\begin{bmatrix} q_1\\ &q_2\end{bmatrix} \\ R&=r \quad (u是一维向量) \end{aligned} \tag{4}
QR=[q1q2]=r(u是一维向量)(4)
则代价函数可以写为:
J
=
∫
0
∞
q
1
x
1
2
+
q
2
x
2
2
+
r
u
2
d
t
(5)
J=\int_0^\infty q_1x_1^2+q_2x_2^2+ru^2 \tag{5} \ \mathrm{d}t
J=∫0∞q1x12+q2x22+ru2 dt(5)
显然,如果令
q
1
>
q
2
>
r
q_1>q_2>r
q1>q2>r,则状态变量
x
1
x_1
x1在代价函数中的占比就更大,这意味着如希望代价函数最小,
x
1
x_1
x1必须更小。又因为
Q
Q
Q越大意味着闭环系统矩阵
A
c
l
A_{cl}
Acl的极点在s平面中更偏左,因此
x
1
x_1
x1收敛得更快。若
r
>
q
1
>
q
2
r>q_1>q_2
r>q1>q2,则希望输入量收敛得更快,也就是以更小得代价实现系统稳定,通常意味着更加节省能量。
因为对象是线性的,并且代价函数是二次型,因此这种选择 K K K设计状态反馈控制器以最小化代价函数 J J J的方法被称为“线性二次型调节器(LQR)”。Regular意味着这种反馈的功能是将系统状态调节为0,这在一些追踪问题中会受到约束,因为我们可能希望稳定状态是给定的非零值。
现在的问题是,我们该如何求解 K K K才能让代价函数 J J J最小呢?
推导过程
对于式
(
2
)
(2)
(2),我们定义一个辅助常量矩阵
P
P
P,使得
d
d
t
x
T
P
x
=
−
(
x
T
Q
x
+
u
T
R
u
)
(6)
\frac{\mathrm{d}}{\mathrm{d}t}x^TPx=-(x^TQx+u^TRu) \tag{6}
dtdxTPx=−(xTQx+uTRu)(6)
将式
(
6
)
(6)
(6)带入式
(
2
)
(2)
(2)可得
J
=
−
∫
0
∞
d
d
t
x
T
P
x
d
t
=
−
(
x
T
P
x
∣
∞
−
x
T
P
x
∣
0
)
=
−
(
0
−
x
T
P
x
∣
0
)
=
x
T
(
0
)
P
x
(
0
)
(7)
\begin{aligned} J&=-\int_0^\infty \frac{\mathrm{d}}{\mathrm{d}t}x^TPx \ \mathrm{d}t \\ &=-(x^TPx|_\infty - x^TPx|_0)\\ &=-(0 - x^TPx|_0)\\ &=x^T(0)Px(0) \tag{7} \end{aligned}
J=−∫0∞dtdxTPx dt=−(xTPx∣∞−xTPx∣0)=−(0−xTPx∣0)=xT(0)Px(0)(7)
注:由于我们假设系统稳定,当 t → ∞ , x ( t ) → 0 t\rightarrow \infty,x(t)\rightarrow 0 t→∞,x(t)→0。
显然,式
(
7
)
(7)
(7)只和参数矩阵
P
P
P以及系统的初始状态有关,让
P
P
P最小也就是让代价函数最小。现在就要找出满足式
(
6
)
(6)
(6)的
P
P
P。将式
(
6
)
(6)
(6)左边的微分项展开可得:
x
˙
T
P
x
+
x
T
P
x
˙
+
x
T
Q
x
+
x
T
K
T
R
K
x
=
0
x
T
A
c
l
T
P
x
+
x
T
P
A
c
l
x
+
x
T
Q
x
+
x
T
K
T
R
K
x
=
0
x
T
(
A
c
l
T
P
+
P
A
c
l
+
Q
+
K
T
R
K
)
x
=
0
(8)
\begin{aligned} \dot{x}^TPx+x^TP\dot{x}+x^TQx+x^TK^TRKx&=0\\ x^TA_{cl}^TPx+x^TPA_{cl}x+x^TQx+x^TK^TRKx&=0\\ x^T(A^T_{cl}P+PA_{cl}+Q+K^TRK)x&=0 \tag{8} \end{aligned}
x˙TPx+xTPx˙+xTQx+xTKTRKxxTAclTPx+xTPAclx+xTQx+xTKTRKxxT(AclTP+PAcl+Q+KTRK)x=0=0=0(8)
注意: ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
由于上式对于所有
x
(
t
)
x(t)
x(t)来说都要满足,因此括号中的项要恒等于零。带入
A
c
l
=
A
−
B
K
A_{cl}=A-BK
Acl=A−BK可以得到
A
c
l
T
P
+
P
A
c
l
+
Q
+
K
T
R
K
=
0
(
A
−
B
K
)
T
P
+
P
(
A
−
B
K
)
+
Q
+
K
T
R
K
=
0
A
T
P
+
P
A
+
Q
+
K
T
R
K
−
K
T
B
T
P
−
P
B
K
=
0
(9)
\begin{aligned} A^T_{cl}P+PA_{cl}+Q+K^TRK&=0\\ (A-BK)^TP+P(A-BK)+Q+K^TRK&=0\\ A^TP+PA+Q+K^TRK-K^TB^TP-PBK&=0 \tag{9} \end{aligned}
AclTP+PAcl+Q+KTRK(A−BK)TP+P(A−BK)+Q+KTRKATP+PA+Q+KTRK−KTBTP−PBK=0=0=0(9)
上式是一个复杂的二次型矩阵方程,有没有化简的方法呢?假设我们选择
K
=
R
−
1
B
T
P
(10)
K=R^{-1}B^TP \tag{10}
K=R−1BTP(10)
则式
(
9
)
(9)
(9)可被写为
A
T
P
+
P
A
+
Q
+
(
R
−
1
B
T
P
)
T
R
(
R
−
1
B
T
P
)
−
(
R
−
1
B
T
P
)
T
B
T
P
−
P
B
(
R
−
1
B
T
P
)
=
0
A
T
P
+
P
A
+
Q
−
P
B
R
−
1
B
T
P
=
0
(11)
\begin{aligned} &A^TP+PA+Q+(R^{-1}B^TP)^TR(R^{-1}B^TP)-(R^{-1}B^TP)^TB^TP-PB(R^{-1}B^TP)=0\\ &A^TP+PA+Q-PBR^{-1}B^TP=0 \end{aligned} \tag{11}
ATP+PA+Q+(R−1BTP)TR(R−1BTP)−(R−1BTP)TBTP−PB(R−1BTP)=0ATP+PA+Q−PBR−1BTP=0(11)
上式在现代控制理论中非常重要,也被称为Algebraic Riccati Equation (ARE)。ARE是一个矩阵二次方程,对于给定的(A,B,Q,R)可以解出辅助矩阵
P
P
P。之后,优化反馈控制器的
K
K
K就可通过式
(
10
)
(10)
(10)得出,代价函数的最小值可以用式
(
7
)
(7)
(7)得到。
综上,求解LQR反馈控制器参数 K K K的过程为:
- 设计参数矩阵 Q , R Q,R Q,R
- 求解ARE方程以得到辅助矩阵 P P P
- K = R − 1 B T P K=R^{-1}B^TP K=R−1BTP
目前已有求解ARE很完善的数值程序,例如MATLAB把它封装进了
lqr(A,B,Q,R)
函数中。
可控性
只要满足一些基本条件,LQR的设计过程就能保证得到一个让系统稳定的反馈控制器。
-
LQR定理
令系统 ( A , B ) (A,B) (A,B)可控, R R R和 Q Q Q都是正定的,则闭环系统 ( A − B K ) (A-BK) (A−BK)渐近稳定。
注意,不管系统的开环稳定性如何,这都是成立的。
回顾现控的相关知识:可控性可以通过检查可控性矩阵 U = [ B A B A 2 B ⋯ A n − 1 B ] U=\begin{bmatrix}B&AB&A^2B&\cdots & A^{n-1}B\end{bmatrix} U=[BABA2B⋯An−1B]是否满秩来判断。
在以下形式中LQR定理依然成立。
已知半正定矩阵 Q Q Q的平方根被定义为 Q \sqrt{Q} Q, Q = Q T Q Q=\sqrt{Q}^T\sqrt{Q} Q=QTQ,且半正定矩阵的平方根永远存在。
-
LQR定理2
令系统 ( A , B ) (A,B) (A,B)可控, R R R为正定矩阵, Q Q Q为半正定矩阵,并且 ( A , Q ) (A,\sqrt{Q}) (A,Q)是可观测的。则闭环系统 ( A − B K ) (A-BK) (A−BK)渐近稳定。
用LQR设计反馈控制器和经典控制的思想有很大不同,例如:
- 设计参数矩阵 Q , R Q,R Q,R与希望的闭环性能密切相关
- 引入了辅助矩阵 P P P
- 求解矩阵设计方程
- 能得到一个保证系统稳定的解
- 对闭环系统的鲁棒性或结构了解有限
使用现代控制和经典控制结合方法来获得额外的鲁棒性insight很重要,例如基于奇异值伯德图的LQG/LTR方法。
LQR控制实例
参考【Advanced控制理论】8_LQR 控制器_状态空间系统Matlab/Simulink建模分析_哔哩哔哩_bilibili文章来源:https://www.toymoban.com/news/detail-447984.html
参考资料
F.L Lewis - Linear Quadratic Regulator (LQR) State Feedback Design文章来源地址https://www.toymoban.com/news/detail-447984.html
到了这里,关于线性二次型调节器(LQR)原理详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!