机械臂伸手去拿杯子时,如果太快接近目标位置就会冲过头,如果太小心又会迟迟犹豫。人会一边用眼睛看着距离一边自然地放慢速度,但机器必须每时每刻计算该用多大的力。承担这一计算的最古老、最广泛使用的方法,就是PID控制。
简单来说,PID控制是指‘看目标与当前状态之间的差,并同时权衡这个差的大小、累积的量和变化的速度来决定力的方法’。它的正式名称是比例-积分-微分控制(Proportional-Integral-Derivative Control),取三个英文单词的首字母称为PID。
本文将依次探讨PID控制是如何产生的、三个要素各自发挥什么作用,以及它在机器人和日常机器中如何应用、有哪些局限。
PID控制的原理与应用
从船舶舵手身上学来的控制


PID控制的理论始于如何让船笔直航行的思考。1922年,俄裔美国工程师尼古拉斯·米诺尔斯基在论文《自动操舵物体的方向稳定性》中,用数学分析了同时使用三种要素的控制方式。
米诺尔斯基留心观察了熟练舵手驾船的样子。舵手不只看船偏离航线的程度,还同时观察船转向的快慢来转舵。他把这种感觉转化为公式,并在第二年即1923年于美国海军战列舰新墨西哥号上试验了自动操舵装置,取得了良好的结果。
这项研究之所以重要,在于它把依赖人类感觉的操纵变成了任何人都能遵循的规则。同样的原理从此可以应用于一切运动的东西,无论是船还是机器。
此后在1942年,美国的约翰·齐格勒和纳撒尼尔·尼科尔斯发表了可在现场使用的整定规则,PID控制随之迅速普及到工厂中调节温度和压力的装置上。
三个要素的作用

PID控制首先用传感器测量当前状态,求出与目标值之间的差,即误差。然后从三个方面来审视这个误差。
(1)比例(Proportional)
当前误差越大,施加的力就越大。离目标远就用力,离目标近就轻轻地动,这是最基本的反应。不过,仅靠这一项,常常会在目标跟前差一点就停下来。
(2)积分(Integral)
把迄今为止累积的误差加起来,叠加到作用力上。反映累积误差有助于减少剩余误差。但结果会因稳定性、输出限制和增益调整而有所不同。
(3)微分(Derivative)
观察误差减小或增大的速度。适当调整后,有助于减少超过目标的现象,但并不总能防止。
想象一下调节淋浴水温的人就容易理解了。水凉的话就把把手拧得多一些(比例),过了好一阵还是温吞吞的就再拧一点(积分),感觉到水迅速变热时就提前停手(微分)。
把这三个值分别乘以适当的权重再相加,就是最终输出。简单来说,比例看的是现在,积分看的是过去,微分看的是不远的将来。
机器人与生活中的PID控制

PID控制结构简单、计算量小,至今仍在工业现场的控制装置中占相当大的比例。在机器人学中,它也几乎存在于每一个让身体运动的部位。
- 关节位置控制(Joint Position Control):让工业机械臂的各个关节电机准确转到设定的角度并停住。
- 姿态稳定(Attitude Stabilization):无人机根据倾斜传感器的数值不停地修正螺旋桨转速,即使在风中也能保持水平。
- 平衡控制(Balancing):靠两个轮子站立的机器人会朝身体倾斜的方向滚动轮子,以免摔倒。
- 定速巡航(Cruise Control):汽车的定速巡航装置会调节发动机输出,即使在坡道上也能保持设定的速度。
家里的锅炉使室内温度保持恒定,也是同样的原理。在我们不知不觉间,无数机器正通过PID控制减小着误差。
整定的困难与局限

PID控制的性能取决于三个要素的权重调得好不好。这项工作称为整定(Tuning),如果权重不合适,机器就会在目标附近不停晃动,或者动作过于迟缓。
常见问题
- 超调(Overshoot):比例或积分过强时,会反复越过目标再折返。
- 积分饱和(Integral Windup):尽管电机能输出的力有限,误差却不断累积,就会成为之后大幅冲过头的原因。
- 噪声放大(Noise Amplification):微分对变化很敏感,可能把传感器数值的微小抖动也大幅放大。
此外,PID控制只有在误差出现之后才会反应,因此在负载变化很大或动作复杂的机器人上会暴露出局限。所以在步行机器人这类困难的情况下,常常与预先计算身体运动的其他控制方式一起使用。
PID控制是用当前的差、累积的差和变化的速度这三只眼睛,把机器带到目标的方法。这个100年前从船舶舵手身上学来的简单原理,如今仍在机器人的关节和无人机的旋翼中不停地工作着。
老老实实地测量与目标的差距,并一点一点地修正,这就是精准运动的第一步。