电脑基础 · 2023年3月31日

滑模控制理论(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
=
,
x
2
=
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
=
,
x
2
=
x_1 = 0,x_2=0
x1=0,x2=0
,那如果
s
=
s=0
s=0


{
c
x
1
+
x
2
=
x
˙
1
=
x
2

c
x
1
+
x
˙
1
=

{
x
1
=
x
1
(
)
e

c
t
x
2
=

c
x
1
(
)
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=x2cx1+x˙1=0{x1=x1(0)ectx2=cx1(0)ect

可以看出状态量最终都会趋于0,而且是指数级的趋于0。
c
c
c
越大,速度也就越快。所以如果满足
s
=
c
x
1
+
c
2
=
s=cx_1+c_2=0
s=cx1+c2=0
,那么系统的状态将沿着滑模面趋于零,(
s
=
s=0
s=0
称之为滑模面)

设计趋近律

上面说,如果
s
=
s=0
s=0
状态变量最终会趋于0,可以如何保证
s
=
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
)
,
ε
>
s
˙
=

ε
s
g
n
(
s
)

k
s
,
ε
>
,
k
>
s
˙
=

k

s

α
s
g
n
(
s
)
,
<
α
<
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˙=ksαsgn(s),0<α<1


s
g
n
(
s
)
=
{
1
,
s
>

1
,
s
<
sgn(s) = \begin{cases} 1,s>0 \\ -1,s<0 \\ \end{cases}
sgn(s)={1,s>01,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
=
s=0
s=0
处稳定,即
lim

t


V
=
{\lim\limits_{t \to \infty}V = 0}
tlimV=0


lim


s



V
=

{\lim\limits_{|s| \to \infty}V = \infty}
slimV=


V
˙
<
 
f
o
r
 
s

\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

<
\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

t
V

1
2
d
V


t

α
d
t
V
1
2
(
t
)

V
1
2
(
)


1
2
α
t
V
1
2
(
t
)


1
2
α
t
+
V
1
2
(
)
\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}
dtdVV21dV0tV21dVV21(t)V21(0)V21(t)αV21αdt0tαdt21αt21αt+V21(0)

根据上面的等式可以看出,
V
V
V
将在有限时间达到稳定,稳定的最终时间为

t
r

2
V
1
2
(
)
α
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)=εsV=21s2V˙αV21V˙=ε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+sLs(ε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α2ssLα2s+sLsgn(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=x1x1d=e˙1=x˙1x˙1d=x2x˙1d=e˙2=x¨1x¨1d=x3x¨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+x3x¨1d(3))=s(c1e2+c2e3+x3f(x)+g(x)ux1d(3))=s(Γf(x)+g(x)ux1d(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)ux1d(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


\dot V = -s \varepsilon sgn(s) = -\varepsilon |s| \le 0
V˙=sεsgn(s)=εs0

这里可以看到系统必将稳定,如果需要控制到达稳定的时间就限制
ε
\varepsilon
ε
即可