前言

上文介绍使用自己的多线激光雷达来可视化、采数据,接下来就是介绍怎么使用港科大改进的A-Loam进行建图。
注意注意!第六和第七章使用的都是Ubuntu18.04系统!!!!!!

1 A-LOAM

参考论文如下:LOAM: Lidar odometry and mapping in real-time

在这里插入图片描述

A-LOAM 是 LOAM的先进实现(Advanced Implementation),使用 Eigen 和 Ceres Solver 库来简化代码结构。它一种实时的里程计和映射方法,使用来自 6 自由度移动的 2 轴激光雷达的距离测量。距离测量是在不同的时间接收的,并且运动估计中的错误会导致结果点云的错误配准。迄今为止,可以通过离线批处理方法构建连贯的 3D 地图,通常使用闭环来校正随时间的漂移(建图过程走一个闭环路线,进行重新匹配与地图修正)。我们的方法无需高精度测距或惯性测量即可实现低漂移和低计算复杂度。获得这种性能水平的关键思想是同时定位和映射的复杂问题的划分,该问题旨在通过两种算法同时优化大量变量。

一种算法以高频率但低保真度执行里程计来估计激光雷达的速度。
另一种算法以低一个数量级的频率运行,用于点云的精细匹配和配准。
两种算法的组合允许该方法实时映射。该方法已通过大量实验以及 KITTI 里程计基准进行了评估。结果表明,该方法可以达到最先进的离线批处理方法水平的准确性(2014年,目前来看任然很好用)。

Github工程的链接如下:Advanced implementation of LOAM
在这里插入图片描述

此代码是从 LOAM 和LOAM_NOTED修改的,简洁明了且没有复杂的数学推导和冗余操作。对于 SLAM 初学者来说是很好的入门学习项目

2 预备条件

2.1 Ubuntu和ROS

Ubuntu 要求为64位16.04版本或18.04版本。
ROS为 Kinetic 或 Melodic 。

(18.04以上应该也能运行,但是可能会有一些小bug,建议还不熟悉的同学使用推荐版本搭建项目)

2.2 Ceres Solver(Ceres求解器)

Ceres安装的参考地址:Ceres Solver

Ceres Solver 是一个开源 C++ 库,用于建模和解决大型、复杂的优化问题。它可用于解决具有边界约束和一般无约束优化问题的非线性最小二乘问题。也是A-LOAM的支持包。

  • 首先安装依赖包
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
复制

依赖包安装完成

  • 进入下载链接,点击如图所示连接,下载Ceres安装包

在这里插入图片描述

进入下载文件

cd Downloads/
复制

使用ls

看看文件名叫啥,使用tar

解压

tar zxf ceres-solver-2.1.0.tar.gz
复制

在这里插入图片描述

创建工程文件,进入,编译

mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0
复制

在这里插入图片描述

成功后,执行以下命令

make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install
复制

安装完成

2.3 PCL(Point Cloud Library)

PCL安装网址:Point Cloud Library

sudo apt install libpcl-dev
复制

3 创建A-LOAM工程

  • 回到主页,创建工程文件
sudo mkdir -p catkin_ALoam/src/
复制

进入工程文件中

cd catkin_ALoam/src/
复制

拉取工程

sudo git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
复制

在这里插入图片描述

返回上级目录,编译

cd ..
catkin_make
复制

source一下bash文件以配置环境变量

source devel/setup.bash
复制

搞定!

3 使用A-Loam进行SLAM

这时候得把第六章的代码一起跑,一个拿数据,一个来建图。

  • Ctrl+Alt+T 打开新终端,启动激光雷达
roslaunch velodyne_pointcloud VLP16_points.launch
复制

启动A-Loam建图

 roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
复制

结果如下

在这里插入图片描述


把雷达拿起来动一动试试!

注意动作幅度最好不好太大,也不要给俯仰和滚转的运动。

  • 创建地图的过程视频如下,我简单站起来走了两步

https://live.csdn.net/v/embed/239777

A-Loam建图过程

建图效果如下

在这里插入图片描述

运动轨迹如下(站起来鬼畜)

在这里插入图片描述

看看地图的细节和不同角度

https://live.csdn.net/v/embed/239780

A-Loam创建的地图

总结

本文介绍了使用Velodyne的16线激光雷达进行建图,算法是港科大2014年重构的A-Loam,希望能帮到大家。

SLAM实操入门(一):在已有WIN10的电脑上安装Ubuntu20.04

SLAM实操入门(二):Ubuntu20.04安装ROS Noetic并运行“小乌龟”程序

SLAM实操入门(三):Ubuntu20.04安装Turtlebot3并运行SLAM例程仿真

SLAM实操入门(四):使用ROS连接自己的激光雷达并可视化扫描结果

SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)

SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化