ADRC——一阶ESO扩张状态观测器simulink实现及C语言代码

2023-05-16

        理论部分见我之前的博客,一阶ESO相比起来实现更简单,也更好理解,可帮助新手入门使用。虽然常见的物理系统,绝大多都是二阶系统,如F=ma, 做位置控制时,一般用二阶ESO。但是一阶ESO也有一定的用途,后面有空把之前做的一阶ESO的实际案例开源出来。

simulink模型已上传网盘

链接:https://pan.baidu.com/s/1q7zgYNjGXXrAHaaPCSZqFA 
提取码:2579

1、公式推导

一阶系统模型:

\dot x=f(x,t)+bu \\

 拓展为2阶系统:

\dot x_1=x_2+bu \\ \dot x_2=g(x_1,x_2,t)

建立起观测器:

\begin{cases} e_1=y-z_1 \\ \dot z_1 =z_2+bu+\beta_{01}*fal(e_1,\alpha_1,\delta)\\ \dot z_2 =\beta_{02}*fal(e_1,\alpha_2,\delta) \end{cases}

fal函数:

 2、simulink

ESO代码

function [z1_hat,z2_hat] = fcn(y,u)
 
h=0.01;

 
persistent z1 z2 
if isempty(z1)  
    z1=0;
    z2=0;
end
 
e=y-z1;
 
fe1=fal(e,0.5,0.01);
fe2=fal(e,0.25,0.01);

z1=z1+h*(z2 + 100*fe1 + u);  %需要调参 <100,300>这两个参数
% 这里也可以写成 z1=z1+h*(z2 + 100*e + u);
z2=z2+ h*(300*fe2);


z1_hat=z1;
z2_hat=z2;

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

 模型搭建:

扰动估计效果:

 

控制效果

 

3、C语言代码 

.h文件

typedef struct
{
    float dt;
    float b;
    float z1_hat;
    float z2_hat;

    float alpha_1;
    float alpha_2;
    float delta_1;
    float beta_1;
    float beta_2;

    uint8_t start_flag;
} ESO_1order_pm_st;

.c文件

void ESO_1order(float y, float u, ESO_1order_pm_st *eso_pm)
{
    float e, fe1, fe2;
    if (eso_pm->start_flag == 0)
    {
        eso_pm->z1_hat = y;
        eso_pm->z2_hat = 0;
    }
    e = y - eso_pm->z1_hat;

    fe1 = fal(e, eso_pm->alpha_1, eso_pm->delta_1);
    fe2 = fal(e, eso_pm->alpha_2, eso_pm->delta_1);

    eso_pm->z1_hat += eso_pm->dt * (eso_pm->z2_hat + eso_pm->beta_1 * fe1 + eso_pm->b * u);
    eso_pm->z2_hat += eso_pm->dt * (eso_pm->beta_2 * fe2);
}

使用方法:

ESO_1order_pm_st  ESO_pm;

/*一阶ESO参数初始化*/

ESO_pm.dt = 0.001;
ESO_pm.alpha_1 = 0.5;
ESO_pm.alpha_2 = 0.25;
ESO_pm.b = 1.0f;

ESO_pm.delta_1 = 0.01;
ESO_pm.beta_1 = 50.0f;
ESO_pm.beta_2 = 100.0f;
ESO_pm.start_flag = 0;


 /*调用方法*/
ESO_1order(y, u, &ESO_pm);  //需要给入参数y和u

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

ADRC——一阶ESO扩张状态观测器simulink实现及C语言代码 的相关文章

  • 【选择排序的稳定版本与非稳定版本】

    选择排序 非稳定版本与稳定版本 排序过程中选择一个比较大 xff08 大到小排序 xff09 的数 xff0c 然后把它放到数组中指定的位置 xff1b 这时候可以直接与数组中指定位置交换数据 xff0c 但是可能会导致同值的数据的顺序发生
  • 机器人路径规划_人工势场法

    机器人路径规划 人工势场法 原理 人工势场法是由Khatib提出的一种虚拟力法 原理是 xff1a 将机器人在环境中的运动视为一种机器人在虚拟的人工受力场的运动 障碍物对机器人产生斥力 xff0c 目标点对机器人产生引力 xff0c 引力和
  • python中调用 imread 报错: ImportError: cannot import name imread

    现象 xff1a from scipy misc import imread imresize 报错 提示错误 ImportError cannot import name imread 但是import scipy的时候 显示正确 解决方
  • 改变python的默认路径为当前的工作路径

    改变python的默认路径为当前的工作路径 通过os模块来进行python中路径的更改 默认路径为 xff1a span class hljs prompt gt gt gt span span class hljs keyword imp
  • 无人驾驶技术——无人车的感官(激光雷达,雷达,摄像机)

    文章目录 激光雷达LIDAR什么是LIDARLIDAR原理LIDAR优点LIDAR缺点Velodyne激光雷达传感器HDL64每秒大约收集多少点 xff1f 雷达 RADARRADAR工作原理RADAR优点RADAR缺点 激光雷达 xff0
  • 机器学习——KNN

    机器学习算法 KNN KNN算法和KD Tree 思维导图
  • MATLAB:执行程序时调用bin文件夹下的.m文件,却显示找不到该文件

    在运行程序时 xff0c 明明要被调用的函数脚本就在当前文件夹bin 下面 xff0c 但是程序出错找不到对应的文件 xff0c 经过查询发现 xff1a 在命令行窗口输入 xff1a rehash toolboxcache 即可
  • 什么是定时器计数器

    定时器 计数器实际就是加1计数器 1 定时器和计数器的区别 xff1a 区别很小 xff0c 本质上都是计数器 xff0c 但定时器只是计数固定周期的脉冲 xff0c 所以根据频率可以计算出准确的时间 定时器模式 xff1a 对内部机器周期
  • 面试中问到动态库和静态库相关知识

    1 动态库相比较于静态库的优缺点 xff1f 动态库优点 xff1a 节省内存和代码重用 xff0c 当应用程序使用动态链接库时 xff0c 多个应用程序可以共享磁盘上的DLL xff08 windows xff09 和so linux 副
  • 【c++语法大全】

    C 43 43 基础入门 xff08 转载自黑马程序员 xff09 1 C 43 43 初识 1 1 第一个C 43 43 程序 编写一个C 43 43 程序总共分为4个步骤 创建项目创建文件编写代码运行程序 1 1 1 创建项目 Visu
  • Ubuntu20.04 USB网卡驱动安装 - MT7601u

    型号 xff1a TL WN725N 1 0 免驱版 芯片 xff1a MT7601u 具体型号可使用 96 lsusb 96 命令查看 确认型号为mt7601u后 执行如下命令 sudo apt install git build ess
  • 【浅谈插入排序】

    浅谈插入排序 插入排序 xff0c 是把无序数列中的数一个个插入到有序数列中 xff0c 直到无序数列没有数为止 比如有这么一个数列 xff1a 2 4 6 1 3 5 14 2 0 10 一共有10个数 xff0c 我们可以把第一个数当做
  • Meta Learning(元学习)详解

    元学习 概述基本概念基本分类 基本流程模型结构 概述 元学习 xff08 Meta Learing xff09 的提出是针对传统神经网络 模型的泛化性能不足 对信种类任务适应性较差的特点 主要表现为通过少量的计算和新训练数即可用于模型上实现
  • 2022 *CTF REVERSE 的 NaCl

    2022 CTF REVERSE 的 NaCl 下载附件 xff1a 照例扔入 exeinfope 中查看信息 xff1a 照例扔入虚拟机中运行一下 xff0c 查看主要回显信息 xff1a 照例扔入 IDA64 中查看伪代码 xff0c
  • python编码问题的一点笔记

    Python编码 xff1a 中文乱码问题 xff1a 如果开头不声明保存编码的格式是什么 xff0c 那么它会默认使用 ASCII 码保存文件 这时如果你的代码中有中文就会出错了 xff0c 即使你的中文是包含在注释里面的 声明中文编码格
  • 对 IDA 结构体操作的一些理解

    对 IDA 结构体操作的一些理解 前言 xff1a 刚学逆向时把 IDA pro 权威指南过了一遍 xff0c 但读得并不是很细 xff0c 满足日常使用还是没问题的 xff0c 但是对于一些细节的操作或提高效率的方法倒是没能掌握 比如 I
  • 第二届广东省大学生网络攻防大赛 pyre

    第二届广东省大学生网络攻防大赛 pyre 以前做过 pyc 逆向 xff0c 直接的 python exe 逆向还是第一次 xff1a 第一种方法 xff1a 用 pyinstxtractor py 将 exe 文件转换成 pyc 文件 用
  • 2022 年网刃杯 ez_algorithm

    2022 年网刃杯 ez algorithm 下载附件 xff1a 照例扔入 exeinfope 中查看信息 xff0c 64 位无壳 xff1a 照例运行一下 xff0c 查看主要回显信息 xff1a 照例扔入 IDA64 中查看伪代码
  • Base-N 算法加密解密实现:

    目录 Base N 算法加密解密实现 xff1a Base64 加密解密 xff1a xff08 C 语言 python xff09 Base32 加密解密 xff1a xff08 C 语言 xff09 Base N 算法加密解密实现 xf
  • 第二届广东省大学生网络攻防大赛 simple_re

    第二届广东省大学生网络攻防大赛 simple re 流程总结 xff1a xff08 思路原文出自 JANlittle 师傅 xff09 程序将关键函数以对象元素的形式存在对象里 xff0c 然后在申请内存中搭配指针间接调用 xff0c 关

随机推荐

  • 解析 DES 加密算法(C语言):

    目录 解析 DES 加密算法 C语言 xff1a DES 简介 xff1a DES 算法整体流程 xff1a DES 解密 xff1a C 语言代码实现加密解密逻辑 xff1a 解析 DES 加密算法 C语言 xff1a 内容修改自博客 x
  • x64dbg 基本使用技巧

    x64dbg 基本使用技巧 最近使用 DBG 多了起来 xff0c 所以查了一些资料来学习并整理成自适应的笔记 本文摘抄自 xff1a x64dbg 使用技巧与实用插件合集 官方网站 xff1a https x64dbg com DBG 根
  • freertos系统栈溢出检测机制简述

    FreeRTOS 提供了多种特性来辅助跟踪调试栈相关的问题 uxTaskGetStackHighWaterMark 函数 每个任务都独立维护自己的栈空间 xff0c 栈空间总量在任务创建时进行设定 uxTaskGetStackHighWat
  • 记一次 windows 桌面卡顿

    记一次 windows 桌面卡顿 这几天在 windows 桌面上的操作感觉非常不好 xff0c 一开始以为是电脑老化 网络卡顿 C 盘又被垃圾挤占空间 或什么自启动软件占了内存 xff0c 复制一个快捷键出来都要缓冲 然后就卸载了很多不常
  • 浏览 APT 报告中学习积累

    浏览 APT 报告中学习积累 工具网站积累 xff1a xff08 APT 报告搜寻网站 xff09 https ti qianxin com https feed watcherlab com index apt https malped
  • 《windows 程序设计》读书笔记 一

    目录 基础知识 主要的动态链接库 xff1a API 及内存管理模式 xff1a 第一个 Windows 程序解析 xff1a 头文件 xff1a Windows 程序的入口 xff1a MessageBox 函数 xff1a 基础知识 主
  • 《windows 程序设计》读书笔记 二

    目录 Unicode 历史及介绍 美国标准 ASCII xff1a Unicode 方案 xff1a 宽字符和 C 语言 xff1a 宽字符和 Windows xff1a Windows 函数调用 xff1a Unicode 和 Ascii
  • x86指令编码简述(机器码)

    目录 x86指令编码 xff1a 机器码的格式结构 xff1a Mod R M 字节与内存寻址模式探究 xff1a 实战部分机器指令类型 xff1a x86指令编码 xff1a 机器码的格式结构 xff1a 一般的 x86 机器指令格式 x
  • 记一次 cmd 打开 python 报错,环境变量已配置

    记一次 cmd 打开 python 报错 xff0c 环境变量已配置 输入 python 自动打开应用商店 xff0c 环境变量已配置 xff0c 并且我觉得我只有这一个 python 路径 xff01 排查了半天 xff0c 重启了半天
  • 《windows 程序设计》读书笔记 三

    目录 窗口与消息 窗口的创建 xff1a 系统结构 windows 窗口编程概述 xff1a HELLOWIN 程序及剖析 xff1a 若干难点 xff1a 用户程序调用系统还是系统调用用户程序 xff1a DefWindowProc 函数
  • 对 python 正则表达式字面字符串和模式字符串的一点思考

    python 的正则表达式是与 Perl 语言类似的正则表达式匹配操作 xff1a 模式和被搜索的字符串既可以是 Unicode 字符串 xff0c 也可以是 8 位字节串 xff0c 但是 Unicode 字符串与 8 位字节串不能混用
  • 记一次 PEview 的报错修正

    记一次 PEview 的报错修正 从 逆向工程核心原理 中提到的 https reversecore com 111 中下载的 PEview 在处理 32 位程序时其它目录都还行 xff0c 当点到 IMAGE NT HEADERS gt
  • Android5.0 Telephony框架初步分析--telecomm

    3 2 Telecomm关键类初始化和相互关系 3 2 1 Telecomm简述 Android5 0在Telephony的变化又比较大 xff0c 增加了一个Telecomm模块 xff0c 它位于界面应用如InCallUI和Phone框
  • freertos应用程序常见错误排查

    freertos系统应用程序常见问题 对一些比较常见的问题 xff0c 下面简要的以 FAQ 问答 的形式给出可能的原因和解决方法 问题现象 xff1a 在一个 Demo 应用程序中增加了一个简单的任务 xff0c 导致应用程序崩溃 任务创
  • 自下而上和自上而下的注意力模型《Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering》

    本文有点长 xff0c 请耐心阅读 xff0c 定会有收货 如有不足 xff0c 欢迎交流 xff0c 另附 论文下载地址 一 文献摘要介绍 Top down visual attention mechanisms have been us
  • 从腾讯VasSonic源码剖析到webview优化的思考

    提到 android的webView xff0c 我想大家对它都有点恨之入骨 xff0c 因为它和ios的UIWebView的性能实在差的太远了 xff0c 尤其在4 4以下 xff0c 加载个页面慢的要死 xff0c 出现白屏时间过长 没
  • 在VSCode上运行C/C++程序【满满的“肝”货】

    文章目录 一 下载与安装vscode 61 61 下载 61 61 61 61 安装 61 61 二 配置编译器MinGW1 下载2 解压3 添加环境变量 三 安装vscode插件1 安装Chinese2 安装c c 43 43 四 运行c
  • ADRC——ESO扩张状态观测器simulink实现(含代码)

    2022 12 10改 我重新搭建了一个simulink模型文件 xff0c 已上传网盘 xff1a xff08 有问题请评论提出 xff0c 有空会改正 xff09 链接 xff1a https pan baidu com s 1EIfz
  • ADRC——TD微分跟踪器simulink实现(含代码)

    1 理论基础 参照 从PID技术到 34 自抗扰控制 34 技术 对于离散系统 xff1a 其中 xff0c h为采样时间 r确定跟踪速度 xff0c 称为速度因子 xff1b h0起对噪声的滤波作用 xff0c 成为滤波因子 fst函数定
  • ADRC——一阶ESO扩张状态观测器simulink实现及C语言代码

    理论部分见我之前的博客 xff0c 一阶ESO相比起来实现更简单 xff0c 也更好理解 xff0c 可帮助新手入门使用 虽然常见的物理系统 xff0c 绝大多都是二阶系统 xff0c 如F 61 ma 做位置控制时 xff0c 一般用二阶