反推控制 (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}
)處穩定,是全域漸進穩定 。