096 运动控制中的传感器融合:IMU与编码器一、一个让我熬夜三天的bug去年做AGV底盘的时候,遇到一个诡异现象:小车在光滑地砖上直线行驶,编码器显示走了10米,IMU积分显示走了9.8米,但激光雷达定位显示实际只走了9.5米。更离谱的是,每次跑完一圈回到起点,编码器累计误差能到0.3米,IMU的航向角漂移更是直接让小车“画龙”。拆开底盘检查,轮子没打滑,电机编码器线数够高,IMU是工业级BMI088。问题出在哪?后来发现是编码器脉冲计数在电机启停瞬间有丢步,而IMU的加速度计在低频振动下产生了直流偏置。单独看每个传感器都“正常”,但融合后就是不对。这个案例让我意识到:传感器融合不是简单的“取平均”,而是要在不同工况下动态信任不同的传感器。今天这篇笔记,就聊聊IMU和编码器融合的那些坑和实战解法。二、两个传感器的“性格缺陷”编码器的硬伤编码器本质是相对位置传感器,靠脉冲计数推算位移。它的优点是短时精度高、无漂移,但有两个致命弱点:打滑/丢步:轮子空转或地面摩擦系数突变时,编码器会“多算”或“少算”位移。我见过最夸张的情况——AGV在油污地面急刹,编码器显示走了2米,实际只滑了0.5米。累积误差:每个脉冲的量化误差会随着时间叠加。1000线编码器,每转误差约0.36度,跑100米后角度误差可能超过10度。