开源飞控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

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man