一、背景
滑模控制理论(Sliding Mode Control, SMC)是一种建立在现代控制理论基础上的控制理论,主要数学核心为李雅普诺夫函数。
滑模控制的核心思想是建立一个滑模面,将被控系统拉取到滑模面上来,使系统沿着滑模面运动。滑模控制的一个优势是无视外部扰动和不确定参数,采用一种比较“暴力”的方式达到控制的目的。
其思想和反步法有些类似,但数学实现起来更加方便而不抽象。相比反步法,滑模控制没有复杂的数学计算,也不会出现“微分爆炸”的问题。但另一方面,滑模控制所采用的控制信号大多是具有正负值反复交替的信号,对于硬件要求很高,一般硬件无法达到这种信号高频来回切换的要求,因此这是滑模控制的一个缺点。
除此之外,信号高频切换所导致的输出信号会出现振荡,系统状态在所选取的滑模面附近来回颤动,这种颤动是无法消除的。这也是滑模控制的一个痛点,目前主流的方法大多是采用滤波、模糊控制、神经网络等方法对震颤进行缓解。
二、数学理论
这里以一个三阶系统为例。
设有一个标准三阶系统
{
x
˙
1
=
x
2
x
˙
2
=
x
3
x
˙
3
=
f
(
x
)
+
g
(
x
)
u
(1)
\begin{cases} \dot{x}_1 = x_2 \\ \dot{x}_2 = x_3 \\ \dot{x}_3 = f(x) + g(x)u \end{cases} \tag{1}
⎩⎪⎨⎪⎧x˙1=x2x˙2=x3x˙3=f(x)+g(x)u(1)其中
g
(
x
)
g(x)
g(x)是
u
u
u前面的系数公式,大多情况下是常数表达式,也存在一些
g
(
x
)
g(x)
g(x)为
x
x
x的函数的情况。下文中把
f
(
x
)
f(x)
f(x)和
g
(
x
)
g(x)
g(x)略写为
f
f
f和
g
g
g。
假设
x
1
x_1
x1的期望值为
x
1
d
x_{1d}
x1d。那么可以写出各个
x
i
x_i
xi的误差
e
i
e_i
ei表达式:
{
e
1
=
x
−
x
1
d
=
x
1
−
x
1
d
e
2
=
e
˙
1
=
x
˙
−
x
˙
1
d
=
x
2
−
x
˙
1
d
e
3
=
e
˙
2
=
x
¨
−
x
¨
1
d
=
x
3
−
x
¨
1
d
(2)
\begin{cases} e_1 = x - x_{1d} = x_1 - x_{1d} \\ e_2 = \dot{e}_1 = \dot{x}-\dot{x}_{1d} = x_2-\dot{x}_{1d} \\ e_3 = \dot{e}_2 = \ddot{x} - \ddot{x}_{1d} = x_3-\ddot{x}_{1d} \end{cases} \tag{2}
⎩⎪⎨⎪⎧e1=x−x1d=x1−x1de2=e˙1=x˙−x˙1d=x2−x˙1de3=e˙2=x¨−x¨1d=x3−x¨1d(2)立即设计滑模面
s
=
c
1
e
1
+
c
2
e
2
+
e
3
=
∑
i
=
1
3
c
i
e
i
=
0
(3)
s=c_1 e_1 + c_2 e_2 + e_3 = \sum_{i=1}^3 c_ie_i = 0 \tag{3}
s=c1e1+c2e2+e3=i=1∑3ciei=0(3)其中
e
3
e_3
e3前系数为1。
那么滑模面
s
s
s的导数为
s
˙
=
c
1
e
˙
1
+
c
2
e
˙
2
+
e
˙
3
=
c
1
e
2
+
c
2
e
3
+
x
˙
3
−
x
1
d
(
3
)
=
c
1
e
2
+
c
2
e
3
+
f
+
g
u
−
x
1
d
(
3
)
=
Γ
+
f
+
g
u
−
x
1
d
(
3
)
(4)
\begin{aligned} \dot{s} &= c_1 \dot{e}_1 + c_2 \dot{e}_2 + \dot{e}_3 \\ &= c_1 e_2 + c_2 e_3 + \dot{x}_3 - x_{1d} ^{(3)} \\ &= c_1 e_2 + c_2 e_3 + f + gu - x_{1d} ^{(3)} \\ &= \Gamma + f + gu - x_{1d} ^{(3)} \end{aligned} \tag{4}
s˙=c1e˙1+c2e˙2+e˙3=c1e2+c2e3+x˙3−x1d(3)=c1e2+c2e3+f+gu−x1d(3)=Γ+f+gu−x1d(3)(4)
并设计李雅普诺夫函数
V
=
1
2
s
2
(5)
V = \frac{1}{2}s^2 \tag{5}
V=21s2(5)并对其求导
V
˙
=
s
s
˙
=
s
(
Γ
+
f
+
g
u
−
x
1
d
(
3
)
)
(6)
\begin{aligned} \dot{V} &= s \dot{s} \\ &= s \left( \Gamma + f + gu - x_{1d} ^{(3)} \right) \end{aligned} \tag{6}
V˙=ss˙=s(Γ+f+gu−x1d(3))(6)
到这一步为止好像进入了死胡同,(6)式不能再进一步化简,因此需要考虑下一步内容,即考虑(6)式中的取值范围。
另一方面,由于控制量
u
u
u是需要进行设计的,因此不妨先在(6)式中将
u
u
u单独列出
V
˙
=
s
(
Γ
+
f
+
g
u
−
x
1
d
(
3
)
)
=
s
(
Γ
+
f
−
x
1
d
(
3
)
)
+
s
g
u
=
s
[
(
Γ
+
f
−
x
1
d
(
3
)
)
+
g
u
]
=
s
g
(
Γ
+
f
−
x
1
d
(
3
)
g
+
u
)
(7)
\begin{aligned} \dot{V} &= s \left( \Gamma + f + gu - x_{1d} ^{(3)} \right) \\ &= s \left( \Gamma + f - x_{1d} ^{(3)} \right) + sgu \\ &= s \left[ \left( \Gamma + f - x_{1d} ^{(3)} \right) + gu \right] \\ &= sg \left( \frac{ \Gamma + f - x_{1d} ^{(3)} }{g} + u \right) \end{aligned} \tag{7}
V˙=s(Γ+f+gu−x1d(3))=s(Γ+f−x1d(3))+sgu=s[(Γ+f−x1d(3))+gu]=sg(gΓ+f−x1d(3)+u)(7)
可以看出,(7)式右侧第一项与控制量
u
u
u无关,第二项只含
u
u
u本身。
设计
u
u
u具有以下形式
u
=
−
k
⋅
s
g
n
(
s
)
(8)
u = -k \cdot sgn(s) \tag{8}
u=−k⋅sgn(s)(8)那么(7)式变为
V
˙
=
s
g
(
Γ
+
f
−
x
1
d
(
3
)
g
+
u
)
=
s
g
(
Γ
+
f
−
x
1
d
(
3
)
g
−
k
⋅
s
g
n
(
s
)
)
=
s
(
Γ
+
f
−
x
1
d
(
3
)
)
−
k
g
∣
s
∣
(9)
\begin{aligned} \dot{V} &= sg \left( \frac{ \Gamma + f - x_{1d} ^{(3)} }{g} + u \right) \\ &= sg \left( \frac{ \Gamma + f - x_{1d} ^{(3)} }{g} - k \cdot sgn(s) \right) \\ &= s \left( \Gamma + f - x_{1d} ^{(3)} \right) - kg \lvert s \rvert \end{aligned} \tag{9}
V˙=sg(gΓ+f−x1d(3)+u)=sg(gΓ+f−x1d(3)−k⋅sgn(s))=s(Γ+f−x1d(3))−kg∣s∣(9)到这里已经可以看出,(9)式右边第二项已经满足
≤
0
\leq 0
≤0了,现在只要看第一项即可。
对于第一项有
s
(
Γ
+
f
−
x
1
d
(
3
)
)
≤
∣
s
∣
∣
Γ
+
f
−
x
1
d
(
3
)
∣
s \left( \Gamma + f - x_{1d} ^{(3)} \right) \leq \lvert s \rvert \Big \lvert \Gamma + f - x_{1d} ^{(3)} \Big \rvert
s(Γ+f−x1d(3))≤∣s∣∣∣∣Γ+f−x1d(3)∣∣∣因此
V
˙
=
s
(
Γ
+
f
−
x
1
d
(
3
)
)
−
k
g
∣
s
∣
≤
∣
s
∣
∣
Γ
+
f
−
x
1
d
(
3
)
∣
−
k
g
∣
s
∣
=
∣
s
∣
(
∣
Γ
+
f
−
x
1
d
(
3
)
∣
−
k
g
)
(10)
\begin{aligned} \dot{V} &= s \left( \Gamma + f - x_{1d} ^{(3)} \right) - kg \lvert s \rvert \leq \lvert s \rvert \Big \lvert \Gamma + f - x_{1d} ^{(3)} \Big \rvert - kg \lvert s \rvert \\ &= \lvert s \rvert \left( \Big \lvert \Gamma + f - x_{1d} ^{(3)} \Big \rvert - kg \right) \end{aligned} \tag{10}
V˙=s(Γ+f−x1d(3))−kg∣s∣≤∣s∣∣∣∣Γ+f−x1d(3)∣∣∣−kg∣s∣=∣s∣(∣∣∣Γ+f−x1d(3)∣∣∣−kg)(10)可见,只要设计满足
∣
Γ
+
f
−
x
1
d
(
3
)
∣
−
k
g
≤
0
\Big \lvert \Gamma + f - x_{1d} ^{(3)} \Big \rvert - kg \leq 0
∣∣∣Γ+f−x1d(3)∣∣∣−kg≤0,那么就能有
V
˙
≤
0
\dot{V} \leq 0
V˙≤0。
换句话说,(8)式
u
=
−
k
⋅
s
g
n
(
s
)
u = -k \cdot sgn(s)
u=−k⋅sgn(s)中的
k
k
k只要满足
k
≥
∣
Γ
+
f
−
x
1
d
(
3
)
∣
g
(11)
k \geq \frac{\Big \lvert \Gamma + f - x_{1d} ^{(3)} \Big \rvert}{g} \tag{11}
k≥g∣∣∣Γ+f−x1d(3)∣∣∣(11)那么所设计的控制
u
u
u就能使李雅普诺夫函数
V
V
V满足
V
˙
≤
0
\dot{V} \leq 0
V˙≤0,从而达到稳定。
三、高维拓展
将上述结论拓展到高维系统
{
x
˙
1
=
x
2
x
˙
2
=
x
3
⋮
x
˙
n
−
1
=
x
n
x
˙
n
=
f
(
x
)
+
g
(
x
)
u
\begin{cases} \dot{x}_1 = x_2 \\ \dot{x}_2 = x_3 \\ \vdots \\ \dot{x}_{n-1} = x_n \\ \dot{x}_n = f(x) + g(x)u \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧x˙1=x2x˙2=x3⋮x˙n−1=xnx˙n=f(x)+g(x)u写出各个
x
i
x_i
xi的误差
e
i
e_i
ei表达式:
{
e
1
=
x
−
x
1
d
=
x
1
−
x
1
d
e
2
=
e
˙
1
=
x
˙
−
x
˙
1
d
=
x
2
−
x
˙
1
d
⋮
e
n
−
1
=
e
1
(
n
−
2
)
=
x
(
n
−
2
)
−
x
1
d
(
n
−
2
)
=
x
n
−
1
−
x
1
d
(
n
−
2
)
e
n
=
e
˙
n
−
1
=
x
¨
−
x
¨
1
d
=
x
3
−
x
¨
1
d
\begin{cases} e_1 = x - x_{1d} = x_1 - x_{1d} \\ e_2 = \dot{e}_1 = \dot{x}-\dot{x}_{1d} = x_2-\dot{x}_{1d} \\ \vdots \\ e_{n-1} = e_1^{(n-2)} =x^{(n-2)}-x_{1d}^{(n-2)} = x_{n-1}-x_{1d}^{(n-2)} \\ e_n = \dot{e}_{n-1} = \ddot{x} - \ddot{x}_{1d} = x_3-\ddot{x}_{1d} \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧e1=x−x1d=x1−x1de2=e˙1=x˙−x˙1d=x2−x˙1d⋮en−1=e1(n−2)=x(n−2)−x1d(n−2)=xn−1−x1d(n−2)en=e˙n−1=x¨−x¨1d=x3−x¨1d立即设计滑模面
s
=
c
1
e
1
+
c
2
e
2
+
⋯
+
c
n
−
1
e
n
−
1
+
e
n
=
∑
i
=
1
3
c
i
e
i
=
0
s=c_1 e_1 + c_2 e_2 + \cdots + c_{n-1} e_{n-1} + e_n = \sum_{i=1}^3 c_ie_i = 0
s=c1e1+c2e2+⋯+cn−1en−1+en=i=1∑3ciei=0其中
e
n
e_n
en前系数为1。
滑模面
s
s
s的导数为
s
˙
=
∑
i
=
1
n
−
1
c
i
e
i
+
1
+
f
+
g
u
−
x
1
d
(
n
)
=
Γ
′
+
f
+
g
u
−
x
1
d
(
n
)
\begin{aligned} \dot{s} &= \sum_{i=1}^{n-1} c_i e_{i+1} + f + gu - x_{1d} ^{(n)} \\ &= \Gamma' + f + gu - x_{1d} ^{(n)} \end{aligned}
s˙=i=1∑n−1ciei+1+f+gu−x1d(n)=Γ′+f+gu−x1d(n)李雅普诺夫函数不变,其导数为
V
˙
=
s
(
Γ
′
+
f
+
g
u
−
x
1
d
(
n
)
)
=
s
g
(
Γ
′
+
f
−
x
1
d
(
n
)
g
+
u
)
\begin{aligned} \dot{V} &= s \left( \Gamma' + f + gu - x_{1d} ^{(n)} \right) \\ &= sg \left( \frac{ \Gamma' + f - x_{1d} ^{(n)} }{g} + u \right) \end{aligned}
V˙=s(Γ′+f+gu−x1d(n))=sg(gΓ′+f−x1d(n)+u)
设计
u
u
u形式仍为(8)式,于是
V
˙
=
s
g
(
Γ
′
+
f
−
x
1
d
(
n
)
g
+
u
)
=
s
g
(
Γ
′
+
f
−
x
1
d
(
n
)
g
−
k
⋅
s
g
n
(
s
)
)
=
s
(
Γ
′
+
f
−
x
1
d
(
n
)
)
−
k
g
∣
s
∣
\begin{aligned} \dot{V} &= sg \left( \frac{ \Gamma' + f - x_{1d} ^{(n)} }{g} + u \right) \\ &= sg \left( \frac{ \Gamma' + f - x_{1d} ^{(n)} }{g} - k \cdot sgn(s) \right) \\ &= s \left( \Gamma' + f - x_{1d} ^{(n)} \right) - kg \lvert s \rvert \end{aligned}
V˙=sg(gΓ′+f−x1d(n)+u)=sg(gΓ′+f−x1d(n)−k⋅sgn(s))=s(Γ′+f−x1d(n))−kg∣s∣
并且同理
V
˙
=
s
(
Γ
′
+
f
−
x
1
d
(
n
)
)
−
k
g
∣
s
∣
≤
∣
s
∣
∣
Γ
′
+
f
−
x
1
d
(
n
)
∣
−
k
g
∣
s
∣
=
∣
s
∣
(
∣
Γ
′
+
f
−
x
1
d
(
n
)
∣
−
k
g
)
\begin{aligned} \dot{V} &= s \left( \Gamma' + f - x_{1d} ^{(n)} \right) - kg \lvert s \rvert \leq \lvert s \rvert \Big \lvert \Gamma' + f - x_{1d} ^{(n)} \Big \rvert - kg \lvert s \rvert \\ &= \lvert s \rvert \left( \Big \lvert \Gamma' + f - x_{1d} ^{(n)} \Big \rvert - kg \right) \end{aligned}
V˙=s(Γ′+f−x1d(n))−kg∣s∣≤∣s∣∣∣∣Γ′+f−x1d(n)∣∣∣−kg∣s∣=∣s∣(∣∣∣Γ′+f−x1d(n)∣∣∣−kg)同样的结论:只要设计满足
∣
Γ
′
+
f
−
x
1
d
(
n
)
∣
−
k
g
≤
0
\Big \lvert \Gamma' + f - x_{1d} ^{(n)} \Big \rvert - kg \leq 0
∣∣∣Γ′+f−x1d(n)∣∣∣−kg≤0,那么就能有
V
˙
≤
0
\dot{V} \leq 0
V˙≤0。
可以看出,高维情况下的控制律(8)设计一点不会改变,改变的仅仅是 k k k的取值范围,而这部分改变也是因为 k k k表达式中 Γ ′ \Gamma' Γ′改变了形式(从三阶下的 c 1 e 2 + c 2 e 3 c_1 e_2 + c_2 e_3 c1e2+c2e3变为了 ∑ i = 1 n − 1 c i e i + 1 \sum_{i=1}^{n-1} c_i e_{i+1} ∑i=1n−1ciei+1)。
四、分析
从控制律(8)式可以看出,对 u u u的限制仅仅存在于 k k k上,只要 k k k满足了条件(11),那么 u u u所在的李雅普诺夫函数就能实现稳定,进而系统的滑模面也是稳定的,系统就能被拉取到滑模面 s s s上,达到理想的控制效果。
可以看出,(8)式里并没有 f f f项,即并没有扰动项等其他不确定项,因此,滑模控制可以无视不确定项和扰动,直接用“暴力”的方式达到控制效果。
但另一方面,(8)式采用的是根据 s s s符号来输出信号的形式,当系统在滑模面附近来回摆动时, s s s的符号会不断地、高频地变化,因此 u u u的值和符号也会不断地、高频地变化,反应到实际情况下就是硬件不断高频地在正负信号之间变换,这对硬件系统是一种考验,大多数硬件系统无法承受这样的高负荷工作,这是滑模控制的一个缺点。