目录
2.1 安装ROS-Noetic(对应Ubuntu20.04)
一、前期准备
在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会出现问题】
六、参考文章
2. Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM_loam运行-CSDN博客