狀態觀測器

**狀態觀測器**（英語：State observer）是控制理論中配合受控體的系統，在已知受控體架構的情形下，可以根據受控體的輸入及輸出而估測其內部的狀態，是許多實務應用的基礎。

許多的控制理論都會假設可以知道系統的狀態，例如利用全狀態回授來穩定線性系統的例子。不過許多系統都無法直接量測到實際的狀態，只能用狀態對輸出的影響來間接估計狀態。像隧道中的車輛就是一個例子。車輛在隧道中的速度不易直接量測，只可以用隧道中的實際狀態來估計。假如系統可觀測，可以從輸出配合狀態觀測器來完全估測系統的狀態。

## 典型的觀測器模型

針對線性系統的狀態觀測器，最常用的是線性觀測器、滑動模式觀測器，也有在線性觀測器中加入立方項的觀測器。以下會說明線性觀測器的結構。

### 離散系統

線性非時變離散系統的狀態方程式如下：

　
: $x(k+1)=Ax(k)+Bu(k)$

　
: $y(k)=Cx(k)+Du(k)$

在時間 $k$ 時， $x(k)$ 是系統狀態， $u(k)$ 是輸入， $y(k)$ 是輸出。狀態方程式提到系統目前的輸出以及未來的狀態是由目前狀態以及目前輸入所決定。若系統有可觀測性，可以用系統輸出 $y(k)$ 來調整狀態觀測器的狀態。

受控體的觀測器模型可以用上式來推導，也可以加入額外的項，確保觀測器在持續收到系統的輸入及輸出時，其狀態可以收斂到受控體的狀態。可以將系統的輸出減去觀測器的輸出，再乘以矩陣 $L$ ，再加到狀態觀測器的方程式中，以產生如下式定義的 Luenberger 觀測器。其中的狀態觀測器的變數會加上 hat: ${\hat {x}}(k)$ 和 ${\hat {y}}(k)$ ，以區隔實際系統的變數。

　
: ${\hat {x}}(k+1)=A{\hat {x}}(k)+L\left[y(k)-{\hat {y}}(k)\right]+Bu(k)$

　
: ${\hat {y}}(k)=C{\hat {x}}(k)+Du(k)$

觀測器漸近收斂的條件是觀測器誤差 $e(k)={\hat {x}}(k)-x(k)$ 在 $k\rightarrow \infty $ 時，可以收斂到 0。此離散系統的 Luenberger 觀測器漸近收斂的條件是矩陣 $A-LC$ 的特徵值都在單位圓內。

因為控制的需求，觀測器的輸出除了作為觀測器的輸入，也會透過增益矩陣 $K$ ，成為受控體的輸入。

　
: $u(k)=-K{\hat {x}}(k)$

觀測器的方程式會變成：

　
: ${\hat {x}}(k+1)=A{\hat {x}}(k)+L\left(y(k)-{\hat {y}}(k)\right)-BK{\hat {x}}(k)$

　
: ${\hat {y}}(k)=C{\hat {x}}(k)-DK{\hat {x}}(k)$

或是

　
: ${\hat {x}}(k+1)=\left(A-BK\right){\hat {x}}(k)+L\left(y(k)-{\hat {y}}(k)\right)$

　
: ${\hat {y}}(k)=\left(C-DK\right){\hat {x}}(k)$

因為控制理論中的分離原理，可將估測器以及控制器分開設計，因此可以選擇 $K$ 和 $L$ ，以達到系統的整體穩定性。根據經驗法則，會選擇觀測器 $A-LC$ 的極點，使其比系統 $A-BK$ 極點快十倍以上。

### 連續系統

連續系統中的觀測器和離散系統中的類似。會選擇觀測器增益 $L$ 使連續系統誤差可以漸近收斂到 0（當 $A-LC$ 為赫維茲矩陣時會成立）

針對連續時間線性系統

　
: ${\dot {x}}=Ax+Bu,$

　
: $y=Cx+Du,$

其中 $x\in \mathbb {R} ^{n},u\in \mathbb {R} ^{m},y\in \mathbb {R} ^{r}$ ，觀測器類似以上離散系統的例子：

　
: ${\dot {\hat {x}}}=A{\hat {x}}+Bu+L\left(y-{\hat {y}}\right)$ .

　
: ${\hat {y}}=C{\hat {x}}+Du,$

觀測器誤差 $e=x-{\hat {x}}$ 會滿足下式

　
: ${\dot {e}}=(A-LC)e$ .

若 $[A,C]$ 有可觀測性，可以適當選擇觀測器增益 $L$ ，以調整矩陣 $A-LC$ 的特徵值。另外，也可以使矩陣 $A-LC$ 為赫維茲矩陣，讓觀測器誤差 $e(t)$ 可以漸近收斂到 0。

### 峰值現象以及其他的觀測器技術

若觀測器增益 $L$ 很高，線性的 Luenberger 觀測器會很快收斂，但大增益會造成峰值現象（peaking phenomenon），初始的觀測器誤差會非常大，在實際使用上不安全。因此，會用非線性高增益觀測技術，可以快速收斂，又沒有峰值現象。例如可以在觀測器中使用滑動模式控制技術（滑動模式觀測器），使觀測器在有量測誤差的情形下，在有限時間內使觀測器狀態誤差變成零，其他有誤差的狀態，其行為會類似峰值減弱後的 Luenberger 觀測器。滑動模式觀測器類似卡爾曼濾波，有較理想的抗雜訊能力。

另一種作法是用多觀測器（multi observer），可以顯著的改善暫態，抑制觀測器的過沖。多觀測器可以適用在所有適用高增益的系統。

## 非線性系統的狀態觀測器

針對非線性系統，最常用的是高增益狀態觀測器、滑動模式觀測器以及擴展觀測器。

為了說明非線性系統中的狀態觀測器，先考慮以下的無輸入非線性系統：

　
: ${\dot {x}}=f(x)$

其中 $x\in \mathbb {R} ^{n}$ ，也假設有量測輸出 $y\in \mathbb {R} $ 如下

　
: $y=h(x).$

有許多設計觀測器的非近似式作法。以下提到的觀測器也可以適用於有輸入的系統

　
: ${\dot {x}}=f(x)+B(x)u,$

　
: $y=h(x),$ .

### 線性化誤差動態系統

Krener 和 Isidori，以及 Krener 和 Respondek 有針對狀態觀測器的研究，若存在可線性化的轉換（微分同胚，類似回授線性化） $z=\Phi (x)$ ，使新變數的系統方程如下

　
: ${\dot {z}}=Az+\phi (y),$

　
: $y=Cz.$

Luenberger 觀測器可以設計為

　
: ${\dot {\hat {z}}}=A{\hat {z}}+\phi (y)-L\left(C{\hat {z}}-y\right)$ .

轉換後變數 $e={\hat {z}}-z$ 的觀測器誤差可以滿足同一個方程式

　
: ${\dot {e}}=(A-LC)e$ .

Gauthier、Hammouri 和 Othman
and Hammouri and Kinnaert 已證明，若存在變換 $z=\Phi (x)$ ，使系統可以轉換為以下的型式

　
: ${\dot {z}}=A(u(t))z+\phi (y,u(t)),$

　
: $y=Cz,$

則觀測器可以設計如下

　
: ${\dot {\hat {z}}}=A(u(t)){\hat {z}}+\phi (y,u(t))-L(t)\left(C{\hat {z}}-y\right)$ ,

其中 $L(t)$ 是時變的觀測器增益。

Ciccarella、Dalla Mora 和 Germani 有提供更進階以及一般性的結果，只需要簡單的規律性（regularity）假設，不需要非線性的轉換，證明觀測狀態可以全域收斂到實際狀態。

## 多觀測器

多觀測器（Multi observer）是高增益觀測器的擴展，由一個觀測器到多個觀測器一起使用，可以讓多個模型同時作用。多觀測器會分為二層：一層包括了多個高增益觀測器，有相關同一組狀態旳不同的估測量，第二層決定第一層各估測量的權重。此演算法很容易實現，其中也沒有微分等有危險性的運算。多觀測器的概念最早曾應用在適應控制中，用來取得資訊。

* 

假設高增益觀測器有 n+1 個

 ${\dot {\hat {x_{k}}}}(t)=A{\hat {x_{k}}}(t)+B\phi _{0}({\hat {x}}(t),u(t))-L({\hat {y_{k}}}(t)-y(t))$
 ${\hat {y_{k}}}(t)=C{\hat {x_{k}}}(t)$

其中 $k=1...n+1$ 是觀測器的編號。第一層的觀測器包括了相同的增益 $L$ ，但其啟始狀態 $x_{k}(0)$ 不同。在第二層中會將所有 $x_{k}(t)$ （ $k=1...n+1$ ）觀測器的結果合併為一個，以得到單一狀態向量的估測值

$$
{\hat {y_{k}}}(t)=\sum \limits _{k=1}^{n+1}\alpha _{k}(t){\hat {x_{k}}}(t)
$$

其中 $\alpha _{k}\in \mathbb {R} $ 是加權因子。這些因子會改變，以提供第二層的估測用，並且提昇觀測器的效果。

假設

$$
\sum \limits _{k=1}^{n+1}\alpha _{k}(t)\xi _{k}(t)=0
$$

且

$$
\sum \limits _{k=1}^{n+1}\alpha _{k}(t)=1
$$

其中 $\xi _{k}\in \mathbb {R} ^{n\times 1}$ 是某向量，會和第 $k$ 個估測器的誤差 $e_{k}(t)$ 有關。

經過轉換，可以得到以下的線性回歸問題

$$
[-\xi _{n+1}(t)]=[\xi _{1}(t)-\xi _{n+1}(t)\dots \xi _{k}(t)-\xi _{n+1}(t)\dots \xi _{n}(t)-\xi _{n+1}(t)]^{T}{\begin{bmatrix}\alpha _{1}(t)\\\vdots \\\alpha _{k}(t)\\\vdots \\\alpha _{n}(t)\end{bmatrix}}
$$

根據上式，有可能估算 $\alpha _{k}(t)$ 。為了要建構流形，需要映射 $m:\mathbb {R} ^{n}\rightarrow \mathbb {R} ^{n}$ 在 $\xi _{k}(t)=m(e_{k}(t))$ 之間，並且保證可以用可量測的訊號來計算 $\xi _{k}(t)$ 。
首先要從觀測器誤差中消除 $\alpha _{k}(t)$ 的峰值現象

 $e_{\sigma }(t)=\sum \limits _{k=1}^{n+1}\alpha _{k}(t)e_{k}(t)$ .

將 $\eta _{k}(t)={\hat {y}}_{k}(t)-y(t)$ 針算 $n$ 的微分，可以找到以下的值 $\xi _{k}(t)$

$$
\xi _{k}(t)={\begin{bmatrix}1&0&0&\cdots &0\\CL&1&0&\cdots &0\\CAL&CL&1&\cdots &0\\CA^{2}L&CAL&CL&\cdots &0\\\vdots &\vdots &\vdots &\ddots \\CA^{n-2}L&CA^{n-3}L&CA^{n-4}L&\cdots &1\end{bmatrix}}{\begin{bmatrix}\int \limits _{t-t_{d}}^{t}{{n-1} \atop \cdots }\int \limits _{t-t_{d}}^{t}\eta _{k}(\tau )d\tau \\\vdots \\\eta (t)-\eta (t-(n-1)t_{d})\end{bmatrix}}
$$

其中 $t_{d}>0$ 是某時間常數。 $\xi _{k}(t)$ 和 $\eta _{k}(t)$ 和其積分有關，因此可以應用在控制系統上。
而且 $\alpha _{k}(t)$ 是在估測律中指定，因此此流形可以量測。第二層 ${\hat {\alpha }}_{k}(t)$ ，其中 $k=1\dots n+1$ 是用來估測 $\alpha _{k}(t)$ 係數。其映射誤差定義為

$$
e_{\xi }(t)=\sum \limits _{k=1}^{n+1}{\hat {\alpha }}_{k}(t)\xi _{k}(t)
$$

其中 $e_{\xi }(t)\in \mathbb {R} ^{n\times 1},{\hat {\alpha }}_{k}(t)\in \mathbb {R} $ 。若係數 ${\hat {\alpha }}(t)$ 等於 $\alpha _{k}(t)$ ，映射誤差 $e_{\xi }(t)=0$ 。因此可用上式來計算 ${\hat {x}}$ ，因為流形的特形，可以減少峰值現象。所創建的映射提供估測過程中許多的彈性。甚至可以在第二層估計 $x(t)$ 的值，以計算狀態 $x$

## 邊界觀測器

邊界觀測器（Bounding observers）或區間觀測器（Interval observers） 是一組特殊的觀測器，會同時提供一個狀態的二個估測值，分別是真實值的上限和下限。真實值會在上下限估測範圍內。

邊界範圍在實際應用上非常重要，可以知道每一個估測的精準度。

在數學上，若適當的選擇 $L$ ，可以用二種 Luenberger 觀測器來達到正向系統特性：一個是上限 ${\hat {x}}_{U}(k)$ （在沒有雜訊及不確定性的情形下，確保在 $k\rightarrow \infty $ 時， $e(k)={\hat {x}}_{U}(k)-x(k)$ 在零以上收斂到零），另一個是下限 ${\hat {x}}_{L}(k)$ （確保在 $k\rightarrow \infty $ 時， $e(k)={\hat {x}}_{L}(k)-x(k)$ 在零以下收斂到零）。因此 ${\hat {x}}_{U}(k)\geq x(k)\geq {\hat {x}}_{L}(k)$ 恆成立。

## 參考資料

## 相關條目

* 滾動時域估計
* 卡爾曼濾波
* 擴展卡爾曼濾波器
* 正向系統
* 軟感測器