目录:

问题

因为目前很多SLAM框架支持的激光雷达都是Velodyne型号的,对于速腾RS雷达的使用者来说,需要对数据进行转换,其实现在速腾的雷达已经支持输出XYZIXYZIRT两种数据格式的点云了,只需要在CMakeLists.txt文件里面切换一下再编译即可。

image-20221102093945771

但是,在笔者运行LIO-SAM这个框架的时候,直接使用速腾输出的XYZIRT格式的点云仍然会保存,究其原因是因为速腾的RS16雷达输出中包含了部分Nan的点,需要做剔除。

image-20221102094447743

为了方便起见,可以直接使用github上一位大哥写的一个转换包,直接把robosense XYZIRT转成velodyne XYZIRT 即可。这里贴上他的链接:

https://github.com/HViktorTsoi/rs_to_velodyne.git

还有一个问题就是,这个rs_to_velodyne运行的时候报出一个警告,如下:

Failed to find match for field ‘intensity’.

image-20221102093752885

分析

出现这个警告的原因,大概率是因为rs_to_velodyne功能包中定义的点云数据结构中的intensity出现了不一致的原因

首先,这个包希望接收的rslidar点云的数据格式中的intensityuint8_t类型的,但是它转换之后的velodyne点云的数据格式中的intensity是通过一个宏定义来定义的

image-20221225142940168

他这个地方是通过一个宏定义进行定义的,我们再进入这个宏定义看看是怎么定义的

image-20221102095614233

看到这里,答案已经很明确了,就是因为这里使用的intensityfloat类型的,导致了两种数据格式不匹配,所以才出现了我们一开始报的那个``warming`

解决

rslidar的点云格式中的uint8_t intensity;使用PCL_ADD_INTENSITY;替换即可

image-20221225143622036

修改完成之后,重新编译一次,我们运行再看看是否还有那个警告

image-20221102100125678

可以看到,已经没有那个警告了,输出的话题也正常

image-20221225143907815

打开rviz查看点云也是正常的,说明我们的修改没有导致其他的一些问题,至此问题解决。

Logo

鸿蒙生态一站式服务平台。

更多推荐