一阶LADRC笔记代码实现

news2024/11/15 15:51:26

这两天看了一下LADRC的。学习深度不够,从理论和原理,没法评论什么。从个人感受上,它会从另一种角度去解释一些的控制的东西。从工程使用上,还是很有参考价值的,参数意义比较明确,整定参数比较容易。

参考:

  1. 古典控制与低阶LADRC参数整定(https://www.bilibili.com/video/BV1UD4y117yB/?spm_id_from=333.999.0.0&vd_source=1f88f15c4a8c95c1d720fa4c6218bc54)
  2. https://zhuanlan.zhihu.com/p/585324684

一阶LADRC

一阶被控对象
y ˙ = b 0 u + f \dot{y}=b_0u+f y˙=b0u+f

扩张state-space:
{ x ˙ 1 = x 2 + b 0 u x ˙ 2 = f ˙ y = x 1 \left\{ \begin{array}{l} \dot{x}_1=x_2+b_0u\\ \dot{x}_2=\dot{f}\\ y=x_1\\ \end{array} \right. x˙1=x2+b0ux˙2=f˙y=x1

LESO:
{ z ˙ 1 = β 1 ( y − z 1 ) + z 2 + b 0 u z ˙ 2 = β 2 ( y − z 1 ) \left\{ \begin{array}{l} \dot{z}_1=\beta_1 (y-z_1)+z_2+b_0u \\ \dot{z}_2=\beta_2(y-z_1)\\ \end{array} \right. {z˙1=β1(yz1)+z2+b0uz˙2=β2(yz1)
控制器:
u = 1 b 0 [ l 1 ( r e f − z 1 ) − z 2 ] u=\frac{1}{b_0}[l_1(ref-z_1)-z_2] u=b01[l1(refz1)z2]

其中
l 1 = ω c , β 1 = 2 ω o , β 2 = ω o 2 l_1=\omega_c, \beta_1=2\omega_o, \beta_2=\omega_o^2 l1=ωc,β1=2ωo,β2=ωo2

ω c \omega_c ωc是控制器带宽, ω o \omega_o ωo是观测器带宽。一般选取 ω o = 2 − 10 ω c \omega_o = 2-10\omega_c ωo=210ωc b 0 b_0 b0跟系统的一些参数有关。

其框图结构:

代码实现:

代码实现也很简单,计算量很小。放mcu上,再简单优化一下,也就只比PI多几个乘法和加法。
hpp:

/**
 * @copyright   Copyright wangchongwei 
 * @license:    GNU GPLv2
 * @brief:      adrc 1st
 * @date        2023.03.05
 * @changelog:
 * date         author          notes
 * 2023.03.05   wangchongwei    create file 
 **/

#ifndef  _LADRC_1ST_H_
#define  _LADRC_1ST_H_

class LADRC_1st
{
public:
    LADRC_1st(/* args */);
    ~LADRC_1st();
    void setCtrlParm(double wc, double wo, double b0,double ts);
    void setClampParm(double out_up, double out_low);
    void reset(void);
    double ladrc_1st(double ref,double fb);
private:
    double ts;
    double wc;
    double wo;
    double b0;
    double out_up;
    double out_low;
    double out;

    // observer
    double z[2];
    double dz[2];
};

#endif

cpp:

void LADRC_1st::setCtrlParm(double wc, double wo, double b0,double ts)
{
    this->b0 = b0;
    this->wc = wc;
    this->wo = wo;
    this->ts = ts;
}
void LADRC_1st::setClampParm(double out_up, double out_low)
{
    this->out_up = out_up;
    this->out_low = out_low;
}

double LADRC_1st::ladrc_1st(double ref,double fb)
{
    // leso
    dz[0] = 2*wo*(fb-z[0])+z[1]+b0*out;
    dz[1] = wo*wo*(fb-z[0]);

    z[0] += ts*dz[0];
    z[1] += ts*dz[1];

    // controller
    out = (wc*(ref-z[0])-z[1])/b0;

    if (out > out_up) out = out_up;
    if (out < out_low) out = out_low;

    return  out;
}

github地址:
https://github.com/chongweiwang/CtrlSim/tree/main/lib/controller/adrc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Javaweb MVC模式和三层架构

MVC 模式和三层架构是一些理论的知识&#xff0c;将来我们使用了它们进行代码开发会让我们代码维护性和扩展性更好。 7.1 MVC模式 MVC 是一种分层开发的模式&#xff0c;其中&#xff1a; M&#xff1a;Model&#xff0c;业务模型&#xff0c;处理业务 V&#xff1a;View&am…

沃隆食品冲刺上市:业绩整体呈下滑态势,红杉资本提前退出投资

近日&#xff0c;“每日坚果”的缔造者——青岛沃隆食品股份有限公司&#xff08;下称“沃隆食品”&#xff09;平移提交招股书&#xff0c;准备在上海证券交易所主板上市。本次冲刺上市&#xff0c;沃隆食品计划募集7.00亿元&#xff0c;中信证券为其保荐机构。 沃隆食品在招…

面试必看:谈谈你所了解的JVM调优,JVM性能调优总结

文章目录从面试角度来谈谈你了解的JVM调优GC调优的步骤1.确定目标&#xff1a;2.优化参数3.验收优化结果GC优化案例一、Major GC和Minor GC频繁优化Minor GC频繁问题&#xff1a;1.可以适当增大新生代的内存二、请求高峰期发生GC&#xff0c;导致服务可用性降低优化标记停顿时间…

第55章 头像图片的前端渲染显示

1 WebApi.Controllers.CustomerController.GetCustomerByToken /// <param name"token">1个指定的令牌字符串。</param> /// <summary> /// 【通过令牌获取用户-无需权限】 /// </summary> /// <remarks> /// 摘要&#xff1a; /// …

【Python】装饰器

一、装饰器的作用 装饰器能够为已经存在的对象添加额外的功能。 二、什么是装饰器 装饰器本质是一个python函数&#xff0c;它可以让其他函数在不需要做任何代码变动的前提下增加额外功能&#xff0c;装饰器的返回值也是一个函数对象。 三、装饰器的应用场景 插入日志、性能…

在云服务器安装tomcat和mysql

将 linux 系统安装包解压到指定目录进入 bin 目录执行./startup.sh 命令启动服务器执行./shutdown.sh 关闭服务器在浏览器中访问虚拟机中的 tomcat ip端口具体操作入下解压tomcat压缩包解压&#xff0c;输入tom按table键自动补全tar -zxvf 启动tomcat进入bin目录在linux启动to…

debian11安装Nvidia驱动及Docker运行

文章目录前言硬件及软件环境驱动下载驱动安装禁用xserver禁用nouveau安装依赖设置可执行并运行检查安装结果Docker配置Docker安装nvidia-container-runtime安装[^4]命令脚本内容执行脚本安装 nvidia-container-runtime检测Docker gpu 验证卸载指令总结异常处理参考链接前言 博…

Spring Boot+Vue前后端分离项目练习07之网盘项目注册登陆页面实现

1.Axios安装和接口封装 Axios是一个易用、简洁且高效的http库&#xff0c; 使用Promise管理异步&#xff0c;支持请求和响应拦截器&#xff0c;自动转换JSON数据等高级配置&#xff0c;是在vue项目中十分常见前端请求库&#xff0c;使用以下指令安装。 npm install axiosnpm …

工作中git常用操作

前言 在各种版本并行&#xff0c;需求不断迭代的过程中&#xff0c;我们经常会遇到各种打断开发的场景&#xff1a; 场景一&#xff1a;当前版本功能开发到一半&#xff0c;上级临时要求去修复某个线上bug&#xff1f;你能说不吗&#xff0c; 那当然绝对服从组织安排 &#x…

代码随想录算法训练营day54 | 动态规划之子序列 392.判断子序列 115.不同的子序列

day54392.判断子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组115.不同的子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺…

[2.2.3]进程管理——调度算法的评价指标

文章目录第二章 进程管理调度算法的评价指标&#xff08;一&#xff09;CPU利用率&#xff08;二&#xff09;系统吞吐量&#xff08;三&#xff09;周转时间&#xff08;四&#xff09;等待时间&#xff08;五&#xff09;响应时间小结第二章 进程管理 调度算法的评价指标 CP…

861. 翻转矩阵后的得分

861. 翻转矩阵后的得分https://leetcode.cn/problems/score-after-flipping-matrix/ 难度中等236 给你一个大小为 m x n 的二元矩阵 grid &#xff0c;矩阵中每个元素的值为 0 或 1 。 一次 移动 是指选择任一行或列&#xff0c;并转换该行或列中的每一个值&#xff1a;将所…

【Flutter】开发环境配置:FlutterSDK、Android SDK、iOS SDK

文章目录 一、前言二、Dart和Flutter的关系三、本地开发环境配置1.FlutterSDK2.配置镜像站3.安装安卓工具链4.安装XCode5.Dart 配置四、配置完成五、总结一、前言 在前面的课程中,我们学习了Dart语言的基本用法,并在DartPad线上环境对代码执行。 接下来,我们学习如何在本地…

如何为Keil安装version 5版本的ARM Compiler(Use default compliler version 5)

目录1. 为什么要安装version 5编译器2. 从原来MDK5.37以下版本(MDK536)的软件中提取AC5的编译器3. 解压完成后的文件如下图&#xff0c;打开ARM文件夹4. 将AMRCC文件夹拷贝到你的keil安装目录的AMR文件下5. 打开Keil&#xff0c;点击Project→Manage→Project Items&#xff0c…

爬虫(一)基础介绍

文章目录1. 爬虫简介1.1 robots协议1.2 反爬手段1.3 请求组成1.4 响应组成1.5 POST 请求与 GET 请求2. requests库2.1 GET请求2.2 POST请求2.3 代理1. 爬虫简介 网络爬虫也叫做网络机器人&#xff0c;可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的…

哪种类型蓝牙耳机佩戴最舒服?舒适度最好的蓝牙耳机推荐

如果您想在外出时听自己喜欢的音乐&#xff0c;您需要佩戴耳机&#xff0c;当前的耳机都足够小&#xff0c;可以将它们放在口袋里&#xff0c;即使它们在充电盒中也是如此&#xff0c;舒适度一直都是人们所追求的&#xff0c;舒适之余&#xff0c;佩戴同样稳固更加令人安心&…

ASEMI高压MOS管7N65参数,7N65图片,7N65大小

编辑-Z ASEMI高压MOS管7N65参数&#xff1a; 型号&#xff1a;7N65 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;650V 栅源电压&#xff08;VGS&#xff09;&#xff1a;30V 漏极电流&#xff08;ID&#xff09;&#xff1a;7A 功耗&#xff08;PD&#xff09;…

中文数字对照表--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)

实例5&#xff1a;中文数字对照表 阿拉伯数字因其具有简单易写、方便使用的特点成为了最流行的数字书写方式&#xff0c;但在使用阿拉伯数字计数时&#xff0c;可以对某些数字不漏痕迹的修改成其它数字&#xff0c;例如&#xff0c;将数字“1”修改为数字“7”&#xff0c;将数…

Excel·VBA矩阵、求逆矩阵、解线性方程组

初等变换法求逆矩阵 vba内置函数MInverse可以计算矩阵的逆矩阵&#xff0c;《Office VBA 参考-WorksheetFunction.MInverse 方法 (Excel)》 初等变换法代码思路 对于一个3x3矩阵&#xff08;下图3x3红色部分&#xff09;右侧扩充单位矩阵&#xff08;下图3x3黑色部分&#xf…

海格里斯HEGERLS料箱穿梭车生产厂家|配有高速货物提升机滚筒输送线设备的料箱四向穿梭车立体库

随着物流自动化需求的增中和自动化料箱数量的增加&#xff0c;现在市场对料箱四向穿梭车系统的需求正在逐渐增加&#xff0c;这也使得四向穿梭车在储物效率和储物空间利用率方面的优势的更加突出&#xff0c;其应用场景也在不断扩大。料箱四向穿梭车仓储方案已成为一种高效、智…