首先是时间,RS的点云的时间是绝对时间,所以不能用加法。
自定义一个sensor类型KJW,随便什么名,我后来改为RS32了,因为是robosense32线
修改过后,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转换了,不然白改。
别忘了yaml也一起改了,N_SCAN:32,Horizon_SCAN:1800文章来源:https://www.toymoban.com/news/detail-781013.html
文章来源地址https://www.toymoban.com/news/detail-781013.html
到了这里,关于liosam 速腾激光雷达数据适配,timestamp位数不够的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!