跳至正文
杂学书库让好奇心有所归处
简体中文

朝着目标减小误差的技术:比例-积分-微分控制

机械臂伸手去拿杯子时,如果太快接近目标位置就会冲过头,如果太小心又会迟迟犹豫。人会一边用眼睛看着距离一边自然地放慢速度,但机器必须每时每刻计算该用多大的力。承担这一计算的最古老、最广泛使用的方法,就是PID控制。

简单来说,PID控制是指‘看目标与当前状态之间的差,并同时权衡这个差的大小、累积的量和变化的速度来决定力的方法’。它的正式名称是比例-积分-微分控制(Proportional-Integral-Derivative Control),取三个英文单词的首字母称为PID。

本文将依次探讨PID控制是如何产生的、三个要素各自发挥什么作用,以及它在机器人和日常机器中如何应用、有哪些局限。


PID控制的原理与应用

从船舶舵手身上学来的控制

PID控制概念图。用目标值r减去测量值y得到误差e,P、I、D控制器将三项相加,生成控制信号u。被控对象的测量值回到误差计算环节。图中说明了比例、积分、微分的含义,以及增益调整、饱和和噪声的局限。
基本的负反馈结构和PID的三项。实际设计中需要根据对象特性调整增益,并处理输出限制和噪声。
20世纪初蒸汽船的驾驶室,有巨大的木制舵轮和黄铜装饰

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年前从船舶舵手身上学来的简单原理,如今仍在机器人的关节和无人机的旋翼中不停地工作着。

老老实实地测量与目标的差距,并一点一点地修正,这就是精准运动的第一步。