ADRC学习

学习ADRC先从提出这个算法的论文《从PID技术到“自抗扰控制”技术》开始。https://download.csdn.net/download/qq_34445388/10309935调试四轮智能车,板球控制系统,两轮直立车,舵机控制,这些控制系统用的都是PID控制,虽然我已经有很多种改进方法,但是还是很难突破传统PID的限制,调节速度和超调一定同时存在,想要得到较好的控制效果,用现…

大家好,又见面了,我是你们的朋友全栈君。

学习ADRC先从提出这个算法的论文《从 PID 技术到“自抗扰控制”技术》开始。
https://download.csdn.net/download/qq_34445388/10309935
调试四轮智能车,板球控制系统,两轮直立车,舵机控制,这些控制系统用的都是PID控制,虽然我已经有很多种改进方法,但是还是很难突破传统PID的限制,调节速度和超调一定同时存在,想要得到较好的控制效果,用现代控制理论解决,要知道精确的系统模型。从网上看到有ADRC这种综合了PID和现代模型的优势的控制算法,想要学习一下。
一、先回味一下传统的PID控制技术
PID控制技术相对于是非常简单的,很容易就理解了,基于误差进行控制,只要有误差,就会往无限逼近误差为零的方向调节。
这里写图片描述
PID的优点很明显,简单,就是简单,就这么一个公式什么都能进行控制。
但是在使用过程中还是有些技巧的!
1、I 这个量虽然能提高控制的精度,但是他的存在很容易造成超调和滞后,对于响应速度较高(比较接近系统的开环响应频率)的系统,基本上都要选用PD控制,如果是想要再提高响应而不顾超调的话,可以通过对I做限幅,不完全积分等方法加入控制中,明显能够提高系统的响应,但是超调量会急剧增加。
2、P的控制是系统综合能力的体现,P小的时候系统相对稳定,但是跟踪能力差,P大的时候系统总是存在震荡现象。如果你在调试一个系统的时候,他经常会让你抓狂,大也不是,小也不是。这时候就可以使用一些变P的手段,提高P的阶数,增加系统的响应,同时在小误差时能够兼顾稳定性 P= a * Error * Error + b。用一个标准二阶函数就能显著的提高控制系统的品质。
3、D 这个量,确实对于控制的预判有着非常明显的作用,尤其是大滞后的系统,加D之后,能够明显提高响应和抑制积分控制造成的后遗症。但是经过我多次调试发现,微分变量对系统的改善的上限到达比较快,基本上都是PI调节完成之后,D再能对系统品质提高10%——20%,之后就会没什么作用,或者引起震荡。

所以我以前的调试总是绞尽脑汁的想办法,变P变I变D,可是总是很难兼顾系统在不同状态的运行。尤其是增加了很多的调试参数,最后自己都是一团乱,还不能说出一个所以然。看完这一篇感觉恍然大悟,直击内心深处。
PID 的缺点:
①误差的取法;
②由误差 e 提取de/dt 的办法;
③“加权和”策略不一定最好 ;
④积分反馈有许多副作用
我上面说的问题确实很多都与总结的四点有关,下面我们就看看解决办法。
这里写图片描述
这里写图片描述
这里的 ‘tao’(那个字符不会显示)在我的理解里就是采样间隔时间,有时候确实是这样的,采样周期越短,噪声被放大越大,引起系统的震荡。比如说直立车速度调节,因为直立,速度和转向都是调节轮子的转速,所以测量的速度噪声特别大,提高采样周期之后才能明显降低噪声的影响。

跟踪微分器TD
看了论文和各种资料,下面我介绍一下我认识的ADRC的TD,至于具体推导原理,是在是不懂。
https://download.csdn.net/download/qq_34445388/10318629
这是韩京清先生研究ADRC几乎所有的论文集链接。
这里写图片描述
这是跟踪微分控制器的离散方程,看方程其实就很直接。
h:为时间尺度 MATLAB的仿真步长为0.001所以 h = 0.001

这里写图片描述
Simulink 模型里的TD 有一个输入状态,经过TD安排过渡时间,计算fst(快速控制最优综合函数)后,会得到两个输出v1 目标状态,v2系统的微分。
这里写图片描述
这是TD的内部结构,和公式里面的一样,就是跟踪微分的阶跃响应公式。fst 输入的第一个参数为
v1(t) – v0(t).在结构图里,就是v1-v,之后的结构对照公式即可看明白。
这里写图片描述

这里看一下对TD的仿真波形图。
这里写图片描述
基本上很好的跟踪上了正弦波。
这里提示一下TD模型里的参数修改的地方。在这个模型里只有两个参数r,h.
这里写图片描述
这里写图片描述
双击1,再选择2的地方就可以了。然后设置3处的两个参数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124605.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 多线程中 ManualResetEvent 的用法[通俗易懂]

    多线程中 ManualResetEvent 的用法[通俗易懂]///<summary>///手动重启///</summary>privateManualResetEventmanualReset=newManualR

    2022年7月1日
  • AvalonDock使用心得「建议收藏」

    AvalonDock使用心得「建议收藏」  桌面程序的应用,不可避免的就会用到大量的布局控件,之前的一个项目也想过去做类似于VisualStudio的那种灵活的布局控件,也就是界面上的控件能够实现拖拽放置、隐藏、窗口化等一系列的操作,但由于开发时间以及需求的原因,没有太严格要求这方面功能的实现,也就只能算是想过一下而已,实际用的时候还是固定布局,但是最近接触到新的项目,需要这方面的应用就不得不自己动手查找和做这样的东西了。  有朋…

    2022年7月20日
  • Windows wpf(下载应用介绍教程)

    一、窗体类基本概念    对于WPF应用程序,在VisualStudio和ExpressionBlend中,自定义的窗体均继承System.Windows.Window类。用户通过窗口与WindowsPresentationFoundation(WPF)独立应用程序进行交互。窗口的主要用途是承载可视化数据并使用户可以与数据进行交互的内容。独…

    2022年4月13日
  • Hmily 源码解析(二)—— 调用微服务

    Hmily 源码解析(二)—— 调用微服务由于篇幅过长,将该模块单独拎出一节,接上文Hmily源码解析(二)——执行主体方法上文我们把主体方法的执行及Feign的相关配置讲解了,知道在调用微服务时把对应的HmilyTransactionContext实例以“HMILY_TRANSACTION_CONTEXT”为key作为请求参数一同发送过来,及调用微服务成功之后会把调用接口的方法(有@Hmily注解的)封装为HmilyPa…

    2022年5月11日
  • MySQL开发规范.pdf

    MySQL开发规范.pdf

    2022年2月20日
  • html右浮动代码_html+css+js

    html右浮动代码_html+css+js网上一般的网页浮动广告代码都是基于jquery的,受jiquery版本及浏览器限制,非常容易出现不兼容的情况,本站分享一段纯js网页浮动广告代码,简单兼容。html代码:javascript代码:window.onload=function(){varx=50,y=60;varxin=true,yin=true;varstep=1;vardelay=10;varobj=docu…

    2022年9月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号