如何在Seeed Studio reComputer Jetson Nano上运行A-LOAM 3D SLAM
A-LOAM简介
A-LOAM 是原始LOAM(Lidar Odometry and Mapping)算法的高级实现,最初由J. Zhang和S. Singh开发。A-LOAM的主要特点包括:
- 实时LiDAR里程计和映射。
- 使用Eigen和Ceres Solver简化代码结构。
- 在各种环境中具有高性能和鲁棒性。
A-LOAM可用于包括自动驾驶、机器人和3D映射在内的多种应用。
本教程详细介绍了如何在reComputer Jetson系列设备上使用RoboSense RS32 LiDAR传感器设置和运行A-LOAM(Advanced LOAM)算法。A-LOAM是LOAM(实时LiDAR里程计和映射)的高级实现,利用Eigen和Ceres Solver实现高效的实时映射和定位。
如何在Jetson Nano上实现3D激光雷达的A-LOAM建图算法
前提条件
-
RoboSense 全系列 LiDAR.
- 确保您的reComputer运行Jetpack 5.x。我们仅在Ubuntu 20.04和ROS Noetic上进行了测试。
- 确保您按照教程在reComputer上启动RoboSense RS32 LiDAR并在ROS中成功可视化点云数据。
![](https://img-blog.csdnimg.cn/img_convert/e37c1fe780d6f58deafd1891c9b680a7.jpeg)
开始
环境设置
- 步骤 1: 安装gflags、google-glog、suitesparse、cxsparse3、cxsparse。
sudo apt-get install libgflags-dev libgoogle-glog-dev sudo apt-get install libsuitesparse-dev libcxsparse3 libcxsparse-dev
- 步骤 2: 安装PCL(Point Cloud Library)。
sudo apt install libpcl-dev
- 步骤 3: 安装Ceres。
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz tar xvf ceres-solver-1.14.0.tar.gz cd ceres-solver-1.14.0 mkdir build cd build cmake .. make -j4 sudo make install
- 步骤 4: 将A-LOAM代码克隆到您的工作区(~/catkin_ws/src)的src目录中。
cd ~/catkin_ws/src git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
修改配置文件和源代码
-
步骤 1: 由于A-LOAM算法需要点云类型为XYZIRT,而RS32 LiDAR的默认输出为XYZI,您需要修改位于 ~/catkin_ws/src/rslidar_sdk/ 目录中的 CMakeLists.txt 文件第 8 行,将 XYZI 更改为 XYZIRT。
-
步骤 2: A-LOAM默认订阅的点云主题为 /velodyne_points,而RS32 LiDAR的默认输出主题为 /rslidar_points。因此,请将位于 ~/catkin_ws/src/rslidar_sdk/config/config.yaml 文件第26行的主题名称修改为 /velodyne_points。
-
步骤 3: 如果您使用的是C++14,请修改 ~/catkin_ws/src/A-LOAM/ 目录中 CMakeLists.txt 文件的第 5 行,将 C++11 更改为 C++14。
-
步骤 4: 如果您使用的是 OpenCV 4.x,需要更新位于 ~/catkin_ws/src/A-LOAM/src 目录中 scanRegistration.cpp 文件第44行的OpenCV头文件引用(如果您使用的是OpenCV 3.x,则可以跳过此步骤)。
将代码
#include <opencv/cv.h>
替换为
#include <opencv2/opencv.hpp>
-
步骤 5: 在 ~/catkin_ws/src/A-LOAM/src/kittiHelper.cpp 文件的第 91 和 93 行中,将 CV_LOAD_IMAGE_GRAYSCALE 更改为 cv::IMREAD_GRAYSCALE。
-
步骤 6: 如果您使用的是 tf2,请修改 ~/catkin_ws/src/A-LOAM/src/ 目录中的所有 .cpp 文件 (kittiHelper.cpp、laserMapping.cpp、laserOdometry.cpp、scanRegistration.cpp),将 frame_id=/camera_init 更改为 frame_id=camera_init,只需删除 ‘/’ 符号即可。
编译包
- 步骤 1: 返回工作区并重新编译功能包并重新加载环境。
cd ~/catkin_ws catkin_make source ~/catkin_ws/devel/setup.bash
启动3D SLAM
- 步骤 1: 运行lidar代码
roslaunch rslidar_sdk start.launch
- 步骤 2: 运行A-LOAM代码
roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch