反推控制 (backstepping)也稱為反演控制 或反步法 ,是一種控制理论 的技術,在約1990年時由Petar V. Kokotovic 等人提出[ 1] [ 2] ,針對特殊形式的非線性 动力系统 設計可以稳定系統 的控制器。此一系統是由許多子系統一層一層組成,最內層的子系統不可再簡化,可以由其他方式穩定最內層的系統。由於此系統的递归 結構,設計者可以以最內層可穩定的系統為啟始點,反推新的控制器來穩定較外層的子系統,此程序會一直進行到處理到最外層的外部控制命令為止。因此此方式稱為是「反推控制」[ 3] 。
反推控制的設計方式可以針對嚴格回授型式 的系統,提供一種递归 方式使其在原點 可以稳定 。考慮以下型式的动力系统 [ 3]
{ x ˙ = f x ( x ) + g x ( x ) z 1 z ˙ 1 = f 1 ( x , z 1 ) + g 1 ( x , z 1 ) z 2 z ˙ 2 = f 2 ( x , z 1 , z 2 ) + g 2 ( x , z 1 , z 2 ) z 3 ⋮ z ˙ i = f i ( x , z 1 , z 2 , … , z i − 1 , z i ) + g i ( x , z 1 , z 2 , … , z i − 1 , z i ) z i + 1 for 1 ≤ i < k − 1 ⋮ z ˙ k − 1 = f k − 1 ( x , z 1 , z 2 , … , z k − 1 ) + g k − 1 ( x , z 1 , z 2 , … , z k − 1 ) z k z ˙ k = f k ( x , z 1 , z 2 , … , z k − 1 , z k ) + g k ( x , z 1 , z 2 , … , z k − 1 , z k ) u {\displaystyle {\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}}} 其中
x ∈ R n {\displaystyle \mathbf {x} \in \mathbb {R} ^{n}} ,其中 n ≥ 1 {\displaystyle n\geq 1} 。 z 1 , z 2 , … , z i , … , z k − 1 , z k {\displaystyle z_{1},z_{2},\ldots ,z_{i},\ldots ,z_{k-1},z_{k}} 是純量 。 u 是系統的純量輸入 f x , f 1 , f 2 , … , f i , … , f k − 1 , f k {\displaystyle f_{x},f_{1},f_{2},\ldots ,f_{i},\ldots ,f_{k-1},f_{k}} 在原點 處數值為零 (也就是說 f i ( 0 , 0 , … , 0 ) = 0 {\displaystyle f_{i}(0,0,\dots ,0)=0} ) g 1 , g 2 , … , g i , … , g k − 1 , g k {\displaystyle g_{1},g_{2},\ldots ,g_{i},\ldots ,g_{k-1},g_{k}} 是在關注區域內不為零(也就是 g i ( x , z 1 , … , z k ) ≠ 0 {\displaystyle g_{i}(\mathbf {x} ,z_{1},\ldots ,z_{k})\neq 0} ,在 1 ≤ i ≤ k {\displaystyle 1\leq i\leq k} 的情形下) 另外假設系統
x ˙ = f x ( x ) + g x ( x ) u x ( x ) {\displaystyle {\dot {\mathbf {x} }}=f_{x}(\mathbf {x} )+g_{x}(\mathbf {x} )u_{x}(\mathbf {x} )} 在原點處有李雅普诺夫稳定性 ,可以用某種已知的控制方式 u x ( x ) {\displaystyle u_{x}(\mathbf {x} )} 使得 u x ( 0 ) = 0 {\displaystyle u_{x}(\mathbf {0} )=0} 。並且假設針對此穩定子系統,可以其李亞普諾夫函數 V x {\displaystyle V_{x}} 。因此x 子系統可以由其他方式穩定,利用反推控制可以將其穩定性延展到在外圍的 z {\displaystyle {\textbf {z}}} 。
在x 的穩定子系統外圍的嚴格回授型式系統
反推控制的控制輸入u 對狀態 z n {\displaystyle z_{n}} 有最直接的穩定性效果。 狀態 z n {\displaystyle z_{n}} 的作用是在狀態 z n − 1 {\displaystyle z_{n-1}} 之前的穩定性控制。 此程序會繼續,使每一個狀態 z i {\displaystyle z_{i}} 會都會被虛擬的控制信號 z i + 1 {\displaystyle z_{i+1}} 所穩定。 反推控制會確認用 z 1 {\displaystyle z_{1}} 要穩定x 子系統的方式,接著再由下一個狀態 z 2 {\displaystyle z_{2}} 來驅動狀態 z 1 {\displaystyle z_{1}} ,使其產生可以穩定x 的信號。因此此程序是從x 的嚴格回授型式反推往外,一直到設計到最終的控制信號u 。
递归控制的作法如下
假設較小(低階)的子系統 x ˙ = f x ( x ) + g x ( x ) u x ( x ) {\displaystyle {\dot {\mathbf {x} }}=f_{x}(\mathbf {x} )+g_{x}(\mathbf {x} )u_{x}(\mathbf {x} )} 已經可以用一些控制方式 u x ( x ) {\displaystyle u_{x}(\mathbf {x} )} 穩定,此控制方式會符合 u x ( 0 ) = 0 {\displaystyle u_{x}(\mathbf {0} )=0} 的條件。意思是說,穩定此系統的 u x {\displaystyle u_{x}} ,是用其他控制方式達成的。也假設已知此一穩定系統的李亞普諾夫函數 V x {\displaystyle V_{x}} 。反推控制可以將這個子系統的穩定性拓展到較大的系統。 會設計控制信號 u 1 ( x , z 1 ) {\displaystyle u_{1}(\mathbf {x} ,z_{1})} ,使得系統 z ˙ 1 = f 1 ( x , z 1 ) + g 1 ( x , z 1 ) u 1 ( x , z 1 ) {\displaystyle {\dot {z}}_{1}=f_{1}(\mathbf {x} ,z_{1})+g_{1}(\mathbf {x} ,z_{1})u_{1}(\mathbf {x} ,z_{1})} 穩定,讓 z 1 {\displaystyle z_{1}} 依照想要的 u x {\displaystyle u_{x}} 控制方式進行。此控制器是依照擴充李亞普諾夫候選函數(augmented Lyapunov function candidate)來設計 V 1 ( x , z 1 ) = V x ( x ) + 1 2 ( z 1 − u x ( x ) ) 2 {\displaystyle V_{1}(\mathbf {x} ,z_{1})=V_{x}(\mathbf {x} )+{\frac {1}{2}}(z_{1}-u_{x}(\mathbf {x} ))^{2}} 此控制信號 u 1 {\displaystyle u_{1}} 可以適當選擇,使 V ˙ 1 {\displaystyle {\dot {V}}_{1}} 可以遠離0 會設計控制信號 u 2 ( x , z 1 , z 2 ) {\displaystyle u_{2}(\mathbf {x} ,z_{1},z_{2})} ,使得系統 z ˙ 2 = f 2 ( x , z 1 , z 2 ) + g 2 ( x , z 1 , z 2 ) u 2 ( x , z 1 , z 2 ) {\displaystyle {\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 {\displaystyle z_{2}} 依照想要的 u 1 {\displaystyle u_{1}} 控制方式進行。此控制器是依照擴充李亞普諾夫候選函數來設計 V 2 ( x , z 1 , z 2 ) = V 1 ( x , z 1 ) + 1 2 ( z 2 − u 1 ( x , z 1 ) ) 2 {\displaystyle 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 {\displaystyle u_{2}} 可以適當選擇,使 V ˙ 2 {\displaystyle {\dot {V}}_{2}} 可以遠離0 會反覆此一程序,一直到其實際u 已知為止,而且 真實控制信號u 會使 z k {\displaystyle z_{k}} 接近虛擬控制信號 u k − 1 {\displaystyle u_{k-1}} 的控制得以穩定。 虛擬控制信號 u k − 1 {\displaystyle u_{k-1}} 會使 z k − 1 {\displaystyle z_{k-1}} 接近虛擬控制信號 u k − 2 {\displaystyle u_{k-2}} 的控制得以穩定。 虛擬控制信號 u k − 2 {\displaystyle u_{k-2}} 會使 z k − 2 {\displaystyle z_{k-2}} 接近虛擬控制信號 u k − 3 {\displaystyle u_{k-3}} 的控制得以穩定。 ... 虛擬控制信號 u 2 {\displaystyle u_{2}} 會使 z 2 {\displaystyle z_{2}} 接近虛擬控制信號 u 1 {\displaystyle u_{1}} 的控制得以穩定。 虛擬控制信號 u 1 {\displaystyle u_{1}} 會使 z 1 {\displaystyle z_{1}} 接近虛擬控制信號 u x {\displaystyle u_{x}} 的控制得以穩定。 虛擬控制信號 u x {\displaystyle u_{x}} 會使x 穩定在原點。 此程序稱為反推(backstepping),因為是從內部穩定的子系統開始,漸漸反推到較外圍的系統,同時維持每一步的穩定性。因
f i {\displaystyle f_{i}} 在 0 ≤ i ≤ k {\displaystyle 0\leq i\leq k} 時為0 g i {\displaystyle g_{i}} 在 1 ≤ i ≤ k {\displaystyle 1\leq i\leq k} 不為0 給定控制信號 u x {\displaystyle u_{x}} 會滿足 u x ( 0 ) = 0 {\displaystyle u_{x}(\mathbf {0} )=0} , 因此所得的系統在原點( x = 0 {\displaystyle \mathbf {x} =\mathbf {0} \,} , z 1 = 0 {\displaystyle z_{1}=0} , z 2 = 0 {\displaystyle z_{2}=0} , ..., z k − 1 = 0 {\displaystyle z_{k-1}=0} 及 z k = 0 {\displaystyle z_{k}=0} )處穩定,是全域漸進穩定 。