做室内移动机器人,纯轮式里程计跑个几十米就飘了。分享编码器+IMU 融合的调参经验:

1. 先标定轮径和轮距。别信标称值,实测:让机器人直行 10 米算轮径,原地转 10 圈算轮距,标定完误差能降一个数量级。
2. 编码器分辨率和采样频率要匹配。低速时脉冲数太少,差分算出来的速度抖得厉害,适当提高采样或做滑动平均。
3. IMU 零偏在线估计。静止时采集几秒算 bias,运行时用 EKF 在线估计。消费级 IMU 的零偏温漂很明显,冷启动和热机状态是两台传感器。
4. 融合权重看场景。平坦地面相信编码器多一点,打滑多的地面(地毯、光滑瓷砖)把 IMU 角速度的权重调高。
5. 打滑检测不能少。编码器速度和 IMU 推算速度差值超过阈值就标记打滑,这段里程计直接降权,不然一次打滑毁掉整段建图。

调完之后我们的机器人在 100 米闭环里漂移能控制在 1 米以内。

你们在融合里用 EKF 还是互补滤波?实际效果差多少?