本文主要是介绍开源飞控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安排过渡过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!