返回顶部
首页 > 资讯 > 后端开发 > Python >滑模控制理论(SMC)
  • 798
分享到

滑模控制理论(SMC)

算法python人工智能控制理论 2023-10-04 07:10:06 798人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

滑模控制理论(Sliding Mode Control,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
我们的控制目标很明确,就是希望 x1 = 0 , x2 = 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

这里有个问题就是,滑模面是个什么东西,为什么要设计成这个样子,为什么不是别的样子,其实这个涉及一个问题就是我们控制的目标是什么,是 x1 = 0 , x2 = 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 tx 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=x2cx1+x˙1=0{x1=x1(0)ectx2=cx1(0)ect
可以看出状态量最终都会趋于0,而且是指数级的趋于0。 c c c 越大,速度也就越快。所以如果满足 s = c x1 + c2 = 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˙=ksαsgn(s),0<α<1

sgn(s)= { 1 , s > 0 − 1 , s < 0 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 −εsgn(s) u = -cx_2-\varepsilon sgn(s) u=cx2εsgn(s)
我们对系统施加控制量 u u u 即可保证系统最终稳定在原点。

证明有效性

在控制原理中用李雅普诺夫函数来判断系统的稳定性,对于系统状态方程 s˙ = c x2 + 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} tlimV=0
lim ⁡ ∣ s ∣ → ∞ V=∞ {\lim\limits_{|s| \to \infty}V = \infty} slimV=

V ˙ <0 for s≠0 \dot V < 0 \ for \ s \ne 0 V˙<0 for s=0

我们证明的方法就是令 V = 12 s2 V= \frac {1} {2} s ^ 2 V=21s2 ,很明显我们满足第一个条件,我们对 V V V 进行求导,
V ˙ =s s ˙ =−sεsgn(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 2V − 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} dtdVV21dV0tV21dVV21(t)V21(0)V21(t)αV21αdt0tαdt21αt21α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)=εsV=21s2V˙αV21V˙=ε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 ˙ =−εsgn(s) \dot s = - \varepsilon sgn(s) s˙=εsgn(s)
我们的控制量 u u u 也不变
u=−εsgn(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α2 sα2 ssLα2 s+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
假设,我们期望的 x1 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 ˙ =−εsgn(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εsgn(s)=−ε∣s∣≤0 \dot V = -s \varepsilon sgn(s) = -\varepsilon |s| \le 0 V˙=sεsgn(s)=εs0
这里可以看到系统必将稳定,如果需要控制到达稳定的时间就限制 ε \varepsilon ε 即可

来源地址:https://blog.csdn.net/weixin_43903639/article/details/128730488

--结束END--

本文标题: 滑模控制理论(SMC)

本文链接: https://lsjlt.com/news/423304.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 滑模控制理论(SMC)
    滑模控制理论(Sliding Mode Control,SMC) 滑膜控制理论是一种建立在现代控制理论基础上的控制理论,其核心为李雅普诺夫函数,滑膜控制的核心是建立一个滑模面,将被控系统拉倒滑模面上来...
    99+
    2023-10-04
    算法 python 人工智能 控制理论
  • python实现车辆跟随滑模控制的实例
    上一篇文章介绍了Python使用OPENCV的目标跟踪算法实现自动视频标注效果,感兴趣的朋友点击查看,使用滑模变结构控制策略来解决汽车跟踪问题,今天通过本文介绍下python实现车辆...
    99+
    2024-04-02
  • nvidia控制面板平滑处理怎么打开
    这篇文章主要讲解了“nvidia控制面板平滑处理怎么打开”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nvidia控制面板平滑处理怎么打开”吧!nvidia控制面板平滑处理打开方法:右击桌面...
    99+
    2023-07-01
  • WordPress如何制作评论主题的评论模块
    这篇文章主要介绍“WordPress如何制作评论主题的评论模块”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“WordPress如何制作评论主题的评论模块”文章能帮助...
    99+
    2023-02-21
    wordpress
  • 管理控制台权限控制
    本文讨论一种常见的权限控制方式: 权限管理使用分层思想:一共分四层   1.菜单/页面/按钮授权 系统用户对菜单/页面/按钮的可见性(不可见不代表不能访问接口) 2.接口(功能)授权 系统用户对接口的是否有...
    99+
    2014-05-12
    管理控制台权限控制
  • Android开发控制ScrollView滑动速度的方法
    本文实例讲述了Android开发控制ScrollView滑动速度的方法。分享给大家供大家参考,具体如下: 前言 由于各个Android平板触摸屏的材质不一样,滑动效果会有一些区...
    99+
    2022-06-06
    方法 scrollview android开发 Android
  • Python权限控制模块Casbin
    目录简介为什么我要使用 Casbin?PyCasbin 模块的使用例子权限测试简介 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。 casbi...
    99+
    2024-04-02
  • ASP.NET Core基于滑动窗口实现限流控制
    目录前言:二、固定窗口算法三、滑动窗口算法四、实现六、使用结论:前言: 在实际项目中,为了保障服务器的稳定运行,需要对接口的可访问频次进行限流控制,避免因客户端频繁请求导致服务器压力...
    99+
    2024-04-02
  • vue如何控制滚动条滑到某个位置
    今天小编给大家分享一下vue如何控制滚动条滑到某个位置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一.关于web开发的各种...
    99+
    2023-07-04
  • 最优化:建模、算法与理论(优化建模)
    最优化:建模、算法与理论 目前在学习 最优化:建模、算法与理论这本书,来此记录一下,顺便做一些笔记,在其中我也会加一些自己的理解,尽量写的不会那么的条条框框(当然最基础的还是要有) 第三章 优化建模 本章将从常用的建模技巧开始,接着介绍统计...
    99+
    2023-08-30
    算法
  • AndroidPowerManagerService省电模式策略控制
    目录前言监听策略改变更新策略通知监听者如何配置策略结束前言 初识Android PowerManagerService省电模式 让我们省电模式的概念有了初步的认识...
    99+
    2024-04-02
  • SD模块信贷控制总结
    原文发在微信公众号了。欢迎关注。原文链接:https://mp.weixin.qq.com/s__biz=MjM5MDE2MDQ0Ng==&mid=2649706769&idx=1&sn=98612201fe23c6...
    99+
    2023-06-05
  • Python - 控制雷电模拟器(Dnconsole)
    Python - 雷电模拟器控制台(Dnconsole) 1.Dnconsole控制台 雷电模拟器9.0 雷电模拟器9.0,32+64位并行,支持对画质、性能要求较高的一类游戏。关于使用Python实现雷电模拟器的控制代码,主要适用于雷...
    99+
    2023-08-17
    python 开发语言 adb
  • Android 12.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析
    1.前言   在android12.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需...
    99+
    2023-09-09
    android systemui 下拉状态栏 下拉状态栏左滑 下拉状态栏右滑
  • 【网络】传输层——TCP(滑动窗口&&流量控制&&拥塞控制&&延迟应答&&捎带应答)
    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 上篇文章对TCP可靠性机制讲解了一部分,这篇文章接着继续讲解...
    99+
    2023-09-02
    网络
  • Python利用appium实现模拟手机滑动操控的操作
    目录滑动操控如何获取设备屏幕坐标系模拟实现一个简单的滑动操作将 “滑动操控” 改为公共的方法其实在前面两个章节的元素定位的场景,我们已经对 app 中的自动化...
    99+
    2024-04-02
  • ASP.NET Core基于滑动窗口实现限流控制的方法
    今天小编给大家分享一下ASP.NET Core基于滑动窗口实现限流控制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-29
  • JavaScript 代理模式的深层解析:从理论到实践
    代理模式概述 代理模式是一种设计模式,它允许您创建一个代理对象,该代理对象作为另一个对象(称为目标对象)的代理或替代品。代理对象提供与目标对象相同的接口,但它可以增强、扩展或控制目标对象的访问和行为。 代理模式类型 代理模式有四种主要类...
    99+
    2024-03-09
    JavaScript、代理模式、对象包装、函数扩展、原型扩展
  • 虚拟主机控制面板安装不了论坛怎么解决
    如果您无法安装虚拟主机控制面板安装论坛,以下是一些可能的解决方案:1. 检查系统要求:确保您的服务器满足论坛软件的最低系统要求。例如...
    99+
    2023-08-22
    虚拟主机
  • 详解PID控制器原理
    目录一、P - Proportional 比例二、I - Integral 积分三、D - Derivative 导数四、调整常数项五、补充六、总结七、调试口诀八、具体方法一、P -...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作