目录
最终效果:
------------------------全文3632字29图一步一步完成大约耗时1h------------------------
所需软件以及环境:
Vmware Workstation 17pro
内存 8GB
处理器 6
硬盘 30GB
Python 3.8
ROS Noetic
系统 Ubuntu20.04.6
一、【虚拟机安装与创建】
前提,得有一个Ubuntu20.04的虚拟机【若没有则需创建一个】
具体步骤参考我之前写的博客部分:
------------------------这里需要大概0.5小时------------------------
二、【环境配置】
2.1 ROS版本
如果之前装过ROS系统,输入指令查看你的ROS版本是不是Noetic,在Ubuntu系统使用快捷键Ctrl+Alt+T新建终端,输入指令:
【查看ROS版本指令】rosversion -d
这里我之前安装过ROS的Noetic版本,所以在终端可以看到我的Ubuntu环境下有Noetic,如果没有装ROS-Noetic可以使用鱼香ROS一键安装指令,嘎嘎快速。
【鱼香ROS一件安装指令】wget http://fishros.com/install -O fishros && . fishros
输入指令后,按照屏幕提示安装ROS的Noetic版本喔~~
2.2 安装ceres
2.2.1 下载依赖
安装ceres之前需要下载一些依赖,指令:
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包,我们选择克隆下载:
【克隆指令】git clone https://gitcode.com/ceres-solver/ceres-solver.git
我们在主目录终端粘贴指令,进行克隆:
克隆完成,我们在主目录可以看到ceres包:
然后我们需要进入ceres包创建build文件夹并cmake编译
依次输入指令:
mkdir build
cd build
cmake ..
make
然后进行make编译,这里时间比较久(大概15min)
耐心等待编译完成,完成后,我们需要进行:
【指令】sudo make install
2.3 安装PLC库
输入指令下载PLC库:
【指令】sudo apt install libpcl-dev
三、【A-LOAM源码】
3.1 克隆源码
创建工作空间并克隆A-LOAM源代码,使用mkdir指令创建文件夹,也就是ROS的工作空间,我创建的工作空间名字叫做:Akaxi_LOAM,关于ROS的工作空间和功能包是下面的结构:
我们的所创建的文件一定要符合ROS文件系统才可以正常运行哦~~
【创建工作空间】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工作空间目录下,进行编译
【编译指令】catkin_make
但是很大概率会出现编译失败,接下来我们修改一下编译的代码
4.1 涉及PCL的CmakeList.txt
因为PCL版本问题,需要在A-LOAM的编译换成C++14,在A-LOAM包下的CmakeList.txt文件,改修以下内容:
// 将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文件的两行修改即可:
将:
ceres::LocalParameterization *q_parameterization = new ceres::EigenQuaternionParameterization();
替换成:
ceres::Manifold *q_parameterization = new ceres::EigenQuaternionManifold();
laserMapping.cpp
laserOdometry.cpp
修改完成后,再编译
catkin_make
再次编译后,编译成功!
撒花~~~~~~~~~~
4.3 补充
如果你的环境之前安装过Anaconda,在编译时可能会出现empty错误,使用以下指令指定python
【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的节点
【环境变量】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
渝北仙桃数据谷