liosam 速腾激光雷达数据适配,timestamp位数不够

发布时间:2024年01月11日

首先是时间,点云的时间是绝对时间,所以不能用加法

修改过后,scan start和end差距过大,六十多秒。

这里的timestamp要double转float,这里有个古老知识要复习,float是32位,有23位是数字,为什么只有8位一样?

首先,float 是 32位, 其中有23位用于存放尾数, 带有一个固定隐含位… 所以float的有24个二进制有效位位数.

其次,2^24共有8个十进制位. 所以有些编译器 float的有效数字位是 8位 , 有些有效数字位是 7位.(注意不是小数的位数, 是有效数字位)

而double有15~16位有效数字。

所以,timestamp用float是装不下的,所以需要把lio-sam的数据结构改double,从需求看,整数秒有10位,多出5位比毫秒还低,足够用了。

然后直接改VelodynePointXYZIRT的time数据类型为double就好了

不一定要修改这个,只是因为using PointXYZIRT = VelodynePointXYZIRT;

自己定义一个

最后就是回到问题原点,这里不要再加float转换了,不然白改。

文章来源:https://blog.csdn.net/huqinweI987/article/details/135519097
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。