状态观测器设计

在控制器设计中,UU 是根据系统状态确定的,但实际系统中,某个状态可能是不可测的。于是我们需要通过根据系统的输入和输出来估算某个状态的值。这就是系统的观测器。

Luenberger Observer

实际系统的状态空间方程为:

X˙=AX+BUY=CX+DU(1)\begin{array}{l} \dot{X}=AX + BU \\ Y = CX + DU \end{array} \tag{1}

假设X^\hat{X} 为状态的估计值,Y^\hat{Y} 为输出的估计值,则有:

X^˙=AX^+BU+L(YY^)Y^=CX^+DU(2)\begin{array}{l} \dot{\hat{X}}=A\hat{X} + BU + L(Y-\hat{Y}) \\ \hat{Y} = C\hat{X} + DU \end{array} \tag{2}

我们需要寻找合适的矩阵LL,使得估计值趋近于实际值。 首先整合式(2)(2),得:

X^˙=(ALC)X^+(BLD)U+LY(3)\dot{\hat{X}}=(A-LC)\hat{X} + (B-LD)U+LY \tag{3}

然后整合式(1),(3)(1),(3) 得:

X˙X^˙=(ALC)(XX^)(4)\dot{X}-\dot{\hat{X}}=(A-LC)(X-\hat{X}) \tag{4}

令误差Ex=XX^E_x=X-\hat{X},则有:

Ex˙=(ALC)Ex(5)\dot{E_x} = (A-LC)E_x \tag{5}

要使误差Ex0E_x \rightarrow 0,则ALCA-LC 的特征值应小于00

从另一个角度理解,建立观测器相当于建立了一个新的反馈系统,使得误差趋近于0。
L(YY^)L(Y-\hat{Y}) 就相当于把实际输出和估计输出的误差反馈给了状态的估计值。

可观测性

假设矩阵O=[CCACAn1]O=\begin{bmatrix} C\\ CA\\ \vdots \\ CA^{n-1} \end{bmatrix},若Rank(O)=nRank(O) = n,则系统是可观测的。具体推导过程参考系统的可控性

分离原理

假设系统如式(1)(1) 所示,且满足可控可观的条件,但是无法通过直接手段测量系统状态。那么:

  1. 我们可以设计观测器X^\hat{X} 去估算系统状态
  2. 然后根据观测结果,设计控制器U=KX^U=-K\hat{X}
  3. E=XX^E=X-\hat{X}将状态反馈UU 带入式(1)(1) 可得:

X˙=AXBKX^=(ABK)X+BKE(6)\dot{X} = AX - BK\hat{X} = (A-BK)X +BKE \tag{6}

合并式(5),(6)(5),(6),可得:

[Ex˙X˙]=[ALC0BKABK][ExX]=M[ExX](7)\begin{bmatrix} \dot{E_x} \\ \dot{X} \end{bmatrix}=\begin{bmatrix} A-LC & 0\\ BK & A-BK \end{bmatrix}\begin{bmatrix} E_x \\ X \end{bmatrix}=M\begin{bmatrix} E_x \\ X \end{bmatrix} \tag{7}

而我们的目标就是让Ex,XE_x,X 都趋近于00,即令矩阵MM 的特征值有负实部。因为矩阵MM 是三角矩阵,所以其特征值也是其主对角元素的特征值。

需要注意的是:

  • 观测器的收敛速度应大于控制器的收敛速度
  • 观测器可以是纯软件实现,可以简化控制系统的硬件设计

至此,现代控制理论的基本概念就已经全部涉及到了,之后可以再去看书或者实践一些练手项目了。