ADRC自抗扰控制原理

news2024/12/28 21:40:42

这里写目录标题

    • TD跟踪微分器
    • ESO
    • NLSEF
    • 后续把公式的核心原理分析一下

参考链接:ADRC自抗扰控制,有手就行

ADRC是升级版的PID,由TD(跟踪微分器),ESO(扩张状态观测器),NLSEF(非线性控制律)。
ADRC的控制框图

其中TD主要是为了防止目标值突变而安排的过渡过程,ADRC的灵魂在于ESO,NLSEF则是改良PID直接线性加权(输出=比例+积分+微分)而引进的非线性控制律,使其更符合非线性系统。

TD跟踪微分器

在这里插入图片描述
在c++中的实现为:
fhan函数

#include <iostream>
#include <cmath>

float sign(float x)
{
	if(x>0)
		return 1;
	else if(x<0)
		return -1;
	else
		return 0;
}

float fhan(float x1,float x2,float r,float h)
	float deltaa  =0,
		  deltaa0 =0,
	      y       =0,
	      a0      =0,
	      a       =0,
	      fhan    =0;
	
	deltaa = r*h;
	deltaa0 = deltaa*h;
	y=x1+x2*h;
	a0 = sqrtf(deltaa*deltaa+8*r*fabsf(y));
	if(fabsf(y)<=deltaa0)
		a=x2+y/h;
	else
		a=x2+0.5*(a0-deltaa)*sign(y);
	if(fabsf(a)<=deltaa)
		fhan = -r*a/deltaa;
	else
		fhan = -r*sign(a);
	
  return fhan;
}

ESO

在这里插入图片描述
c++代码为:

/*******************************fal函数**********************************/
float fal(float e,float alpha,float delta)
{
  float result = 0,fabsf_e = 0;
  
  fabsf_e = fabsf(e);
  
  if(delta>=fabsf_e)
    result = e/powf(delta,1.0-alpha);
  else //if(delta<fabsf_e)
    result = powf(fabsf_e,alpha)*sign(e);
 
 return result;     
}

NLSEF

在这里插入图片描述
反应到程序上就是:

  u0 = belta1*fal(e1,alpha1,delta) + belta2*fal(e2,alpha2,delta);//其中0<alpha1<1<alpha2
  
  u = u0 - z3/b;
  
  return u;

后续把公式的核心原理分析一下

然后就是参数整定的过程:
  参数整定的规律是先将TD参数整定好,再整定ESO和NLSEF。
  TD的参数整定是最简单的,观测v1的输出和输入v0的线性,其跟随的快慢并没有规定一定要多快多慢,取决于你想要的效果。TD参数只有两个:快速因子r 和滤波因子h 。其中,r 与跟踪速度呈正相关,然而,随之带来的是噪声放大的副作用;h与滤波效果呈正相关,但当h增大时,跟踪信号的相位损失也会随之增加。滤波因子经常取值为ADRC控制周期,比如1ms调用一次,h就是0.001,这也不是死定的,可以根据自己的效果做细微调整。
ESO共有b、delta、belta01、belta02、belta03共5个参数,其中delta取值范围在5h<=delta<=10h,h为ADRC控制周期。参数整定可以先将b定下来,比如取1或者2(最好还是能够知道你的二阶系统系数),然后先后调整belta01、belta02、belta03,观测z1能不能够很好的跟随反馈y,如果是,那么大概参数就调好了;如果不是,可以改动一下b,还是不行的话就得认认真真的检测一下反馈y是不是出了什么问题,比如变量数据类型转换有没有做好。如果懂得自己在输出中加入随机数(白噪声),注意幅值不能过大,观测一下z3是不是能够很好的观测到随机扰动。若以上两个条件都成立,那么ADRC就几乎被整定好了。
  NLSEF参数有alpha1,alpha2,belta1,belta2四个,其中0<alpha1<1<alpha2。belta1和belta2则视效果而定,通常ESO和NLSEF一起调,在整定ESO参数时,可以先把delta1和delta2定为1,再调ESO,待ESO有一定效果后,反复调整ESO参数无果,可以加入NLSEF参数整定,取得更好的效果。

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

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

相关文章

C语言—sizeof和strlen的区别

sizeof和strlen的区别 1、两者无联系 2、 sizeof&#xff1a;计算数组&#xff0c;变量&#xff0c;类型所在空间的大小&#xff0c;单位是字节 strlen&#xff1a;求字符串的长度&#xff0c;\0之前的字符个数&#xff0c;只针对字符串求长度 3、sizeof是操作符 strlen是库…

现代图标集wxArtProvider发布 —— 发布于2023年11月21日

Perazz发布了wxMaterialDesignArtProvider&#xff0c;这是一个自定义的wxArtProvider类&#xff0c;从MaterialDesign、SimpleIcons、FontAwesome和FluentUI系统数据集中提供基于SVG的图标。所有这些数据集都有许可证&#xff08;MIT、CC BY 4.0、CC0 1.0、Apache 2.0&#xf…

PyQt6把QTDesigner生成的UI文件转成python源码,并运行

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计18条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

LeetCode二叉树小题目

Q1将有序数组转换为二叉搜索树 题目大致意思就是从一个数组建立平衡的二叉搜索树。由于数组以及进行了升序处理&#xff0c;我们只要考虑好怎么做到平衡的。平衡意味着左右子树的高度差不能大于1。由此我们可以想着是否能用类似二分递归来解决。 如果left>right,直接返回nul…

晶振为什么不能放置在PCB边缘

某行车记录仪&#xff0c;测试的时候要加一个外接适配器&#xff0c;在机器上电运行测试时发现辐射超标&#xff0c;具体频点是84MHz、144MHz、168MHz&#xff0c;需要分析其辐射超标产生的原因&#xff0c;并给出相应的对策。辐射测试数据如下&#xff1a; 图1&#xff1a;辐…

CDN的认识与绕过

CDN的认识与绕过 什么是CDN CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。它依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降低网络拥塞&#xff0c;提高用户…

2023.11.25-电商项目建设业务学习1-指标,业务流程,核销

目录 1.指标分类(原子指标,派生指标,衍生指标) 2.一些业务名词 3.四大业务流程-销售需求 3.1-线上线下销售 3.2线上线下退款 4.四大业务流程-会员业务 5.四大业务流程-供应链业务 6.四大业务流程-商城业务 7.核销主题需求分析 1.指标分类(原子指标,派生指标,衍生指标) 原…

【Python自学】七个超强学习网站,你值得拥有!

学习Python最主要的还是要动手&#xff0c;去找一些自己感兴趣的脚本&#xff0c;代码去练习&#xff0c;练的越多&#xff0c;对于一些英语单词&#xff0c;特殊符号要比死记硬背要容易记得些。 以下这些网站&#xff0c;虽说不上全方位的满足你的需求&#xff0c;但是大部分也…

优秀的时间追踪软件Timemator for Mac轻松管理时间!

在现代社会&#xff0c;时间管理成为了我们工作和生活中的一大挑战。如果你经常感到时间不够用&#xff0c;无法高效地完成任务&#xff0c;那么Timemator for Mac将成为你的得力助手。 Timemator for Mac是一款出色的时间追踪软件&#xff0c;它可以帮助你精确记录和管理你的…

Vatee万腾独特科技力量的前沿探索:Vatee的数字化奇点

在当今科技的浪潮中&#xff0c;Vatee万腾以其独特的科技力量成为前沿探索的引领者&#xff0c;正迎来数字化奇点的新时代。Vatee万腾不仅仅是一家科技公司&#xff0c;更是一支探索未知领域、开创数字时代新局面的先锋力量。 Vatee万腾的数字化奇点体现在其对前沿技术的深刻理…

BART - 磁共振重建库 linux系统安装 MATLAB 使用

本文主要介绍如何在linux系统中安装伯克利大学的磁共振重建库BART 和在matlab中的配置使用。 安装必要的库 (linux 命令行) $ sudo apt-get install make gcc libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev 下载编译BART 文件 (官网链接:BART Toolbox) 命令行下…

武汉教育E卡通学生证照片尺寸要求及证件照集中采集方法

”武汉教育E卡通“电子学生证旨在数字化中小学生身份&#xff0c;提供通用的教育卡&#xff0c;实现身份认证的电子化、权威化和集成化。校内一卡通系统包括刷卡考勤、电子班牌、图书借阅等&#xff0c;全面记录学生在校业务。同时&#xff0c;采集社会通行、实践活动等数据&am…

webshell之Laravel和yii

EvalLoader#load 免杀效果 EvalLoader#load分析 eval命令执行函数&#xff0c;参数可控 MockTrait#generate 免杀效果 MockTrait#generate函数分析 存在一个eval函数 MockTrait#generate 免杀效果 view#evaluateDynamicContent 免杀效果 view#evaluateDynamicContent分析 总结…

STM32F103x TB6612FNG电机PID控制基础资料

TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件&#xff0c;它具有大电流 MOSFET-H 桥结构&#xff0c;双通道电路输出&#xff0c;可同时驱动 2个电机。 相比 L298N 的热耗性和外围二极管续流电路&#xff0c;它无需外加散热片&#xff0c;外围电路简单&#xff0c;只…

抓住机会:2024年企业生成式AI应用的未来

在 Menlo Ventures 的AI趋势研究报告中&#xff0c;对美国和欧洲的 450 多名企业高管进行了调查&#xff0c;并与另外十几位高管进行了交谈&#xff0c;以了解当今企业应用AI的状况。尽管大肆宣传&#xff0c;与其他软件类别相比&#xff0c;企业对生成式AI的投资仍然小得惊人。…

可自行DIY单TYPE-C接口设备实现DRP+OTG功能芯片

随着USB-C接口的普及&#xff0c;欧盟的法律法规强制越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性&#xff0c;使各种设备之间的连接和数据传输变得非常方便快捷&#xff0c;它们不仅提供了强大的功能&#xff0c;还为我们的日常生活和工作带来了极大的便利…

Leetcode—58.最后一个单词的长度【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—58.最后一个单词的长度 实现代码 int lengthOfLastWord(char* s) {int len strlen(s);int left 0, right 0;if(len 1) {return 1;}while(right < len) {if(right 1 < len) {if(s[right] && s[righ…

C语言--每日选择题--Day25

第一题 1. 对于C/C语言的函数&#xff0c;下列叙述中正确的是&#xff08; &#xff09; A&#xff1a;函数的定义不能嵌套&#xff0c;但函数调用可以嵌套 B&#xff1a;函数的定义可以嵌套&#xff0c;但函数调用不能嵌套 C&#xff1a;函数的定义和调用都不能嵌套 D&#xf…

HarmonyOS简述及开发环境搭建

一、HarmonyOS简介 1、介绍 HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。有三大系统特性&#xff0c;分别是&#xff1a;硬件互助&#xff0c;资源共享&#xff1b;一次开发&#xff0c;多端部署&#xff1b;统一OS&#xff0c;弹性部署。 HarmonyOS通过硬件互…

CFO的GenAI应用指南

CFO应该采取的最重要行动是识别最大的创造价值的机会&#xff0c;然后确保他们获得所需的资金和其他资源。GenAI拥有成为革命性技术的潜力&#xff0c;但它不会改变金融和经济学的基本原则&#xff1a;一家公司必须产生高于资本成本的回报。 技术改变了每一项业务&#xff0c;往…