
室内导航系统 03:时间同步、外参与 TF,决定融合系统的精度上限
一套融合系统可以使用最先进的 VIO、LIO 和图优化算法,仍然在转弯时点云分层、走廊里漂移、回环后控制震荡。很多时候,问题不在算法,而在传感器没有描述同一个时刻、同一个坐标系里的世界。
时间同步与标定不是安装前做一次的准备工作,而是导航系统的一部分。
先估算时间误差会造成什么
机器人以线速度 v 运动,时间偏差为 Δt,仅平移误差近似为:
Δp ≈ v × Δt
1 m/s 的机器人若时间错 50 ms,点云会错开约 5 cm。转动更敏感:
Δθ ≈ ω × Δt
当机器人以 90°/s 转弯,50 ms 会带来约 4.5° 的方向错位。距离机器人 5 米的墙面,横向误差可接近 40 cm。
这就是为什么静止时地图正常,一运动就出现双墙。
时间链路要逐层检查
采样时刻
时间戳应该代表光子、激光或 IMU 样本真正采集的时刻,而不是 ROS 节点收到消息的时刻。USB、网络、驱动缓冲和图像编码都会引入不稳定延迟。
优先级通常是:
- 传感器硬件时间戳;
- 同一设备内部的共享时钟;
- PTP/IEEE 1588 硬件同步;
- PPS/触发线;
- NTP 或软件时间对齐;
- 以接收时间代替采样时间。
最后一种只能用于低速、低精度系统。
时钟域
记录每个传感器使用哪种时钟:设备启动时间、Unix 时间、ROS 时间、仿真时间还是主机单调时钟。不要在驱动里悄悄把设备时间换算成系统时间却不暴露偏置。
传输与处理
监控:
- 采样频率;
- 消息到达间隔;
- 时间戳倒退;
- 端到端数据年龄;
- 队列积压;
- 丢帧与批量突发。
平均延迟小但抖动大,同样会破坏融合。
标定至少包含五类参数
1. 相机内参
焦距、主点、畸变和相机模型。要在实际使用分辨率、对焦和曝光配置下标定。更改裁剪、缩放或硬件 ISP 后,旧内参可能失效。
2. 相机之间的外参
双目基线的旋转和平移误差会直接变成深度误差。标定后应检查重投影误差,更要在不同距离、画面边缘和温度下检查深度一致性。
3. LiDAR—IMU 外参与时间偏置
LIO 对旋转外参和时间偏置非常敏感。标定数据必须包含足够的多轴旋转和位移,只有平面直行会导致参数不可观。
4. 传感器—机体外参
所有传感器最终要落到 base_link。安装支架有公差、柔性和温漂;设备维修或碰撞后必须重新验证。
5. 底盘运动参数
轮径、轮距、编码器比例、转向几何和控制延迟也属于标定。差速底盘可以通过长直线和原地转圈估计尺度;阿克曼与全向底盘需要更完整的运动模型。
TF 树要有明确所有权
推荐保持:
map ──定位/SLAM──> odom ──里程计融合──> base_link
├──> lidar
├──> camera
└──> imu
规则很简单:
- 每一条 TF 只能有一个权威发布者;
- 静态外参不应被多个 launch 文件重复发布;
odom → base_link连续,不受回环跳变影响;map → odom可以随全局修正变化;- 所有消息的
frame_id必须与真实数据坐标一致。
常见错误是 LIO、EKF 和底盘驱动同时发布 odom → base_link,系统看似都有数据,实际在竞争控制坐标。
标定流程要能复现
采集
为每类标定定义固定动作、场地和数据时长。保留原始 bag,不要只保存最终 YAML。
求解
记录工具版本、初始值、优化配置和输出协方差。不要只看一个“成功”提示。
独立验证
使用未参与求解的数据验证:
- 点云平面是否重合;
- 图像重投影是否一致;
- 直线和转圈后的闭合误差;
- 快速转弯时是否出现重影;
- 多次冷启动结果是否稳定。
发布
标定文件带设备序列号、支架版本、日期和适用软件版本。部署时校验机器人与标定包是否匹配。
在线健康监测
标定会漂。螺丝松动、支架变形、相机温度、轮胎磨损和维修都会改变参数。在线可监控:
- LiDAR 与视觉平面残差;
- IMU 重力方向与机体姿态差;
- 轮速与 VIO/LIO 速度尺度;
- 重投影/点到面残差的长期趋势;
- 静止状态下速度与角速度偏置;
- TF 数据年龄和跳变。
超过阈值时先降速,再决定重定位、停机或请求维护。
一条调试铁律
当系统出现漂移,按以下顺序排查:
时间戳 → frame_id/TF → 内外参 → 原始数据质量
→ 里程计连续性 → 地图匹配 → 规划与控制
不要一上来调优化器权重。错误的时间和坐标输入,无法靠更复杂的因子图变正确。