4、闭环控制基础:反馈控制的概念、PID控制器简介、编码器反馈在纠偏中的作用

做差速底盘直线运动纠偏,说白了就是解决一个问题:怎么让机器人走直线

你可能会想,左右轮子给同样的速度不就行了?嗯,理论上是这样。但我第一次做底盘调试时,发现事情远没那么简单。电机参数差异、地面摩擦不均、电池电压波动……随便哪个因素都能让机器人跑偏。这时候,你就需要闭环控制了。

4.1 反馈控制:让系统自己“看”着自己走

反馈控制的核心思想,其实特别朴素:先看结果,再调动作

举个例子。你用手去拿桌上的水杯,眼睛会一直盯着手和杯子的距离。如果手偏左了,你就往右调一点。这个过程就是反馈控制——眼睛是传感器,大脑是控制器,手是执行器。

在差速底盘里,反馈控制长这样:

  • 设定值:你希望机器人走的速度(比如 0.5 m/s)
  • 实际值:编码器测出来的真实速度
  • 误差:设定值 - 实际值
  • 控制量:根据误差调整给电机的 PWM 值

说白了,就是不断问自己一个问题:“现在跑偏了多少?该补多少力?”

关键点:反馈控制不关心“为什么会偏”,它只关心“偏了多少,然后拉回来”。这在实际工程中非常实用——你不需要精确建模,就能让系统稳定工作。

4.2 PID控制器:最经典的纠偏算法

PID 控制器,我估计你听过无数次了。它由三部分组成:

  • P(比例):误差越大,纠正力度越大。简单粗暴,但容易过头(超调)。
  • I(积分):把过去的误差累积起来。专门对付那些“一直偏一点”的系统误差。
  • D(微分):预测误差的变化趋势。误差增长快时提前刹车,减少震荡。

用公式表达就是:

输出 = Kp * 误差 + Ki * ∫误差 dt + Kd * d(误差)/dt

我个人习惯把 PID 调参比作“开车”:

  • P 是方向盘灵敏度:偏了就打方向,但打太猛会左右摇摆。
  • I 是方向盘回正力:如果车一直偏右,I 会慢慢把方向拉回中间。
  • D 是提前预判:看到前面要转弯了,提前减速,避免急刹。

我的经验:调 PID 时,先调 P 让系统能响应,再加 D 抑制震荡,最后加 I 消除静差。千万别一上来三个参数一起调——你会疯的。

4.3 编码器反馈:纠偏的“眼睛”

编码器是差速底盘里最重要的传感器。它装在电机轴上,每转一圈输出固定数量的脉冲。通过计算单位时间内的脉冲数,就能知道轮子转了多少、转得多快。

在纠偏中,编码器反馈的作用有两个:

  1. 测速:实时获取左右轮的实际转速,和设定值比较,算出误差。
  2. 测距:通过累计脉冲数,推算机器人走了多远、偏了多少角度。

举个例子。假设左右轮设定速度都是 1000 脉冲/秒。编码器反馈回来,左轮实际 980,右轮实际 1020。误差就出来了:左轮慢了 20,右轮快了 20。PID 控制器会根据这个误差,给左轮加 PWM,给右轮减 PWM,让两边速度重新匹配。

注意:编码器反馈有延迟。脉冲计数需要时间,计算速度也需要时间。如果控制周期太短,反馈数据还没更新,控制器就会“瞎指挥”。我建议控制周期设在 10-50ms 之间,具体看你的编码器分辨率和主频。

4.4 知识体系:一张图看懂闭环纠偏

下面这张 SVG 图,把整个闭环控制逻辑串起来了。你可以把它当作本章的“思维导图”。

差速底盘直线运动闭环纠偏系统 设定速度 Σ PID控制器 左右电机 编码器反馈 实际速度 设定值 → 误差计算 → PID调节 → 电机驱动 → 编码器反馈 → 闭环修正

这张图展示了纠偏的完整链路:设定速度进入系统,与编码器反馈的实际速度比较,得到误差。误差送入PID控制器,计算出修正量,驱动左右电机调整转速。编码器再把新的实际速度反馈回来,形成闭环。

你想想看,这个循环每 10-50ms 执行一次。机器人每秒钟自我修正几十次,直线运动自然就稳了。

4.5 避坑指南:我踩过的三个坑

做闭环控制这些年,我踩过不少坑。挑三个最典型的分享给你:

  • 坑一:积分饱和。我曾经在调试时,发现机器人启动后猛冲一下才恢复正常。后来查出来是 I 项在启动时累积了巨大误差,导致输出饱和。解决办法是加积分限幅,或者用抗积分饱和算法。
  • 坑二:编码器噪声。有一次机器人低速时抖动得厉害,我调了半天 PID 都没用。最后发现是编码器信号有毛刺,导致速度计算跳变。加个软件滤波就好了。
  • 坑三:控制周期不稳定。如果你用 delay() 做定时,控制周期会受其他任务影响。我建议用硬件定时器中断,确保控制周期精确。

总结一下:闭环控制的核心是“测量-比较-调整”的循环。PID 是其中最经典的算法,编码器是获取反馈的关键。把这三点吃透,差速底盘的直线纠偏就成功了一大半。


专注资料整理