05-控制系统-PID与经典控制
作者:姚博文 · 2026-09-15
PID与经典控制
定位: 智能小车运动控制的核心——PID 原理、位置式/增量式两种实现、三大整定方法、积分抗饱和与微分先行, 以及电机速度环与转向环的完整闭环调试流程。 | 适用: 智能小车/移动机器人开发
**给非专业读者的一段话**: PID 是一个"自动巡航 + 自我修正"的控制器。你给它一个目标(比如速度 0.5 m/s), 它每个控制周期都读一次传感器(编码器/IMU), 比较"目标 − 实测 = 误差", 然后: 偏差越大越用力推(**P** 比例), 长时间达不到就持续累积发力直到彻底追平(**I** 积分), 眼看要冲过头就提前踩刹车(**D** 微分)。工业界常说"90% 的控制回路仍在用 PID"; 对自研小车, "跑得稳、跑得直、跑得准"全靠把这三个参数调对。
· * *
1\. 概述
1.1 解决什么问题
智能小车的控制层面对的核心矛盾是:**上层给的是抽象速度指令, 电机只认 PWM/电流**。电机本身有摩擦、死区、电感滞后、负载变化(电池压降、坡道、轮子打滑)等非线性, 直接"给个 PWM 就完事"的开环方式, 实际速度无法保证。
PID 的分工: 以固定周期(典型 10 ms / 100 Hz, 与路线图"MCU 100Hz 控制环"一致)把**速度误差**映射为**PWM 占空比**,
$$
u[k] = f\big(e[k],\ e[k-1], \dots\big), \qquad e[k] = v_{ref}[k] - v_{meas}[k]
$$
让实际速度尽可能快、尽可能稳地跟踪设定值, 并能抵抗扰动。
在自主导航链路(全链路图见 `00-路线图/学习路线图.md`)中, 本文处于 control 环节:
· \*\*内环(速度环)\*\*是本文重点, 通常写在 MCU 的 C 代码里——最快的环, 一切运动的基础。
· \*\*外环(转向/航向环)\*\*把"该往哪走"变成"该转多快", 通常是 PC/ROS2 侧一个简单的 PID 或 P 控制器。
· 本目录后续的 LQR / MPC 是更高级的多变量/带约束方法, 但即使做复杂系统, 常规做法仍是"PID 打底、高级算法锦上添花"。
1.2 验收指标(对应路线图里程碑 M1 / B4)
| 指标 | 目标值(典型) | 测量方法 |
| --- | --- | --- |
| 速度跟踪稳态误差(阶跃 0.3 m/s) | < 10% | 编码器速度与设定值, 日志 CSV |
| 速度阶跃超调 | ≤ 20% | 同上 |
| 直线行驶(0.5 m/s × 10 m)侧偏 | < 0.15 m(开环); 外环校正后更优 | 激光/相机/卷尺 |
| 原地转 90° 航向误差 | < 5° | IMU 航向对比 |
| 扰动(手推)后恢复时间 | < 0.5 s | 日志 CSV |
💡 **先调好速度环(内环), 再调转向环(外环)**。内环不稳, 上面套任何算法都白搭——这是新手最常见的错误顺序。
1.3 本文范围
| 覆盖 | 不覆盖(见对应文档) |
| --- | --- |
| PID 原理、位置式/增量式 | 状态空间与 LQR → 05-控制系统/状态空间与LQR.md |
| 整定方法(临界比例度/ZN/λ 法) | MPC → 05-控制系统/模型预测控制MPC.md |
| 积分抗饱和(anti-windup)、微分先行 | 差速运动学方程 → 05-控制系统/移动机器人运动学模型.md |
| 小车速度环/转向环闭环实践 | 编码器解码、IMU 驱动 → 04-传感器与感知/里程计与IMU.md |
· * *
2\. 基本原理
2.1 三个项: P、I、D 各自在干什么
设误