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

> 原文链接：https://robotics.hellobike.com/pitfalls/2025-12-31-fast-lio-431
> 频道：pitfalls | 更新日期：2025-12-31 | 标签：auto, github-issue, fast_lio
> 核心摘要：点云curvature字段存float32时间戳，大数值纳秒级时间戳因精度丢失导致运动补偿失败，需改用微秒相对时间。

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

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Question about timing](https://github.com/hku-mars/FAST_LIO/issues/431)（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 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub hku-mars/FAST_LIO #431：Question about timing](https://github.com/hku-mars/FAST_LIO/issues/431)