滑模控制学习笔记(三)

2023-05-16

滑模控制学习笔记(三)

  • 基于趋近律的滑模控制
    • 几种典型的趋近律
      • 等速趋近律
      • 指数趋近律
      • 幂次趋近律
      • 一般趋近律
    • 基于趋近律的控制器设计
      • 仿真实例
        • 状态空间模型建立
        • 滑模控制器模型建立
        • 仿真结果
    • 基于趋近律的滑模鲁棒控制
      • 仿真实例

基于趋近律的滑模控制

  滑模运动包括趋近运动和滑模运动两个过程。系统从任意状态趋近于滑模面,直到到达切换面的运动称为趋近运动,即 s → 0 s\rarr0 s0的过程。根据滑模变结构原理,滑模可达性条件仅保证由状态空间任意运动点在有限时间内到达切换面的要求,而对于趋近运动具体轨迹未作任何限制,采用趋近律的方法可以改善趋近运动的动态品质。

几种典型的趋近律

等速趋近律

s ˙ = − ϵ s i g n ( s )     ϵ > 0 (1) \dot s = -\epsilon sign(s) \ \ \ \epsilon>0 \tag1 s˙=ϵsign(s)   ϵ>0(1)特点: ϵ \epsilon ϵ越小,趋近速度慢; ϵ \epsilon ϵ越大,引起的抖动越大。

指数趋近律

s ˙ = − ϵ s i g n ( s ) − k s     ϵ > 0 ,   k > 0 (2) \dot s = -\epsilon sign(s) -ks\ \ \ \epsilon >0,\ k>0 \tag2 s˙=ϵsign(s)ks   ϵ>0, k>0(2)特点:指数项 − k s -ks ks能保证当 s s s较大时,系统能以较大的速度趋近滑动模态。因此,指数趋近律尤其适合解决具有大阶跃的响应控制问题。
注:指数趋近律中,为了保证快速趋近的同时削弱抖振,应在增大 k k k的同时减小 ϵ \epsilon ϵ

幂次趋近律

s ˙ = − k ∣ s ∣ α s i g n ( s )     k > 0 ,   1 > α > 0 (3) \dot s = -k|s|^\alpha sign(s)\ \ \ k>0,\ 1>\alpha >0 \tag3 s˙=ksαsign(s)   k>0, 1>α>0(3)特点:通过调整 α \alpha α可保证系统状态远离滑模面时以较大的速度趋近于滑动模态;系统状态趋近滑模面时以较小的速度趋近于滑动模态,以降低抖振。

一般趋近律

s ˙ = − ϵ s i g n ( s ) − f ( s )     ϵ > 0 (4) \dot s = -\epsilon sign(s) - f(s)\ \ \ \epsilon >0 \tag4 s˙=ϵsign(s)f(s)   ϵ>0(4)其中, f ( 0 ) = 0 f(0)=0 f(0)=0,当 s ≠ 0 s\neq0 s=0时, s f ( s ) > 0 sf(s)>0 sf(s)>0

基于趋近律的控制器设计

  考虑如下被控对象: θ ¨ = − f ( θ , t ) + b   u ( t ) (5) \ddot \theta = -f(\theta,t)+b\ u(t) \tag5 θ¨=f(θ,t)+b u(t)(5)其中, f ( θ , t ) f(\theta ,t) f(θ,t) b b b为已知且 b > 0 b>0 b>0
  滑模函数为: s ( t ) = c e ( t ) + e ˙ ( t )    c > 0 (6) s(t) = ce(t)+\dot e(t)\ \ c>0\tag6 s(t)=ce(t)+e˙(t)  c>0(6)
  跟踪误差为: e ( t ) = θ d ( t ) − θ ( t ) ,    e ˙ ( t ) = θ ˙ d ( t ) − θ ˙ ( t ) (7) e(t) = \theta_d (t) - \theta (t),\ \ \dot e(t) = \dot \theta_d (t) - \dot \theta (t)\tag7 e(t)=θd(t)θ(t),  e˙(t)=θ˙d(t)θ˙(t)(7)其中, θ d \theta_d θd为理想位置信号。
  设采用指数趋近律,则需要满足 s ˙ = − ϵ s i g n ( s ) − k s    ϵ > 0 , k > 0 (8) \dot s = -\epsilon sign(s) - ks\ \ \epsilon>0,k>0\tag8 s˙=ϵsign(s)ks  ϵ>0,k>0(8)
  根据滑模函数可得: s ˙ = c e ˙ + e ¨ = c ( θ ˙ d − θ ˙ ) + ( θ ¨ d − θ ¨ ) = c ( θ ˙ d − θ ˙ ) + ( θ ¨ d + f ( θ , t ) − b u ( t ) ) (9) \dot s = c\dot e+\ddot e = c(\dot \theta_d -\dot \theta)+(\ddot \theta_d -\ddot \theta) = c(\dot \theta_d -\dot \theta)+(\ddot \theta_d +f(\theta,t)-bu(t))\tag9 s˙=ce˙+e¨=c(θ˙dθ˙)+(θ¨dθ¨)=c(θ˙dθ˙)+(θ¨d+f(θ,t)bu(t))(9)综合式(8)(9),可得到: c ( θ ˙ d − θ ˙ ) + ( θ ¨ d + f ( θ , t ) − b u ( t ) ) = − ϵ s i g n ( s ) − k s (10) c(\dot \theta_d -\dot \theta)+(\ddot \theta_d +f(\theta,t)-bu(t)) =-\epsilon sign(s) - ks\tag{10} c(θ˙dθ˙)+(θ¨d+f(θ,t)bu(t))=ϵsign(s)ks(10)整理得指数趋近律对应控制律为: u ( t ) = 1 b ( ϵ s i g n ( s ) + k s + c ( θ ˙ d − θ ˙ ) + θ ¨ d + f ( θ , t ) ) (11) u(t) = \frac{1}{b}(\epsilon sign(s)+ks+c(\dot \theta_d -\dot \theta)+\ddot \theta_d +f(\theta,t))\tag{11} u(t)=b1(ϵsign(s)+ks+c(θ˙dθ˙)+θ¨d+f(θ,t))(11)

仿真实例

  考虑被控对象如下: θ ¨ ( t ) = − 25 θ ˙ ( t ) +   133 u ( t ) (12) \ddot \theta (t) = -25\dot\theta(t) +\ 133u(t) \tag{12} θ¨(t)=25θ˙(t)+ 133u(t)(12)

状态空间模型建立

  根据上述微分方程,建立状态空间模型如下:状态空间模型

滑模控制器模型建立

  根据式(11),取 K = 10 , C = 15 , ϵ = 5 K = 10,C= 15,\epsilon = 5 K=10,C=15,ϵ=5,建立指数趋近律滑模控制器如下:

function u  = fcn(x2,e,dthd,ddthd)
K = 10;
C = 15;
eps = 5;
dth = x2;
de = dthd - dth;
s = C*e + de;
u = (eps*sign(s) + K*s + C*de+ ddthd + 25*dth)/133;
end

滑模控制器模型

仿真结果

  取位置函数为 θ d = s i n t \theta_d = sint θd=sint,则 θ ˙ d = c o s t , θ ¨ d = − s i n t \dot \theta_d = cost,\ddot \theta_d = -sint θ˙d=cost,θ¨d=sint,设初始状态 [ x 1    x 2 ] = [ − 0.15   − 0.15 ] [x_1\ \ x_2] = [-0.15 \ -0.15] [x1  x2]=[0.15 0.15]仿真结果如下:
跟踪正弦位置
  分别取 k = 0 , k = 5 , k = 10 k=0,k=5,k=10 k=0,k=5,k=10,并将 e e e e ˙ \dot e e˙输出至workspace绘制相轨迹:
不同K下的相轨迹
  可以看到,通过增大k可以更快的趋近于滑模面,但抖振的问题仍然存在。

基于趋近律的滑模鲁棒控制

  考虑被控对象与上例相同,但收到扰动 d ( t ) d(t) d(t),则运动方程如下: θ ¨ ( t ) = − f ( θ , t ) + b u ( t ) + d ( t ) (13) \ddot \theta(t) = -f(\theta,t)+bu(t)+d(t) \tag{13} θ¨(t)=f(θ,t)+bu(t)+d(t)(13)采用与上例相同的滑模函数,且选择指数趋近律,得到如下方程: c ( θ ˙ d − θ ˙ ) + ( θ ¨ d + f − b u − d ) = ϵ s i g n ( s ) − k s (14) c(\dot \theta_d - \dot \theta )+(\ddot \theta _d +f-bu-d) = \epsilon sign(s) -ks \tag{14} c(θ˙dθ˙)+(θ¨d+fbud)=ϵsign(s)ks(14)则控制律为: u ( t ) = 1 b ( ϵ s i g n ( s ) + k s + c e ˙ + θ ¨ d + f − d ) (15) u(t) = \frac{1}{b}(\epsilon sign(s)+ks+c\dot e+\ddot \theta_d+f-d) \tag{15} u(t)=b1(ϵsign(s)+ks+ce˙+θ¨d+fd)(15)但由于扰动项 d ( t ) d(t) d(t)为未知项,因此需要其上下界进行控制律设计。
  设 d L ≤ d ( t ) ≤ d U d_L\leq d(t)\leq d_U dLd(t)dU,令 u ( t ) = 1 b ( ϵ s i g n ( s ) + k s + c e ˙ + θ ¨ d + f − d c ) (16) u(t) = \frac{1}{b}(\epsilon sign(s)+ks+c\dot e+\ddot \theta_d+f-d_c) \tag{16} u(t)=b1(ϵsign(s)+ks+ce˙+θ¨d+fdc)(16)则此时 s ˙ = − ϵ s i g n ( s ) − k s + d c − d (17) \dot s = -\epsilon sign(s) -ks +d_c -d \tag{17} s˙=ϵsign(s)ks+dcd(17)为满足李雅普诺夫稳定条件 s s ˙ = − ϵ ∣ s ∣ − k s 2 + ( d c − d ) s < 0 s\dot s= -\epsilon|s| -ks^2 +(d_c -d)s<0 ss˙=ϵsks2+(dcd)s<0
(1)若 s > 0 s>0 s>0,可取 d c = d L d_c = d_L dc=dL;
(2)若 s < 0 s<0 s<0,可取 d c = d U d_c = d_U dc=dU;
根据上述两个条件可以得到: d c = d U + d L 2 − d U − d L 2 s i g n ( s ) (18) d_c = \frac{d_U+d_L}{2}-\frac{d_U-d_L}{2}sign(s) \tag{18} dc=2dU+dL2dUdLsign(s)(18)

仿真实例

对上例的输入添加扰动 d ( t ) = 10 s i n ( π t ) d(t) = 10sin(\pi t) d(t)=10sin(πt),则 d L = − 10 , d U = 10 , d c = 10 s i g n ( s ) d_L = -10,d_U = 10,d_c =10sign(s) dL=10,dU=10dc=10sign(s),构建滑模鲁棒控制 u ( t ) = 1 133 ( ϵ s i g n ( s ) + k s + c e ˙ + θ ¨ d + 25 θ ˙ − d c ) u(t) = \frac{1}{133}(\epsilon sign(s)+ks+c\dot e+\ddot \theta_d +25\dot \theta - d_c) u(t)=1331(ϵsign(s)+ks+ce˙+θ¨d+25θ˙dc),对比有无鲁棒项的控制律及角度跟踪情况。

function [u,de] = fcn(x2,e,dthd,ddthd)
K = 10;
C = 15;
eps = 5;
du = 10;
dl = -10;
dth = x2;
de = dthd - dth;
s = C*e + de;
d1 = (du-dl)/2;
d2 = (du+dl)/2;
dc = d2-d1*sign(s);
u = (eps*sign(s) + K*s + C*de+ ddthd + 25*dth -dc )/133;
end

控制律u
在这里插入图片描述

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

滑模控制学习笔记(三) 的相关文章

  • 多目标跟踪-MOT16数据集格式介绍

    背景介绍 多目标跟踪的问题是这样的 xff1a 有一段视频 xff0c 视频是由 N 个 连续帧构成的 从第一帧到最后一帧 xff0c 里面有多个目标 xff0c 不断地有出有进 xff0c 不断地运动 我们的目的是对每个目标 xff0c
  • opencv-python的格式转换 RGB与BGR互转

    opencv读取图片的默认像素排列是BGR xff0c 和很多其他软件不一致 xff0c 需要转换 这里转一下国外博客的一个方法 xff0c 基于python语言 BGR to RGB OpenCV image to Matplotlib
  • np.maximum()函数详解——将数组中小于某值的数用0代替

    目标 xff1a 把数组中小于某个值的数都设为0 np max a axis 61 None out 61 None keepdims 61 False 求a中的最大值 np maximum xff1a a b out 61 自定义 a 与
  • python-opencv 使用LBP特征检测人脸

    概述 最近在做人脸检测相关功能 xff0c 目前注意到比较传统 xff08 非深度 xff09 人脸检测特征包括harr和LBP HOG用于行人检测更多些 xff0c opencv包括了这两种特征算法 xff0c 并且相对来说 xff0c
  • 机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR

    一 概述 这里主要记录自己的一些感悟 xff0c 不是很系统 想要详细系统的理论 xff0c 请参考文末的 图像处理之特征提取 个人不是专业cv工程师 xff0c 很多细节没有深究 xff0c 描述可能不严谨 在总结物体检测算法之前先把基础
  • win7 wifi 无Internet访问权限或者有限的访问权限

    自己家的无线路由器 xff0c 手机和笔记本都使用正常 xff0c 但是一台新笔记本连上之后总是提示 有限的访问权限 xff0c 无法连公网 网上的很多办法都不管用 xff0c 什么设置静态IP或者重启路由 xff0c 基本都是瞎扯 好在一
  • springboot 本地调试没问题,打包运行报错原因

    1 如果引用了本地jar包或者so库 xff0c dll库等文件 xff0c 需要在打包的时候都加载进去 如下图 xff1a 本地正常 xff0c 打包的时候谨记 xff0c 需要打包进去 xff0c 怎么验证是否打包成功呢 xff1f 我
  • CMakeList学习笔记

    hello cpp为源文件 构建一个CMakeLists txt cmake minimum required VERSION 2 8 project hello add executable hello hello cpp 在目录中的bu
  • C语言--iota函数

    一 iota函数 xff1a 功能 把一个整数转换为字符串 eg include lt stdlib h gt include lt stdio h gt void main int number 61 43 char string 100
  • STM32F103ZET6和STM32F103C8T6编程不一样吗?

    我把C C 43 43 选项卡中 STM32F10X HD USE STDPERIPH DRIVER 修改为 STM32F10X MD USE STDPERIPH DRIVER 编译成功 谢谢O O 初始化的时候要调用SystemInit
  • STM32F103ZET6和STM32F103C8T6芯片的区别

    是这样的 xff0c 一个具体的STM32F103系列芯片的内存有多大 xff0c 你看一下芯片上的型号就行了 STM32F103XY 注意 xff0c XY是个代号 xff0c X是表示封装有多少个引脚 xff0c 比如 xff0c 如果
  • Keil(MDK-ARM)使用教程——在线调试

    Keil xff08 MDK ARM xff09 使用教程 xff08 三 xff09 在线调试 由于我是直接使用 xff08 打开现有的软件工程 xff09 xff0c 如果跟着需要下载上面演示参考的软件工程 才行 工程默认是使用硬件在线
  • ch340是什么芯片

    CH340 是一个USB 总线的转接芯片 xff0c 实现USB 转串口 USB 转IrDA 红外或者USB 转打印口 在串口方式下 xff0c CH340 提供常用的MODEM联络信号 xff0c 用于为计算机扩展异步串口 xff0c 或
  • Ubuntu16的详细安装教程

    有一点很重要要说一下 xff0c 每个人学习Linux的动机都不一样 xff0c 而这个动机会决定你对Linux的态度 xff0c 如果你仅仅是想尝鲜 xff0c 装个笔什么的 xff0c 不当作自己的职业方向去学习Linux的 劝这类人还
  • 是否能在keil中混合编译c和c++程序

    keil中支持混合编译C和C 43 43 程序 xff0c 因为其本质最终都是编译成汇编 xff0c 所以是可以同时操作的 在混合编译时 xff0c 需要注意以下几点 xff1a 1 C文件扩展名必须为 C xff0c C 43 43 文件
  • ds18b20工作原理和测温原理介绍

    DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器 与传统的热敏电阻相比 xff0c 他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9 xff5e 12位的数字值读数方式 可以分别在9
  • 如何将.hex文件转化为.c文件

    说明楼主太初级 xff0c 迷恋于C 1 C与HEX并不是一一映射的 xff0c 有可能N个人写的C xff0c 会出同一个HEX xff0c 你希望回成哪个人写的呢 xff1f 或许你可能说 xff1a 任意一个孝可以 xff0c 只要能
  • 嵌入式linux 和 用stm32进行的嵌入式开发 这两者之间有什么关联性吗?

    作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 53880054 answer 164501004 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非

随机推荐

  • #if 0 ... #endif的真实用途

    在过去都没有去理会 if 的作用 xff0c 今天突发奇想 xff0c 开启编译器试一试 很多人都知道 if 0 endfif的作用跟 的作用是一样的 xff0c 就是注释 xff0c 可是注释为什么不用注释符号 就行了么 xff1f go
  • .hex文件和.bin文件区别

    HEX文件和BIN文件是我们经常碰到的2种文件格式 因为自己也是新手 xff0c 所以一直对这两个文件懵懵懂懂 xff0c 不甚了解 xff0c 最近在做STM32单片机的IAP更新 xff0c 其中要考虑HEX文件和BIN文件 xff0c
  • EEPROM和flash的区别

    From https blog csdn net yuanlulu article details 6163106 EEPROM的全称是 电可擦除可编程只读存储器 xff0c 即Electrically Erasable Programma
  • 264 nal type

    NUAL HEAD 43 43 0 1 2 3 4 5 6 7 43 43 43 43 43 43 43 43 43 F NRI Type 43 43 F xff1d Forbidden zero bit 61 0 NRI 61 Nal r
  • SubClassWindow详解

    许多Windows程序员都是跳过SDK直接进行RAD开发工具 或VC xff0c 我想VC应不属于RAD 的学习 xff0c 有些人可能对子类化机制比较陌生 我们先看看什么是Windows的子类化 Windows给我们或是说给它自己定义了许
  • stl upper_bound函数实现

    写了一个upper bound的实现 其中递归使用二分法求解最上界 xff0c 虽然写的完全不像STL的风格 xff0c 但是练手还是可以的 view plaincopy to clipboardprint 01 include lt io
  • 云原生 - 2、Openstack架构

    云原生 2 Openstack架构 1 什么是Openstack2 Release3 核心架构4 官方入口5 核心组件6 相关文章导读 1 什么是Openstack OpenStack是一个开源的云计算管理平台项目 xff0c 由NASA
  • 关于TrackMouseEvent用法总结

    对于这个函数我也是最近想研究控件自绘才知道它真正怎么用 以前只是见到过 嗯 废话不多说 我先说下我的问题 如何响应鼠标离开某个窗体 控件 事件 先大概讲下步骤 然后再集中对 TrackMouseEvent 进行详解 为按钮添加以下几个函数
  • 关于CComboBox的自绘

    我想 如果大家学过一些控件的自绘的话 CComboBox算是很难的一种了 首先是它本身的复杂度 它由三个控件组成 CEdit CListBox CButton 我想但就CEdit来讲 就够你受得了 还要想想他们之间的消息传递 不禁让人无从下
  • 2011年总结

    又是一年年终时 亦是一年总结时 想想自己从去年写年终总结到现在 已经很久没有写过字了 时间过得真快 又是一年过去了 这一年也是我出来工作的第二年 这一年总体来说自己无论在技术还是心态方面有了很大的进步 记得刚出学校那会 啥都不知道 对于工作
  • 内部链接与外部链接

    在说内部连接与外部连接前 xff0c 先说明一些概念 1 声明 一个声明将一个名称引入一个作用域 在c 43 43 中 xff0c 在一个作用域中重复一个声明是合法的 以下都是声明 xff1a int foo int int 函数前置声明
  • partition/stable_partition详解

    Partition 将满足条件的元素向前移动 TEMPLATE FUNCTION partition template lt class BidIt class Pr gt inline BidIt Partition BidIt Firs
  • jsoncpp解析拼装数组

    int main 数组创建与分析 例子一 string strValue 61 34 34 ldh 34 34 001 34 34 gfc 34 34 002 34 34 yyj 34 34 003 34 34 andy 34 34 005
  • 查看静态库(.lib)和动态库(.dll)的导出函数的信息

    一般情况下 xff0c 我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息 xff0c 可以使用VS自带的工具dumpbin xff1b 可以直接在命令行下输入dumpbin就可以查看他的使用说明 xff0c 如果未显示
  • do {...} while (0) 在宏定义中的作用

    http www cnblogs com lanxuezaipiao p 3535674 html 如果你是一名C程序员 xff0c 你肯定很熟悉宏 xff0c 它们非常强大 xff0c 如果正确使用可以让你的工作事半功倍 然而 xff0c
  • 即插即用型设备驱动的加载过程

    现假设驱动程序已被正确安装 xff1a 1 某种PnP总线驱动发现了即插即用设备的存在 xff1a 对于热插拔设备 xff0c 则发现过程发生于插入设备的瞬间 xff1b 如果是非热插拔设备 xff0c 则发现过程发生于系统启动时 2 Pn
  • C++如何编写属于自己的头文件 ---- 自己动手,丰衣足食

    自己动手 xff0c 丰衣足食 ps 其实这一篇文章老早以前就写了 xff0c 一直扔在草稿箱 xff0c 今天想起来了然后就发了出来 首先 xff0c 熟悉熟悉这些 是的没错 xff0c 这就是我们的Dev cpp 忽略其他东西 xff0
  • ubuntu安装vnc server-x11vnc并设置开机自动启动

    ubuntu安装x11vnc并设置开机自动启动 安装x11vnc 打开终端 xff0c 使用如下命令x11vnc span class hljs built in sudo span apt get install x11vnc 手动连接
  • 笔记本安装ubuntu18.04步骤及分区方法

    家中闲置一台08年的笔记本 xff08 没有无线无卡 xff09 xff0c 自己加装了一个2G的内存条 xff0c 食之无味弃之可惜 xff0c 思量再三准备重装Ubuntu18 04的系统当做小型服务器使用 因此记录下安装步骤以及分区方
  • 滑模控制学习笔记(三)

    滑模控制学习笔记 xff08 三 xff09 基于趋近律的滑模控制几种典型的趋近律等速趋近律指数趋近律幂次趋近律一般趋近律 基于趋近律的控制器设计仿真实例状态空间模型建立滑模控制器模型建立仿真结果 基于趋近律的滑模鲁棒控制仿真实例 基于趋近