轮速里程计标定:轴距、轮径误差如何污染整个导航栈
推导差速模型中轮径与轴距误差对曲率和尺度漂移的影响,给出 UMBmark 标定流程与激光里程计对齐验收方法。

1. 轮速是导航栈的尺子
轮速计便宜、高频、不受光照影响,却常被随便填个轮径。我追过三天「激光 SLAM 回环过多」——最后发现左右轮径差 3 mm,机器人走直线其实在微弯,激光里程计被当外点,后端一直在拧。轮速标定不性感,但是整个导航栈的尺子。Nav2 画龙时,先量直线 5 m 横向偏差、原地 180° 角度偏差——比直接改 AMCL 粒子数有效。
2. 差速模型里的两个关键尺度
离散形式:
,。 为轮距, 为轮半径。误差来源:左右轮径不等(磨损、充气、温度);有效轴距与 CAD 不符(万向轮摩擦、地面变形);编码器分辨率/减速比填错;打滑(模型外,但会被标定「吸收」)。
3. 误差如何表现
| 误差类型 | 直线行走 | 原地旋转 / 圆弧 |
|---|---|---|
| 左右轮径同比例偏差 | 距离尺度错 | 角度也可能偏 |
| 左右轮径差 | 走偏(隐含曲率) | 角度误差显著 |
| 轴距 B 偏大 | 影响较小 | 同样轮速差下 偏小 |
| 轴距 B 偏小 | 影响较小 | 偏大,转多了 |
轮速被当硬约束时,激光/视觉只会被当外点——回环增多、融合 filter 中 IMU 被错误轮速带偏、Nav2 窄道画龙。横向偏差随距离线性增 → 轮径差;角度单独偏 → 轴距或单轮尺度。
4. 经典标定流程
直线实验(估平均轮径尺度):在已知长度 的直线上走行:
等比更新 。重复 3 次取中位数,速度要慢——打滑时 odom 不可信。
转圈实验(估轴距/轮径差):原地或固定半径转过 :
UMBmark 用 4 个 90° 弧组成闭合路径,一次实验同时估 ——比单步实验更 robust。
与激光里程计对齐:慢速走矩形或 8 字(30–60 s),对齐 odom_wheel 与 odom_lidar 相对运动,估 和 yaw bias。激光本身有 drift 时不能当绝对真值——用短轨迹、多次平均,排除退化段。
5. 写入 ROS 2 与现场维护
diff_drive_controller / 驱动参数与 URDF 轮径一致。odom→base_link 协方差诚实:打滑场景加大 process noise。融合中不要让错误轮速以过小协方差绑架 IMU/激光——协方差虚标和参数错误一样致命。
环氧 vs 水泥 vs 地毯,有效轮径差可达 1–2%。标定应绑定地面类型;换场地重验直线 10 m。充气不足时左右半径差也会变——运维 SOP 写「每周目视轮胎 + 月度抽测直线」不夸张。
6. 与 SLAM/导航的分工
轮速:高频、短时平滑、填充视觉/激光失效空隙。激光/视觉:纠 drift、给全局。回环异常多:先查轮速尺度,再查回环阈值。Nav2 局部规划读 odom——轮速错 = 控制器在错坐标系里工作。
7. 融合 filter 里的轮速协方差
EKF/ESKF 融合轮速 + IMU + 激光时,轮速 measurement noise 过小会绑架 IMU bias 估计——表现像「IMU 和轮速打架」。打滑场景应动态增大轮速 process noise,或检测 超阈值时降权。协方差虚标和参数错误一样致命。
robot_localization 的 odom0_config 决定哪些分量融合——只融合 而丢弃侧向,是差速模型的正确契约;把假的 也融合进去会引入虚假约束。
8. 验收
- 直线 10 m:距离误差 < 1–2%(视地面)
- 原地 360°:角度误差可重复(3 次 std < 1°)
- 矩形闭环:开环终点偏差 < 5 cm / 2°
- 与激光 odom 短轨迹对齐残差 < 阈值
- 标定前后 SLAM 回环次数 / ATE 变化
- 打滑检测:轮速预测 vs IMU 加速度一致性
- 融合中轮速 innovation 序列无系统性偏置
轮速标定报告绑定机器人 SN 与地面类型。尺子歪了,SLAM、融合、Nav2 都在错的几何上「精修」——越精修越偏。
相关
也可以看看
johan's blog