终端滑模(Terminal滑模)理解

2023-05-16

一、什么是终端滑模

在前面所介绍的滑模控制中,我们是选取了一个线性的滑模面s,使系统达到滑模面后,误差逐渐收敛到0,收敛的速度可以通过调节滑模面的参数来实现。后来人们为了使滑模控制有更好的性能,便想到将滑模面设计成非线性函数,构造Terminal滑模面,使得在滑模面上误差可以在指定时间T内收敛到0,于是就产生终端滑模.

二、终端滑模形式

终端滑模面的形式有很多,主要要把握其思想,下面我将以一种比较经典的滑模面介绍Terminal滑模。
根据前面滑模介绍,相信大家都了解了滑模变结构控制有两个阶段:一是到达阶段,这一阶段是指系统从初态到达s=0的滑模面上,当然,如果系统初态处于s=0的切换面上时,则是不存在这一阶段;二是在滑模面上滑动的阶段,即在s=0的切换面上滑动到平衡点。在这一阶段 s = 0 , s ˙ = 0 s=0,\dot{s}=0 s=0,s˙=0,我曾经也不理解为什么s与s的导数都为0系统仍然在运动,其实你可以这样理解,在滑动阶段,系统状态一直处于s=0的滑模面上滑动,s没有变化,因此 s ˙ = 0 \dot{s}=0 s˙=0;系统在s=0上滑动是因为s的形式,这个我后面会详细说明
比较常用的一种终端滑模面设计如下: s = x ˙ + α x + β x q p = 0 ⋅ ⋅ ⋅ ( 1 ) s=\dot{x}+\alpha x+\beta x^{\frac{q}{p}}=0\cdot \cdot \cdot (1) s=x˙+αx+βxpq=0(1)其中x是状态变量, α > 0 , β > 0 \alpha >0,\beta >0 α>0,β>0,q与p是正奇数,且 q < p q<p q<p
我们先来研究一下这个切换面的性质,即它在s=0的滑模面上滑动性质,为了更方便研究,我们将上式化为如下形式: x ˙ = − α x − β x q p ⋅ ⋅ ⋅ ( 2 ) \dot{x}=-\alpha x-\beta x^{\frac{q}{p}}\cdot \cdot \cdot (2) x˙=αxβxpq(2)利用simulink搭建模型,模型如下:
在这里插入图片描述
将x的初值设置为5,我们可以看到处于滑模面s=0上的状态会在一定收敛为0,收敛图像如下:
在这里插入图片描述
在仿真中改变 α , β , p , q \alpha ,\beta ,p,q α,β,p,q的值,系统收敛速度会改变(仿真已上传,自行下载)。通过这个实验我们可以明确感受到当处于滑动阶段时,系统性能由切换面s=0的形式决定。但上述滑模面有一个严重缺陷,存在奇异问题。
奇异主要出现在 x q p x^{\frac{q}{p}} xpq这一项,我来简单解释一下。我们都知道变结构滑模控制有两个阶段,第一阶段是到达阶段,即系统从 s ≠ 0 s\neq 0 s=0 s = 0 s=0 s=0,这一阶段是通过设计滑模面的导数即 s ˙ \dot{s} s˙实现,下面我们对上述滑模面求导,可以得到 s ˙ = x ¨ + α x ˙ + β q p x q p − 1 ⋅ ⋅ ⋅ ( 3 ) \dot{s}=\ddot{x}+\alpha \dot{x}+\beta\frac{q}{p} x^{\frac{q}{p}-1}\cdot \cdot \cdot (3) s˙=x¨+αx˙+βpqxpq1(3)很显然,在 s ˙ \dot{s} s˙中出现了 x q p − 1 x^{\frac{q}{p}-1} xpq1,而q<p,因此 q p − 1 < 0 \frac{q}{p}-1<0 pq1<0,即当出现x=0时,分母为0,就会出现奇异。因此,在使用这种滑模面设计终端滑模控制时,不可以设计 s ˙ \dot{s} s˙,即不能设计到达阶段,因此这种滑模只适用于一阶系统,接下来我以一个一阶系统举例设计。
假设存在某一一阶系统 x ˙ = x + x 2 + u ⋅ ⋅ ⋅ ( 4 ) \dot{x}=x+x^{2}+u\cdot \cdot \cdot (4) x˙=x+x2+u(4)选定滑模面参数后可构造滑模面如下 s = x ˙ + x + x 1 3 = 0 ⋅ ⋅ ⋅ ( 5 ) s=\dot{x}+x+x^{\frac{1}{3}}=0\cdot \cdot \cdot (5) s=x˙+x+x31=0(5)等式左边只保存 x ˙ \dot{x} x˙,可得 x ˙ = − x − x 1 3 ⋅ ⋅ ⋅ ( 6 ) \dot{x}=-x-x^{\frac{1}{3}}\cdot \cdot \cdot (6) x˙=xx31(6)由方程(4)与(6)可得 x ˙ = x + x 2 + u = − x − x 1 3 ⋅ ⋅ ⋅ ( 7 ) \dot{x}=x+x^{2}+u=-x-x^{\frac{1}{3}}\cdot \cdot \cdot(7) x˙=x+x2+u=xx31(7)可解得 u = − 2 x − x 2 − x 1 3 ⋅ ⋅ ⋅ ( 8 ) u=-2x-x^{2}-x^{\frac{1}{3}}\cdot \cdot \cdot(8) u=2xx2x31(8)下面我仍以Matlab simulink来展示系统稳定情况,其中搭建模型如下,x初值为10
在这里插入图片描述
系统x的变化如下:
在这里插入图片描述
可以看到,系统可以稳定。但这种滑模面具有奇异性,无法适应于二阶系统,于是人们对其进行了改进。考虑一二阶非线性系统如下 { x 1 ˙ = x 2 x 2 ˙ = f ( x ) + g ( x ) u ⋅ ⋅ ⋅ ( 9 ) \left\{\begin{matrix} \dot{x_{1}}&=&x_{2} \\ \dot{x_{2}}&=&f(x)&+&g(x)u \cdot \cdot \cdot(9) \end{matrix}\right. {x1˙x2˙==x2f(x)+g(x)u(9)
改进滑模面 s = x 1 + 1 β x 2 p q = 0 ⋅ ⋅ ⋅ ( 10 ) s=x_{1}+\frac{1}{\beta }x_{2}^{\frac{p}{q}}=0\cdot \cdot \cdot(10) s=x1+β1x2qp=0(10)其中 β > 0 \beta>0 β>0, p , q ( p > q ) p,q(p>q) p,q(p>q)为正奇数,且 1 < p q < 2 1<\frac{p}{q}<2 1<qp<2。下面以一个例子说明非奇异terminal滑模设计

三、终端滑模实战练手

某一二阶系统的状态方程如下: { x 1 ˙ = x 2 x 2 ˙ = x 1 x 2 + 2 x 2 + u ⋅ ⋅ ⋅ ( 11 ) \left\{\begin{matrix} \dot{x_{1}}=& x_{2}& \\ \dot{x_{2}}=&x_{1}x_{2}&+&2x_{2}&+&u \cdot \cdot \cdot(11) \end{matrix}\right. {x1˙=x2˙=x2x1x2+2x2+u(11)
目的是设计一镇定控制器,使x1收敛为0,按照上一节的理论设计如下滑模面: s = x 1 + 1 β x 2 p q = 0 ⋅ ⋅ ⋅ ( 12 ) s=x_{1}+\frac{1}{\beta }x_{2}^{\frac{p}{q}}=0\cdot \cdot \cdot(12) s=x1+β1x2qp=0(12)这个滑模面保证了系统在滑动阶段收敛,接下来开始设计到达阶段,即从 s ≠ 0 s\neq 0 s=0到s=0的阶段。我们在高中数学都应该知道,一个函数的导数反映了函数的变化,因此我们对s求导,导数如下: s ˙ = x 2 + 1 β p q x 2 p q − 1 x 2 ˙ ⋅ ⋅ ⋅ ( 13 ) \dot{s}=x_{2}+\frac{1}{\beta}\frac{p}{q}x_{2}^{\frac{p}{q}-1}\dot{x_{2}}\cdot \cdot \cdot(13) s˙=x2+β1qpx2qp1x2˙(13)取p=5,q=3, β = 1 \beta=1 β=1,式(13)化简如下 s ˙ = x 2 + 5 3 x 2 2 3 x 2 ˙ ⋅ ⋅ ⋅ ( 14 ) \dot{s}=x_{2}+\frac{5}{3}x_{2}^{\frac{2}{3}}\dot{x_{2}}\cdot \cdot \cdot(14) s˙=x2+35x232x2˙(14)将式(11)代入(14) s ˙ = x 2 + 5 3 x 2 2 3 ( x 1 x 2 + 2 x 2 + u ) ⋅ ⋅ ⋅ ( 15 ) \dot{s}=x_{2}+\frac{5}{3}x_{2}^{\frac{2}{3}}(x_{1}x_{2}+2x_{2}+u)\cdot \cdot \cdot(15) s˙=x2+35x232(x1x2+2x2+u)(15)我们在前面介绍了趋近律,我们令 s ˙ = − 5 3 x 2 2 3 ( k s + η s i g n ( s ) ) ⋅ ⋅ ⋅ ( 16 ) \dot{s}=-\frac{5}{3}x_{2}^{\frac{2}{3}}(ks+\eta sign(s))\cdot \cdot \cdot(16) s˙=35x232(ks+ηsign(s))(16)其中 k , η k,\eta k,η为正数。可以解出控制律 u = − k s − η s i g n ( s ) − 3 5 x 2 1 3 − x 1 x 2 − 2 x 2 ⋅ ⋅ ⋅ ( 17 ) u=-ks-\eta sign(s)-\frac{3}{5}x_{2}^{\frac{1}{3}}-x_{1}x_{2}-2x_{2}\cdot \cdot \cdot(17) u=ksηsign(s)53x231x1x22x2(17)利用simulink仿真,假定 x 1 , x 2 x_{1},x_{2} x1,x2的初值分别是2,3,模型如下
在这里插入图片描述
x1收敛图像如下
在这里插入图片描述

x2曲线如下
在这里插入图片描述
控制u图像如下:
在这里插入图片描述
从1s左右产生的黄色控制带就是由滑模法的抖振引起,抖振过大在实际系统中是不能使用的(可以想想现实执行器能执行这种控制吗)。后续我会剖析滑模变结构控制为什么存在抖振以及面对抖振如何抑制,即常用的抖振抑制方法。最后,感谢各位大佬提出的意见,我会不断改进。
仿真代码已上传,自行下载,使用matlab2018a。

四、为什么要用终端滑模

看了上面的介绍和仿真,大部分人会有一个疑问:为什么要用终端滑模?在我们以前学习过的控制理论中,大家应该都了解过李亚普诺夫稳定,渐近稳定,指数稳定等。但这些稳定都有一个特点,那就是收敛时间无限大,在理论上只有当 t = ∞ t=\infty t=时,系统才能收敛到平衡点,但终端滑模在理论上是有限时间稳定,有限时间稳定的定义比较复杂,我以通俗的话说明一下:系统可以在有限时间T内稳定在平衡点。相比于其他稳定,有限时间稳定可以给我们一个更加明确的时间上界,让我们判断系统此时是否达到我们稳定要求。至于终端滑模时间证明,建议参考刘金琨老师的《滑模变结构控制MATLAB仿真》,电子版已经发到我的CSDN里了,有需要自行下载。本人学识浅薄,若有不当之处,欢迎大家指正,创作不易,希望大家点点关注和赞。

五、关于公式(16)的补充

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

终端滑模(Terminal滑模)理解 的相关文章

  • PHP为什么需要抛出异常?底层原理是什么?

    在编程过程中 xff0c 可能会出现一些意外情况或者错误 xff0c 这些错误需要被捕获并处理 异常是一种错误处理机制 xff0c 它可以在程序出现异常情况时中断程序的正常执行流程 xff0c 跳转到异常处理代码块 xff0c 避免程序因错
  • PHP的代码注入是什么意思?底层原理是什么?

    PHP的代码注入 xff08 Code Injection xff09 指的是攻击者通过构造恶意的输入 xff0c 在应用程序中注入一些非法的代码 xff0c 从而在应用程序中执行攻击者的指令或代码 这种攻击方式通常会利用应用程序的漏洞 x
  • 信号量 Semaphore 用法及注意事项总结

    信号量 信号量在WIN32系统中是核心对象 xff0c 故其用法同其他同步机制类似 xff0c 但可应用于多个线程同步运行 xff0c 即同时有至多有限个线程同时工作 xff0c 而线程上线数量取决于初始化时指定的最大值 1 创建一个信号量
  • PHP的大数组是什么意思?有什么作用?底层原理是什么?

    在 PHP 中 xff0c 大数组指的是包含大量元素的数组 xff0c 其元素数量可以达到数百万或数千万甚至更多 这种数组在处理大规模数据时非常有用 xff0c 例如在数据分析 机器学习和科学计算等领域中 PHP 的大数组的实现方式可以采用
  • PHP的全局变量是是干什么的?有什么作用?底层原理是什么?

    PHP的全局变量是指在整个PHP脚本中都可以被访问到的变量 这些变量存储在PHP进程的内存中 xff0c 并在整个脚本执行期间保持不变 全局变量的作用是在不同的函数和代码块中共享数据 xff0c 从而使代码更加简洁和易于维护 全局变量的底层
  • PHP的日志是干什么的?有什么用?底层原理是什么?

    在软件开发中 xff0c 日志是记录系统活动的重要方式之一 xff0c 也是排查问题和故障排除的主要工具之一 PHP提供了多种日志记录方式 xff0c 如文件日志 数据库日志和Syslog等 它们的共同目的是在代码执行时收集和记录信息 xf
  • PHP的开发环境和部署环境是什么意思?底层原理是什么?

    PHP的开发环境和部署环境是指在开发和部署PHP应用程序时所使用的不同环境 开发环境通常是指程序员在本地开发PHP应用程序的环境 xff0c 其目的是为了让程序员能够快速开发和测试应用程序 xff0c 同时方便调试和排除问题 在开发环境中
  • PHP为什么需要错误报告级别?底层原理是什么?

    PHP提供了多种错误报告级别 xff0c 包括错误信息 警告信息 提示信息和严格模式等 xff0c 用于在开发过程中捕获和处理错误 底层原理是通过PHP的内部错误处理机制来实现的 当PHP执行脚本时 xff0c 如果出现了错误 xff0c
  • PHP的代码调试技巧是什么意思?底层原理是什么?

    PHP的代码调试技巧是指在开发过程中 xff0c 通过调试技术来解决代码中的问题 xff0c 提高代码的可靠性和稳定性 这些技巧可以帮助开发人员快速定位代码中的错误 xff0c 提高代码的质量和效率 PHP提供了多种调试技术 xff0c 包
  • PHP的mysqli扩展和mysql扩展的区别是什么?底层原理是什么?

    mysqli和mysql扩展都是PHP提供的操作MySQL数据库的扩展 它们的区别在于mysqli扩展是MySQL Improved Extension的简写 xff0c 是mysql扩展的改进版 xff0c 提供了更好的性能和更多的功能
  • PHP的依赖关系是什么意思?底层原理是什么?

    PHP的依赖关系指的是PHP应用程序或库与其他软件包或库之间的关系 这些软件包或库可能包括操作系统提供的库 xff0c 例如文件I O和网络功能 xff0c 也可能包括第三方库 xff0c 例如数据库客户端库和图像处理库 底层原理是 xff
  • 什么是Composer?底层原理是什么?

    Composer是PHP的一个依赖管理工具 xff0c 它可以帮助开发者在项目中自动管理依赖关系 xff0c 例如第三方库 框架 组件等 通过Composer xff0c 可以在项目中添加 更新 卸载依赖项 xff0c 并自动解析它们的依赖
  • 为什么composer可以自动管理依赖关系?底层原理是什么?

    Composer能够自动管理依赖关系的原理是基于包管理和自动加载的机制 首先 xff0c Composer通过一个名为Packagist的在线包存储库来管理各种PHP包 xff0c 这个仓库中包含了大量的PHP库和框架 xff0c 开发者可
  • windows线程同步-事件Event用法总结

    事件对象 Win32 中最具弹性的同步机制就属 events 对象了 Event 对象是一种核 心对象 xff0c 它的唯一目的就是成为激发状态或未激发状态 这两种状态全由程序 来控制 xff0c 不会成为 Wait 函数的副作用 Even
  • composer.lock是干什么的?底层原理是什么?

    composer lock文件是Composer工具在安装依赖包时生成的一个锁文件 它记录了当前应用程序所依赖的所有PHP库及其版本号 xff0c 以及所有依赖库所依赖的其他库及其版本号等信息 在运行composer install命令时
  • PHP的Zend引擎是干什么的?底层原理是什么?

    PHP的Zend引擎是PHP解释器的核心组件 xff0c 负责将PHP代码转换为可执行的指令集 xff0c 并执行这些指令 Zend引擎是PHP的默认执行引擎 xff0c 被广泛使用 Zend引擎的底层原理可以分为以下几个关键步骤 xff1
  • PHP解释器是干什么的?底层原理是什么?

    PHP解释器是用于解释执行PHP代码的软件程序 它负责将编写的PHP代码转换为可执行的机器指令 xff0c 并执行这些指令以实现代码的功能 PHP解释器的底层原理可以分为以下几个步骤 xff1a 词法分析 xff08 Lexical Ana
  • PHP代码的底层是什么?底层原理是什么?

    PHP代码的底层是由计算机可执行的机器码 xff08 二进制指令 xff09 组成 底层原理是将PHP代码经过编译和解释执行的过程转化为机器码 底层原理可以分为以下几个步骤 xff1a 词法分析 xff08 Lexical Analysis
  • Jetson Xavier NX 的SD卡系统镜像制作

    Jetson Xavier NX 的SD卡系统镜像制作 一 SD卡系统查看二 系统镜像制作三 系统镜像烧录 一 SD卡系统查看 现有的SD卡的内存为128G xff0c 其中64G内存并未分配 span class token commen
  • 嵌入式Linux下使用crond服务

    参考 xff1a https www linuxidc com Linux 2014 02 97369 htm http www linuxidc com Linux 2014 02 97360 htm https blog csdn ne

随机推荐

  • 关于Flexsns Sky 卡80%,以及乱码的解决问题

    一直被 flexsns sky 这个应用折磨好久了 xff0c 刚开始的时候安装成功 但是打开界面一直卡在80 那里 xff0c ucenter 里面的设置也是对的 官网也是挂的 xff01 于是百思不得解 接下来 我来说说我的解决办法把
  • Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)

    ORB SLAM3论文地址 xff1a https arxiv org abs 2007 11898 代码地址 xff1a https github com UZ SLAMLab ORB SLAM3 一 安装库 根据ORB SLAM3源代码
  • ROS中的坐标与坐标系转换

    ROS中的TF 官网建议新工作直接使用tf2 xff0c 因为它有一个更清洁的界面 xff0c 和更好的使用体验 xff08 自ROS Hydro以来 xff0c tf第一代已被 弃用 xff0c 转而支持tf2 xff09 TF介绍 TF
  • 激光雷达与相机融合(二)-----基于openCV的YOLO目标检测

    代码解析 1 加载模型 span class token comment load image from file span cv span class token operator span Mat img span class toke
  • 线程优先权Thread Priority概念总结

    全文参考 WIN32多线程设计 一书 为什么会有线程优先权 xff1a 为什么CPU处理线程时会按优先级执行 xff1f 想象在忙碌的一天中 xff0c 有很多事情待做但时间又不够 xff0c 其中有很多紧急的事情 比如当晚的英语在线测试
  • 将ros cv_bridge关联到自己安装的Opencv版本

    有时候需要同时使用较高版本的openCV 但一般默认安装的ros系统的cv bridge包关联的Opencv版本都较低 xff0c 这时候就需要将cv bridge关联到自己安装的高版本OpenCV 成功方法为第三条 xff0c 前两条为遇
  • chmod +x 与chmod 777的区别

    chmod 43 x 是将文件状态改为可执行 xff0c 而chmod 777 是改变文件读写权限 在linux中使用man命令查看chmod的大纲我们可以得出以下有用的信息 xff1a chmod OPTION MODE MODE FIL
  • WIndowsServer2012 DHCP服务器配置

    DHCP服务器配置 WIndowsServer2012 DHCP服务器配置服务器配置保留IP设置作用域选项 客户机设置 WIndowsServer2012 DHCP服务器配置 服务器配置 1 首先打开服务器管理器 xff0c 点击工具 xf
  • JavaScript设计模式:四、发布订阅模式

    JavaScript设计模式 xff1a 四 发布订阅模式 文章目录 JavaScript设计模式 xff1a 四 发布订阅模式一 概述1 观察者模式2 发布订阅模式3 观察者模式是不是发布订阅模式 一 概述 观察者模式 xff1a 观察者
  • FreeRTOS教程——二值信号量(四)

    二值信号量 信号量简介 目的 xff1a 共享资源访问 与任务同步 信号量类型 xff1a 二值信号量 计数型信号量 互斥信号量 递归互斥信号量 本质上是一种只包含一个项数的队列 二值信号量 0 和 1 xff0c 一种内核机制 内核同步
  • Bug:Warning: [antd: ***] overlay is deprecated. Please use menu instead.以及解决方案

    Ant Design Pro umi4Bug记录 xff1a Bug xff1a Warning antd overlay is deprecated Please use menu instead 解决方案 xff1a yarn add
  • 前端初学者的Ant Design Pro V6总结(上)

    前端初学者的Ant Design Pro V6总结 xff08 上 xff09 一 UI组件开发流程 61 gt 通用 xff08 异步 xff09 函数useEmotionCss 定义CSSuseModel获取全局状态useCallbac
  • 关于C语言在VS2017上开头格式

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • Java中Long和long的区别

    Java中Long和long的区别 Java的数据类型分为两种 xff1a 1 基本类型 xff1a byte 8 short 16 int 32 long 64 float 32 double 64 char 16 boolean 1 2
  • Windows 10 下如何彻底关闭 Hyper-V 服务

    CMD运行bcdedit set hypervisorlaunchtype off 恢复使用 xff1a bcdedit set hypervisorlaunchtype auto
  • 从百度运维实践谈“基于机器学习的智能运维”

    清华大学计算机系副教授裴丹于运维自动化专场发表了题为 基于机器学习的智能运维 的演讲 xff0c 上篇参看 科研角度谈 如何实现基于机器学习的智能运维 文章 xff0c 此为下篇 从百度运维实践谈基于机器学习的智能运维 以下为演讲实录 xf
  • python通过udp传输图片

    首先要了解UDP的工作模式 对于服务器 xff0c 首先绑定IP和端口 xff0c 本机测试的时候可以使用127 0 0 1是本机的专有IP xff0c 端口号 大于1024的是自定义的 xff0c 所以用大于1024的端口号 xff0c
  • D435i跑通ORB-SLAM2

    这篇文章主要记录我的实现过程 根据官方安装文档 xff0c 并参考以下两篇博客 xff0c 可以比较顺利的实现 xff1a Realsense D435i 在ubuntu上安装SDK与ROS Wrapper 运行ORB SLAM2 RTAB
  • 通俗理解滑模变结构控制(1)

    这里写自定义目录标题 1 什么是滑模变结构控制2 滑模变结构的一些基本知识3 滑模控制器设计4 滑模控制器例子 1 什么是滑模变结构控制 在开始介绍滑模变结构控制之前 xff0c 最好先学习一些线性控制的基础 xff0c 知道什么是李亚普诺
  • 终端滑模(Terminal滑模)理解

    一 什么是终端滑模 在前面所介绍的滑模控制中 xff0c 我们是选取了一个线性的滑模面s xff0c 使系统达到滑模面后 xff0c 误差逐渐收敛到0 xff0c 收敛的速度可以通过调节滑模面的参数来实现 后来人们为了使滑模控制有更好的性能