Skip to content


PID的局限性

  1. PID增益调参难
  2. 系统摩擦、阻尼的改变会让参数需要重新调整(鲁棒性差)
  3. 忽略了信息和模型

事实上,PID的调参过程就内含对系统进行动力学建模。

以推箱子为例子,PID只会考虑与期望位置的偏差,更为理想的控制应该要估算箱子的重量以及箱子与地面之间的摩擦,从而进行更具有鲁棒性的控制。

一个转动惯量为J, 包含摩擦β、阻尼α以及其他未知输入$\gamma $的系统如下

θ¨=Mdriveαθ˙βθγJ

在控制中,“积分器串联型”系统是很好用的系统。所谓积分器串联型系统如下:

θ¨=Mdrive

因此我们自然希望将系统改造成一个积分器串联型的系统。


ADRC

系统建模

要解决PID的鲁棒性差的问题,我们首先想到的是对系统方程中的转动惯量J,摩擦β和阻尼α进行估计。

假设估计值都使用x^形式表示,我们推导我们的系统方程

θ¨=Mdriveαθ˙βθγJ=MdriveJ^β^J^θ+(αJθ˙γJ+(1J1J^)Mdrive+(β^J^βJ)θ=MdriveJ^β^J^θ+f

其中f称为“总扰动”

y=θU=Mdrive, 则我们可以得到标准的模型公式

y¨=UJ^β^J^y+f

如果令输入U=h^(Mdrive0+β^J^yf^)

代入系统方程,如果f^f则可以得到

y¨Mdrive0

对于这样的二阶积分系统,使用简单的PD控制器, 如Mdrive0=kp(yry)kdy˙, 即可实现控制

设状态量

{y=x1y˙=x2

则状态模型写为

{x1˙=x2x2˙=UJ^β^J^x1+f

扩张状态观测器(ESO)

整个ADRC的思路如下

简单来说,就是通过对期望的输出与真实输出的差进行积分实现对SYS Model中总扰动f^的纠错(观测)

这里我们建立一个扩张状态模型,其中总扰动f的导数先用h代指

{x1˙=x2x2˙=UJ^β^J^x1+ff˙=h

基于此我们要构建一个扩张状态观测器。我们是从总扰动f的观测开始写, 进一步,写出另外两个状态量的观测方程

x^˙1=x^2+β1(x1x^1)x^˙2=UJ^β^J^x^1+f0+f^+β2(x1x^1)f^˙=h+β3(x1x^1)

基于此观测器,我们的控制律设计以及最终闭环动态方程如下

动力学模型: y¨=UJ^β^J^yf

控制律: u=u0+β^J^x1+f^1/J^u0=kp(yrefy)kdy˙

将控制律代入动力学模型,得到闭环系统的动态方程:

y¨=kp(yrefy)kdy˙

实际值与目标值之间的传递函数为:

YYref=kps2+kds+kp=ωn2s2+2ξωns+ωn2

可见,实际值与目标值的比在稳态时为1,动态过程的响应速度及超调量与 kpkd 相关避免超调和振荡,因此令系统的阻尼比 ξ=1 (该过程平滑、无振荡),调节时间约为6ωn

控制律的调节规律为

kp=ωn2kd=2ωnωn=6τs

b0=1J^a1=β^J^状态观测器写成矩阵形式如下:

[x^˙1x^˙2x^˙3]=[β110β2+a101β300][x^1x^2x^3]+[β100β2b01β300][x1uf0]

至此,我们就只需要选择合适的 β1β2β3 即可


ADRC极点配置

ESO的状态转移矩阵的特征方程如下:

|β1λ10β2+a1λ1β30λ|=0

化简得

λ3+β1λ2(a1β1)λ+β3=0

我们通常希望ESO无超调且快速响应,因此不妨令三个极点相同(设为ω0)。因此状态转移矩阵的特征值相同。

(λ+ωo)3=0, 可以解得

{β1=3ωoβ2=a1+3ωo2β3=ωo3

所以,我们只需要确认观测器的极点ωo,就能确定观测器的各个系数。在控制系统中,观测器收敛速度必须比控制器快,所以ωo通常选择35倍的ωn