一、概述
因为课程要求需要使用ros完成激光雷达SLAM,我们选择较为简单的A-LOAM激光雷达SLAM算法进行实验。
可以参考这篇博客,里面对A-LOAM的原理有一定的讲解,后面附带一些关于A-LOAM和LOAM算法一些博客,有github的源代码网站、对代码的详细注释以及如何在Ubuntu下进行配置相关系统等。
LOAM论文介绍与A-LOAM代码简介-腾讯云开发者社区-腾讯云
下面将讲述我们的安装过程。
二、安装
安装过程比较简单,github源代码网站如下所示。
https://github.com/HKUST-Aerial-Robotics/A-LOAM/tree/devel
首先创建一个ros工作空间,新建一个终端,在终端中输入如下的命令
mkdir lidar
cd lidar
mkdir src
catkin_make
将github上的源代码拷入到src目录下。可以采取在终端中使用git clone的命令,或者下载源码拷入。
由于我们使用的速腾雷达是16线的,对ros的launch文件进行分析,我们需要运行的是下面这个文件。
由于launch文件只运行了三个可执行文件,在编译ros包的时候,我们为了省事,将src/kittiHelper.cpp文件去除,不在编译这个文件。
剩余文件如图所示。
需要对这四个文件进行一些修改,否则在最后运行激光雷达SLAM时候,启动rviz无法显示点云。需要查找这几个文件中的/camera_init,将其全部更改为camera_init,即去掉前面的/,这样才可以正常显示点云。本处参考博客为ALOAM运行 - 知乎
在scanRegistration.cpp文件中,有些地方需要进行修改。第一处在头文件中,需要将一行代码注释掉。这行代码导入的旧版的opencv文件,这里面不需要这行代码,这行代码有点多余。如果OpenCV版本过新,这里可能会报错,直接注释掉就行。
#include <opencv/cv.h>
将原本main主函数中,将订阅激光雷达所采集点云数据的话题名称进行更改,需要与激光雷达发布的点云数据话题相对应,才可以正确接受到。
ros::Subscriber subLaserCloud = nh.subscribe<sensor_msgs::PointCloud2>("/rslidar_points", 100, laserCloudHandler);
更改完成之后,启动激光雷达进行点云数据发布。
新开终端,在终端中输入如下命令。
catkin_make
source ./devel/setup/bash
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
如图所示,即可正确显示简图。