本文是根据下面参考资料里的1和2对应的讲座内容所做的笔记
连续时间LQR理解
假设一个系统可以被表示为如下形式的状态方程:
x
˙
=
A
x
+
B
u
(
1.1
)
\dot{x} = Ax + Bu \qquad \qquad (1.1)
x˙=Ax+Bu(1.1)
式中的
x
(
t
)
∈
R
n
,
u
(
t
)
∈
R
m
x(t) \in R^n,u(t) \in R^m
x(t)∈Rn,u(t)∈Rm,n是状态的个数,m是动作的个数。
状态方程:描述系统的状态变量与输入变量之间关系的一组一阶微分方程称为状态方程
假设所有状态都是可测量的,且我们要设计一个线性负反馈控制器
u
=
−
K
x
u=-Kx
u=−Kx(也就定义了闭环回路性质),将其代入式(1.1),则有:
x
˙
=
A
x
−
B
K
x
=
(
A
−
B
K
)
x
=
A
c
x
(
1.2
)
\dot{x} = Ax -BKx = (A-BK)x = A_c x \qquad \qquad (1.2)
x˙=Ax−BKx=(A−BK)x=Acx(1.2)
为了使设计的控制器最优,设计如下代价函数:
J
=
1
2
∫
0
∞
x
T
Q
x
+
u
T
R
u
d
t
(
1.3
)
J= \frac{1}{2} \int_0^{\infty} x^TQx + u^TRu \ dt \qquad \qquad (1.3)
J=21∫0∞xTQx+uTRu dt(1.3)
代入
u
=
−
K
x
u=-Kx
u=−Kx后,代价函数变成:
J
=
1
2
∫
0
∞
x
T
(
Q
+
K
T
R
K
)
x
d
t
(
1.4
)
J= \frac{1}{2} \int_0^{\infty} x^T(Q + K^TRK)x \ dt \qquad \qquad (1.4)
J=21∫0∞xT(Q+KTRK)x dt(1.4)
对于最优设计的目标是选择K使得代价函数J最小,矩阵Q(大小
n
×
n
n \times n
n×n)和矩阵R(大小为
m
×
m
m \times m
m×m)一般由工程师来设计,必须保证Q是半正定矩阵、R是正定矩阵。因为控制是线性的并且代价函数是二次型的,所以这种选取K最小化J的问题被称为Linear Quadratic Regulator (LQR)。'regulator’是指反馈函数是为了将状态调节到0。
为了找到最优的反馈K,假设有一个矩阵P满足下式:
d
d
t
(
x
T
P
x
)
=
−
x
T
(
Q
+
K
T
R
K
)
x
(
1.5
)
\frac{d}{dt} (x^TPx) = -x^T(Q + K^TRK)x \qquad \qquad (1.5)
dtd(xTPx)=−xT(Q+KTRK)x(1.5)
将上式代入到(1.4)中,当假设闭环系统是稳定的,当t趋向于无穷时,x(t)变为0,所以有下式,该式表明J仅仅依赖于K,是一个仅依赖于辅助矩阵P和初始条件的常量:
J
=
−
1
2
∫
0
∞
d
d
t
(
x
T
P
x
)
d
t
=
1
2
x
T
(
0
)
P
x
(
0
)
(
1.6
)
J= -\frac{1}{2} \int_0^{\infty} \frac{d}{dt} (x^TPx) \ dt = \frac{1}{2} x^T(0) P x(0) \qquad \qquad (1.6)
J=−21∫0∞dtd(xTPx) dt=21xT(0)Px(0)(1.6)
那么为了找到使式(1.5)的假设成立的K,将式(1.5)左边微分展开,并将式(1.1)代入后(根据定义式(1.1)就是状态x的一阶微分方程),再将式(1.2),式(1.5)变成如下列式子:
x
˙
T
P
x
+
x
T
P
x
˙
+
x
T
Q
x
+
x
T
K
T
R
K
x
=
0
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
x
T
(
A
c
T
+
P
A
c
+
Q
+
K
T
R
K
)
x
=
0
\begin {aligned} & \dot{x}^TPx + x^T P \dot{x} + x^TQx + x^TK^TRKx = 0 \\ & x^TA_c^TPx + x^TPA_cx+x^TQx + x^TK^TRKx = 0 \\ & x^T(A_c^T + PA_c + Q + K^TRK)x=0 \end {aligned}
x˙TPx+xTPx˙+xTQx+xTKTRKx=0xTAcTPx+xTPAcx+xTQx+xTKTRKx=0xT(AcT+PAc+Q+KTRK)x=0
如果要使最后一项对于每一个x(t)都满足,括号内的内容必须等于0,所以有:
A
c
T
+
P
A
c
+
Q
+
K
T
R
K
=
0
(
A
−
B
K
)
T
P
+
P
(
A
−
B
K
)
+
Q
+
K
T
R
K
=
0
A
P
+
P
A
+
Q
+
K
T
R
K
−
K
T
B
T
P
−
P
B
K
=
0
\begin {aligned} & A_c^T + PA_c + Q + K^TRK = 0 \\ & (A-BK)^TP+ P(A-BK) + Q + K^TRK = 0 \\ &A^P + PA + Q + K^TRK - K^TB^TP - PBK = 0 \end {aligned}
AcT+PAc+Q+KTRK=0(A−BK)TP+P(A−BK)+Q+KTRK=0AP+PA+Q+KTRK−KTBTP−PBK=0
上式是一个matrix quadratic equation。不考虑具体的矩阵解法,如果我们选择:
K
=
R
−
1
B
T
P
(
1.7
)
K = R^{-1}B^TP \qquad \qquad (1.7)
K=R−1BTP(1.7)
将其代入到matrix quadratic equation方程中将有:
A
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
P
+
P
A
+
Q
+
P
B
R
−
1
B
T
P
=
0
(
1.8
)
\begin {aligned} &A^P + PA + Q + (R^{-1}B^TP)^TR(R^{-1}B^TP) - (R^{-1}B^TP)^TB^TP - PB(R^{-1}B^TP) = 0 \\ &A^P + PA + Q + PBR^{-1}B^TP=0 \qquad \qquad (1.8) \end {aligned}
AP+PA+Q+(R−1BTP)TR(R−1BTP)−(R−1BTP)TBTP−PB(R−1BTP)=0AP+PA+Q+PBR−1BTP=0(1.8)
式(1.8)被称为ARE方程(algebraic Riccati equation, ARE), 给定(A,B,Q,R)之后可以求解出来矩阵P,这样最优反馈K就可以根据式(1.7)得到了。
综上,寻找LQR反馈K的设计过程为:
- 选择设计参数矩阵Q和R
- 求解ARE方程得到P
- 使用 K = R − 1 B T P K = R^{-1}B^TP K=R−1BTP计算K
离散时间LQR理解
假设一个离散时间(discrete-tiem)系统可以被表示为如下形式:
x
k
+
1
=
A
x
k
+
B
u
k
(
2.1
)
x_{k+1} = Ax_k + Bu_k \qquad \qquad (2.1)
xk+1=Axk+Buk(2.1)
式中的
x
(
t
)
∈
R
n
,
u
(
t
)
∈
R
m
x(t) \in R^n,u(t) \in R^m
x(t)∈Rn,u(t)∈Rm,n是状态的个数,m是动作的个数。初始状态为
x
0
x_0
x0
假设所有状态都是可测量的,且我们要设计一个线性负反馈控制器
u
k
=
−
K
x
k
u_k=-Kx_k
uk=−Kxk(也就定义了闭环回路性质),将其代入式(2.1),则有:
x
k
+
1
=
A
x
k
−
B
K
x
k
=
(
A
−
B
K
)
x
k
=
A
c
x
k
(
2.2
)
x_{k+1} = Ax_k -BKx_k = (A-BK)x_k = A_c x_k \qquad \qquad (2.2)
xk+1=Axk−BKxk=(A−BK)xk=Acxk(2.2)
定义代价函数为:
J
(
x
k
)
=
1
2
∑
i
=
k
∞
x
i
T
Q
x
i
+
u
i
T
R
u
i
(
2.3
)
J(x_k)= \frac{1}{2} \sum_{i=k}^{\infty} x_i^TQx_i + u_i^TRu_i \qquad \qquad (2.3)
J(xk)=21i=k∑∞xiTQxi+uiTRui(2.3)
与连续时间LQR一样,矩阵Q(大小
n
×
n
n \times n
n×n)和矩阵R(大小为
m
×
m
m \times m
m×m)一般由工程师来设计,必须保证Q是半正定矩阵、R是正定矩阵。代入
u
=
−
K
x
u=-Kx
u=−Kx后,代价函数变成:
J
(
x
k
)
=
1
2
∑
i
=
k
∞
x
i
T
(
Q
+
K
T
R
K
)
x
i
(
2.4
)
J(x_k)= \frac{1}{2} \sum_{i=k}^{\infty} x_i^T(Q + K^TRK)x_i \qquad \qquad (2.4)
J(xk)=21i=k∑∞xiT(Q+KTRK)xi(2.4)
而代价函数(2.3)也可以表示成:
J
(
x
k
)
=
1
2
(
x
k
T
Q
x
k
+
u
k
T
R
u
k
)
+
∑
i
=
k
+
1
∞
x
i
T
Q
x
i
+
u
i
T
R
u
i
(
2.5
)
J(x_k)= \frac{1}{2}(x_k^TQx_k + u_k^TRu_k) + \sum_{i=k+1}^{\infty} x_i^TQx_i + u_i^TRu_i \qquad \qquad (2.5)
J(xk)=21(xkTQxk+ukTRuk)+i=k+1∑∞xiTQxi+uiTRui(2.5)
进一步表示成:
J
(
x
k
)
=
1
2
(
x
k
T
Q
x
k
+
u
k
T
R
u
k
)
+
J
(
x
k
+
1
)
(
2.6
)
J(x_k)= \frac{1}{2}(x_k^TQx_k + u_k^TRu_k) + J(x_{k+1}) \qquad \qquad (2.6)
J(xk)=21(xkTQxk+ukTRuk)+J(xk+1)(2.6)
式(2.6)要求边界条件
J
(
x
k
=
0
)
=
0
J ( x_k = 0) = 0
J(xk=0)=0 。 也就是说,如果可以在给定控制输入序列的情况下求解 (2.6),与(2.3) 式给定当前状态
x
k
x_k
xk通过评估无限和求解
J
(
x
k
)
J(x_k)
J(xk)一致。
现在让我们假设对于最优cost,对于所有的k都满足下式, 也就是假设最优cost是由当前状态和未知矩阵P组成的二次项;如果我们可以找到一个最优反馈K支持这个假设,就证明这个假设是有效的:
J
∗
(
x
k
)
=
x
k
T
P
x
k
(
2.7
)
J^*(x_k) =x_k^TPx_k \qquad \qquad (2.7)
J∗(xk)=xkTPxk(2.7)
为了找到最优反馈K和P,将式(2.7)代入到式(2.6)得到:
x
k
T
P
x
k
=
1
2
(
x
k
T
Q
x
k
+
u
k
T
R
u
k
)
+
x
k
+
1
T
P
x
k
+
1
x_k^TPx_k = \frac{1}{2}(x_k^TQx_k + u_k^TRu_k) + x_{k+1}^TPx_{k+1}
xkTPxk=21(xkTQxk+ukTRuk)+xk+1TPxk+1
再将式(2.1)代入上式后得到:
J
(
x
k
)
=
x
k
T
P
x
k
=
1
2
(
x
k
T
Q
x
k
+
u
k
T
R
u
k
)
+
(
A
x
k
+
B
u
k
)
T
P
(
A
x
k
+
B
u
k
)
(
2.8
)
J(x_k) = x_k^TPx_k = \frac{1}{2}(x_k^TQx_k + u_k^TRu_k) + (Ax_k + Bu_k)^TP(Ax_k + Bu_k) \qquad \qquad (2.8)
J(xk)=xkTPxk=21(xkTQxk+ukTRuk)+(Axk+Buk)TP(Axk+Buk)(2.8)
为了最小化上式,对
u
k
u_k
uk求微分:
0
=
∂
∂
u
k
J
(
x
k
)
=
R
u
k
+
B
T
P
(
A
x
k
+
B
u
k
)
0=\frac{\partial}{\partial_{u_k}}J(x_k) = Ru_k + B^TP(Ax_k+Bu_k)
0=∂uk∂J(xk)=Ruk+BTP(Axk+Buk)
由此得到最优控制为:
(
R
+
B
T
P
B
)
u
k
=
−
B
T
P
A
x
k
u
k
=
−
(
R
+
B
T
P
B
)
−
1
B
T
P
A
x
k
(R+B^TPB)u_k = -B^TPAx_k \\ u_k = -(R+B^TPB)^{-1} B^TPAx_k
(R+BTPB)uk=−BTPAxkuk=−(R+BTPB)−1BTPAxk
上式相当于定义了最优反馈K为:
K
=
(
R
+
B
T
P
B
)
−
1
B
T
P
A
(
2.9
)
K =(R+B^TPB)^{-1} B^TPA \qquad \qquad (2.9)
K=(R+BTPB)−1BTPA(2.9)
为了得到P, 将
u
k
=
−
K
x
k
u_k=-Kx_k
uk=−Kxk代入到式(2.8)后:
x
k
T
[
(
A
−
B
K
)
T
P
(
A
−
B
K
)
−
P
+
Q
+
K
T
R
K
]
x
k
=
0
x^T_k[(A-BK)^T P(A-BK) - P + Q + K^TRK]x_k = 0
xkT[(A−BK)TP(A−BK)−P+Q+KTRK]xk=0
为了使得上式对所有状态
x
k
x_k
xk都成立,上式括号中的内容为0(注:下式是对应于
A
c
=
A
−
B
K
A_c=A-BK
Ac=A−BK的Lyapunov equation):
(
A
−
B
K
)
T
P
(
A
−
B
K
)
−
P
+
Q
+
K
T
R
K
=
0
(A-BK)^T P(A-BK) - P + Q + K^TRK = 0
(A−BK)TP(A−BK)−P+Q+KTRK=0
如果将式(2.9)代入到上式,则有
(
A
−
B
(
R
+
B
T
P
B
)
−
1
B
T
P
A
)
T
P
(
A
−
B
(
R
+
B
T
P
B
)
−
1
B
T
P
A
)
−
P
+
Q
+
(
(
R
+
B
T
P
B
)
−
1
B
T
P
A
)
T
R
(
(
R
+
B
T
P
B
)
−
1
B
T
P
A
)
=
0
(A-B(R+B^TPB)^{-1} B^TPA)^T P(A-B(R+B^TPB)^{-1} B^TPA) - P + Q + ((R+B^TPB)^{-1} B^TPA)^TR((R+B^TPB)^{-1} B^TPA) = 0
(A−B(R+BTPB)−1BTPA)TP(A−B(R+BTPB)−1BTPA)−P+Q+((R+BTPB)−1BTPA)TR((R+BTPB)−1BTPA)=0
将上式简化之后可得到
A
T
P
A
−
P
+
Q
−
A
T
P
B
(
R
+
B
T
P
B
)
−
1
B
T
P
A
=
0
(
2.10
)
A^TPA - P + Q - A^TPB(R+B^TPB)^{-1}B^TPA = 0 \qquad \qquad (2.10)
ATPA−P+Q−ATPB(R+BTPB)−1BTPA=0(2.10)
式(2.10)被称为离散ARE方程(discrete time algebraic Riccati equation,DT ARE), 给定(A,B,Q,R)之后可以求解出来矩阵P,这样最优反馈K就可以根据式(2.9)得到了。
综上,寻找LQR反馈K的设计过程为:
- 选择设计参数矩阵 Q = Q T ≥ 0 Q=Q^T \ge 0 Q=QT≥0和 R = R T > 0 R=R^T >0 R=RT>0
- 求解离散ARE方程(2.10)得到P
- 使用 K = ( R + B T P B ) − 1 B T P A K =(R+B^TPB)^{-1} B^TPA K=(R+BTPB)−1BTPA计算K
参考资料
- 连续时间LQR理解对应的讲座链接: F.L Lewis: Linear Quadratic Regulator (LQR) State Feedback Design
- 离散时间LQR理解对应的讲座链接: F.L Lewis:Feedback Control for Discrete-Time Systems
- csdn 博客: 线性二次型调节器(LQR)原理详解,阅读这个博客后知道了本文出处的讲座笔记