Auto Disturbances Rejection Control (ADRC) Technique阅读
上机器人课程讲控制的时候偶然听老师提到ADRC,所以去查阅了一下相关资料,记录下自己的理解,可能有不对的地方,还望指点。
BACKGROUND
经典PID
- 优点
- 仅由误差来决定控制
- 运算量低,可以以极高的速率运行
- 缺点
- 误差函数采用的形式不太合理,比如输入阶跃信号的时候,会导致误差函数也是一个阶跃信号,对控制的稳定性有影响
e=v−y - 在经典PID里面需要计算误差信号的微分,但是根本无法严格的计算微分信号,只能使用近似计算
- 经典PID的比例、误差、积分项是线性组合输出最后的控制量的,线性组合并不是一个最优的组合方案
- 严格上来说,积分项虽然消除了静态固有误差,但是会大大影响控制的稳定性能
- 误差函数采用
INTRODUCTION OF ADRC
针对上面的四个优点ADRC,分别提出了改进方法,如下:
- transient profile generator
为了防止跳变信号,对信号作如下处理,其实也就是下面的跟踪微分器u=−rsign(x1−v+x2|x2|2r)
如下图所示,使用这种变换实际上是模仿最短时间到达一个点的概念,在到达平衡位置处前恒定加速运动,过平衡位置后恒定减速运动,使目标点在规定的加速度下以最短的时间到达目标点,并且到达速度为零,其中v是当前位置
此外在计算机中或者仿真中只能使用离散时间的解决方案,因此,解决方案可以表示为
当然,其中
- tracking differentiator
这里解释为什么要改进经典的微分器,实际上,使用经典PID里面的微分器会很大的放大信号噪声。如果使用经典的微分器,当附加上噪声n(t) 的时候
可以发现间隔时间越短,噪声被放大地越多,因此采用如下改进
具体参考参考资料1。 - nonlinear weighted sum
在使用了跟踪微分器之后,一个输入实际上变成了两个输入e1=v1−x1,e2=v2−x2 ,为信号的误差和信号误差的微分,这里利用这两个信号来组合得到控制输出,ADRC里面采用非线性的组合方式,使用了一个函数如下所示fal 函数具有小误差,大增益;大误差,小增益的特性,十分适合用于控制,可以减少控制误差,最后的非线性PID可以写作,其中u=β0fal(e0,α0,δ)+β1fal(e1,α1,δ)+β2fal(e2,α2,δ) α0≤α0≤α2,某些情况下可以取α0<0,0<α1≤1,α2≥1 - extended state observer
最后的扩张状态观测器也是最重要的一个模块,此处不需要误差积分模块了,ESO给出了系统未知状态和未知干扰的估计和补偿。假设外部的干扰为f(x1,x2,ω,t) ,控制信号为u ,系统可以被表示为x˙1=x2x˙2=f(x1,x2,ω(t),t)+buy=x1
之后增加一个新的状态x3 用于表示干扰,最后ESO可以被写作e=z1−yfe=fal(e,0.5,δ),fe1=fal(e,0.25,δ)z˙1=z2−β02fez˙2=z3+bu−β02fez˙3=−β03fe1
其中参数一个例子是β01=1,β02=12h0.5,β03=252h1.2 .输入输出如下图所示
最终整个系统函数和框图如下图所示
ADRC系统函数表示
整个ADRC系统框图表示
APPLICATIONS
- 具有控制延时的系统
- 需要多变量解耦的控制系统
- 级联控制系统
- 并行控制系统
此外ADRC也被用于温度控制、引擎控制系统等等
CONCLUSION
这里综合参考资料里面的结论,提炼几点:
1. ADRC系统的系统阶数由系统的相对阶数决定
2. 安排过渡过程解决快速控制和超调的矛盾
3. 不适用积分项也可以消除静态误差,避免积分副作用
4. ADRC的关键创新点其实在与ESO模块,也就是扩展状态观测器模块,他将所有不知道的影响归纳为一个中间控制量加入系统之中,可以很好的提高系统的抗干扰性能
5. ADRC中系统分类,不是按照线性、非线性、时变和时不变来分,而是按照系统的”时间尺度”来分类