BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
返回首页室内导航系统 03:时间同步、外参与 TF,决定融合系统的精度上限

室内导航系统 03:时间同步、外参与 TF,决定融合系统的精度上限

·4 分钟阅读·

一套融合系统可以使用最先进的 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、网络、驱动缓冲和图像编码都会引入不稳定延迟。

优先级通常是:

  1. 传感器硬件时间戳;
  2. 同一设备内部的共享时钟;
  3. PTP/IEEE 1588 硬件同步;
  4. PPS/触发线;
  5. NTP 或软件时间对齐;
  6. 以接收时间代替采样时间。

最后一种只能用于低速、低精度系统。

时钟域

记录每个传感器使用哪种时钟:设备启动时间、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 → 内外参 → 原始数据质量
→ 里程计连续性 → 地图匹配 → 规划与控制

不要一上来调优化器权重。错误的时间和坐标输入,无法靠更复杂的因子图变正确。

延伸阅读