反步法

**反推控制**（backstepping）也稱為**反演控制**或**反步法**，是一種控制理論的技術，在約 1990 年時由 Petar V. Kokotovic 等人提出，針對特殊形式的非線性動力系統設計可以穩定系統的控制器。此一系統是由許多子系統一層一層組成，最內層的子系統不可再簡化，可以由其他方式穩定最內層的系統。由於此系統的遞歸結構，設計者可以以最內層可穩定的系統為啟始點，反推新的控制器來穩定較外層的子系統，此程序會一直進行到處理到最外層的外部控制命令為止。因此此方式稱為是「反推控制」_。_

## 反推控制的設計方式

反推控制的設計方式可以針對嚴格回授型式的系統，提供一種遞歸方式使其在原點可以穩定。考慮以下型式的動力系統

　
: ${\begin{aligned}{\begin{cases}{\dot {\mathbf {x} }}&=f_{x}(\mathbf {x} )+g_{x}(\mathbf {x} )z_{1}\\{\dot {z}}_{1}&=f_{1}(\mathbf {x} ,z_{1})+g_{1}(\mathbf {x} ,z_{1})z_{2}\\{\dot {z}}_{2}&=f_{2}(\mathbf {x} ,z_{1},z_{2})+g_{2}(\mathbf {x} ,z_{1},z_{2})z_{3}\\\vdots \\{\dot {z}}_{i}&=f_{i}(\mathbf {x} ,z_{1},z_{2},\ldots ,z_{i-1},z_{i})+g_{i}(\mathbf {x} ,z_{1},z_{2},\ldots ,z_{i-1},z_{i})z_{i+1}\quad {\text{ for }}1\leq i<k-1\\\vdots \\{\dot {z}}_{k-1}&=f_{k-1}(\mathbf {x} ,z_{1},z_{2},\ldots ,z_{k-1})+g_{k-1}(\mathbf {x} ,z_{1},z_{2},\ldots ,z_{k-1})z_{k}\\{\dot {z}}_{k}&=f_{k}(\mathbf {x} ,z_{1},z_{2},\ldots ,z_{k-1},z_{k})+g_{k}(\mathbf {x} ,z_{1},z_{2},\dots ,z_{k-1},z_{k})u\end{cases}}\end{aligned}}$

其中

 * $\mathbf {x} \in \mathbb {R} ^{n}$ ，其中 $n\geq 1$ 。
* $z_{1},z_{2},\ldots ,z_{i},\ldots ,z_{k-1},z_{k}$ 是純量。
* u 是系統的純量輸入
* $f_{x},f_{1},f_{2},\ldots ,f_{i},\ldots ,f_{k-1},f_{k}$ 在原點處數值為零（也就是說 $f_{i}(0,0,\dots ,0)=0$ ）
* $g_{1},g_{2},\ldots ,g_{i},\ldots ,g_{k-1},g_{k}$ 是在關注區域內不為零（也就是 $g_{i}(\mathbf {x} ,z_{1},\ldots ,z_{k})\neq 0$ ，在 $1\leq i\leq k$ 的情形下）

另外假設系統

　
: ${\dot {\mathbf {x} }}=f_{x}(\mathbf {x} )+g_{x}(\mathbf {x} )u_{x}(\mathbf {x} )$

在原點處有李雅普諾夫穩定性，可以用某種已知的控制方式 $u_{x}(\mathbf {x} )$ 使得 $u_{x}(\mathbf {0} )=0$ 。並且假設針對此穩定子系統，可以其李亞普諾夫函數 $V_{x}$ 。因此 **x** 子系統可以由其他方式穩定，利用反推控制可以將其穩定性延展到在外圍的 ${\textbf {z}}$ 。

在 **x** 的穩定子系統外圍的嚴格回授型式系統

* 反推控制的控制輸入 u 對狀態 $z_{n}$ 有最直接的穩定性效果。
* 狀態 $z_{n}$ 的作用是在狀態 $z_{n-1}$ 之前的穩定性控制。
* 此程序會繼續，使每一個狀態 $z_{i}$ 會都會被虛擬的控制信號 $z_{i+1}$ 所穩定。

反推控制會確認用 $z_{1}$ 要穩定 **x** 子系統的方式，接著再由下一個狀態 $z_{2}$ 來驅動狀態 $z_{1}$ ，使其產生可以穩定 **x** 的信號。因此此程序是從 **x** 的嚴格回授型式反推往外，一直到設計到最終的控制信號 u。

## 遞歸控制設計概述

遞歸控制的作法如下

1. 假設較小（低階）的子系統

　
: : ${\dot {\mathbf {x} }}=f_{x}(\mathbf {x} )+g_{x}(\mathbf {x} )u_{x}(\mathbf {x} )$

　
: 已經可以用一些控制方式 $u_{x}(\mathbf {x} )$ 穩定，此控制方式會符合 $u_{x}(\mathbf {0} )=0$ 的條件。意思是說，穩定此系統的 $u_{x}$ ，是用其他控制方式達成的。也假設已知此一穩定系統的李亞普諾夫函數 $V_{x}$ 。反推控制可以將這個子系統的穩定性拓展到較大的系統。
2. 會設計控制信號 $u_{1}(\mathbf {x} ,z_{1})$ ，使得系統

　
: : ${\dot {z}}_{1}=f_{1}(\mathbf {x} ,z_{1})+g_{1}(\mathbf {x} ,z_{1})u_{1}(\mathbf {x} ,z_{1})$

　
: 穩定，讓 $z_{1}$ 依照想要的 $u_{x}$ 控制方式進行。此控制器是依照擴充李亞普諾夫候選函數（augmented Lyapunov function candidate）來設計

　
: $V_{1}(\mathbf {x} ,z_{1})=V_{x}(\mathbf {x} )+{\frac {1}{2}}(z_{1}-u_{x}(\mathbf {x} ))^{2}$

　
: 此控制信號 $u_{1}$ 可以適當選擇，使 ${\dot {V}}_{1}$ 可以遠離 0
3. 會設計控制信號 $u_{2}(\mathbf {x} ,z_{1},z_{2})$ ，使得系統

　
: : ${\dot {z}}_{2}=f_{2}(\mathbf {x} ,z_{1},z_{2})+g_{2}(\mathbf {x} ,z_{1},z_{2})u_{2}(\mathbf {x} ,z_{1},z_{2})$

　
: 穩定，讓 $z_{2}$ 依照想要的 $u_{1}$ 控制方式進行。此控制器是依照擴充李亞普諾夫候選函數來設計

　
: $V_{2}(\mathbf {x} ,z_{1},z_{2})=V_{1}(\mathbf {x} ,z_{1})+{\frac {1}{2}}(z_{2}-u_{1}(\mathbf {x} ,z_{1}))^{2}$

　
: 此控制信號 $u_{2}$ 可以適當選擇，使 ${\dot {V}}_{2}$ 可以遠離 0
4. 會反覆此一程序，一直到其實際 u 已知為止，而且
  * 真實控制信號 u 會使 $z_{k}$ 接近虛擬控制信號 $u_{k-1}$ 的控制得以穩定。
  * 虛擬控制信號 $u_{k-1}$ 會使 $z_{k-1}$ 接近虛擬控制信號 $u_{k-2}$ 的控制得以穩定。
  * 虛擬控制信號 $u_{k-2}$ 會使 $z_{k-2}$ 接近虛擬控制信號 $u_{k-3}$ 的控制得以穩定。
  * ...
  * 虛擬控制信號 $u_{2}$ 會使 $z_{2}$ 接近虛擬控制信號 $u_{1}$ 的控制得以穩定。
  * 虛擬控制信號 $u_{1}$ 會使 $z_{1}$ 接近虛擬控制信號 $u_{x}$ 的控制得以穩定。
  * 虛擬控制信號 $u_{x}$ 會使 **x** 穩定在原點。

此程序稱為反推（backstepping），因為是從內部穩定的子系統開始，漸漸反推到較外圍的系統，同時維持每一步的穩定性。因

 * $f_{i}$ 在 $0\leq i\leq k$ 時為 0
* $g_{i}$ 在 $1\leq i\leq k$ 不為 0
* 給定控制信號 $u_{x}$ 會滿足 $u_{x}(\mathbf {0} )=0$ ,

因此所得的系統在原點（ $\mathbf {x} =\mathbf {0} \,$ , $z_{1}=0$ , $z_{2}=0$ , ..., $z_{k-1}=0$ 及 $z_{k}=0$ ）處穩定，是全域漸進穩定。

## 相關條目

* 非線性控制
* 嚴格回授型式
* 魯棒控制
* 自適應控制

## 參考資料