VSC/SMC(十六)——自适应鲁棒滑模控制

2023-11-19

目录

1.参数不定和扰动不定但有界的系统

 2.滑模控制自适应律设计

2.1控制律设计总结

3.仿真分析

3.1 PD控制

3.2普通自适应律

3.3映射自适应律

3.4总结

4学习问题


1.参数不定和扰动不定但有界的系统

其中: 

 |\Delta |\leqslant D

 2.滑模控制自适应律设计

设计滑模面:

由于θ有界不定,所以用θ^代替θ 

 \hat{\theta} \dot{s}=\hat{\theta }(x_{2}'-x_{d}''+ce')

稳定性证明:

2.1控制律设计总结

其设计的思想还是可以用等效滑模项+鲁棒滑模项进行解释:

①定义滑模面:s = e'+c*e,则:s' = e''+c*e' = (u+Δ)/θ-xd''+c*e',不考虑扰动Δ,令s' = 0,所以得到等效项ueq = θ*(xd''-c*e');

②选取指数趋近律:s' = -k*s-η*sign(s),所以鲁棒项usw = θ*(-k*s-η*sign(s)),所以滑模控制律为:u = ueq+usw = θ*(xd''-c*e'-k*s-η*sign(s)),注η > |Δ|。

③将θ换成θ^,即θ的估计值,也是自适应律,定义自适应律为θ^ = -γ*s*(xd''-c*e');选取Lyapunov函数进行闭环系统稳定性证明(见上图片)。

④这里为了防止自适应律过大而导致输入信号过大等问题,引入映射自适应算法对自适应律进行修正(见上图片)。

3.仿真分析

取θ = 1,系统不确定性波动θmin = 0.5 <= θ <= θmax = 1.5,不确定扰动Δ=0.5*x2+1.5*sign(x2),所以扰动边界D = 2;初始状态定位[0.5;0]。

3.1 PD控制

这里我是采用的s函数编写pd控制器,这个很简单,但是调参需要人为调节,我前面的文章介绍了PID Tune,推荐使用这个,文章在这里:

基于抗积分饱和(Anti-windup)的自适应PID控制(白嫖程序模型)_Mr. 邹的博客-CSDN博客

3.2普通自适应律

3.3映射自适应律

3.4总结

①可以看到普通自适应律刚开始的控制输入超调量过大,导致刚开始的时候产生较大的抖动。

②本例中个人对自适应律的理解:因为系统θ的不确定性,所以需要针对其提出估计θ^,也就是自适应律,但是普通的自适应律没有范围限定,也就是没有系统不确定性边界调节,会导致控制输入过大情况,所以需要加上边界条件对自适应律进行限制,也就是后面的映射自适应律。

③可以看到映射自适应律使得初始控制输入的过冲很小,这对于底层执行器的响应是非常友好的,对于实际意义很大!

4学习问题

进行调试的时候一定要先进行求解器的设置,尽量不要取使用系统自动选择的求解器,本实例仿真中我就是用默认求解器去调试结果发了控制器和控制律编写没问题,但是仿真结果确实错的,找了好久问题,踩了这个坑,才知道求解器不仅仅影响求解速度还会导致结果错误!

建议:如果使用变步长,推荐使用ode45求解器;如果定步长,推荐ode4求解器,步长为0.001s。

如果有帮助,麻烦帮忙点个赞是我最大的分享动力,非常感谢!

注:仅为便利自己学习,错误在所难免,如有侵权,请联系删除,有兴趣的学者可以参考学习交流,谢谢!

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

VSC/SMC(十六)——自适应鲁棒滑模控制 的相关文章

  • 继续在 Matlab 中一遍又一遍地播放声音?

    我正在尝试创建一个 MATLAB 程序来每隔几分钟一遍又一遍地播放声音 现在我将其设置为每隔几秒播放一次 只是为了消除系统中的一些错误 但是 当我的程序尝试重播声音时 我收到此错误 Error using gt audioplayer au
  • 在 Matlab 中保存当前运行的脚本

    有没有办法保存Matlab中当前运行的脚本 我有一个脚本 它会自动备份一组脚本 但如果我更改了当前脚本 则保存的版本将过期 也许可以调用一些java Thanks 在 Yair Altman 网站上的某个地方 请参阅我的其他答案中的链接 他
  • 对多个属性使用一种设置方法 MATLAB

    我有几个属性基本上使用相同的属性set method classdef MyClass properties A B end methods function mc MyClass a b Constructor mc A a mc B b
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • MATLAB:具有复数的 printmat

    我想使用 MATLAB 的printmat显示带有标签的矩阵 但这不适用于复数 N 5 x rand N 1 y rand N 1 z x 1i y printmat x y z fftdemo N 1 2 3 4 5 x y x iy O
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法

随机推荐

  • 左右手坐标系区别和联系

    本文是分析 所谓的右手坐标系转换为左手坐标系需要的 z轴取反 x轴取反 或者改变摄像机位置 渲染绕序改变 其中的进一步的原因 参考文章 https msdn microsoft com en us library bb204853 28VS
  • 真伪定时器

    首先观察一下下面两组代码区别在哪里 第一组代码 setInterval gt 1 5s 的同步逻辑 1000 第二组代码 function fn setTimeout gt 1 5s 的同步逻辑 fn 1000 fn 两组代码都有定时功能
  • Java实体类详解及使用方法

    在Java编程中 实体类 Entity Class 是一种经常使用的类类型 实体类用于表示真实世界中的对象 通常与数据库中的表格相对应 本文将详细介绍Java实体类的概念 特点以及使用方法 什么是实体类 实体类是指用于表示和存储真实世界中的
  • 【论文精读】A view-free image stitching network based on global homography-基于全局单应的无视图图像拼接网络

    论文链接地址 代码链接地址 关于本文的代码 我已经调试过了 在调试过程中遇到的错误 我也做了一些总结 有需要的可以参考这篇博文 A view free image stitching network based on global homo
  • Spring Boot集成控制反转

    Most of the time dependency injection is the first thing that comes to mind whenever the concept of inversion of control
  • idea 2021.1安装 与 常用配置

    前置说明 该文档是基于idea 2021 1版本编写的 一 下载安装 官方下载地址 https www jetbrains com idea download other html 二 常用的设置 显示工具栏 设置tab选项卡换行 设置代码
  • Unity 打开时一直busy怎么办

    查看网络连接 比如360流量球或者任务管理器内的网络 如果能看到unity在下载东西或网络占用高 则表明可能是unity在下载在线资源 查看 工程目录 Package manifest json 文件是否存在国外地址 可能是由于网络原因连不
  • RabbitMq——发布确认高级和消息回退

    发布确认高级 消息在传递过程中 我们需要确定消息状态信息 开启发布确认高级模式 消息传递结束后会返回传递结果信息 若发送失败的消息 该消息会被存入缓存中 定时任务发送失败消息 交换机收到消息后 缓存会删除该信息 如果只开启发布确认模式的话
  • java多线程的意义

    https www zhihu com question 332042250
  • 前缀和与差分(分析与模板)

    前缀和 处理数组公式 s i s i 1 num i 输出区间和公式 s r s l 1 模板 include
  • kMeans算法(K均值聚类算法)

    机器学习中有两类的大问题 一个是分类 一个是聚类 分类是根据一些给定的已知类别标号的样本 训练某种学习机器 使它能够对未知类别的样本进行分类 这属于supervised learning 监督学习 而聚类指事先并不知道任何样本的类别标号 希
  • 【100%通过率 】【华为OD机试真题 c++ 】最大数字【 2023 Q1 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个由纯数字组成以字符串表示的数值 现要求字符串中的每个数字最多只能出现2次 超过的需要进行删除 删除某个重复的数字后 其它数字相对位置保持
  • Android 模拟器 Genymotion 安装配置与 ARM 支持

    简介 Genymotion是一款基于x86架构的Android模拟器 由于系统启动速度 应用运行速度远远快于Android SDK自带模拟器而受到广泛应用 优缺点 优点 1 模拟器启动速度快 比AVD快很多 2 应用运行速度快 3 跨平台
  • Python面向对象类继承中发生的私有属性访问错误问题

    按照Python100days项目中的该方法来访问私有属性 可正常访问到 class Test def init self foo self foo foo def bar self print self foo print bar def
  • 【Pytorch】常用函数功能介绍和注意事项

    持续更新中 数据预处理 Variable from torch autograd import Variable 作用 自动微分变量 用于构建计算图 网络层定义 torch nn BatchNorm2d 设尺寸为N C H W 其中N代表b
  • 微信小程序实现点击左侧导航栏自动定位到对应的位置

    我要实现的效果是点击左侧导航栏 右侧区域会自动滚动到相应的位置显示 其中当选择品牌的时候 右侧是有索引栏的 效果图如下 刚开始的时候我是用微信小程序自带的组件scroll view是实现点击左侧导航栏的跳转功能 其中scroll into
  • C++ STL- 常用容器deque

    1 1 deque容器基本概念 功能 双端数组 可以对头端进行插入删除操作 deque与vector区别 vector对于头部的插入删除效率低 数据量越大 效率越低 deque相对而言 对头部的插入删除速度会比vector快 vector访
  • Xilinx 7系列芯片选型手册的资源量怎么看

    推荐阅读AMD官方文档 该文档介绍了各种资源的具体含义 链接 7 Series FPGAs Configurable Logic Block User Guide UG474 以XC7A35T为例 Logic Cells 逻辑单元 对于7系
  • QT new模态对话框

    1 如果父窗口是new出的 则子窗口如果用堆栈的方式 Dlg dlg 创建 则会出现QWSLock up down Invalid argument错误 这实际上QT4 8的一个Bug 如果不想重新编译Qt的话 可以采用以下方式临时避免一下
  • VSC/SMC(十六)——自适应鲁棒滑模控制

    目录 1 参数不定和扰动不定但有界的系统 2 滑模控制自适应律设计 2 1控制律设计总结 3 仿真分析 3 1 PD控制 3 2普通自适应律 3 3映射自适应律 3 4总结 4学习问题 1 参数不定和扰动不定但有界的系统 其中 2 滑模控制