基于AutoDL复现A-LOAM

目录

一、前期准备

二、基础环境配置

2.1 安装ROS-Noetic(对应Ubuntu20.04)

2.2 安装Eigen-3.4.0

2.3 安装PCL-1.10

2.4 安装Ceres-2.1.0

三、对A-LOAM源码进行相关操作

3.1 修改CMakeLists.txt

3.2 修改cpp文件

3.3 编译A-LOAM

3.4 编译过程中可能遇到的问题

四、下载bag点云数据集

五、Rviz可视化测试跑通代码

六、参考文章


一、前期准备

在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6

二、基础环境配置

2.1 安装ROS-Noetic(对应Ubuntu20.04)

先安装必要的 Python 模块和包:

sudo apt update
sudo apt install sudo python3-distro python3-yaml
pip install distro
pip install pyyaml

使用鱼香ROS一键安装指令安装ROS-Noetic,嘎嘎快速。

wget http://fishros.com/install -O fishros && . fishros

注:【查看ROS版本指令】rosversion -d

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

安装ROS-Noetic会自带opencv-4.2.0,可以使用以下指令查看opencv版本。

pkg-config --modversion opencv4

2.2 安装Eigen-3.4.0

#下载
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
 
#解压
unzip eigen-3.4.0
 
#进入文件夹
cd eigen-3.4.0
 
#创建build文件夹并进入
mkdir build && cd build
 
#cmake构建
cmake ..
make 
 
#安装
sudo make install
 
#复制文件夹(方便以后查找)
sudo cp -r /usr/local/include/eigen3 /usr/include 
 
#查看当前版本
pkg-config --modversion eigen3

2.3 安装PCL-1.10

Ubuntu 20.04中默认安装的PCL版本就是1.10

sudo apt-get install libpcl-dev

安装完成后可以使用以下指令查看PCL版本

dpkg -s libpcl-dev | grep Version

2.4 安装Ceres-2.1.0

Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。使用ceres库必须先安装eigen库,ceres库是基于eigen的。

(1)下载源码包

参考Github,点击Follow Ceres Installation转到安装网站,点击You can start with the latest stable release,直接把Ceres包给下载下来。

(2)安装依赖

#CMake(AutoDL中没有安装过但是本来就有)
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 and CXSparse (optional)
sudo apt-get install libsuitesparse-dev

(3)编译源码并安装
         在源码包目录下进行解压编译等一系列操作

tar zxf ceres-solver-2.1.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0

// 下面这一步在autodl中就需要关闭无卡模式,切换GPU
make -j4
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.
sudo make install

(4)测试ceres是否安装成功。
         ceres-bin目录下运行下面例子:

bin/simple_bundle_adjuster ../ceres-solver-2.1.0/data/problem-16-22106-pre.txt

运行结果:

 

三、对A-LOAM源码进行相关操作

这一步骤修改一次后接下来还想复现的话直接使用改好的A-LOAM文件就好!!

创建工作空间进入文件夹

mkdir -p ~/xzh_LOAM/src && cd xzh_LOAM/src

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

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

成功下载源码后开始对源码进行修改

3.1 修改CMakeLists.txt

  • 由于PCL版本1.10,将C++标准改为14:
#set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")
  • 找到OpenCV4.2.0包做以下修改:
#find_package(OpenCV REQUIRED)
set(CMAKE_PREFIX_PATH "/usr/include/opencv4") 
find_package(OpenCV 4.0 QUIET)

3.2 修改cpp文件

  • 将四个.cpp文件中的/camera_init修改为camera_init,/camera改成camera,/map改成map
  • scanRegistration.cpp中的 #include <opencv/cv.h> 修改为#include <opencv2/imgproc.hpp>
  • 修改kittiHelper.cpp中 CV_LOAD_IMAGE_GRAYSCALE为 cv::IMREAD_GRAYSCALE
  • 如果编译遇到大量未找到Eigen相关错误(大概率会遇到),将四个.cpp文件中的#include <eigen3/Eigen/Dense>修改为#include <Eigen/Dense>

3.3 编译A-LOAM

在工作空间目录下进行编译,此处本人的工作空间为xzh_LOAM/

cd ~/xzh_LOAM/src

cd ../  (返回上一级目录)
以上代码等价于

cd ~/xzh_LOAM/

cd ~/xzh_LOAM/

catkin_make

3.4 编译过程中可能遇到的问题

  • 遇到empy错误,因为环境中之前安装过Anaconda,使用以下指令指定python解决该问题:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
  • 遇到关于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();

四、下载bag点云数据集

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

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

在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。我是直接通过虚拟机中的上传按钮进行上传,也可以通过WinSCP进行文件传输。

我是直接上传到虚拟机的根目录下。

五、Rviz可视化测试跑通代码

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

【环境变量】source devel/setup.bash    // 注意在xzh_LOAM工作空间目录下执行此指令
【启动Rviz】roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch

由于我是使用autodl中的虚拟机,因此没有图形化界面。用MobaXterm解决该问题!

在MobaXterm中新建第一个终端:

cd ~/xzh_LOAM/

source devel/setup.bash

roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch

在autodl网页中新建第二个终端,跑bag包(在数据集所在文件夹下打开终端):

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

六、参考文章

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

2.  Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM_loam运行-CSDN博客

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jmu xzh_0618

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值