开源飞控ACFLY:ADRC安排过渡过程

2023-12-18 07:18

本文主要是介绍开源飞控ACFLY:ADRC安排过渡过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘自:https://blog.csdn.net/weixin_40767422/article/details/87651614

 

开源飞控ACFLY:ADRC安排过渡过程

 

置顶 ACFLY开源飞控 2019-02-24 13:05:39 3466 收藏 13

分类专栏: ADRC自抗扰控制 文章标签: ADRC 自抗扰控制 过渡过程 ACFLY 跟踪微分器

版权

 

ACFLY原创文章,转载请说明出处https://blog.csdn.net/weixin_40767422/article/details/87651614

ADRC相关论文资料请加q群:180319060下载

上一篇我们讲了离散最速控制综合函数fsun,链接在此

这篇我们来讲讲ADRC的安排过渡过程,如下图:

 

       我们知道PID的误差求取直接是e=v-y,而控制目标 v 是有可能产生突变的,而对象输出 y 一定是连续的,用连续的缓变的变量追踪可能跳变的变量本身就是不合理的。韩老师针对PID等的这个缺陷提出的解决办法就是安排过渡过程,顾名思义就是安排个路径过去,让输入量缓慢的增大,使其与输出量的差值很小,即可使系统无超调的达到稳态,解决了 PID快速性与超调之间的矛盾。

       比如现在位置是10,目标是80,如果直接求取误差e就等于90了,安排过渡过程就是可以先到20,此时e1=10;再到50,e2=30;然后到80,e3=30。这只是举个例子(路径随意取的),实际安排过渡路径的方法ADRC里用的是离散跟踪微分器(Tracking Differetiator) ,即二阶纯积分对象的离散最速控制,关于TD的推导上篇博客已经说了。如下图:

                                                                      注:图中的fst函数理解为fsun函数

       这个离散系统可以实现x1跟踪输入信号v(t),x2跟踪v(t)的微分,可能这里大家会有点疑问,上图中的fsun函数是这样的:

                                       fsun( x1( t)-v( t) ,x2( t) ,r ,h)                         (1)式

而在上一篇博客所讲的论文里最后推导得到的fsun函数是这样的:

                                       fsun( x1( t) ,x2( t) ,r ,h)                                 (2)式

     可见第一个参数不一样, fsun函数推导的是从当前状态到目标状态的最速路径,论文里把目标状态设为0,目的是为了方便计算,得到的是(2)式,你可能会问如果目标状态不为0就不能用fsun函数了吗?答案是可以的,只需做一下变换就行,把目标状态设为0点,当前状态就变为了x1( t)-v( t),就得到了(1)式。或者可以这样理解,把x1( t)-v( t)看作是整体,当x1( t)-v( t)=0的时候,x1( t)=v( t),即从当前位置到达了目标位置,安排过渡过程我们用的就是(1)式。

        比如当前状态x1( t) 是10,目标状态v( t)是20,为了适应(2)式我们把目标状态设为0点即原点,那么当前位置就变为x1( t)-v( t) = -10,点还是那个点,只是坐标变换一下。TD的作用除了安排过渡过程还给出此过程的微分信号即X2。

        ADRC中非线性组合部份也可以用离散跟踪微分器来给出最佳控制量u,此时的fsun应该是fsun( e1( t) ,e2( t) ,r ,h) ,不用进行变换,因为我们就是让误差e1最速无超调衰减为0。

Conclusion:

       离散跟踪微分器可以用来安排路径,也可以用来控制,它可以输出状态变量x1,x2即过渡路径,也可以输出最优控制量u。

这篇关于开源飞控ACFLY:ADRC安排过渡过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507536

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte