滑动模式观测器

滑动模式观测器（Sliding mode observer）是应用滑动模式控制的状态观测器，应用滑动模式控制的技术，使观测器的状态可以接近受控体的状态。

滑动模式控制属于非线性控制，滑动模式观测器会有非线性高增益观测器的特性，可以在有限时间内将观测器的误差收敛到零。此外，切换模式的观测器类似卡尔曼滤波，可以允许一些程度的量测噪声。

## 线性滑动模式观测器

以下将线性时不变系统的伦伯杰观测器（Luenberger observer），修改为滑动模式观测器。在滑动模式观测器中，若进入滑动模式，观测器动态的阶数会减一。在以下例子中，单一估测状态的状态误差可以在有限时间内收敛到零。Drakunov最早提出，非线性系统可以建立滑动模式观测器，让所有估测状态的估测误差都在有限时间（而且是任意短的时间内）收敛到零。

考虑以下的LTI系统

$$\begin{cases} \dot{\mathbf{x}} = A \mathbf{x} + B \mathbf{u}\\ y = \begin{bmatrix}1 & 0 & 0 & \cdots & \end{bmatrix} \mathbf{x} = x_1 \end{cases}$$

其中状态向量$\mathbf{x} \triangleq (x_1, x_2, \dots, x_n) \in \mathbb{R}^n$, $\mathbf{u} \triangleq (u_1, u_2, \dots, u_r) \in \mathbb{R}^r$是输入向量，输出utput y是纯量，等于$\mathbf{x}$状态向量的第一个状态。令

$$A \triangleq \begin{bmatrix} a_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}$$

其中

- $a_{11}$是纯量，对应第一个状态$x_1$对自己的影响
- $A_{21} \in \mathbb{R}^{(n-1)}$是行向量，对应第一个状态对其他状态的影响
- $A_{22} \in \mathbb{R}^{(n-1) \times (n-1)}$是矩阵，对应其他各状态彼此之间的影响
- $A_{12} \in \mathbb{R}^{1\times(n-1)}$是列向量，对应其他状态对第一个状态的影响

目的是要设计高增益的状态观测器，可以在只有量测资讯$y=x_1$的情形下，估测状态向量。因此，令向量$\hat{\mathbf{x}} = (\hat{x}_1,\hat{x}_2,\dots,\hat{x}_n) \in \mathbb{R}^n$是n状态的观测值，观测器的形式为

$$\dot{\hat{\mathbf{x}}} = A \hat{\mathbf{x}} + B \mathbf{u} + L v(\hat{x}_1 - x_1)$$

其中$v: \R \to \R$是估测状态$\hat{x}_1$和输出$y=x_1$之间误差的非线性函数，$L \in \mathbb{R}^n$是估测器增益向量，其作用类似典型的线性状态观测器。同样的，也令

$$L = \begin{bmatrix} -1 \\ L_{2} \end{bmatrix}$$

其中$L_2 \in \mathbb{R}^{(n-1)}$是列向量。另外，令$\mathbf{e} = (e_1, e_2, \dots, e_n) \in \mathbb{R}^n$是状态估测误差，也就是说$\mathbf{e} = \hat{\mathbf{x}} - \mathbf{x}$。误差的动态方程为

$$\begin{align} \dot{\mathbf{e}} &= \dot{\hat{\mathbf{x}}} - \dot{\mathbf{x}}\\ &= A \hat{\mathbf{x}} + B \mathbf{u} + L v(\hat{x}_1 - x_1) <pre> - A \mathbf{x} - B \mathbf{u}\\ </pre> &= A (\hat{\mathbf{x}} - \mathbf{x}) + L v(\hat{x}_1 - x_1)\\ &= A \mathbf{e} + L v(e_1) \end{align}$$

其中$e_1 = \hat{x}_1 - x_1$是第一个状态估测值的估测误差。可以设计非线性控制律v控制滑动流形

$$0 = \hat{x}_1 - x_1$$

使估测量$\hat{x}_1$在有限时间内（也就是$\hat{x}_1 = x_1$）追到实际状态$x_1$。因此，滑动控制切换函数为

$$\sigma(\hat{x}_1,\hat{x}) \triangleq e_1 = \hat{x}_1 - x_1.$$

为了要保持在滑动流形上，$\dot{\sigma}$和$\sigma$需永远维持异号（$\sigma \dot{\sigma} < 0$在几乎处处$\mathbf{x}$都要成立）。不过

$$\dot{\sigma} = \dot{e}_1 = a_{11} e_1 + A_{12} \mathbf{e}_2 - v( e_1 ) = a_{11} e_1 + A_{12} \mathbf{e}_2 - v( \sigma )$$

其中$\mathbf{e}_2 \triangleq (e_2, e_3, \ldots, e_n) \in \mathbb{R}^{(n-1)}$ 是所有无法量测状态估测误差的集合。为了要确保$\sigma \dot{\sigma} < 0$，令

$$v( \sigma ) = M \operatorname{sgn}(\sigma)$$

其中

$$M > \max\{ |a_{11} e_1 + A_{12} \mathbf{e}_2| \}.$$

也就是说，正的常数M需大于系统最可能估计误差的纯量。若M够大，可以假设系统会达到$e_1 = 0$（也就是$\hat{x}_1 = x_1$）。因为在流形上$e_1$是常数（零），也可以推得$\dot{e}_1 = 0$。因此不连续的控制律$v(\sigma)$可以用等效的连续控制律$v_{\text{eq}}$取代，其中

$$0 = \dot{\sigma} = a_{11} \mathord{\overbrace{e_1}^{ {} = 0 }} + A_{12} \mathbf{e}_2 - \mathord{\overbrace{v_{\text{eq}}}^{v(\sigma)}} = A_{12} \mathbf{e}_2 - v_{\text{eq}}.$$

因此

$$\mathord{\underbrace{v_{\text{eq}}}_{\text{scalar}}} = \mathord{\underbrace{A_{12}}_{1 \times (n-1) \atop \text{ vector}}} \mathord{\underbrace{\mathbf{e}_2}_{(n-1) \times 1 \atop \text{ vector}}}.$$

等效的控制律$v_{\text{eq}}$代表剩下的$(n-1)$个状态对输出状态$x_1$轨迹的贡献。行向量$A_{12}$类似以下误差子系统的输出向量

$$\mathord{\overbrace{ \begin{bmatrix} \dot{e}_2\\ \dot{e}_3\\ \vdots\\ \dot{e}_n \end{bmatrix} }^{\dot{\mathbf{e}}_2}} = A_2 \mathord{\overbrace{ \begin{bmatrix} e_2\\ e_3\\ \vdots\\ e_n \end{bmatrix} }^{\mathbf{e}_2}} + L_2 v(e_1) = A_2 \mathbf{e}_2 + L_2 v_{\text{eq}} = A_2 \mathbf{e}_2 + L_2 A_{12} \mathbf{e}_2 = ( A_2 + L_2 A_{12} ) \mathbf{e}_2.$$

为了确保未量测状态的估测误差$\mathbf{e}_2$可以收敛到零，需选择$(n-1)\times 1$向量$L_2$使得$(n-1)\times (n-1)$矩阵$( A_2 + L_2 A_{12} )$是赫维兹矩阵（其特征值实部均为负数）。假设系统有可观察性，可将$A_{12}$视为输出矩阵（C），则$\mathbf{e}_2$系统可以用和一般线性观测器相同的方式来稳定。也就是说，$v_{\text{eq}}$的等效控制可以提供未观测状态的量测资讯，可以连续地将其估测值渐近的趋近实际值。平均来说，不连续的控制律$v = M \operatorname{sgn}( \hat{x}_1 - x )$强制量测信号的估测量在有限时间内达到零。而且，平均值为零的对称量测噪声（正态分布）只会影响控制律v的切换频率，对等效滑动模式控制律$v_{\text{eq}}$的影响不大。因此，滑动模式观测器有类似卡尔曼滤波的特性。

最终版本的观测器为

$$\begin{align} \dot{\hat{\mathbf{x}}} &= A \hat{\mathbf{x}} + B \mathbf{u} + L M \operatorname{sgn}(\hat{x}_1 - x_1)\\ &= A \hat{\mathbf{x}} + B \mathbf{u} + \begin{bmatrix} -1\\L_2 \end{bmatrix} M \operatorname{sgn}(\hat{x}_1 - x_1)\\ &= A \hat{\mathbf{x}} + B \mathbf{u} + \begin{bmatrix} -M\\L_2 M\end{bmatrix} \operatorname{sgn}(\hat{x}_1 - x_1)\\ &= A \hat{\mathbf{x}} + \begin{bmatrix} B & \begin{bmatrix} -M\\L_2 M\end{bmatrix} \end{bmatrix} \begin{bmatrix} \mathbf{u} \\ \operatorname{sgn}(\hat{x}_1 - x_1) \end{bmatrix}\\ &= A_{\text{obs}} \hat{\mathbf{x}} + B_{\text{obs}} \mathbf{u}_{\text{obs}} \end{align}$$

其中

- $$A_{\text{obs}} \triangleq A,$$
- $$B_{\text{obs}} \triangleq \begin{bmatrix} B & \begin{bmatrix} -M\\L_2 M\end{bmatrix} \end{bmatrix},$$
- $$u_{\text{obs}} \triangleq \begin{bmatrix} \mathbf{u} \\ \operatorname{sgn}(\hat{x}_1 - x_1) \end{bmatrix}.$$

用切换函数$\operatorname{sgn}(\hat{x}_1-x_1)$来辅助控制向量$\mathbf{u}$，滑动模式观测器可以用LTI系统来表示。不连续信号$\operatorname{sgn}(\hat{x}_1-x_1)$视为是双输入LTI的一个控制“输入”。

为了简化说明，这个例子假设滑动模式估测器可以量测单一状态（例如，输出$y=x_1$）。用类似的方式也可以用各状态的加权平均（例如，输出$\mathbf{y} = C \mathbf{x}$使用一般的矩阵C）来设计滑动模式估测器。此例子中，滑动模式就会是使估测输出$\hat{\mathbf{y}}$追随量测输出$\mathbf{y}$，没有误差的流形（使$\sigma(\mathbf{x}) \triangleq \hat{\mathbf{y}} - \mathbf{y} = \mathbf{0}$的流形）。

## 非线性滑动模式观测器

Drakunov曾经提过，可以针对非线性系统设计滑动模式观测器。此观测器可以用原始变数的估测值$\hat{x}$表示，型式如下

$$\dot{\hat{x}} = \left [ \frac{\partial H(\hat{x})}{\partial x}\right]^{-1} M(\hat{x}) \sgn( V(t) - H(\hat{x}) )$$

其中：

- $\sgn(\mathord{\cdot})$向量将符号函数延伸到$n$维。也就是说
- $$\sgn(z) = \begin{bmatrix} \sgn(z_1)\\ \sgn(z_2)\\ \vdots\\ \sgn(z_i)\\ \vdots\\ \sgn(z_n) \end{bmatrix}$$
- 针对向量$z \in \mathbb{R}^n$.
- 向量$H(x)$的分量是输出函数$h(x)$以及其各阶李导数。其中
- $$H(x) \triangleq \begin{bmatrix} h_1(x)\\ h_2(x)\\ h_3(x)\\ \vdots\\ h_n(x) \end{bmatrix} \triangleq \begin{bmatrix} h(x)\\ L_{f}h(x)\\ L_{f}^2 h(x)\\ \vdots\\ L_{f}^{n-1}h(x) \end{bmatrix}$$
- 其中$L^i_f h$是$h$沿着向量场$f$（也就是沿着非线性系统的$x$轨迹）的i阶李导数。在此特例中，系统没有输入，也没有相对次数（relative degree）n，$H(x(t))$是输出$y(t)=h(x(t))$以及其$n-1$次导数的集合。因为$H(x)$Jacobian线性化的倒数存在（让观测器可以有良好定义），$H(x)$的转换保证是局部的微分同胚。
- 增益对角矩阵 $M(\hat{x})$ 会使下式成立
- $$M(\hat{x}) \triangleq \operatorname{diag}( m_1(\hat{x}), m_2(\hat{x}), \ldots, m_n(\hat{x}) ) = \begin{bmatrix} m_1(\hat{x}) & & & & & \\ & m_2(\hat{x}) & & & & \\ & & \ddots & & & \\ & & & m_i(\hat{x}) & &\\ & & & & \ddots &\\ & & & & & m_n(\hat{x}) \end{bmatrix}$$
- 其中，针对每一个$i \in \{1,2,\dots,n\}$，元素$m_i(\hat{x}) > 0$ 而且够大，以保证会碰到滑动模式。
- 观测器向量$V(t)$会满足下式
- $$V(t) \triangleq \begin{bmatrix}v_{1}(t)\\ v_2(t)\\ v_3(t)\\ \vdots\\ v_i(t)\\ \vdots\\ v_{n}(t) \end{bmatrix} \triangleq \begin{bmatrix} y(t)\\ \{ m_1(\hat{x}) \sgn( v_1(t) - h_1(\hat{x}(t)) ) \}_{\text{eq}}\\ \{ m_2(\hat{x}) \sgn( v_2(t) - h_2(\hat{x}(t)) ) \}_{\text{eq}}\\ \vdots\\ \{ m_{i-1}(\hat{x}) \sgn( v_{i-1}(t) - h_{i-1}(\hat{x}(t)) ) \}_{\text{eq}}\\ \vdots\\ \{ m_{n-1}(\hat{x}) \sgn( v_{n-1}(t) - h_{n-1}(\hat{x}(t)) ) \}_{\text{eq}} \end{bmatrix}$$
- 其中的$\sgn(\mathord{\cdot})$是正常对纯量定义的符号函数，而$\{ \ldots \}_{\text{eq}}$是不连续函数在滑动模式下的“等效值运算子”。

概念可以说明如下：依照滑动模式的理论，为了要描述系统特性，只要开始进入滑动模式，函数$\sgn( v_{i}(t)\!-\! h_{i}(\hat{x}(t)) )$就需要改为定效的值实务上，函数会高频的切换，其慢速的成分会和等效值相等。应用适当的低通滤波器可以滤掉高频成分，得到等效值，其中也会有较多有关估测系统状态的资讯。以下的观测器用了几次上述的作法，在有限时间内会得到非线性系统的状态。

修改后的估测器误差以用转换后的状态$e=H(x)-H(\hat{x})$表示。

$$\begin{align} \dot{e} &= \frac{\mathrm{d}}{\mathrm{d}t} H(x) - \frac{\mathrm{d}}{\mathrm{d}t} H(\hat{x})\\ &= \frac{\mathrm{d}}{\mathrm{d}t} H(x) - M(\hat{x}) \, \sgn( V(t) - H(\hat{x}(t)) ), \end{align}$$

而且

$$\begin{align} \begin{bmatrix} \dot{e}_1\\ \dot{e}_2\\ \vdots\\ \dot{e}_i\\ \vdots\\ \dot{e}_{n-1}\\ \dot{e}_n \end{bmatrix} &= \mathord{\overbrace{ \begin{bmatrix} \dot{h}_1(x)\\ \dot{h}_2(x)\\ \vdots\\ \dot{h}_i(x)\\ \vdots\\ \dot{h}_{n-1}(x)\\ \dot{h}_n(x) \end{bmatrix} }^{\tfrac{\mathrm{d}}{\mathrm{d}t} H(x)}} - \mathord{\overbrace{ M(\hat{x}) \, \sgn( V(t) - H(\hat{x}(t)) ) }^{\tfrac{\mathrm{d}}{\mathrm{d}t} H(\hat{x})}} = \begin{bmatrix} h_2(x)\\ h_3(x)\\ \vdots\\ h_{i+1}(x)\\ \vdots\\ h_n(x)\\ L_f^n h(x) \end{bmatrix} - \begin{bmatrix} m_1 \sgn( v_1(t) - h_1(\hat{x}(t)) )\\ m_2 \sgn( v_2(t) - h_2(\hat{x}(t)) )\\ \vdots\\ m_i \sgn( v_i(t) - h_i(\hat{x}(t)) )\\ \vdots\\ m_{n-1} \sgn( v_{n-1}(t) - h_{n-1}(\hat{x}(t)) )\\ m_n \sgn( v_n(t) - h_n(\hat{x}(t)) ) \end{bmatrix}\\ &= \begin{bmatrix} h_2(x) - m_1(\hat{x}) \sgn( \mathord{\overbrace{ \mathord{\overbrace{v_1(t)}^{v_1(t) = y(t) = h_1(x)}} - h_1(\hat{x}(t)) }^{e_1}} )\\ h_3(x) - m_2(\hat{x}) \sgn( v_2(t) - h_2(\hat{x}(t)) )\\ \vdots\\ h_{i+1}(x) - m_i(\hat{x}) \sgn( v_i(t) - h_i(\hat{x}(t)) )\\ \vdots\\ h_n(x) - m_{n-1}(\hat{x}) \sgn( v_{n-1}(t) - h_{n-1}(\hat{x}(t)) )\\ L_f^n h(x) - m_n(\hat{x}) \sgn( v_n(t) - h_n(\hat{x}(t)) ) \end{bmatrix}. \end{align}$$

因此

- 只要$m_1(\hat{x}) \geq |h_2(x(t))|$, 误差动态的第一个行$\dot{e}_1 = h_2(\hat{x}) - m_1(\hat{x}) \sgn( e_1 )$，会符合在有限时间进入$e_1 = 0$滑动模式的充份条件。
- 在$e_1 = 0$表面上，对应的$v_2(t) = \{m_1(\hat{x}) \sgn( e_1 )\}_{\text{eq}}$等效控制会等于$h_2(x)$，因此$v_2(t) - h_2(\hat{x}) = h_2(x) - h_2(\hat{x}) = e_2$。只要$m_2(\hat{x}) \geq |h_3(x(t))|$，误差动态的第二个行$\dot{e}_2 = h_3(\hat{x}) - m_2(\hat{x}) \sgn( e_2 )$，会在有限时间内进入$e_2 = 0$滑动模式。
- 在$e_i = 0$表面上，对应的$v_{i+1}(t) = \{\ldots\}_{\text{eq}}$等效控会等于$h_{i+1}(x)$。只要$m_{i+1}(\hat{x}) \geq |h_{i+2}(x(t))|$，误差动态的第$(i+1)$个行$\dot{e}_{i+1} = h_{i+2}(\hat{x}) - m_{i+1}(\hat{x}) \sgn( e_{i+1} )$，会在有限时间内进入$e_{i+1} = 0$滑动模式。

对于足够大的$m_i$增益，所有的观测器估测状态都会在有限时间内到实际的状态。只要$|h_i(x(0))|$有确定的上下界，增加$m_i$，可以在任意时间内让估测状态收敛。因此映射$H:\mathbb{R}^n \to \mathbb{R}^n$是微分同胚（也就是其Jacobian 线性化可逆）可以保证，若估测输出的收敛，就意味着估测状态的收敛。因此此要求是可观察性的条件。

若针对有输入系统的滑动模型观测器，会需要额外的条件，其估测误差和输入无关。例如

$$\frac{\partial H(x)}{\partial x} B(x)$$

和时间无关。则观测器为

$$\dot{\hat{x}} = \left[ \frac{\partial H(\hat{x})}{\partial x} \right]^{-1} M(\hat{x}) \sgn(V(t) - H(\hat{x}))+B(\hat{x})u.$$