观测器
1.观测器设计动机
对于一个系统
x
˙
=
A
x
+
B
u
\dot{x} = Ax + Bu
x˙=Ax+Bu 设计状态反馈
u
=
−
k
x
u = -kx
u=−kx 通过设计
k
k
k可以保证系统的稳定性,但是前提是系统的状态
x
x
x可测。当系统的状态不可测的时候,就要设计观测器来观测系统的状态。
观测器:根据系统的输入输出来估计系统的状态。
2.Luenberger Observer线性观测器
对于一个控制系统 x ˙ = A x + B u y = C x + D u \dot{x} = Ax + Bu \\ y = Cx + Du x˙=Ax+Buy=Cx+Du x ^ \hat{x} x^为系统的状态估计值, y ^ \hat{y} y^为系统的输出估计值,Luenberger观测器的形式为 x ^ ˙ = A x ^ + B u + L ( y − y ^ ) y = C x ^ + D u \dot{\hat{x}} = A\hat{x} + Bu + L(y - \hat{y}) \\y = C\hat{x} + Du x^˙=Ax^+Bu+L(y−y^)y=Cx^+Du 对上式进行变形 x ^ ˙ = A x ^ + B u + L y − L C x ^ − L D u = ( A − L C ) x ^ + L y + ( B − L D ) u = ( A − L C ) x ^ + L C x + B u \begin{aligned} \dot{\hat{x}} &= A\hat{x} + Bu + Ly - LC\hat{x} -LDu \\ &= (A - LC)\hat{x} + Ly + (B - LD)u \\ &= (A - LC)\hat{x} + LCx +Bu \end{aligned} x^˙=Ax^+Bu+Ly−LCx^−LDu=(A−LC)x^+Ly+(B−LD)u=(A−LC)x^+LCx+Bu 令 e ˙ = x ˙ − x ^ ˙ \dot{e} = \dot{x} - \dot{\hat{x}} e˙=x˙−x^˙有 e ˙ = A x − ( A − L C ) x ^ − L C x = ( A − L C ) ( x − x ^ ) = ( A − L C ) e \begin{aligned}\dot{e} &= Ax -(A - LC)\hat{x} - LCx \\ &= (A - LC)(x - \hat{x}) \\&=(A-LC)e \end{aligned} e˙=Ax−(A−LC)x^−LCx=(A−LC)(x−x^)=(A−LC)e 通过合理的配置 L L L使得观测的误差 e e e趋近于0。
3.Example
对于一个弹簧阻尼系统,状态量
z
1
=
x
z_1 = x
z1=x表示位置,是可测的,
z
2
=
x
˙
z_2 = \dot{x}
z2=x˙表示速度,不可观测,输出
y
=
z
1
y = z_1
y=z1可测。系统的状态方程可以表示为
[
z
˙
1
z
˙
2
]
=
[
0
1
−
k
m
−
B
m
]
[
z
1
z
2
]
+
[
0
1
m
]
u
y
=
[
1
0
]
[
z
1
z
2
]
\left[ \begin{matrix} \dot{z}_1 \\ \dot{z}_2\end{matrix} \right] = \left[ \begin{matrix} 0 & 1 \\ -\frac{k}{m} & -\frac{B}{m} \end{matrix} \right]\left[ \begin{matrix} z_1 \\ z_2\end{matrix} \right] + \left[ \begin{matrix} 0 \\ \frac{1}{m} \end{matrix} \right]u \\ y = \left[ \begin{matrix} 1 & 0 \end{matrix} \right] \left[ \begin{matrix} z_1 \\ z_2 \end{matrix} \right]
[z˙1z˙2]=[0−mk1−mB][z1z2]+[0m1]uy=[10][z1z2] 令
m
=
1
,
B
=
0.5
,
k
=
1
m = 1,B = 0.5,k = 1
m=1,B=0.5,k=1得到系统的状态空间方程。
[
z
˙
1
z
˙
2
]
=
[
0
1
−
1
−
1
2
]
[
z
1
z
2
]
+
[
0
1
]
u
y
=
[
1
0
]
[
z
1
z
2
]
\left[ \begin{matrix} \dot{z}_1 \\ \dot{z}_2\end{matrix} \right] = \left[ \begin{matrix} 0 & 1 \\ -1 & -\frac{1}{2} \end{matrix} \right]\left[ \begin{matrix} z_1 \\ z_2\end{matrix} \right] + \left[ \begin{matrix} 0 \\ 1 \end{matrix} \right]u \\ y = \left[ \begin{matrix} 1 & 0 \end{matrix} \right] \left[ \begin{matrix} z_1 \\ z_2 \end{matrix} \right]
[z˙1z˙2]=[0−11−21][z1z2]+[01]uy=[10][z1z2] 令
L
=
[
l
1
l
2
]
L = \left [ \begin{matrix} l_1 \\ l_2\end{matrix}\right]
L=[l1l2]则
A
−
L
C
A-LC
A−LC可以表示为:
A
−
L
C
=
[
−
l
1
1
−
1
−
l
2
−
1
2
]
A-LC = \left[ \begin{matrix} -l_1 & 1 \\ -1-l_2 & -\frac{1}{2} \end{matrix} \right]
A−LC=[−l1−1−l21−21] 如果想让系统趋近于零,则系统的特征值为负,假定系统的特征值
λ
1
=
−
1
,
λ
2
=
−
1
\lambda_1 = -1,\lambda_2 = -1
λ1=−1,λ2=−1求得
L
L
L矩阵
L
=
[
1.5
−
0.75
]
L = \left[ \begin{matrix} 1.5 \\ -0.75 \end{matrix}\right]
L=[1.5−0.75],设计的观测器为
z
^
˙
=
[
−
1.5
1
−
0.25
−
0.5
]
z
^
+
[
0
1
]
u
+
[
1.5
−
0.75
]
y
\dot{\hat{z}} = \left[\begin{matrix} -1.5&1\\-0.25&-0.5\end{matrix}\right] \hat{z} + \left[ \begin{matrix} 0\\1 \end{matrix}\right]u + \left[ \begin{matrix} 1.5\\-0.75 \end{matrix}\right]y
z^˙=[−1.5−0.251−0.5]z^+[01]u+[1.5−0.75]y 在simulink中搭建仿真模型。
为了更好的展示估计效果,估计值初始设定为1,实际的值是0,结果如下:
参考B站:DR_CAN