在用robosense的rslidar(16线)运行lego-loam遇到的问题总结

在将rslidar通过github上开源的工具包转换成velodyne的点云格式后,运行测试lego-loam时遇到了关于kdtree的报错问提:

[pcl::KdTreeFLANN::setInputCloud] Cannot create a KD Tree with an empty input cloud!

然后在lego-loam的github主页上找到了最相关的issue,原因是Lego-loam可以处理VLP-16中的Nan点,但是对其它Lidar sensor的数据格式中的Nan点不能很好地处理

截图如下:

在用robosense的rslidar(16线)运行lego-loam遇到的问题总结_第1张图片

将上述代码添加到lego-loam自带的run.launch文件中即可,如下:


    
    
    
    
    
    
    
    
  
    
    
    
    
      filter_field_name: z
      filter_limit_negative: True
    

   
      filter_field_name: x
      filter_limit_negative: True
    

   
      filter_field_name: y
      filter_limit_negative: True
    
   

    
    

    
    
    

        
    
    
    
    

其实从上面的launch文件可以看到:去除Nan点的程序中已经将rslidar_points作为输入,输出是velodyne_points,因此在最开始提到的将rslidar_points转换成velodyne_points是没有必要的.

接下来记录用robosense的lidar录制到的原始数据包(.bag)跑通lego-loam:

测试时报错:Failed to find match for field 'ring'

因为Velodyne的雷达单独有一个ring通道,而robosense的雷达好像并没有,在代码中可以将这一功能关闭,在include文件夹的utility.h文件中,将

extern const bool useCloudRing = false;

即可.(Notes:改完之后要记得重新catkin_make整个lego-loam项目,最开始我就忘了,导致浪费很多时间~~~~~)

接下来分别执行

source devel/setup.bash
roslaunch lego_loam run.launch

rosbag play LI_calib_songling.bag --clock

即可(Notes:别忘记加--clock参数,否则也无法成功运行),附上最终的测试效果:

在用robosense的rslidar(16线)运行lego-loam遇到的问题总结_第2张图片

 

主要参考:

  1. https://blog.csdn.net/qq_39767850/article/details/109485978
  2. https://blog.csdn.net/heirenlop/article/details/111475684

你可能感兴趣的:(在用robosense的rslidar(16线)运行lego-loam遇到的问题总结)