PID是目前工程上使用最广泛,最稳定的方法,说实话想做点实际的东西PID必不可少,对于PID的掌握是搞控制的基本。

本文会系统梳理PID控制,从基础的P控制器开始,PI控制器解决P控制器不能用大增益的问题,PID控制器解决PD控制器稳态误差不为0的问题,自动控制原理对一二阶系统的讨论附在后面,算是对基础知识的补充。

最简单的反馈控制器就是P Control and First-Order Error Dynamics,也就是PID里的P,PID是比例-积分-微分控制的缩写,这个了解自动控制原理的话大家都很熟悉了,它的控制律为:

详解PID控制插图

0″>Kp>0K_p>0,这种控制器被称为比例控制器,或P控制器,因为它创建一个与位置误差θe(t)=θd(t)θ(t)\theta_e(t)=\theta_d(t)-\theta(t)成比例的校正控制,换句话说,恒定的控制增益KpK_p有点像一个虚拟的弹簧,试图把实际的关节位置拉到期望的关节位置。P控制器是线性控制器的一个例子,因为它产生的控制信号是误差θe(t)\theta_e(t)的线性组合也可能是其的导数和积分。

如果θd(t)\theta_d(t)是常数,那么θ˙d(t)=0\dot\theta_d(t)=0,就称为setpoint control,这时候误差动力学为:

详解PID控制插图1

代入P控制器就有:

详解PID控制插图2

显然这是一个时间常数τ=1/Kp\tau=1/K_p的一阶误差动力学方程,它的衰减指数误差响应如下图,稳态误差为零,没有超调,2%的沉降时间为4/Kp4/K_p,更大的KpK_p意味着更快的响应。

详解PID控制插图3

如果θd(t)\theta_d(t)不是常数,而θ˙d(t)=c\dot\theta_d(t)=c,这时候误差动力学代入P控制器为:

详解PID控制插图4

处理一下:

详解PID控制插图5

解微分方程,就有:

详解PID控制插图6

当时间趋于无穷时,它收敛于非零值c/Kpc/K_p,与setpoint control不同,稳态误差esse_{ss}是非零的,关节位置总是滞后于运动参考点,通过选择控制增益KpK_p,可以使稳态误差c/Kpc/K_p变小,但是KpK_p的大小受到实际情况的限制,一个是真正的关节有速度限制,KpK_p过大显然是不行的,另一方面,较大的增益可能给系统带来不稳定的问题。

那么想用大的增益怎么办?比例积分控制器或PI控制器PI Control and Second-Order Error Dynamics就出现了,它添加与误差对时间积分成比例的项:

详解PID控制插图7

PI控制器的方块图如下:

详解PID控制插图8

如果θd(t)\theta_d(t)不是常数,而θ˙d(t)=c\dot\theta_d(t)=c,这时候误差动力学代入PI控制器为:

详解PID控制插图9

上式对时间求导:

详解PID控制插图10

利用上一帖中二阶误差动力学的相关知识,可以看出系统的固有频率ωn=Ki\omega_n=\sqrt{K_i},阻尼比为ζ=Kp/2Ki\zeta=K_p/2\sqrt{K_i}类比经典的弹簧阻尼系统,增益KpK_p的作用等同于b/mb/m(KpK_p越大,阻尼常数b越大),增益KiK_i的作用等同于k/mk/m(KiK_i越大,弹簧刚度k越大)。

那么0″>KpKi>0K_p,K_i>0时,PI控制的误差动力学方程是稳定的,特征方程的根为:

详解PID控制插图11

KpK_p等于20,然后在复平面上画出KiK_i从0增长的根轨迹(root locus)为下图:

详解PID控制插图12

对于根轨迹图的讨论就不再赘述了,可以画出下面的误差响应图,罗马数字1,2,3分别对应过阻尼,临界阻尼和欠阻尼的响应。

详解PID控制插图13

有了上面的讨论,对于临界阻尼情况(Ki=Kp2/4K_i=K_p^2/4),我们总是可以选择Kp,KiK_p,K_i,增加Kp,KiK_p,K_i使误差响应尽可能快,然而,实际情况的限制也不能让增益取的过大,在满足实际情况下,尽可能使Kp,KiK_p,K_i满足临界阻尼条件。

现在来对比一下P控制器和PI控制器,下图显示了P控制器和PI控制器尝试跟踪匀速轨迹的性能,两种情况下的比例增益KpK_p是相同的,而对于P控制器Ki=0K_i=0,从响应的形状来看,似乎PI控制器的KiK_i选择的大了一些,使系统欠阻尼,但依旧很明显,PI控制器的ess=0e_{ss}=0,而P控制器的ess0e_{ss}\not=0,这与上面的分析一致。

如果期望的速度θ˙d(t)c\dot\theta_d(t)\not=c,PI控制器就不能完全消除稳态误差,但是,如果期望速度变化缓慢,那么一个设计良好的PI控制器可以提供比P控制器更好的跟踪性能。

详解PID控制插图14
左图为跟踪轨迹图,右图为误差响应

进入PID前,先看这个:

详解PID控制插图15

如上图,考虑摩擦等阻力,动力学方程就为:

详解PID控制插图16

式中:

0″>τfric=bθ˙,b>0\\ \tau_{fric}=b\dot \theta,b>0

简写一下,就为:

详解PID控制插图17

Feedback Control: PID Control(线性比例-积分-微分控制或PID控制),PID控制器就是PI控制器加上与误差对时间的导数成比例的一项,控制律如下:

详解PID控制插图18

上式中增益Kp,Ki,KdK_p,K_i,K_d都是正的,比例增益KpK_p类似于一个弹簧,试图减少位置误差θe=θdθ\theta_e=\theta_d-\theta,微分增益KdK_d类似于一个阻尼器,试图减少速度误差θ˙e=θ˙dθ˙\dot\theta_e=\dot\theta_d-\dot\theta,积分增益可用于减少或消除稳态误差。PID控制器方块图如图:

详解PID控制插图19

(1)PD Control and Second-Order Error Dynamics

如果Ki=0K_i=0,就称为PD控制,假设机器人在水平面上运动(g = 0),将PD控制律代入动力学,就有:

详解PID控制插图20

如果θd\theta_d是常数,那么θ˙d=θ¨d=0\dot\theta_d=\ddot\theta_d=0,那么θ˙e=θ˙θ¨e=θ¨\dot\theta_e=-\dot\theta,\ddot\theta_e=-\ddot\theta,这时候误差动力学为:

详解PID控制插图21

写成二阶形式:

详解PID控制插图22

那么固有频率和阻尼比就为:

详解PID控制插图23

系统要稳定,那么b+KdKpb+K_d,K_p就要为正,如果误差动力学方程是稳定的,则稳态误差为零,如果不出现超调和快速响应,增益KdK_dKpK_p应选择满足临界阻尼情况,如果想要快速响应,应选择尽可能高的满足实际问题的KpK_p,过高的KpK_p可能导致抖振(扭矩快速变化的情况)的发生。

如果其它条件不变,连杆在垂直平面上运动(g > 0),根据上面的PD控制律,误差动力学可以写成:

详解PID控制插图24

观察上式,你会发现在Kpθe=mgrcosθK_p\theta_e=mgrcos\theta时,关节将保持静止,即θd±π/2\theta_d\not=\pm\pi/2时稳态误差θe0\theta_e\not=0,因为机器人在θd±π/2\theta_d\not=\pm\pi/2必须提供一个非零的力矩来保持连杆静止,但PD控制律只有在θe0\theta_e\not=0会在静止时产生非零力矩,这就陷入了矛盾,想让稳态误差变成0,但它就不是0,当然我们可以通过增大KpK_p来降低稳态误差,但是,我们上面讨论了,KpK_p会受到实际情况的限制,那这种情况该如何解决?PID就出场了。

(2)PID Control and Third-Order Error Dynamics

为了消除稳态误差,我们通过设置0″>Ki>0K_i> 0让控制器化身PID控制器,下图展示了积分项加入控制器的效果:

详解PID控制插图25
左图为跟踪效果,中间为比例积分微分项各自的贡献,右图为控制情况

写出误差动力学:

详解PID控制插图26

τdist\tau_{dist}为扰动力矩代替了重力项mgrcosθmgrcos\theta,上式两边求导,就有三阶误差动力学:

详解PID控制插图27

如果τdist\tau_{dist}是常数,那么上式的特征方程为:

详解PID控制插图28

如果特征方程的所有根都有负实部,则误差动力学是稳定的,且收敛于零,为了稳定还必须满足以下控制增益条件:

详解PID控制插图29

增益KiK_i必须同时满足一个下限和一个上限。合理的设计策略是选择Kp,KdK_p,K_d以获得良好的瞬态响应,然后选择KiK_i从下面的根轨迹可以看出KiK_i太大,系统是不稳定的)使其能够减少或消除稳态误差,但又不至于对稳定性产生显著影响,在上面左边那张图可以明显看出效果。

详解PID控制插图30
特征方程的根轨迹,讨论就略去了

实际使用中,对于许多机器人控制器Ki=0K_i=0,因为稳定性是最重要的,可以用其他方法限制积分控制不利稳定的问题,比如integrator anti-windup,对允许的误差积分的大小设置一个限制。

PID控制算法的伪代码如下图:

详解PID控制插图31

虽然上述的分析集中于setpoint control,但是PID控制器很好地适用于轨迹跟踪,当然,它不是什么时候都有用,积分控制并不能消除沿任意轨迹的跟踪误差。

把一二阶系统特性放在最后,算是自动控制原理基础知识:

先来看Linear Error Dynamics,即讨论线性一般微分方程所描述的线性系统的误差动力学:

详解PID控制插图32

上式是一个p阶的微分方程,当c=0c=0就是齐次的,c0c\not=0就是非齐次的。

对于齐次线性误差动力学,就有:

详解PID控制插图33

通过向量x=(x1,,xp)x=(x_1,\dots,x_p)

详解PID控制插图34

就可以把齐次微分方程写为:

详解PID控制插图35

很明显上式就为x˙(t)=Ax(t)\dot x(t)=Ax(t),在介绍罗德里格斯旋转公式的时候详细讨论过这个方程

详解PID控制插图36

如果A是负定的,那么x˙(t)=Ax(t)\dot x(t)=Ax(t)将收敛于x=0,也就意味着A的所有特征值(可能是复数)都有负实分量。列出A的特征方程:

详解PID控制插图37

方程的每个根都有负实分量的必要条件是所有系数a0,,ap1a_0,\dots,a_{p-1}必须是正的,如果方程的每个根都有一个负实分量,就称误差动力学是稳定的,反之,则是不稳定的。其实这个也就是劳斯判据了。

其实又回到了熟悉的自动控制原理环节,对于二阶误差动力学,经典的弹簧阻尼器系统又来了,符号就不做过多赘述:

详解PID控制插图38

根据牛顿第二定律,就有:

详解PID控制插图39

如果,m=0,那么上面的二阶动力学就降阶为一阶动力学:

详解PID控制插图40

从上式中可以看得出,对于一阶动力学,外力产生的是速度,而非加速度,在接下来的讨论中,将考虑齐次情况(0″>f=0b,k>0f = 0,b, k > 0)的一阶和二阶误差响应,以确保误差动力学是稳定的,并且收敛到零(ess=0e_{ss}= 0)。

那么上面情况的 First-Order Error Dynamics就可以写为:

详解PID控制插图41

或者:

θ˙e(t)+1τθe(t)=0\\ \dot{\theta}_{e}(t)+\frac{1}{\tau} \theta_{e}(t)=0

τ=b/k\mathcal{\tau}=b/k称为一阶微分方程的时间常数。微分方程的解就为:

θe(t)=et/τθe(0)\\ {\theta}_{e}(t)=e^{-t/\tau}{\theta}_{e}(0)

时间常数τ\tau是一阶指数衰减到其初始值的大约37%时的时间,误差响应θe(t)\theta_e(t)θe(0)=1\theta_e(0)=1决定,不同时间常数的误差响应图如下图,其中稳态误差为零,无超调,2%沉降时间由下式计算:θe(t)θe(0)=0.02=et/τ\\ \frac{\theta_{e}(t)}{\theta_{e}(0)}=0.02=e^{-t / \tau}

t/τ=ln0.02t=3.91τ\\ -t / \tau=ln0.02 \\ t=3.91\tau

2%的沉降时间约为4τ4\tau,当弹簧常数k增大或阻尼常数b减小时,响应变快。

详解PID控制插图42
不同时间常数的一阶误差响应

如果m0m\not=0,那么二阶误差动力学就为:

详解PID控制插图43

写成二阶形式:

详解PID控制插图44

ωn=k/m\omega_n=\sqrt{k/m}就是熟悉的固有频率,ζ=b/2km\zeta=b/2\sqrt{km}就是阻尼比,那么特征多项式为:

详解PID控制插图45

两个根为:

详解PID控制插图46

很明显当且仅当0″>ζωn>0\zeta\omega_n>00″>ωn2>0\omega_n^2>0时,二阶误差动力学是稳定的。根据二阶微分方程的知识,就有下面三种情况:

(1)过阻尼:1″>ζ>1\zeta>1,s1,s2s_1,s_2为两不等实根,微分方程的解为:

详解PID控制插图47
详解PID控制插图46

时间常数为τ1=1/s1\tau_1=-1/s_1,τ2=1/s2\tau_2=-1/s_2

根据初始条件θe(0)=1\theta_e(0)=1θ˙e(0)=0\dot\theta_e(0)=0就有:

详解PID控制插图48

(2)临界阻尼:ζ=1\zeta=1s1,s2s_1,s_2为两相等实根s1,2=ωns_{1,2}=-\omega_n,微分方程的解为:

详解PID控制插图49

时间常数为τ=1/ωn\tau=1/\omega_n

根据初始条件θe(0)=1\theta_e(0)=1θ˙e(0)=0\dot\theta_e(0)=0就有:

详解PID控制插图50

(3)欠阻尼:ζ=1\zeta=1s1,s2s_1,s_2为共轭复数根,s1,2=ζωn±jωd,ωd=ωn1ζ2s_{1,2}=-\zeta\omega_n\pm j\omega_d,\omega_d=\omega_n\sqrt{1-\zeta^2}ωd\omega_d为阻尼固有频率,微分方程的解为:

详解PID控制插图51

时间常数为τ=1/ζωn\tau=1/\zeta\omega_n

根据初始条件θe(0)=1\theta_e(0)=1θ˙e(0)=0\dot\theta_e(0)=0就有:

详解PID控制插图52

三种情况的误差响应如图:

详解PID控制插图53

同时根的位置与瞬态响应特性也有关系:根在复平面中更左的位置对应较短的沉降时间,根远离实轴对应较大的超调和振荡。这些根位置和瞬态响应特性之间的一般关系也适用于有两个以上根的高阶系统。

详解PID控制插图54

如果二阶误差动力学是稳定的,则无论误差动力学是过阻尼、欠阻尼还是临界阻尼,稳态误差esse_{ss}都为零。2%沉降时间约为4τ4\tau,如果误差动力学是过阻尼的,则与较小的根s1相对应。

对于过阻尼和临界阻尼误差动力学,超调量为零,而对于欠阻尼误差动力学,超调量可通过找到误差响应θ˙e=0\dot\theta_e=0满足之后的时间,即超调的峰值出现在:

详解PID控制插图55

代入欠阻尼误差响应,得到:

详解PID控制插图56

根据超调的定义,那么超调就为eπζ/1ζ2×100%-e^{-\pi\zeta/ \sqrt{1-\zeta^2}}\times100\%,阻尼比为0.1超调为73%,0.5时超调为16%,0.8时超调为1.5%。

参考文献:[1] Lynch K M , Park F C . Modern Robotics: Mechanics, Planning, and Control. 2017.

发表回复

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