不用微积分向高中机器人战队讲授 PID 控制

讲解 PID 控制并不需要微分方程;你只需要三个直观的概念:当前距离目标有多远、偏离目标持续了多久,以及接近目标的速度有多快。
向高中生讲解 PID 控制并不需要用到微积分。PID 控制器本质上就是一个公式,它根据三个直观的问题来决定电机应该施加多大的动力:我们现在偏离目标有多远?我们偏离目标卡了多久?以及我们正在以多快的速度接近目标?
当 FIRST Tech Challenge (FTC) 战队或高中机器人学生在技术文档中接触 PID 控制时,常常会面对积分和微分符号,这会让任何还没有学过高中高等数学的学生望而生畏。在实际应用中,机器人上运行的代码并不会去求解连续微分方程。它只是每隔几毫秒执行一次基础算术运算。一旦学生理解了 P、I 和 D 在物理层面所承担的工作,他们就能稳定地编写、调校并调试控制循环。
核心概念:误差
每个控制循环的存在都是为了尽量减小一个数值:误差。
误差简单来说就是 Target - Current Position(目标值 - 当前位置)。如果机械臂当前位于 20 度而目标是 90 度,误差就是 +70。如果飞轮需要以 2,000 RPM 旋转但实际转速为 2,100 RPM,误差就是 -100。PID 中的每一项都会获取这个误差值,并将其转换为电机功率。
1. 比例项 (P):当下
比例项的作用就像一根简单的橡皮筋。你离目标越远,它拉得就越用力。
如果你在开车时向车道中心线左侧偏离了五米,你会向右大幅打方向盘修正。如果只偏离了两厘米,你只需轻轻微调。在代码的数学实现中,这单纯就是 kP * error。
仅靠比例项时的不足之处:
- 超调与振荡:如果
kP设置过高,机器人朝目标加速过猛,惯性会导致其冲过目标点。随后它又会猛烈反向拉回,再次冲过目标,从而产生剧烈振荡。 - 稳态误差:如果
kP设置过低,随着误差减小,电机输出功率会变得极小,以至于无法克服物理摩擦力或重力。例如,一个提升 500 克机械爪的升降机构可能会直接停在目标下方几厘米处,因为此时电机功率恰好与重力相抵并发生堵转。
2. 微分项 (D):未来(刹车)
微分项关注的是从一个控制周期到下一个控制周期误差变化的速度。它的作用就像减震器或刹车。
想象一下把车停进车库的情景。如果离墙还有十米,你会踩油门。但如果你看到墙面快速逼近,你不会等到保险杠离砖墙只有一厘米时才踩刹车——而是会根据你的接近速度来刹车。
在代码中,derivative = (current_error - previous_error) / time_elapsed。当机器人冲向目标时,误差迅速减小,这使得微分项为负值,从而在冲过目标前降低电机的功率输出。D 项能够抑制振荡,让你能够使用更高的 P 增益而不会导致机器人剧烈抖动。
3. 积分项 (I):过去(记忆)
积分项累加了随时间持续存在的误差。如果机器人稍微偏离目标停滞了数秒,积分累加和就会不断增大,直到为电机提供足够的额外推力来克服摩擦力或重力。
想象一下把手推车推上斜坡。你用力推(P),但重力让你在即将到达坡顶前停了下来。如果你站在那里五秒钟都无法登顶,积分项本质上就是在说:“我们在这里卡太久了;增加输出功率,直到我们越过坡顶。”
潜在隐患:如果管理不当,积分项是非常危险的。如果机械臂发生物理卡死,积分累加值会暴增至无穷大(这种现象称为“积分饱和”)。一旦卡阻解除,电机会剧烈撞向硬限位。在 FTC 和校园机器人项目中,应对积分项设置累加器上限,或者仅在狭窄的误差窗口内启用。
车间实用的 4 步调参法
切勿同时猜测调整这三个数值。让学生在电池满电状态下遵循可复现的调参步骤(电压变化会改变电机的响应特性):
| 步骤 | 操作 | 目标表现 | 异常迹象 |
|---|---|---|---|
| 1. 将所有增益设为 0 | kP = 0, kI = 0, kD = 0 | 电机无动作。 | — |
| 2. 增加 kP | 逐步提高 kP,直到机构能够快速到达目标位置。 | 到达目标位置并在设定点附近有轻微、持续的反弹或振荡。 | 剧烈抖动表示 kP 过高;无法移动表示其过低。 |
| 3. 加入 kD | 逐步增加 kD,直至消除反弹。 | 机构快速精准就位并干脆停住,无振荡。 | 高频震颤或嗡嗡声表示 kD 过高(放大了传感器噪声)。 |
| 4. 加入 kI(仅在需要时) | 如果机构因摩擦力停在距目标 1–2 毫米处,添加极小的 kI。 | 最终的稳态静止误差降为零。 | 缓慢如波浪般的摆动(游荡)表示 kI 过高。 |
学生机器人的常见陷阱
- 传感器噪声:FTC 底盘传动系统上的光电编码器信号通常较为干净,但松动的机械齿隙会干扰微分项。如果齿轮箱存在间隙,D 项将对机械晃动做出反应,而非真实的运动。
- 控制周期不稳定:如果团队的代码在单线程中同时运行后台视觉处理,循环时间可能会不可预测地从 10 毫秒跳升至 80 毫秒,从而破坏标准的 PID 计算。务必保持控制循环独立且轻量。
- 飞轮与机械臂:速度控制(飞轮)与位置控制(机械臂)的特性不同。速度闭环很少需要 D 项,因为系统的转动惯量本身就起到了低通滤波器的作用;速度控制通常依赖基础前馈项(kV)配合适度的 P 和 I。
对于备战区域赛的战队而言,掌握闭环控制是区分动作不稳的机构与每场比赛都能稳定得分的自动阶段程序的关键。如果你的战队正在备战本地巡回赛,并希望在底盘运动学及传感器集成方面获得系统性的技术指导,欢迎探索我们的 FTC 机器人项目,获取实战辅导框架。



