📚 什么是 PID?
PID 是工业与机器人里最常见的反馈控制结构:根据「目标 − 当前值」的误差 \(e(t)\), 算出控制量 \(u(t)\) 去驱动被控对象(电机、阀门、加热器等)。
三个字母分别对应三项「修正策略」:
- P(比例):现在差多少,就用力多少——离目标远就推得猛。
- I(积分):过去一直差一点点,就慢慢加码——消除长期偏差(静差)。
- D(微分):变化太快就提前刹车——抑制超调、让响应更稳。
🧮 连续形式(本演示的离散实现)
\[ e(t) = r(t) - y(t), \qquad u(t) = K_p\, e + K_i \int_0^t e\,\mathrm{d}\tau + K_d \frac{\mathrm{d}e}{\mathrm{d}t} \]
\(r\):目标(setpoint),\(y\):实际位置;\(u\):施加在小车上的力(限幅)。
🚿 生活类比:调淋浴水温
- P:水太冷就猛加热水——温差越大动作越大。
- I:总觉得略凉,就一点点多开热水——把「老是差一度」攒起来修掉。
- D:水温升得很快时提前关小一点——防止烫到(超调)。
下面动画里:黄线是目标位置,蓝车是当前位置,粉色箭头是控制器输出的力。可直接拖动黄色目标或在轨道上点击/拖动改目标,也可拖动小车模拟外力扰动。
P — 看现在
只开 P:能靠近目标,但常停不准或来回晃(本例有摩擦时更明显)。
I — 看过去
加上 I:慢慢消掉「总差一点」的静差,但 I 太大易迟钝、振荡。
D — 看趋势
加上 D:接近目标时提前减速,减少超调,但对噪声敏感(实际常滤波)。
🎮 交互演示:小车位置控制
被控对象:质量 \(m=1\),阻尼 \(b=2\) 的小车(\( \ddot{y} = u - 2\dot{y} \))。拖动滑块观察 P / I / D 对曲线的影响。
0
当前位置 y
0
误差 e
0
控制力 u
0
P 项
0
I 项
0
D 项
目标位置(可拖动)
小车(可拖动)
控制力(箭头长度)
💡 拖动 黄色目标 或在轨道区域点击/拖动设目标;拖动 小车 可瞬间改变位置并观察 PID 如何拉回。
🔧 调参直觉(入门)
| 现象 | 可能原因 | 可尝试 |
|---|---|---|
| 响应太慢 | Kp 太小 | 略增 Kp |
| 大幅超调、振荡 | Kp 或 Ki 过大,Kd 不足 | 增 Kd 或减 Kp/Ki |
| 总差一点点到不了 | 只有 P,无积分 | 加一点 Ki |
| 对噪声敏感、抖动 | Kd 过大 | 减 Kd 或对微分项滤波 |
🌍 常见应用
- 巡航定速、无人机姿态与高度、机器人关节位置
- 化工反应釜温度/液位、电机转速、3D 打印机热床恒温
- 现代实现多为数字 PID(单片机/PLC),并带抗积分饱和、输出限幅、微分滤波
📖 扩展阅读
- Wikipedia: PID controller
- NI:PID 理论说明(中英概念对照)
- 经典教材:Åström & Hägglund, PID Controllers: Theory, Design, and Tuning
- 相关演示:本站 伽辽金法解微分方程(连续系统数值解的另一视角)