注意:

  • 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识

ubuntu版本:20.04
webots版本:2021a
ros版本:noetic

1. A_LOAM建图算法介绍

A_LOAM是由港科大沈老师组的Shaozu Cao根据LOAM源码改写的A-LOAM版本。相比于原始的LOAM开源代码,A-LOAM中坐标系定义较为清晰,利用Ceres开源优化库,简化了后端优化求解过程,较容易理解。与LOAM类似,A-LOAM可分为三部分:scanRegistration, odometry, mapping。其中,scanRegistration部分主要负责实时从原始激光雷达点云中提取线和面特征点,odometry部分负责利用scanRegistration部分提取出的特征点,关联特征并计算估计帧间的相对运,mapping部分负责以1Hz的频率更新维护特征地图,同时利用帧到地图的配准,提高里程计轨迹精度。

LOAM论文地址

LOAM论文解析地址

2. 安装 A_LOAM

Github开源地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM

$ cd ~/catkin_ws/src
$ git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git

下载完源码后直接编译是不能通过的,需要进行一些修改才行。

可以看到在A_LOAM/src文件夹下有四个.cpp文件,分别为kittiHelper.cpp;laserMapping.cpp;laserOdometry.cpp;scanRegistration.cpp

2.1 修改方法:

  • 将四个.cpp文件中的/camera_init修改为camera_init
  • scanRegistration.cpp中的 #include <opencv/cv.h> 修改为#include <opencv2/imgproc.hpp>
  • 修改kittiHelper.cppCV_LOAD_IMAGE_GRAYSCALEcv::IMREAD_GRAYSCALE

2.2 修改完成后进入工作空间根目录,过程如下所示:

$ cd ~/catkin_ws/
$ catkin_make

编译如果出现以下错误:

error: #error PCL requires C++14 or above

解决办法
在CMakeLists.txt中添加,如下指令即可成功编译

set( CMAKE_CXX_STANDARD 14)

2.测试

下载nsh_indoor_outdoor.bag 测试数据到你的YOUR_DATASET_FOLDER

$ roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
$ rosbag play YOUR_DATASET_FOLDER/nsh_indoor_outdoor.bag

效果如下所示:

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~

为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。

加群链接

✌Bye