滑動模式觀測器

滑動模式觀測器（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.$$