1. 前言
本博客主要记录博主在实车上的部署过程,帮助各位快速完成LeGo-LOAM的实车部署。主要包括:通过RS-16的rslidar-sdk得到点云数据,LeGo-LOAM测试数据集下载与部分代码修改两部分内容。
2. RS-16的驱动配置
2.1 rslidar_sdk下载
mkdir slam_ws && cd slam_ws
mkdir src && cd src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update
2.2 config/config.yaml修改
1)16行 lidar_type: RS16
2)22行 min_distance: 0.9
3)18行 msop_port: 6699
4)19行 difop_port: 7788
2.3
CMakeLists.txt修改
1)8行 set(COMPILE_METHOD CATKIN)
2)13行 set(POINT_TYPE XYZIRT)
2.4 依赖库安装
sudo apt-get install libyaml-cpp-dev libpcap-dev
sudo apt-get install libprotobuf-dev protobuf-compiler
2.5 编译
cd ..
catkin_make
2.6 试运行
source devel/setup.bashroslaunch rslidar_sdk start.launch
3. RS_to_VLP points
由于LOAM算法都是应用的VLP激光雷达,所以先到下面的链接下在点云转换代码
cd slam_ws/src
git clone https://github.com/HViktorTsoi/rs_to_velodyne.git
cd ..
catkin_make
但是由于最新版的rs_sdk将强度信息调整为了float格式,所以需要将上述代码 中第30 37行的uint8_t替换成float
4. LeGo-LOAM部署
4.1 gtsam安装
git clone https://bitbucket.org/gtborg/gtsam.git
cd ~/gtsam
mkdir build
cd build
cmake ..
sudo make install
4.2 下载并编译LeGO-LOAM
cd slam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make
4.3 LeGO-LOAM代码修改与问题解决
1)run.launch中改为
2)utility.h
中的:#include
,修改为#include
3)
CMakeList.txt的修改
set(CMAKE_CXX_FLAGS "-std=c++14")
4)报错:‘Index’ is not a member of ‘Eigen’与更改
参考
从https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/215.
将voxel_grid.h
中报错的Eigen::Index
x修改成int
5)/usr/bin/ld
问题
出现报错
/usr/bin/ld: 找不到 -lBoost::serialization
/usr/bin/ld: 找不到 -lBoost::thread
/usr/bin/ld: 找不到 -lBoost::timer
/usr/bin/ld: 找不到 -lBoost::chrono
在CMakeLists中加入
find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)
6) Failed to transform from frame [/camera] to frame [map]的报错问题解决
将"/camera_init"换成"camera_init",将"/camera"换成"camera" ,将"/map"换成"map"
4 数据集试运行
数据集的百度云地址:https://pan.baidu.com/s/1SkrqfN82il1m6jhkLZT-WA. 密码: oqo8
运行lego-loam(黑屏别慌)
source devel/setup.bash
roslaunch lego_loam run.launch
运行数据集(也可以rosbag play刚才百度云地址中下载的)
source devel/setup.bash
rosbag play *.bag --clock --topic /velodyne_points /imu/data
4 实车部署
先运行rslidar节点
source devel/setup.bash
roslaunch rslidar_sdk start.launch
再运行rs_to_velodyne节点
source devel/setup.bash
rosrun rs_to_velodyne rs_tovelodyne XYZIRT XYZIR (LeGO-LOAM需要的雷达点云是XYZIR格式的,话题还是velodyne_points)
最后运行lego_loam
source devel/setup.bash
roslaunch lego_loam run.launch
可以遥控撒欢跑了~!!!!!!!!
4.参考
用速腾RS16跑LeGO-LOAM_rs16 运行loam_XinkaiZed的博客-CSDN博客
九.激光SLAM框架学习之LeGO-LOAM框架---速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据_legoloam保存pcd_goldqiu的博客-CSDN博客