问题
因为目前很多SLAM框架支持的激光雷达都是Velodyne型号的,对于速腾RS雷达的使用者来说,需要对数据进行转换,其实现在速腾的雷达已经支持输出XYZI
和XYZIRT
两种数据格式的点云了,只需要在CMakeLists.txt文件里面切换一下再编译即可。
但是,在笔者运行LIO-SAM这个框架的时候,直接使用速腾输出的XYZIRT
格式的点云仍然会保存,究其原因是因为速腾的RS16雷达输出中包含了部分Nan的点,需要做剔除。
为了方便起见,可以直接使用github上一位大哥写的一个转换包,直接把robosense XYZIRT
转成velodyne XYZIRT
即可。这里贴上他的链接:
https://github.com/HViktorTsoi/rs_to_velodyne.git
还有一个问题就是,这个rs_to_velodyne
运行的时候报出一个警告,如下:
Failed to find match for field ‘intensity’.
分析
出现这个警告的原因,大概率是因为rs_to_velodyne
功能包中定义的点云数据结构中的intensity
出现了不一致的原因
首先,这个包希望接收的rslidar
点云的数据格式中的intensity
是uint8_t
类型的,但是它转换之后的velodyne
点云的数据格式中的intensity
是通过一个宏定义来定义的
他这个地方是通过一个宏定义进行定义的,我们再进入这个宏定义看看是怎么定义的
看到这里,答案已经很明确了,就是因为这里使用的intensity
是float
类型的,导致了两种数据格式不匹配,所以才出现了我们一开始报的那个``warming`
解决
把rslidar
的点云格式中的uint8_t intensity;
使用PCL_ADD_INTENSITY;
替换即可
修改完成之后,重新编译一次,我们运行再看看是否还有那个警告
可以看到,已经没有那个警告了,输出的话题也正常
打开rviz查看点云也是正常的,说明我们的修改没有导致其他的一些问题,至此问题解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)