ADRC——ESO扩张状态观测器simulink实现(含代码)

这篇具有很好参考价值的文章主要介绍了ADRC——ESO扩张状态观测器simulink实现(含代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2022/12/10改

我重新搭建了一个simulink模型文件,已上传网盘:(有问题请评论提出,有空会改正)

链接:https://pan.baidu.com/s/1EIfzICPp2XgwKr7Uhzv-aA 
提取码:2579

1、理论基础

        主要参考韩老的论文:《从PID技术到"自抗扰控制"技术》。

对于系统:

ADRC——ESO扩张状态观测器simulink实现(含代码)

 这是一个常见的二阶系统,适用于牛顿-欧拉方程中,位置/速度及角度(姿态)/角速度的控制。

ADRC——ESO扩张状态观测器simulink实现(含代码)

上述皆可化成二阶系统(6)的形式。

        对于(6)式中的,  通常为未知项:因为包含建模不准确性而引起的内部干扰和系统外部干扰,那么建立观测器的形式为:

ADRC——ESO扩张状态观测器simulink实现(含代码)

 转化为离散形式(因为绝大多数实际控制系统为离散系统):

ADRC——ESO扩张状态观测器simulink实现(含代码)

其中:h为采样时间。fal函数为:
 

ADRC——ESO扩张状态观测器simulink实现(含代码)

其中fal函数类似于一个低通滤波和一个变参滤波器的叠加,用于逼近e。

理解以上的知识之后即可在simulink下搭建仿真模型了。

2、simulink

1、先搭建这样一个二阶系统:类似于m=1的位置控制系统(F=ma):

ADRC——ESO扩张状态观测器simulink实现(含代码)

其中 f(.)  为系统扰动。

 搭建模型如下(暂时没有加 f(.) )

ADRC——ESO扩张状态观测器simulink实现(含代码)

x的状态反馈加了白噪。

2、搭建ESO

        根据上面的离散公式,建立matlab func,代码如下(代码和上面的公式一一对应):

function [z1_hat,z2_hat,z3_hat] = fcn(y,u)

h=0.001;
alpha1=0.5;
alpha2=0.3;

beta01=100;
beta02=2500;
beta03=12000;

delta=0.01;

persistent z1 z2 z3
if isempty(z1)  
    z1=y;
    z2=0;
    z3=0;
end

z1k=z1;
z2k=z2;
z3k=z3;

e1=z1-y;

z1=z1k+h*z2k-h*beta01*e1;
z2=z2k+h*z3k-h*beta02*fal(e1,alpha1,delta)+h*u;
z3=z3k-h*beta03*fal(e1,alpha2,delta);


z1_hat=z1;
z2_hat=z2;
z3_hat=z3;
end


function f=fal(e,alpha,delta)
if abs(e)>delta
    f=abs(e)^alpha*sign(e);
else
    f=e/(delta^(1-alpha));
end
end

采样时间为0.001s,注意将matlab仿真时长定为0.001s(定步长)。其余参数都是随便给的,没这么调。

模块写出来是这样的:

ADRC——ESO扩张状态观测器simulink实现(含代码)

y为状态x的估计,u的输入F,输出为z1,z2,z3的估计。

3、将ESO加入控制系统中

参考韩老论文:

ADRC——ESO扩张状态观测器simulink实现(含代码)

我们实现红色部分:

ADRC——ESO扩张状态观测器simulink实现(含代码)

需要注意 接入ESO模块的u的位置以及扰动加入系统的位置。

memory模块避免代数环问题。

4、控制效果

首先是对x的控制,期望轨迹为一个sin曲线,跟踪效果较好(可以自行搭建不带ESO扰动补偿的控制系统进行对比,自行调整PID和ESO参数以达到较好效果)

ADRC——ESO扩张状态观测器simulink实现(含代码)

其次是对扰动的估计:本次仿真扰动 f(.)。

ADRC——ESO扩张状态观测器simulink实现(含代码)

 其估计效果也还可以。对x1和x1微分的估计效果应该都还可以。

5、总结

  1. ESO的matlab代码可以直接用,适当调整参数即可。
  2. ESO是ADRC的核心,是自抗扰的核心,常将ESO和神经网络,自适应控制等结合。
  3. ESO的滤波效果和TD(微分跟踪器)差不多。
  4. 最后,对韩老在控制领域和ADRC技术等领域的贡献致敬!

                文章来源地址https://www.toymoban.com/news/detail-402840.html

到了这里,关于ADRC——ESO扩张状态观测器simulink实现(含代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 非线性扰动观测器(NDOB)

    干扰观测器是控制中非常常见的一种方法,本节推导的是一种简单的非线性干扰观测器NDOB 假设非线性系统方程为 x ˙ = f ( x ) + g 1 ( x ) u + g 2 ( x ) d y = h ( x ) begin{align} dot x = f(x) + g_1(x)u + g_2(x)d nonumber\\\\ y = h(x) nonumber end{align} x ˙ y ​ = f ( x ) + g 1 ​ ( x ) u + g 2 ​ ( x ) d = h ( x

    2023年04月08日
    浏览(35)
  • 六、BLDC矢量控制基础知识:滑膜观测器原理

    这是一篇关于滑膜观测器原理的学习笔记 当无刷电机使用FOC控制时,需要获得转子位置和角速度信息,当没有传感器的时候,已经有大量的算法用于解决这一问题,有一类处理办法是使用观测器来估计转子的位置,在众多解决方案中滑膜观测器有着广泛的应用。下面将我一个

    2024年02月02日
    浏览(79)
  • stm32 滑膜观测器+PLL 锁相环 FOC 无感无刷电机控制

            上一期为大家介绍了滑膜观测器正反切的应用案例,收到不少小伙伴的反馈是否有PLL的案例,大概看了一下网上的资料,讲理论的很多,能转化成源码的几乎没有。前半年工作和家里的事情都比较多,一拖再拖,终于在6月将源码调试好了,在这里跟大家分享一下调试

    2024年02月10日
    浏览(52)
  • 无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

            在越来越多的应用场景中,无刷直流电机开始采用无位置传感器的控制方式。无刷直流电机运行于中高转速时,可以利用反电势信号估算转子位置,具体实现的方法不止一种,应用较多的是滑模观测器法。         本文整理了该方法的基本原理,介绍了在MAT

    2023年04月09日
    浏览(61)
  • 【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制

    【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制 提示:以下是本篇文章正文内容,下面案例可供参考 通常,注入的高频信号有 1)旋转高频电压信号 2)旋转高频电流信号 3)脉振高频电压信号 是在 两相静止坐标系中注入高频电压(电流)信号 ,检测电机中

    2024年04月17日
    浏览(37)
  • WebRTC Native M96 SDK接口封装--注册语音观测器对象获取原始音频数据registerAudioFrameObserver

    很多时候,上层app需要获取RTC中的音频数据,比如获取RTC麦克风采集的裸数据、扬声器播放的混音之后的裸数据,再比如麦克风和扬声器混音后的裸数据等等。 在实时音视频中,用户可以对采集到的音频数据进行前处理和后处理,获取自己想要的播放效果,例如变音、录音等

    2023年04月16日
    浏览(48)
  • 15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

    序列检测器的逻辑功能: 序列检测是将一个指定的序列从数字码流中识别出来。本项目要检测的序列是:10010。 设X是“数字码流的输入”,Z是“检出标记输出”;高电平是“实现指定序列”;低电平是“没有发现指定序列”。码流如下表所示。 由上述码流可知:该序列检测

    2024年01月23日
    浏览(40)
  • 自动驾驶状态观测1-坡度估计

    自动驾驶坡度对纵向的跟踪精度和体感都有一定程度的影响。行车场景虽然一般搭载了GPS和IMU设备,但pitch角一般不准,加速度也存在波动大的特点。泊车场景一般在室内地库,受GPS信号遮挡影响,一般无法获取高程和坡度。搭载昂贵的传感器虽然也能获取所需的坡度,但成

    2024年02月02日
    浏览(51)
  • 简单的状态机设计——序列检测器

    1.序列检测器 序列检测器是时序数字电路中非常常见的设计之一。它的逻辑功能是将一个指定的序列从数字码流中识别出来。 2.例1:\\\"10010\\\"序列检测器 对串行输入的数据进行检测,检测“10010”。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表

    2024年02月11日
    浏览(43)
  • 【 FPGA 】序列检测器 11010 (mealy状态机,moore状态机)

            状态机是硬件电路设计的常用的描述工具,也是电路设计的重要思想。很早之前我就知道mealy状态机和moore状态机,但是对两者的差别不是非常的清楚,最近在学习系列检测器的设计时对这两种状态机和一段式、三段式状态机有了更深刻的了解,在这里分享自己的见解

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包