滑模控制理论(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                              {\lim\limits_{t \to \infty}V = 0}                  t→∞limV=0
                                                                lim                                                                                        ∣                                  s                                  ∣                                  →                                  ∞                                                 V                            =                            ∞                                  {\lim\limits_{|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∣≤−α2                    s⇒ε≥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≤−α2                           s≤−α2                           s−sL≥α2                           s+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                  ε 即可