H无穷大状态观测器设计与仿真
系统模型
本文介绍如下形式线性系统的状态观测器设计:

相比于标准状态空间模型,还考虑了扰动信号\(w(t)\)的影响。\(y(t)\)是测量输出,可看成是传感器系统模型,\(z(t)\)是系统输出。目标是设计一个全阶状态观测器,使得扰动信号\(w(t)\)对状态估计误差的影响足够小。
状态观测器设计
采用如下形式的观测器:

稍微推算下就能发现,\((9.23)\)与\((1)(2)\)所描述的观测器等价:
\[ \dot{\hat{x}}=A\hat{x}+B_1u-L(y-\hat{y}) \tag{1} \] \[ \hat{y}=C_1\hat{x}+D_1u \tag{2} \]
它其实就是倒立摆的状态观测器设计中采用的Luenberger状态观测器,仅仅只是正负号不同,在理论分析和仿真时要注意这点。接下来便是一些常规的理论推导:

\((9.25)\)所示的动态方程描述了状态估计误差\(e\)和系统输出估计误差\(\tilde{z}\)之间的关系。还得到了从\(w\)到\(\tilde{z}\)的传递函数\(G_{\tilde{z}w}(s)\),要使它的\(H_{\infty}\)范数尽量小,就能抑制扰动信号对系统输出估计误差的影响。
问题描述
下图中的问题\((9.3)\)描述了\(H_{\infty}\)状态观测器的目标,如果\(\lVert G_{\tilde{z}w}(s) \rVert_{\infty}<\gamma\),那么状态估计误差\(e\)就会趋于零。

观测器反馈矩阵
接下来要求解状态观测器反馈矩阵\(L\),有如下定理:

求解上面的线性矩阵不等式(LMI)问题即可得到\(L\)矩阵,可以在MATLAB中使用YALMIP求解。
状态反馈控制器
接下来利用观测器得到的状态估计\(\hat{x}\)设计控制器,采用如下状态反馈控制律,为和前面的\(A+LC_1\)在形式上保持一致,没有加负号:
\[ u=K\hat{x} \tag{3} \]
根据控制性能指标要求选取合适的\(K\)矩阵。将\((3)\)代入到\((9.22)\)中可得
\[ \dot{x}=(A+B_1K)x+B_1Ke+B_2w \tag{4} \]
将\((9.25)\)和\((4)\)合并,得到如下矩阵方程
\[ \left[ \begin{array}{c} \dot{x}\\ \dot{e}\\ \end{array} \right] =\left[ \begin{matrix} A+B_1K& B_1K\\ 0& A+LC_1\\ \end{matrix} \right] \left[ \begin{array}{c} x\\ e\\ \end{array} \right] +\left[ \begin{array}{c} B_2\\ B_2+LD_2\\ \end{array} \right] w \tag{5} \]
系统状态\(x\)和状态估计误差\(e\)可以在仿真中直接得到,为了看到输出估计误差,将系统输出方程设置为
\[ \tilde{z}=\left[ \begin{matrix} 0& C_2\\ \end{matrix} \right] \left[ \begin{array}{c} x\\ e\\ \end{array} \right] \tag{6} \]
根据\((5)(6)\)即可设计基于状态估计的反馈控制器。
仿真设计与结果
最后通过仿真验证\(H_{\infty}\)状态观测器对扰动信号\(w(t)\)的抑制能力。最好将\(L\)矩阵的求解、观测器设计和控制器设计的代码放到同一个文件中,这样就能使用最精确的\(L\)矩阵。MATLAB的默认输出精度是小数点后4位,根据我的经验,\(L\)的舍入误差对观测器性能影响较大。
下面的代码带有矩阵维数检查,对于不同的模型,只需要做少量修改既可运行:
1 | %% Model described by (9.22) |
得到扰动信号\(w(t)\)、状态估计误差\(e(t)\)和输出估计误差\(\tilde{z}(t)\)随时间变化的曲线如下:
很明显,所设计的\(H_{\infty}\)状态观测器对扰动信号\(w(t)\)有很强的抑制能力,达到了\((9.26)\)要求的性能。