【基于Ubuntu20.04 Noetic的A-LOAM激光雷达SLAM实现】保姆级教程 | A-LOAM | SLAM激光雷达建图 | Rviz可视化 | 全过程图文by.Akaxi

Akaxi-1 2024-07-09 13:07:04 阅读 97

目录

一、【虚拟机安装与创建】

二、【环境配置】

2.1 ROS版本

2.2 安装ceres

2.2.1 下载依赖

2.2.2 下载ceres包

2.3 安装PLC库

三、【A-LOAM源码】

3.1 克隆源码

3.2 修改代码

3.2.1 camera_init

3.2.2 include

3.2.3 opencv

四、【源码编译】

4.1 涉及PCL的CmakeList.txt

4.2 涉及ceres的文件修改

4.3 补充

五、【bag点云数据集】

六、【Rviz可视化测试】

【参考连接】


最终效果:

------------------------全文3632字29图一步一步完成大约耗时1h------------------------

所需软件以及环境: 

 Vmware Workstation 17pro

内存                             8GB

处理器                               6

硬盘                           30GB

Python                            3.8

ROS                           Noetic

系统             Ubuntu20.04.6

一、【虚拟机安装与创建】

前提,得有一个Ubuntu20.04的虚拟机【若没有则需创建一个】

具体步骤参考我之前写的博客部分:

【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi_ubuntu yolo-CSDN博客

 ------------------------这里需要大概0.5小时------------------------

二、【环境配置】

2.1 ROS版本

如果之前装过ROS系统,输入指令查看你的ROS版本是不是Noetic,在Ubuntu系统使用快捷键Ctrl+Alt+T新建终端,输入指令:

<code>【查看ROS版本指令】rosversion -d

这里我之前安装过ROS的Noetic版本,所以在终端可以看到我的Ubuntu环境下有Noetic,如果没有装ROS-Noetic可以使用鱼香ROS一键安装指令,嘎嘎快速。

<code>【鱼香ROS一件安装指令】wget http://fishros.com/install -O fishros && . fishros

输入指令后,按照屏幕提示安装ROS的Noetic版本喔~~

2.2 安装ceres

2.2.1 下载依赖

安装ceres之前需要下载一些依赖,指令:

<code>sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

等待下载完成~

2.2.2 下载ceres包

在Gitcode开源仓库里可以下载ceres,连接:

https://gitcode.com/ceres-solver/ceres-solver/overview?utm_source=csdn_github_accelerator&isLogin=1

将网址复制到浏览器,打开可以看到ceres包,我们选择克隆下载:

<code>【克隆指令】git clone https://gitcode.com/ceres-solver/ceres-solver.git

我们在主目录终端粘贴指令,进行克隆:

克隆完成,我们在主目录可以看到ceres包:

然后我们需要进入ceres包创建build文件夹并cmake编译

<code>依次输入指令:

mkdir build

cd build

cmake ..

make

然后进行make编译,这里时间比较久(大概15min)

耐心等待编译完成,完成后,我们需要进行:

<code>【指令】sudo make install

2.3 安装PLC库

输入指令下载PLC库:

<code>【指令】sudo apt install libpcl-dev

三、【A-LOAM源码】

3.1 克隆源码

创建工作空间并克隆A-LOAM源代码,使用mkdir指令创建文件夹,也就是ROS的工作空间,我创建的工作空间名字叫做:Akaxi_LOAM,关于ROS的工作空间和功能包是下面的结构:

我们的所创建的文件一定要符合ROS文件系统才可以正常运行哦~~ 

<code>【创建工作空间】mkdir -p ~/Akaxi_LOAM/src

【进入文件夹】cd Akaxi_LOAM/src

输入指令开始克隆A-LOAM源码:

【大佬原Github仓库指令】

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

如果显示网络连接失败,可以换成国内的Gitee仓库:

【国内镜像Gitee指令】

git clone https://gitee.com/yunma1995/A-LOAM.git

克隆A_LOAM源码成功~~

3.2 修改代码

克隆完成后进入src文件夹,将四个cpp文件修改,这里我们用vscode打开工作空间。

关于怎么在Ubuntu使用Vscode,也可以参考我的博客,第3.3节内容:【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi_ubuntu yolo-CSDN博客

可以在此看到四个c++程序:

kittiHlper.cpp

laserMapping.cpp

laserOdometry.cpp

scanRegistr.cpp

3.2.1 camera_init

打开Vscode依次将四个C++程序里的"/camera_init"的反斜杠"/"删掉,使用Ctrl+F可以快速在代码中搜索

3.2.2 include <opencv/cv.h>

然后将scanRegistration.cpp中的 #include <opencv/cv.h> 修改为#include <opencv2/imgproc.hpp>

3.2.3 opencv

将kittiHelper.cpp中CV_LOAD_IMAGE_GRAYSCALE修改为 cv::IMREAD_GRAYSCALE,否则会出现cv相关的错误

以上三个地方修改完成后,我们接下来进行编译

四、【源码编译】

在Akaxi_LOAM工作空间目录下,进行编译

<code>【编译指令】catkin_make

但是很大概率会出现编译失败,接下来我们修改一下编译的代码

4.1 涉及PCL的CmakeList.txt

因为PCL版本问题,需要在A-LOAM的编译换成C++14,在A-LOAM包下的CmakeList.txt文件,改修以下内容:

<code>// 将set(CMAKE_CXX_FLAGS "-std=c++11")注释掉,改为:

set(CMAKE_CXX_FLAGS "-std=c++14")

 

4.2 涉及ceres的文件修改

如果编译过程中出现:

这是ceres版本的问题,将A-LOAM下的laserMapping.cpp(第566-567行) 和 laserOdometry.cpp(第286-287行)两个cpp文件的两行修改即可:

<code>将:

ceres::LocalParameterization *q_parameterization = new ceres::EigenQuaternionParameterization();

替换成:

ceres::Manifold *q_parameterization = new ceres::EigenQuaternionManifold();

laserMapping.cpp

laserOdometry.cpp

修改完成后,再编译

<code>catkin_make

再次编译后,编译成功!

 

撒花~~~~~~~~~~ 

4.3 补充

如果你的环境之前安装过Anaconda,在编译时可能会出现empty错误,使用以下指令指定python

<code>【anaconda编译问题解决】catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

五、【bag点云数据集】

使用此bag点云数据集:nsh_indoor_outdoor.bag

链接:https://pan.baidu.com/s/1_hhEZjhznk88D91N57T57w?pwd=AAAA 

提取码:AAAA 

(这个bag包700M,比较大)

将此bag包保存到你的Ubuntu文件系统下~

六、【Rviz可视化测试】

新建终端,刷新一下环境变量,然后执行launch文件,启动roscore、Rviz可视化和A-LOAM的节点

<code>【环境变量】source devel/setup.bash // 注意在Akaxi_LOAM工作空间目录下执行此指令

【启动Rviz】roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch

再启动一个终端,跑bag包:

rosbag play nsh_indoor_outdoor.bag -r 5 【以5倍速播放,不然rviz会出现问题】

运行终端,然后Rviz出现可视化点云:

成功,撒花~~~~~~~~~~~~~~~~~~

【参考连接】

A-LOAM运行和常见问题及解决方法_aloam运行-CSDN博客

Ubuntu20.04下A-LOAM配置安装及测试教程(包含报错问题踩坑)_aloam配置-CSDN博客 

【aloam】ubuntu20.04 配置 aloam 环境,编译过程报错及成功解决方法_ubuntu20.04 loam算法的配置-CSDN博客 

----------------------------------------------------------------------------------------------------

相信读到这里的朋友,一定是坚持且优秀的

给博主一个免费的赞👍吧

扫描二维码进博主交流群,问题交流 | 吹吹水 | 一起变得更加优秀

2024.6.6

渝北仙桃数据谷



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。