• RS雷达转Velodyne雷达数据Failed to find match for field ‘intensity‘


    目录:

    问题

    因为目前很多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查看点云也是正常的,说明我们的修改没有导致其他的一些问题,至此问题解决。

  • 相关阅读:
    JDBC学习篇(三)
    指针(5)
    step6:改用单例模式
    C++--多态
    49 二叉树的最近公共祖先
    Nginx + PHP 异常排查,open_basedir 异常处理
    Spark读取Excel文件
    【Qt】Qt中将字符串转换为数字类型的函数总结以及用法示例
    产品宣传制作电子宣传册十分可行!
    JavaScript不会?25分钟带你上手JavaScript ES5-ES6
  • 原文地址:https://blog.csdn.net/weixin_40599145/article/details/127646606