【ADRC】跟踪微分器

2023-05-16

在上一篇文章中,分析了PID算法的基本数学原理,从PID算法的原理与实际应用,是可以看出其PID的优点与缺点的,ADRC算法(自抗扰控制)也可以说是针对PID算法的一些缺点,或者说工程中难以实现的点做的一个改进的算法。因此后续我会将ADRC的各个部分分别介绍与分析,本节即从最先出现的比较重要的环节---跟踪微分器开始。

PID的缺点

在开始学习跟踪微分器之前,有必要简要的介绍一下PID算法的主要缺点:

1.从PID的原理可以看出PID的稳定裕度是不小的,但其动态性能的裕度并不大。也就是说,如果被控对象处于一个动态变化的环境之中时,便需要经常改动PID的增益来达到控制效果

2.PID算法的核心是:基于误差反馈来消除误差,但有时这种方式并不是最合理的,在初始状态时,直接取这种误差,往往会使初始控制量太大而出现超调的现象,正是这个原因,导致PID算法控制的系统会有“快速性”与“超调”的矛盾

3.在实际应用中,由于实际测量很少有比较合适的微分器,导致大部分的系统使用PI控制,从而限制了PID的控制能力

上述描述中,有两个点比较重要,一个是由于初始误差较大而导致控制量大进而导致的超调问题,另一个是微分信号获取得不准确的问题导致PID中的D项没有发挥出应有的作用。而跟踪微分器便是一个解决这两个问题的一个较好的工具。

跟踪微分器的作用

与PID的缺点相对应,跟踪微分器的作用是提供两个信号:一个是目标点的过渡信号,一个是目标点过渡信号的微分信号。过渡信号的意思可以简单的理解为缓慢的向目标点靠近而不阶跃,不超调。即过渡信号可以理解为惯性环节,不超调,缓慢的向目标点生成一条曲线。

线性跟踪微分器

线性跟踪微分器的原理是根据二阶系统的一个传递函数得来,即:

这个传递函数的性质是非常好的,由于截止频率分子上与分母相等,都为r^2,因此此传递函数的阶跃响应最终会收敛到1,即稳态值是1。

另外,其中的阻尼系数 ξ 可以控制中间达到稳态时的过程,当 ξ <1 时,欠阻尼,阶跃响应速度变快,但是超调变大;当 ξ > 1时,过阻尼,系统没有超调,但是达到稳态的时间变长;当 ξ = 1 时,系统会无超调的一次进入稳态值。这便是我们想要的一个理想的线性跟踪微分器。当 ξ = 1时,传递函数就变成:

 

此时的参数 r 便可以代表系统的收敛速度,r越大,系统收敛得越快,就越快达到设定值,但实际调试的时候需要根据实际系统来调试r,不同的系统可以达到的实际收敛速度是不同的。

之后便可以根据此传递函数来推导出线性跟踪微分器(TD)的微分方程:

 

输出x1一直跟踪输入v,x2为x1的微分。接下来可以建立simulink模型看看效果:

我们可以随便指定一个传递函数作为被控对象,之后一个使用PID模块,另一个输入信号增加过渡曲线之后,再经过PID模块,参数都只使用PI参数,都写一样,可以对比看一下过渡曲线的作用:

非线性跟踪微分器

非线性跟踪微分器首先可以联系线性跟踪微分器TD来建立一个二阶积分串联系统:

其中x1相当于是目标过渡信号,x2相当于是过渡信号的微分信号,如果将控制量 u 的控制率修改为一个非线性函数,便可以得到一个非线性跟踪微分器,这个非线性函数的形式有很多种,比较常用的是快速最优控制综合函数:

快速最优控制综合函数有点像最优控制中 bang-bang控制的思想,不过其原理的话,也比较容易理解,我们可以将这个式子拆分来理解:

v 为目标位置,x1为当前位置,x1 - v 表示的是目标位移,即像上图中,将符号函数括号内的内容看做两部分组成,一个是目标位移,一个是减速到0过程的位移,减速过程的位移还是挺好推导的,高中的物理知识:

x = (v1^2 - V2^2) / 2*a

由于减速是有正负号的,因此写作 x2 * |x2| 的形式。当目标位移比减速过程的位移大时,即减速到0并不能达到目标位置,因此u = -r ,以-r的加速度减速,反之,则u = +r,加速。

之后可以建立simulink模型来观察:

线性与非线性跟踪微分器对比

将两个微分器的效果进行对比,使用相同的参数r:

在使用相同的阶跃信号与相同的参数r的情况下,非线性跟踪微分器的收敛速度是要快很多的,不过也有末端的尖峰的缺点,不过具体他们的实际效果作用在控制系统中如何,需要后续再进一步对比。其实做到这一步,已经有对于PID算法的改进效果了,不过后续再针对性的做实验,记录笔记。

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

【ADRC】跟踪微分器 的相关文章

  • 这篇很好地引入介绍了ADRC

    这篇很好地引入介绍了ADRC https zhuanlan zhihu com p 151342543 from voters page 61 true 从零开始搭建无人机控制系统 xff08 一 xff09 反馈与闭环 遥远的乌托邦 欢迎
  • ADRC自抗扰控制自学笔记(包含simulink仿真)(转载)

    他这里让我很好理解了跟踪微分器 非线性PID 准确说是非线性PD xff0c 所以可以看到输入是两根线而不是三根线 xff09 也就是说传统PID是线性的 xff1f 但是不是那些系统是非线性的 xff0c 比如无人机 xff0c 平衡车
  • 自抗扰控制理论(一)ADRC的原理

    摘自 xff1a https zhuanlan zhihu com p 115283894 自抗扰控制理论 xff08 一 xff09 ADRC的原理 Chenglin Li 厦门大学 飞行器设计硕士在读 0 相关参考链接 Chenglin
  • (ADRC)自抗扰控制器学习总结(一)

    蓝色字体是我的评注 摘自 xff1a https blog csdn net qq 27270029 article details 78937854 ADRC自抗扰控制基本思想要点 xff1a 1 标准型与总扰动 xff0c 扩张状态与扰
  • ADRC算法Auto Disturbances Rejection control

    自抗扰控制 其中 xff0c e 61 v t y t 是控制系统参考输入量v t 与被控对象输出量y t 之间的差值 xff0c kp比例系数 ki积分系数 xff0c xff0c kd微分系数 优点 xff1a 1 仅由误差来决定控制
  • 用c语言实现adrc算法

    ADRC Adaptive Dynamic Range Control 算法是一种用于自动调节动态范围的方法 在 C 语言中实现 ADRC 算法 xff0c 您需要首先了解 ADRC 算法的基本原理 xff0c 然后根据公式把算法按照 C
  • 自抗扰(ADRC)控制原理及控制器设计

    自抗扰控制是在PID控制算法基础上进行改进的新型控制方法 xff0c 它具有不依赖于控制对象模型 不区分系统内外扰的结构特点 常用的自抗扰控制器主要由跟踪微分器 xff08 Tracking Differentiator xff0c TD
  • 无传感器永磁同步电机电机自适应自抗扰ADRC控制策略

    提示 xff1a 无速度传感器永磁同步电机电机自适应自抗扰控制策略 xff0c 在2022年10月12日晚上23 xff1a 00写完的 人生的路真的很难走 xff0c 身边也发生了很多不好的事情 xff0c 关于一些研究成果和simuli
  • 自抗扰控制ADRC之三种微分跟踪器TD仿真分析

    目录 前言 1 全程快速微分器 1 1仿真分析 1 2仿真模型 1 3仿真结果 1 4结论 2 Levant微分器 2 1仿真分析 2 2仿真模型 2 3仿真结果 3 非线性跟踪微分器 韩教授 3 1仿真分析 3 2小结 4 总结 前言 工
  • 自抗扰控制ADRC之扩张观测器

    目录 前言 1 被控对象 被观测对象 2 非线性观测器 2 1仿真分析 2 2仿真模型 2 3仿真结果 3 线性观测器 3 1仿真模型 3 2仿真结果 4 总结和学习问题 前言 什么叫观测器 xff1f 为什么该类观测称为扩张观测器 xff
  • 【控制理论】用ADRC控制倒立摆

  • 【ADRC】扩张状态观测器(ESO)

    扩张状态观测器是自抗扰控制中非常重要的一个环节 xff0c 在我学习这部分内容后 xff0c 在写本篇文章时 xff0c 大致可以按照三个步骤来做实验 xff0c 推导 xff0c 由这三个步骤来由浅入深地去理解扩张状态观测器 ESO xf
  • 20210824-ADRC数学和解释

    ADRC个人感觉就是 xff0c 对目标信号进行最速跟踪 43 不确定量观测补偿 43 低通滤波信号微分 43 pid 举例说明 xff1a 输入 xff1a Sr 目标电机速度 xff0c 输出 xff1a u 电机pwm 被控量 xff
  • ADRC与Matlab/Similink/C++实现

    写在前面 ADRC控制算法主要分为三部分 xff0c 跟踪微分器TD 观测器ESO和状态误差反馈控制器 xff0c 其中控制器分为线性控制器PD和非线性状态误差反馈控制器NLSEF xff0c 观测器分为线性观测器LESO和非线性观测器NL
  • PLC的自抗扰控制(ADRC)算法

    自抗扰控制算法 网上很多文章有理论推导和讲解 大家也可以关注韩京清教授的论文和书籍 这里就不赘述了 博途PLC ADRC自抗扰控制完整源代码可以参看下面这篇文章 博途PLC 1200 1500PLC自抗扰控制 ADRC 完整SCL源代码 R
  • ADRC控制系统离散形式的稳定性证明

    1 引言 这个问题是最近课题组一个师兄的SCI控制论文的一部分 xff0c 应师兄之邀 xff0c 博主贡献了控制系统稳定性的数学证明 博主目前的研究方向跟控制领域毫无关联 xff0c 只负责其中的系统收敛性证明 师兄的控制系统是一个较为一
  • 自抗扰控制(ADRC)

    1 ADRC控制原理和结构 xff08 1 xff09 最速跟踪微分器 TD xff08 2 xff09 扩张状态观测器 ESO xff08 3 xff09 非线性状态误差反馈 NLSEF 2 ADRC控制仿真 xff08 1 xff09
  • ADRC控制算法在多旋翼飞行器上的应用

    基础理论知识 xff1a 程序中涉及的部分知识点参考如下链接 xff1a ADRC算法以及参数整定 xff1a 关于ADRC算法以及参数整定 xff08 调参 xff09 的一些心得体会 西涯先生的博客 CSDN博客 adrc控制算法 AD
  • ADRC自抗扰控制学习

    入门 自抗扰控制01 xff1a 为何ADRC会成为百年PID算法的继承者 xff1f http news eeworld com cn mp ZLG a23516 jspx 自抗扰控制02 ADRC如何避免执行错误命令 http news
  • LADRC的学习——用simulink搭建仿真模型

    作者 墨心 时间 2019 7 25 用simulink搭建仿真模型 前面两篇博客主要讲了ADRC的相关概念和知识 并且尝试着搭建模型和仿真 之后学习了PID的相关知识 了解了Kp Ki Kd三个参数的意义 接下来 主要根据高志强教授的论文

随机推荐

  • FreeRTOS启动流程

    Reset Handler xff1a 芯片上电默认进Reset Handler SystemInit xff1a 初始化时钟及中断向量映射 main xff1a main函数入口 main xTaskCreate xff1a pvPort
  • 基于STM32F411使用SPI+DMA驱动LCD

    先看效果 F411CE 硬件SPI xff0b DMA驱动LCD 基于HAL库 其实HAL库我用不太习惯 xff0c 一直也是用的标准库 但HAL库确实是好上手一些 xff0c 就迅速创建一个新的template 这次就当尝试一下吧 xff
  • 动手深度学习-环境配置(手动安装,一步一步教你,有截图可看)

    一 xff1a 官网教程 这一部分对应了书中的第二讲 xff1a 预备知识部分 因为我是Windows用户 xff0c 所以这里先只讲Windows部分的安装过程 1 xff1a 第一步是根据操作系统下载并安装Miniconda xff0c
  • 机器学习算法原理与实践(三)、卡尔曼滤波器算法浅析及matlab实战

    协方差矩阵 状态协方差矩阵传递 状态协方差的更新 Matlab 实现 Matlab效果 测试代码 测试效果 原创 Liu LongPo 转载请注明出处 CSDN http blog csdn net llp1992 卡尔曼滤波器是一种利用线
  • Pixhawk之获取传感器数据并更新姿态

    博主 xff1a UAV 声明 xff1a 尊重版权 xff0c 转载请注明出处 原文地址 xff1a 联系方式 xff1a 595493514 64 qq com 技术交流QQ xff1a 595493514 read AHRS 是负责更
  • 类与对象以及类的继承

    类与对象以及类的继承 Java是一门面向对象的语编程言 世界上有众多对象 xff0c 我们把具有相同属性和方法的对象归为一个类 因此 xff0c 类 便是Java代码中的基本单位 下面是对一些名词的解释 类 类是一个模板 xff0c 用来定
  • 如何使用 Apache IoTDB 触发器

    Apache IoTDB 触发器提供了一种侦听序列数据变动的机制 配合用户自定义逻辑 xff0c 可完成告警 数据转发等功能 触发器基于 Java 反射机制实现 用户通过简单实现 Java 接口 xff0c 即可实现数据侦听 IoTDB 允
  • Apache IoTDB 查询引擎源码阅读——数据异步传输模块

    本文参考了 Apache IoTDB 社区成员田原和王中的设计文档 xff0c 由于飞书链接限制 xff0c 本文没有贴出参考链接 背景 Apache IoTDB 查询引擎目前采用 MPP 架构 xff0c 一条查询 SQL 大致会经历下图
  • strchr字符查找函数族;strchrnul()

    https blog csdn net jasonchen gbd article details 80069134 Linux中的字符串和字节序列处理函数 Y 字符串查找 xff0c 有库函数 xff0c 可以起到事半功倍的效果 xff0
  • 【Matlab】线性二次型最优控制问题(LQR控制)

    前面介绍了变分法与极小值原理的基础思想 xff0c 之后有一个非常重要的应用就是线性二次型的最优控制问题 假如系统是线性的 xff0c 性能泛函是状态变量与控制变量的二次型函数的积分 xff0c 那么这样的问题称之为线性二次型最优控制问题
  • 什么是回调函数?为什么要使用回调函数?如何使用回调函数?

    1 什么是回调函数 xff1a 函数指针的调用 xff0c 即是一个通过函数指针调用的函数 xff1b 如果你把函数的指针 xff08 地址 xff09 作为参数传递给另一个函数 xff0c 当这个指针被用来调用其所指向的函数时 xff0c
  • android.mk编译规则,1个mk文件编译多个模块

    目录 Android mk 自我理解 Android mk 是什么 Android mk 语法规则 规则解释 xff1a Android mk 编译多个模块实例 xff0c 详见如下 xff1a Android mk 语法规则 xff1a
  • Wireshark抓包分析 TCP三次握手/四次挥手详解

    Wireshark抓包分析 TCP三次握手 四次挥手详解 2019 11 13阅读 1 9K0 作者 xff1a 踏歌追云 来源 xff1a https urlify cn jYVZn2 本文结合wireshark抓包 xff0c 对TCP
  • tls1.3【转载】

    tr tls1 3 发表于 2021 01 04 20 39 更新于 2021 04 29 17 15 tls1 3翻译备忘 摘要 该文档定义了TLS Transport Layer Security 协议的1 3版本 TLS可以让C S应
  • TLS中ChangeCipherSpec为什么是个单独的协议类型【转】

    发表于 2020 03 14 22 27 更新于 2021 04 29 17 15 RFC5246中说 Note To help avoid pipeline stalls ChangeCipherSpec is an independen
  • linux下多线程获取互斥锁,多线程运行时机

    linux内核 CPU 调度决定的线程运行的时间是难以预见 若在复杂程序中发生这一不确定行为 xff0c 则意味着此类错误将偶尔发作 xff0c 难以重现 xff0c 因此也很难发现
  • 数字签名算法MD5和SHA-1的比较

    什么是MD5 xff0c 什么是SHA 1 xff0c 如何校验这些Hash 还有拿单个ISO文件的MD5 xff0c SHA 1讯问是不是原版的问题 xff0c 在这里 xff0c 对以上问题做一个终结解释 xff01 了解 hash H
  • JavaEE.sql.Delete删除语句

    DELETE 语法格式 DELETE FROM table name WHERE condition S1 常用用法 DELETE FROM test master WHERE bindNo 61 39 bn002 39 S2 清空表 DE
  • Docker 容器使用

    Docker 容器使用 可以通过命令 docker command help 更深入的了解指定的 Docker 命令使用方法 容器使用 获取镜像 如果我们本地没有 ubuntu 镜像 xff0c 我们可以使用 docker pull 命令来
  • 【ADRC】跟踪微分器

    在上一篇文章中 xff0c 分析了PID算法的基本数学原理 xff0c 从PID算法的原理与实际应用 xff0c 是可以看出其PID的优点与缺点的 xff0c ADRC算法 自抗扰控制 也可以说是针对PID算法的一些缺点 xff0c 或者说