LeGO-LOAM的参数在utility.h
由于20.04自带的是OpenCV4,所以要对LeGO-LOAM代码做一点改动:
- 找到
utility.h
中的:#include<opencv/cv.h>
,修改为#include <opencv2/imgproc.hpp>
或#include <opencv2/opencv.hpp>
。 - PCL库需要C++14,在CMakeLists.txt文件中设置
set(CMAKE_CXX_FLAGS "-std=c++14")
- 将代码
transformFusion.cpp
中所有frame_id前面的/
删掉
之后即可成功编译。
官方数据集
- 播放bag
rosbag play *.bag --clock --topics /velodyne_points /imu/data
- 运行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名称