滑動模式觀測器

**滑動模式觀測器**（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} +Lv({\hat {x}}_{1}-x_{1})$

其中 $v:\mathbb {R} \to \mathbb {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{aligned}{\dot {\mathbf {e} }}&={\dot {\hat {\mathbf {x} }}}-{\dot {\mathbf {x} }}\\&=A{\hat {\mathbf {x} }}+B\mathbf {u} +Lv({\hat {x}}_{1}-x_{1})-A\mathbf {x} -B\mathbf {u} \\&=A({\hat {\mathbf {x} }}-\mathbf {x} )+Lv({\hat {x}}_{1}-x_{1})\\&=A\mathbf {e} +Lv(e_{1})\end{aligned}}$

其中 $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{aligned}{\dot {\hat {\mathbf {x} }}}&=A{\hat {\mathbf {x} }}+B\mathbf {u} +LM\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{aligned}}$

其中

 * $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}})\operatorname {sgn}(V(t)-H({\hat {x}}))$

其中：

 * $\operatorname {sgn}({\mathord {\cdot }})$ 向量將符號函數延伸到 $n$ 維。也就是說

　
: : $\operatorname {sgn}(z)={\begin{bmatrix}\operatorname {sgn}(z_{1})\\\operatorname {sgn}(z_{2})\\\vdots \\\operatorname {sgn}(z_{i})\\\vdots \\\operatorname {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_{f}^{i}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}})\operatorname {sgn}(v_{1}(t)-h_{1}({\hat {x}}(t)))\}_{\text{eq}}\\\{m_{2}({\hat {x}})\operatorname {sgn}(v_{2}(t)-h_{2}({\hat {x}}(t)))\}_{\text{eq}}\\\vdots \\\{m_{i-1}({\hat {x}})\operatorname {sgn}(v_{i-1}(t)-h_{i-1}({\hat {x}}(t)))\}_{\text{eq}}\\\vdots \\\{m_{n-1}({\hat {x}})\operatorname {sgn}(v_{n-1}(t)-h_{n-1}({\hat {x}}(t)))\}_{\text{eq}}\end{bmatrix}}$

　
: 其中的 $\operatorname {sgn}({\mathord {\cdot }})$ 是正常對純量定義的符號函數，而 $\{\ldots \}_{\text{eq}}$ 是不連續函數在滑動模式下的「等效值運算子」。

概念可以說明如下：依照滑動模式的理論，為了要描述系統特性，只要開始進入滑動模式，函數 $\operatorname {sgn}(v_{i}(t)\!-\!h_{i}({\hat {x}}(t)))$ 就需要改為定效的值實務上，函數會高頻的切換，其慢速的成份會和等效值相等。應用適當的低通濾波器可以濾掉高頻成份，得到等效值，其中也會有較多有關估測系統狀態的資訊。以下的觀測器用了幾次上述的作法，在有限時間內會得到非線性系統的狀態。

修改後的估測器誤差以用轉換後的狀態 $e=H(x)-H({\hat {x}})$ 表示。

　
: ${\begin{aligned}{\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}})\,\operatorname {sgn}(V(t)-H({\hat {x}}(t))),\end{aligned}}$

而且

　
: ${\begin{aligned}{\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}})\,\operatorname {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}\operatorname {sgn}(v_{1}(t)-h_{1}({\hat {x}}(t)))\\m_{2}\operatorname {sgn}(v_{2}(t)-h_{2}({\hat {x}}(t)))\\\vdots \\m_{i}\operatorname {sgn}(v_{i}(t)-h_{i}({\hat {x}}(t)))\\\vdots \\m_{n-1}\operatorname {sgn}(v_{n-1}(t)-h_{n-1}({\hat {x}}(t)))\\m_{n}\operatorname {sgn}(v_{n}(t)-h_{n}({\hat {x}}(t)))\end{bmatrix}}\\&={\begin{bmatrix}h_{2}(x)-m_{1}({\hat {x}})\operatorname {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}})\operatorname {sgn}(v_{2}(t)-h_{2}({\hat {x}}(t)))\\\vdots \\h_{i+1}(x)-m_{i}({\hat {x}})\operatorname {sgn}(v_{i}(t)-h_{i}({\hat {x}}(t)))\\\vdots \\h_{n}(x)-m_{n-1}({\hat {x}})\operatorname {sgn}(v_{n-1}(t)-h_{n-1}({\hat {x}}(t)))\\L_{f}^{n}h(x)-m_{n}({\hat {x}})\operatorname {sgn}(v_{n}(t)-h_{n}({\hat {x}}(t)))\end{bmatrix}}.\end{aligned}}$

因此

1. 只要 $m_{1}({\hat {x}})\geq |h_{2}(x(t))|$ , 誤差動態的第一個列 ${\dot {e}}_{1}=h_{2}({\hat {x}})-m_{1}({\hat {x}})\operatorname {sgn}(e_{1})$ ，會符合在有限時間進入 $e_{1}=0$ 滑動模式的充份條件。
2. 在 $e_{1}=0$ 表面上，對應的 $v_{2}(t)=\{m_{1}({\hat {x}})\operatorname {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}})\operatorname {sgn}(e_{2})$ ，會在有限時間內進入 $e_{2}=0$ 滑動模式。
3. 在 $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}})\operatorname {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}})\operatorname {sgn}(V(t)-H({\hat {x}}))+B({\hat {x}})u.$

## 參考資料