滑模控制理论(SMC)
滑模控制理论(Sliding Mode Control,SMC)
滑膜控制理论是一种建立在现代控制理论基础上的控制理论,其核心为李雅普诺夫函数,滑膜控制的核心是建立一个滑模面,将被控系统拉倒滑模面上来,使系统沿着滑模面运动,滑膜控制的优势在于无视外部扰动和不确定性参数,采取一种比较暴力的方式来达到控制目的,但是这种暴力也带来了一些问题,就是正负信号的高频切换,一般的硬件是无法进行信号的高频切换的,所以需要一些其他的方式避免这个问题,还有就是型号的高频切换会导致输出的信号出现震荡,导致系统在所选取的滑模面之间来回震荡,这种震荡是无法消除的,这也是滑膜控制的一个问题。
优点
滑动模态可以设计
对扰动不敏感
缺点
硬件无法适应高频的信号切换
信号高频切换带来的输出信号震荡
系统建模
我们可以建立一个简单的二阶系统的状态方程
x
˙
1
=
x
2
x
˙
2
=
u
begin{align} dot x_1 &= x_2 nonumber \ dot x_2 &= u nonumber \ end{align}
x˙1x˙2=x2=u
我们的控制目标很明确,就是希望
x
1
=
0
,
x
2
=
0
x_1 = 0,x_2=0
x1=0,x2=0
设计滑模面
s = c x 1 + x 2 s=cx_1+x_2 s=cx1+x2
这里有个问题就是,滑模面是个什么东西,为什么要设计成这个样子,为什么不是别的样子,其实这个涉及一个问题就是我们控制的目标是什么,是
x
1
=
0
,
x
2
=
0
x_1 = 0,x_2=0
x1=0,x2=0,那如果
s
=
0
s=0
s=0呢
{
c
x
1
+
x
2
=
0
x
˙
1
=
x
2
⇒
c
x
1
+
x
˙
1
=
0
⇒
{
x
1
=
x
1
(
0
)
e
−
c
t
x
2
=
−
c
x
1
(
0
)
e
−
c
t
begin{equation} begin{cases} cx_1 + x_2 = 0 \ dot x_1 = x_2 \ end{cases} Rightarrow cx_1+dot x_1 = 0 Rightarrow begin{cases} x_1 = x_1(0)e^{-ct} \ x_2 = -cx_1(0)e^{-ct} \ end{cases} nonumber end{equation}
{cx1+x2=0x˙1=x2⇒cx1+x˙1=0⇒{x1=x1(0)e−ctx2=−cx1(0)e−ct
可以看出状态量最终都会趋于0,而且是指数级的趋于0。
c
c
c 越大,速度也就越快。所以如果满足
s
=
c
x
1
+
c
2
=
0
s=cx_1+c_2=0
s=cx1+c2=0,那么系统的状态将沿着滑模面趋于零,(
s
=
0
s=0
s=0称之为滑模面)
设计趋近律
上面说,如果
s
=
0
s=0
s=0 状态变量最终会趋于0,可以如何保证
s
=
0
s=0
s=0 呢,这就是控制率
u
u
u 需要保证的内容了
s
˙
=
c
x
˙
1
+
x
˙
2
=
c
x
2
+
u
dot s = c dot x_1 + dot x_2 = cx_2+u
s˙=cx˙1+x˙2=cx2+u
趋近律就是指
s
˙
dot s
s˙ ,趋近律的一般有以下几种设计
{
s
˙
=
−
ε
s
g
n
(
s
)
,
ε
>
0
s
˙
=
−
ε
s
g
n
(
s
)
−
k
s
,
ε
>
0
,
k
>
0
s
˙
=
−
k
∣
s
∣
α
s
g
n
(
s
)
,
0
<
α
<
1
begin {cases} dot s = - varepsilon sgn(s), varepsilon > 0 \ dot s = - varepsilon sgn(s)-ks, varepsilon > 0 , k>0\ dot s = - k|s|^{alpha}sgn(s), 0 < alpha < 1 end{cases}
⎩
⎨
⎧s˙=−εsgn(s),ε>0s˙=−εsgn(s)−ks,ε>0,k>0s˙=−k∣s∣αsgn(s),0<α<1
s g n ( s ) = { 1 , s > 0 − 1 , s < 0 sgn(s) = begin{cases} 1,s>0 \ -1,s<0 \ end{cases} sgn(s)={1,s>0−1,s<0
根据以上的趋近律,我们就可以获得控制量
u
u
u 了(选取第一种控制率)。
u
=
−
c
x
2
−
ε
s
g
n
(
s
)
u = -cx_2-varepsilon sgn(s)
u=−cx2−εsgn(s)
我们对系统施加控制量
u
u
u 即可保证系统最终稳定在原点。
证明有效性
在控制原理中用李雅普诺夫函数来判断系统的稳定性,对于系统状态方程
s
˙
=
c
x
2
+
u
dot s = cx_2+u
s˙=cx2+u ,我们此时的目标已经是希望把系统拉倒滑模面附近了,控制目标是
s
s
s ,对于
s
s
s 如果存在一个连续函数
V
V
V 满足下面两个式子,那么系统将在平衡点
s
=
0
s=0
s=0 处稳定,即
lim
t
→
∞
V
=
0
{limlimits_{t to infty}V = 0}
t→∞limV=0
lim
∣
s
∣
→
∞
V
=
∞
{limlimits_{|s| to infty}V = infty}
∣s∣→∞limV=∞
V ˙ < 0 f o r s ≠ 0 dot V < 0 for s ne 0 V˙<0 for s=0
我们证明的方法就是令
V
=
1
2
s
2
V= frac {1} {2} s ^ 2
V=21s2 ,很明显我们满足第一个条件,我们对
V
V
V 进行求导,
V
˙
=
s
s
˙
=
−
s
ε
s
g
n
(
s
)
=
−
ε
∣
s
∣
<
0
dot V = s dot s = -s varepsilon sgn(s) = - varepsilon|s| < 0
V˙=ss˙=−sεsgn(s)=−ε∣s∣<0
也是满足第二个条件的,所以最终系统会稳定在滑膜面附近,这也就意味着两个变量也会稳定在滑模面期望他们稳定在的位置,即零点。
无限时间问题
上面的分析看似无懈可击,实际上是没什么用的,因为我们最终得到的结论是,在时间趋于无穷时,系统的状态必将趋于0,这有用吗,并没有,因为无限时间这太恐怖了,人死了系统都没稳定的话这没什么意义,所以我们必须要求他是有限时间可达的,所以我们修改一个李雅普诺夫的第二个条件
V
˙
≤
−
α
V
1
2
dot V le - alpha V ^ {frac {1} {2}}
V˙≤−αV21
对于改进后的这个条件可以分离变量再积分
d
V
d
t
≤
−
α
V
1
2
V
−
1
2
d
V
≤
−
α
d
t
∫
0
t
V
−
1
2
d
V
≤
∫
0
t
−
α
d
t
V
1
2
(
t
)
−
V
1
2
(
0
)
≤
−
1
2
α
t
V
1
2
(
t
)
≤
−
1
2
α
t
+
V
1
2
(
0
)
begin {align} frac {text d V} {text d t} &le - alpha V ^ {frac {1} {2}} nonumber\ V ^ {- frac {1} {2}} text d V &le - alpha text d t nonumber\ int^{t}_{0} V ^ {- frac {1} {2}} text d V &le int^{t}_{0} - alpha text d t nonumber\ V ^ {frac {1} {2}} (t) - V ^ {frac {1} {2}} (0) &le - frac {1} {2} alpha t nonumber\ V ^ {frac {1} {2}} (t) &le - frac {1} {2} alpha t + V ^ {frac {1} {2}} (0) nonumber \ end {align}
dtdVV−21dV∫0tV−21dVV21(t)−V21(0)V21(t)≤−αV21≤−αdt≤∫0t−αdt≤−21αt≤−21αt+V21(0)
根据上面的等式可以看出,
V
V
V 将在有限时间达到稳定,稳定的最终时间为
t
r
≤
2
V
1
2
(
0
)
α
t_r le frac {2V^ frac {1} {2} (0)} {alpha}
tr≤α2V21(0)
因为李雅普诺夫条件的改变,控制器
u
u
u 也需要作出相应改变
{
V
˙
=
s
s
˙
=
−
s
ε
s
g
n
(
s
)
=
−
ε
∣
s
∣
V
=
1
2
s
2
V
˙
≤
−
α
V
1
2
⇒
V
˙
=
−
ε
∣
s
∣
≤
−
α
s
2
⇒
ε
≥
α
2
begin{cases} dot V = s dot s = -s varepsilon sgn(s) = - varepsilon|s|\ V = frac {1} {2} s ^ 2 \ dot V le - alpha V ^ {frac{1} {2}} end{cases} Rightarrow dot V = - varepsilon|s| le -alpha frac{s}{sqrt {2}} Rightarrow varepsilon ge frac {alpha} {sqrt{2}}
⎩
⎨
⎧V˙=ss˙=−sεsgn(s)=−ε∣s∣V=21s2V˙≤−αV21⇒V˙=−ε∣s∣≤−α2s⇒ε≥2α
也就是给之前随意指定的
ε
varepsilon
ε 增加了一个控制条件
干扰问题
上面的讨论其实还基于一个假设,没有干扰,没有干扰的控制是非常好做的,也是没什么实际意义的,这里我们将干扰项加入状态方程,之前我们讲到了滑膜方法对干扰是不敏感的,这里我们将从原理上解释为什么滑膜方法对干扰不敏感。
加入干扰后的状态方程
x
˙
1
=
x
2
x
˙
2
=
u
+
d
begin{align} dot x_1 &= x_2 nonumber\ dot x_2 &= u + d nonumber\ end{align}
x˙1x˙2=x2=u+d
这对我们设计滑膜面没有什么影响,我们的滑膜面如下
s
=
c
x
1
+
x
2
s = cx_1+x_2
s=cx1+x2
我们的趋近律设计也不变
s
˙
=
−
ε
s
g
n
(
s
)
dot s = - varepsilon sgn(s)
s˙=−εsgn(s)
我们的控制量
u
u
u 也不变
u
=
−
ε
s
g
n
(
s
)
−
c
x
2
u = - varepsilon sgn(s) - cx_2
u=−εsgn(s)−cx2
s ˙ = c x ˙ 1 + x ˙ 2 = c x 2 + u + d begin{align} dot s &= c dot x_1 + dot x_2 nonumber\ &=cx_2 + u + d nonumber\ end{align} s˙=cx˙1+x˙2=cx2+u+d
分析稳定性我们依旧使用李雅普诺夫函数
V
=
1
2
s
2
V
˙
=
s
s
˙
=
s
(
c
x
2
+
u
+
d
)
=
s
(
−
ε
s
g
n
(
s
)
+
d
)
≤
−
ε
∣
s
∣
+
s
d
≤
−
ε
∣
s
∣
+
s
L
≤
∣
s
∣
(
ε
−
L
)
begin{align} V &= frac {1} {2} s ^ 2 nonumber\ dot V &= s dot s nonumber\ &= s (cx_2 + u + d) nonumber\ &= s (- varepsilon sgn(s) + d) nonumber\ & le -varepsilon|s| + sd nonumber\ & le -varepsilon|s| + sL nonumber\ & le |s|(varepsilon - L) nonumber\ end{align}
VV˙=21s2=ss˙=s(cx2+u+d)=s(−εsgn(s)+d)≤−ε∣s∣+sd≤−ε∣s∣+sL≤∣s∣(ε−L)
其中
L
L
L 为干扰
d
d
d 的上界
V
˙
≤
−
α
V
1
2
−
ε
∣
s
∣
+
s
L
≤
−
α
s
2
−
ε
∣
s
∣
≤
−
α
s
2
−
s
L
ε
∣
s
∣
≥
α
s
2
+
s
L
ε
≥
s
g
n
(
s
)
(
α
2
+
L
)
ε
≥
(
α
2
+
L
)
begin{align} dot V &le - alpha V ^ {frac{1} {2}} nonumber\ -varepsilon|s| + sL & le -alpha frac{s}{sqrt {2}} nonumber\ -varepsilon|s| & le -alpha frac{s}{sqrt {2}} - sL nonumber\ varepsilon|s| & ge alpha frac{s}{sqrt {2}} + sL nonumber\ varepsilon & ge sgn(s)(frac{alpha}{sqrt {2}} + L) nonumber\ varepsilon & ge (frac{alpha}{sqrt {2}} + L) nonumber\ end{align}
V˙−ε∣s∣+sL−ε∣s∣ε∣s∣εε≤−αV21≤−α2s≤−α2s−sL≥α2s+sL≥sgn(s)(2α+L)≥(2α+L)
所以我们直接证明了,当我们的干扰有上界的情况下,我们的滑膜参数 $varepsilon $ 只需要满足上述条件就可以以指数级的收敛速度收敛到滑膜面附近。
三阶系统滑膜设计方法示例
三阶系统的模型如下
x
˙
1
=
x
2
x
˙
2
=
x
3
x
˙
3
=
f
(
x
)
+
g
(
x
)
u
begin {align} dot x_1 &= x_2 nonumber\ dot x_2 &= x_3 nonumber\ dot x_3 &= f(x) + g(x)u nonumber\ end {align}
x˙1x˙2x˙3=x2=x3=f(x)+g(x)u
假设,我们期望的
x
1
x_1
x1 的目标是
x
1
d
x_{1d}
x1d ,注意,这里和前文不同,这里的控制目标不在是0了
e
1
=
x
1
−
x
1
d
e
2
=
e
˙
1
=
x
˙
1
−
x
˙
1
d
=
x
2
−
x
˙
1
d
e
3
=
e
˙
2
=
x
¨
1
−
x
¨
1
d
=
x
3
−
x
¨
1
d
begin{align} e_1 &= x_1 - x_{1d} nonumber\ e_2 &= dot e_1 = dot x_1 - dot x_{1d} = x_2 - dot x_{1d} nonumber\ e_3 &= dot e_2 = ddot x_1 - ddot x_{1d} = x_3 - ddot x_{1d} nonumber\ end{align}
e1e2e3=x1−x1d=e˙1=x˙1−x˙1d=x2−x˙1d=e˙2=x¨1−x¨1d=x3−x¨1d
设计滑模面
s
=
c
1
e
1
+
c
2
e
2
+
e
3
s = c_1 e_1 + c_2 e_2 + e_3
s=c1e1+c2e2+e3
设计李雅普诺夫函数
V
=
1
2
s
2
V = frac{1}{2} s ^ 2
V=21s2
对李雅普诺夫函数进行求导
V
˙
=
s
s
˙
=
s
(
c
1
e
˙
1
+
c
2
e
˙
2
+
e
˙
3
)
=
s
(
c
1
e
2
+
c
2
e
3
+
x
3
−
x
¨
1
d
(
3
)
)
=
s
(
c
1
e
2
+
c
2
e
3
+
x
3
−
f
(
x
)
+
g
(
x
)
u
−
x
1
d
(
3
)
)
=
s
(
Γ
−
f
(
x
)
+
g
(
x
)
u
−
x
1
d
(
3
)
)
=
s
g
(
x
)
(
Γ
−
f
(
x
)
−
x
1
d
(
3
)
g
(
x
)
+
u
)
begin{align} dot V &= s dot s nonumber\ &= s (c_1 dot e_1 + c_2 dot e_2 + dot e_3) nonumber\ &= s (c_1 e_2 + c_2 e_3 + x_3 - ddot x^{(3)}_{1d}) nonumber\ &= s (c_1 e_2 + c_2 e_3 + x_3 - f(x) + g(x)u - x^{(3)}_{1d}) nonumber\ &= s (Gamma - f(x) + g(x)u - x^{(3)}_{1d}) nonumber\ &= sg(x)(frac {Gamma - f(x) - x^{(3)}_{1d}} {g(x)} + u) nonumber\ end{align}
V˙=ss˙=s(c1e˙1+c2e˙2+e˙3)=s(c1e2+c2e3+x3−x¨1d(3))=s(c1e2+c2e3+x3−f(x)+g(x)u−x1d(3))=s(Γ−f(x)+g(x)u−x1d(3))=sg(x)(g(x)Γ−f(x)−x1d(3)+u)
这里我们设计趋近律
s
˙
=
−
ε
s
g
n
(
s
)
=
Γ
−
f
(
x
)
+
g
(
x
)
u
−
x
1
d
(
3
)
dot s = - varepsilon sgn(s) = Gamma - f(x) + g(x)u - x^{(3)}_{1d}
s˙=−εsgn(s)=Γ−f(x)+g(x)u−x1d(3)
得到控制量
u
u
u
u
=
−
ε
s
g
n
(
s
)
−
Γ
+
f
(
x
)
+
x
1
d
(
3
)
g
(
x
)
u = frac {-varepsilon sgn(s) - Gamma + f(x) + x^{(3)}_{1d}} {g(x)}
u=g(x)−εsgn(s)−Γ+f(x)+x1d(3)
带入李雅普诺夫函数可得
V
˙
=
−
s
ε
s
g
n
(
s
)
=
−
ε
∣
s
∣
≤
0
dot V = -s varepsilon sgn(s) = -varepsilon |s| le 0
V˙=−sεsgn(s)=−ε∣s∣≤0
这里可以看到系统必将稳定,如果需要控制到达稳定的时间就限制
ε
varepsilon
ε 即可