前言
上篇中详细阐述了几种经典的PID控制算法及其存在的问题以及改进思路了,本篇将围绕韩京清教授开创的自抗扰控制算法进行阐述,该算法为工业控制领域带来了一项可操性极强的自动控制技术。
ADRC的算法原理
现代控制理论虽然提出了许多性能卓越的控制算法与设计方法以及分析工具,然而,现代控制理论所设计的控制器往往高度依赖于所建模型的精度。而在实际工程中,精确的模型参数较难获得,甚至于所建立的数学模型也未必能够真实反映被控对象的所有特性。因此,其实际控制性能往往不如理论设计的那么优越。相对的,经典PID控制理论则不依赖于被控对象模型,仅仅依靠误差对被控对象进行反馈控制。但其控制器往往只适用于线性对象,当被控对象呈现出强耦合,非线性特性时,基于PID经典控制理论所设计的控制器性能容易出现不如人意的情况。
自抗扰控制算法是韩京清教授针对PID控制算法的不足,提出的一种非线性控制算法。其吸取了PID控制算法“基于误差来消除误差”的控制思想,在PID控制算法基本思想的基础上,增加了以下环节:
- 过渡过程
- 非线性反馈控制律
- 扩张状态观测器
- 更合理的微分信号生成器
以上几个环节的组合即为经典的非线性ADRC控制器,如图1所示,

跟踪微分器的主要作用是提取微分信号的同时,尽可能地抑制运算中引入的噪声,从而得到精度较高的微分信号。例如,输入信号v(t) ,它将输出两个信号v1(t),v2(t),其中v1(t) 跟踪输入信号 v(t),v2(t)跟踪输入信号的微分信号。
下式为最速跟踪微分器的离散形式(公式1):
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧f=−rsign(x1(k)−v(k)+2rx2(k)∣x2(k)∣)x1(k+1)=x1(k)+hx2(k)x2(k+1)=x2(k)+hf
由于直接将连续时间最速跟踪微分器进行离散化,系统进入稳态后会产生不能令人满意的高频震颤,因此,将函数 f 进行以下优化。
令
fsg(x,d)=(sign(x+d)−sign(x−d))/2
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧d=rh2a0=hx2y=x1+a0a1=d(d+8∣y∣)a2=a0+sign(y)(a1−d)/2a=(a0+y)fsg(y,d)+a2(1−fsg(y,d))fhan=−r(a/d)fsg(y,d)−rsign(a)(1−fsg(a,d))
则得到优化后的离散最速跟踪微分器如下:
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧fh=fhan(x1(k),x2(k),r,h)x1(k+1)=x1(k)+hx2(k)x2(k+1)=x2(k)+hfh
现使用 x1(k)−v(k) 代替上式中的x1(k),得到下式:
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧fh=fhan(x1(k)−v(k),x2(k),r,h)x1(k+1)=x1(k)+hx2(k)x2(k+1)=x2(k)+hfh
跟踪微分器的参数主要有两个:快速因子r和滤波因子h 。其中,r与跟踪速度呈正相关,然而,随之带来的是噪声放大的副作用;h与滤波效果呈正相关,但当h增大时,跟踪信号的相位损失也会随之增加。
尽管跟踪微分器提取的微分信号比直接差分近似得到的微分信号噪声小,但由于传感器信号存在噪声,若直接输入跟踪微分器进行微分信号提取,则依然存在较大的噪声。因此,本文对传感器原始信号进行低通滤波后,再输入跟踪微分器进行微分信号提取。图2、3为跟踪微分器滤波前后的曲线对比图,其中,输入参考信号为u(t)=sin(4t),输入参考信号叠加了标准差为0.01的高斯白噪声。图2、图3跟踪微分器参数为h=0.001、r=1000。根据下图中实验结果表明,滤波前跟踪微分器z1、z2与状态量x1、x2的残差的方差分别为0.000137与1.2577;滤波后跟踪微分器z1、z2与状态量x1、x2的残差的方差分别为0.000082与0.0038。由此可见,滤波后跟踪微分器的估计信号噪声大大下降。


已知非线性状态观测器:
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧e1=z1−yz˙1=z2−β01e1z˙2=−β02∣e1∣21sign(e1)+bu
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧x˙1=x2x˙2=f(x1,x2)+buy=x1
将作用于开环系统的加速度f(x1(t),x2(t))的实时作用量扩充成新的状态变量x3,记作
x3(t)=f(x1(t),x2(t))
并记x3(t)=w(t),那么系统(7)可扩张成新的系统
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧x˙1=x2x˙2=f(x1,x2)+bux˙3=w(t)y=x1
按式(6)对这个被扩张的系统建立状态观测器:
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧e=z1−yfe=fal(e,21,δ)fe1=fal(e,41,δ)z1=z1+h(z2−β01e)z2=z2+h(z3−β02e)z3=z3+h(−β03fe1)
其中,
⎩⎨⎧δα−1e,∣e∣≤δ∣e∣bsign(e),∣e∣>δ
通过选取合适的参数β01,β02,β03该系统能够较好地估计系统(7)的状态变量x1(t),x2(t)及被扩张的状态的实时作用量x3(t)=f(x1(t),x2(t)),即
z1(t)→x1(t),z2(t)→x2(t),z3(t)→x3(t)=f(x1(t),x2(t))
则从观测器(10)同样可以得到状态变量x1(t),x2(t)的估计值z1(t),z2(t),同时还能估计出被扩张的状态变量作用于系统的加速度的实时作用量
a(t)=f(x1(t),x2(t),t,w(t))
因此,把被扩张的系统的状态观测器称为系统的扩张状态观测器,而变量x3(t)称为被扩张的状态。扩张状态观测器共有α1,α2,δ,β01,β02,β03 六个参数。其中,α1取0.5,α2取0.25。δ为fal(e,α,δ)函数的线性区间宽度。 β01,β02,β03三个参数为扩张状态观测器的反馈增益。当控制周期h确定时,适当地选取δ,β01,β02,β03 的组合,则ESO可以很好地估计总扰动。
传统的PID控制器采用线性的组合形成误差反馈控制律,为了使误差反馈更有效率,故采用不同的非线性函数组合来生成不同的误差反馈控制律,常用的非线性状态误差反馈控制律如下所示:
u0=β1e1+β2e2u0=β1fal(e1,α1,δ)+β2fal(e2,α2,δ),0<α1<1<α2u0=−fhan(e1,e2,r,h1)u0=−fhan(e1,ce2,r,h1)
事实上,实际工程中也常用类似的非线性误差反馈律来生成对应的非线性PID控制器,以提高控制系统的性能。
总结
本篇详细阐述了自抗扰控制算法的原理,下篇中将详细阐述两种典型的自抗扰控制器的参数整定方法以及多旋翼飞行器控制系统中的自抗扰控制器设计方案。
PS
欢迎关注微信公众号“遥远的乌托邦”。
