LeGO-LOAM

LeGO-LOAM的参数在utility.h
由于20.04自带的是OpenCV4,所以要对LeGO-LOAM代码做一点改动:

  1. 找到utility.h中的:#include,修改为#include #include
  2. PCL库需要C++14,在CMakeLists.txt文件中设置set(CMAKE_CXX_FLAGS "-std=c++14")
  3. 将代码transformFusion.cpp中所有frame_id前面的/删掉

之后即可成功编译。

官方数据集

  1. 播放bag
    rosbag play *.bag --clock --topics /velodyne_points /imu/data
    
  2. 运行lego-loam程序
    roslaunch lego_loam run.launch
    

注意播放bag时要加--clock参数输出/clock时间,然后lego-loam的launch文件需要将/use_sim_time参数设置为true。如果是实时在线跑的话,/use_sim_time参数设置为false
如果使用的是ubuntu 20.04,该版本的rviz不支持frame_id前加/,因此需要把lego-loam程序中的frame_id前面的/ 去掉,激光雷达数据也是。

从点云话题生成pcd文件

rosrun pcl_ros pointcloud_to_pcd /input:=/laser_cloud_surround

pointcloud_to_pcd订阅的话题为/input,使用重映射机制映射到你想接收的话题名
最后一个pcd文件即为最终地图

将 bag转化为pcd文件

录制bag,记录的Topic为/laser_cloud_surround

rosbag record /laser_cloud_surround -o demo_map.bag

将demo.bag转换为pcd文件

rosrun pcl_ros bag_to_pcd <*.bag> <topic> <output_directory>

最后一个pcd文件即为最终地图

保存为ply格式文件

pcl_pcd2ply *.pcd output.ply

output.ply就是指定的输出文件。
注意无法使用bag转化的pcd格式来转换,因为使用bag转化的pcd转换出来的ply格式无法打开
最好使用直接由话题得到的pcd文件。

查看pcd文件

之后使用pcl_viewer来查看我们保存的pcd文件
如果系统中没有pcl_viewer,则需要安装pcl-tools

# 安装
sudo apt install pcl-tools
# 显示pcd文件
pcl_viewer *.pcd

robosense运行lego-loam

将rslidar点云数据转换为Velodyne点云格式

Lego-LOAM使用的激光雷达是Velodyne,其点云格式为XYZIR。而robosense激光雷达的点云格式为XYZIRT。需要使用rs_to_velodyne转换点云格式。

  • 下载源码
    git clone https://github.com/HViktorTsoi/rs_to_velodyne.git 
    
  • 编译
  • 运行launch文件
  <launch>
     <node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne"  args="XYZIRT XYZIR"   output="screen"/>
  </launch> 

rslidar_sdk

下载源码: https://github.com/RoboSense-LiDAR/rslidar_sdk

配置参数
/rslidar_sdk/CMakeLists.txt

set(COMPILE_METHOD ORIGINAL) 改为 set(COMPILE_METHOD CATKIN)
set(POINT_TYPE XYZI) 改为 set(POINT_TYPE XYZIRT) 

/rslidar_sdk/package_ros1.xml重命名为package.xml
/rslidar_sdk/config/config.yaml参数修改

lidar:
	- driver:
		//此处修改激光雷达型号
		lidar_type: RSHELIOS    #LiDAR type - RS16, RS32, RSBP, RS128, RS128_40, RS80, RSM1, RSHELIOS
		frame_id: /rslidar           
		msop_port: 6699             
		difop_port: 7788  
		// 下面还可根据需要修改rostopic名称

你可能感兴趣的:(SLAM,算法,机器人,人工智能,c++)