Skip to content

踩坑GitHub hku-mars/FAST_LIO10 个月前

FAST_LIO点云时间戳float32精度丢失致传播失效 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:Question about timing(GitHub hku-mars/FAST_LIO #431)

状态:有绕过办法

问题 ​

FAST_LIO将点云时间存入PointType的curvature字段(float32),与IMU的double时间戳比较进行前后向传播。当激光雷达时钟为自epoch起的纳秒级大数时,打包进float32会产生严重舍入误差,导致点云无法正确传播且无报错提示。

环境 ​

FAST_LIO算法框架,Ouster等输出纳秒级绝对时间戳的激光雷达,ROS环境

解决办法 ​

  1. 确保Lidar消息的ROS Header时间戳严格等于该帧点云中最早点的采集时间。
  2. 将点云curvature字段的时间单位转换为微秒(us),且数值必须是相对于ROS Header时间戳的偏移量,而非绝对时间。
  3. 保证同一帧消息内的点云按时间升序排列,最后一个点具有最大时间戳。
  4. 避免直接将纳秒级绝对时间戳赋值给float32类型的curvature字段,防止精度溢出导致运动补偿静默失效。

讨论原作者:@nathanieltagg 等,版权归原作者所有。

来源

本页事实对应的公开页面,以原文为准。

  1. GitHub hku-mars/FAST_LIO #431:Question about timing访问 2026-10-27