反推控制 (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}
)处稳定,是全域渐进稳定 。