前言A-LOAMAdvanced implementation of Lidar Odometry And Mapping是香港科技大学空中机器人团队基于 LOAM 论文重写的激光SLAM系统。它使用Eigen Ceres Solver替代了原始 LOAM 中复杂的手动求导代码结构清晰是3D激光SLAM入门的最佳选择。GitHub: https://github.com/HKUST-Aerial-Robotics/A-LOAM1. 系统环境要求项目要求说明操作系统Ubuntu 18.04 / 20.04 LTS本文以 Ubuntu 20.04 为例ROSMelodic / Noetic必须C 标准C14Ceres 1.14 要求CMake3.3.2内存4GBKITTI 数据集需 8GB显卡无要求纯CPU计算2. 依赖库全景图A-LOAM 依赖体系 ├── ROS Noetic通信 可视化 点云工具 │ ├── roscpp, rospy —— C/Python通信 │ ├── sensor_msgs —— 传感器消息定义 │ ├── nav_msgs —— Path/Odometry消息 │ ├── pcl_ros / pcl_conversions —— PCL与ROS桥接 │ ├── tf / tf2 —— 坐标变换 │ └── rviz —— 3D可视化 ├── Ceres Solver 1.14.0 —— 非线性优化必须 1.14.x │ ├── Eigen3 —— 线性代数 │ ├── gflags / glog —— 命令行/日志 │ ├── suitesparse —— 稀疏矩阵求解 │ └── lapack / blas —— 线性代数底层 ├── PCL 1.10 —— 点云处理KD-Tree、体素滤波 └── OpenCV可选 —— 仅 kittiHelper 需要⚠️最重要的坑Ceres 版本必须是1.14.x。其他版本1.13、2.0、2.1、2.2都会导致 A-LOAM 编译失败或运行异常。3. 第一步安装 ROS Noetic# 添加 ROS 源sudosh-cecho deb http://packages.ros.org/ros/ubuntu focal main /etc/apt/sources.list.d/ros-latest.list# 添加密钥sudoaptinstallcurlcurl-shttps://raw.githubusercontent.com/ros/rosdistro/master/ros.asc|sudoapt-keyadd-# 更新并安装sudoaptupdatesudoaptinstall-yros-noetic-desktop-full# 初始化 rosdepsudorosdep init rosdep update# 设置环境变量echosource /opt/ros/noetic/setup.bash~/.bashrcsource~/.bashrc4. 第二步安装 PCL 和基础依赖# PCL 点云库Ubuntu 20.04 自带 PCL 1.10sudoaptinstall-ylibpcl-dev pcl-tools# ROS 中的 PCL 桥接包sudoaptinstall-yros-noetic-pcl-ros ros-noetic-pcl-conversions\ros-noetic-pcl-msgs# 可视化sudoaptinstall-yros-noetic-rviz ros-noetic-rqt# 基础工具sudoaptinstall-ybuild-essential cmakegitsudoaptinstall-ylibeigen3-dev libboost-all-dev# OpenCVkittiHelper 需要sudoaptinstall-ylibopencv-dev5. 第三步编译安装 Ceres Solver 1.14.0这是最容易出错的步骤务必严格按以下命令操作。# 下载 Ceres 1.14.0 源码wgethttp://ceres-solver.org/ceres-solver-1.14.0.tar.gztar-zxvfceres-solver-1.14.0.tar.gzcdceres-solver-1.14.0# 安装编译依赖sudoaptinstall-yliblapack-dev libsuitesparse-dev\libcxsparse3 libgflags-dev\libgoogle-glog-dev libgtest-dev# 编译安装mkdirbuildcdbuild cmake..-DCMAKE_BUILD_TYPEReleasemake-j$(nproc)sudomakeinstall# 验证安装ls/usr/local/lib/libceres.a# 应该存在ls/usr/local/include/ceres/# 应该有头文件为什么不能用 apt 安装sudo apt install libceres-dev在 Ubuntu 20.04 上安装的是 Ceres 2.0与 A-LOAM 不兼容。Ceres 版本不匹配的典型报错error: class ceres::LocalParameterization has no member named Set error: ceres::Problem::Options has no member named local_parameterization_ownership如果遇到这些错误说明 Ceres 版本不对。卸载重装 1.14.0# 卸载系统安装的 Ceressudoaptremove libceres-devsudorm-f/usr/local/lib/libceres*sudorm-rf/usr/local/include/ceressudorm-f/usr/local/lib/cmake/Ceres/6. 第四步创建工作空间并编译 A-LOAM# 创建工作空间mkdir-p~/catkin_ws/srccd~/catkin_ws/src# 克隆 A-LOAMgitclone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git# 编译cd~/catkin_ws catkin_make# 设置环境变量echosource ~/catkin_ws/devel/setup.bash~/.bashrcsource~/.bashrcUbuntu 20.04 OpenCV 4.x 兼容性修复如果在 Ubuntu 20.04 上遇到 OpenCV 相关编译错误# 修改 CMakeLists.txt添加准确的 OpenCV 查找路径# 在 find_package(OpenCV REQUIRED) 之前添加sed-is/find_package(OpenCV REQUIRED)/set(OpenCV_DIR \/usr\/lib\/x86_64-linux-gnu\/cmake\/opencv4)\nfind_package(OpenCV REQUIRED)/~/catkin_ws/src/A-LOAM/CMakeLists.txt或者直接禁用 kittiHelper非必须模块# 在 CMakeLists.txt 中注释掉 kittiHelper 的编译# add_executable(kittiHelper src/kittiHelper.cpp)7. 第五步下载测试数据集KITTI 数据集推荐HDL-64激光雷达# 下载 KITTI Odometry 数据集序列00约 4GBwgethttps://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_10_03_drive_0027/2011_10_03_drive_0027_sync.zipunzip2011_10_03_drive_0027_sync.zip# 将 KITTI 数据转为 ROS bag# 修改 kittiHelper.cpp 中的路径后编译运行# rosrun aloam_velodyne kittiHelperNSH 数据集VLP-16体积小适合快速测试原始论文使用的小型室内外数据集可从 NSH 官方下载或使用其他 VL-16 数据替代。8. 第六步运行测试VLP-16 模式# 终端1启动 A-LOAMroslaunch aloam_velodyne aloam_velodyne_VLP_16.launch# 终端2播放数据包rosbag play YOUR_BAG_FILE.bag--clockHDL-64 模式KITTI# 终端1启动 A-LOAMroslaunch aloam_velodyne aloam_velodyne_HDL_64.launch# 终端2播放 KITTI bagrosbag play kitti_2011_10_03_drive_0027_synced.bag--clock-r1运行成功后RViz 中会显示白色点云当前帧面点surf彩色点云当前帧角点corner彩色线条里程计轨迹绿色线条建图轨迹彩色大点云全局地图9. 运行 rosbag 数据集的注意事项9.1 使用 --clock 参数# 必须加 --clock否则 A-LOAM 使用系统时间会出问题rosbag play xxx.bag--clock# 控制播放速度rosbag play xxx.bag--clock-r1# 正常速度rosbag play xxx.bag--clock-r0.5# 半速给算法更多处理时间9.2 查看轨迹# 订阅 odometry 话题rostopicecho/aft_mapped_path# 使用 rqt 可视化轨迹rqt_plot /aft_mapped_path/pose/pose/position/x:y:z10. 常见问题排查问题1Ceres 版本不兼容error: no matching function for call to ceres::Problem::AddResidualBlock(...)解决严格安装 Ceres 1.14.0参见上文第三节。问题2找不到 PCL 包Could not find a package configuration file provided by PCL解决sudoaptinstall-ylibpcl-dev ros-noetic-pcl-ros问题3编译时 OpenCV 冲突undefined reference to cv::imread(...)解决Ubuntu 20.04 自带 OpenCV 4.2需要在 CMakeLists.txt 中正确指定find_package(OpenCV 4 REQUIRED)问题4运行时点云不显示检查/velodyne_points话题是否有数据rostopic hz /velodyne_points检查 RViz 中的 Fixed Frame 是否设置为camera_init确保 rosbag 播放时加了--clock参数问题5轨迹漂移严重检查 LiDAR 内参是否正确launch 文件中的scan_line等参数KITTI 序列中车辆掉头时漂移严重这是 LOAM 的无回环特性导致的正常现象考虑使用 LeGO-LOAM 或 LIO-SAM 获得更好的效果11. 可选Docker 安装免环境配置A-LOAM 官方提供了 Docker 支持cd~/catkin_ws/src/A-LOAM/dockermakebuild# 启动 Docker 容器./run.sh16# VLP-16 模式./run.sh64# HDL-64 模式# 然后在容器内播包测试12. A-LOAM vs ORB-SLAM 安装对比对比项ORB-SLAM2/3A-LOAM传感器相机激光雷达框架依赖独立可执行文件必须 ROS核心优化库g2o自带Ceres 1.14手动安装可视化Pangolin手动安装RVizROS自带OpenCV必须3.x或4.x可选仅数据转换编译时间~10-15分钟~5-10分钟安装难度★★★★★主要坑在Ceres版本总结步骤操作时间安装 ROS Noeticapt install10-20分钟安装 PCL 基础依赖apt install5分钟编译 Ceres 1.14.0下载编译安装15-30分钟编译 A-LOAMcatkin_make5-10分钟下载测试数据取决于网速10-30分钟整个流程约40分钟至1.5小时。核心坑点只有一个——Ceres 版本必须是 1.14.x。掌握这一点安装基本不会出问题。
A-LOAM 保姆级安装教程(Ubuntu 20.04 + ROS Noetic + Ceres 1.14)
发布时间:2026/5/30 1:01:34
前言A-LOAMAdvanced implementation of Lidar Odometry And Mapping是香港科技大学空中机器人团队基于 LOAM 论文重写的激光SLAM系统。它使用Eigen Ceres Solver替代了原始 LOAM 中复杂的手动求导代码结构清晰是3D激光SLAM入门的最佳选择。GitHub: https://github.com/HKUST-Aerial-Robotics/A-LOAM1. 系统环境要求项目要求说明操作系统Ubuntu 18.04 / 20.04 LTS本文以 Ubuntu 20.04 为例ROSMelodic / Noetic必须C 标准C14Ceres 1.14 要求CMake3.3.2内存4GBKITTI 数据集需 8GB显卡无要求纯CPU计算2. 依赖库全景图A-LOAM 依赖体系 ├── ROS Noetic通信 可视化 点云工具 │ ├── roscpp, rospy —— C/Python通信 │ ├── sensor_msgs —— 传感器消息定义 │ ├── nav_msgs —— Path/Odometry消息 │ ├── pcl_ros / pcl_conversions —— PCL与ROS桥接 │ ├── tf / tf2 —— 坐标变换 │ └── rviz —— 3D可视化 ├── Ceres Solver 1.14.0 —— 非线性优化必须 1.14.x │ ├── Eigen3 —— 线性代数 │ ├── gflags / glog —— 命令行/日志 │ ├── suitesparse —— 稀疏矩阵求解 │ └── lapack / blas —— 线性代数底层 ├── PCL 1.10 —— 点云处理KD-Tree、体素滤波 └── OpenCV可选 —— 仅 kittiHelper 需要⚠️最重要的坑Ceres 版本必须是1.14.x。其他版本1.13、2.0、2.1、2.2都会导致 A-LOAM 编译失败或运行异常。3. 第一步安装 ROS Noetic# 添加 ROS 源sudosh-cecho deb http://packages.ros.org/ros/ubuntu focal main /etc/apt/sources.list.d/ros-latest.list# 添加密钥sudoaptinstallcurlcurl-shttps://raw.githubusercontent.com/ros/rosdistro/master/ros.asc|sudoapt-keyadd-# 更新并安装sudoaptupdatesudoaptinstall-yros-noetic-desktop-full# 初始化 rosdepsudorosdep init rosdep update# 设置环境变量echosource /opt/ros/noetic/setup.bash~/.bashrcsource~/.bashrc4. 第二步安装 PCL 和基础依赖# PCL 点云库Ubuntu 20.04 自带 PCL 1.10sudoaptinstall-ylibpcl-dev pcl-tools# ROS 中的 PCL 桥接包sudoaptinstall-yros-noetic-pcl-ros ros-noetic-pcl-conversions\ros-noetic-pcl-msgs# 可视化sudoaptinstall-yros-noetic-rviz ros-noetic-rqt# 基础工具sudoaptinstall-ybuild-essential cmakegitsudoaptinstall-ylibeigen3-dev libboost-all-dev# OpenCVkittiHelper 需要sudoaptinstall-ylibopencv-dev5. 第三步编译安装 Ceres Solver 1.14.0这是最容易出错的步骤务必严格按以下命令操作。# 下载 Ceres 1.14.0 源码wgethttp://ceres-solver.org/ceres-solver-1.14.0.tar.gztar-zxvfceres-solver-1.14.0.tar.gzcdceres-solver-1.14.0# 安装编译依赖sudoaptinstall-yliblapack-dev libsuitesparse-dev\libcxsparse3 libgflags-dev\libgoogle-glog-dev libgtest-dev# 编译安装mkdirbuildcdbuild cmake..-DCMAKE_BUILD_TYPEReleasemake-j$(nproc)sudomakeinstall# 验证安装ls/usr/local/lib/libceres.a# 应该存在ls/usr/local/include/ceres/# 应该有头文件为什么不能用 apt 安装sudo apt install libceres-dev在 Ubuntu 20.04 上安装的是 Ceres 2.0与 A-LOAM 不兼容。Ceres 版本不匹配的典型报错error: class ceres::LocalParameterization has no member named Set error: ceres::Problem::Options has no member named local_parameterization_ownership如果遇到这些错误说明 Ceres 版本不对。卸载重装 1.14.0# 卸载系统安装的 Ceressudoaptremove libceres-devsudorm-f/usr/local/lib/libceres*sudorm-rf/usr/local/include/ceressudorm-f/usr/local/lib/cmake/Ceres/6. 第四步创建工作空间并编译 A-LOAM# 创建工作空间mkdir-p~/catkin_ws/srccd~/catkin_ws/src# 克隆 A-LOAMgitclone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git# 编译cd~/catkin_ws catkin_make# 设置环境变量echosource ~/catkin_ws/devel/setup.bash~/.bashrcsource~/.bashrcUbuntu 20.04 OpenCV 4.x 兼容性修复如果在 Ubuntu 20.04 上遇到 OpenCV 相关编译错误# 修改 CMakeLists.txt添加准确的 OpenCV 查找路径# 在 find_package(OpenCV REQUIRED) 之前添加sed-is/find_package(OpenCV REQUIRED)/set(OpenCV_DIR \/usr\/lib\/x86_64-linux-gnu\/cmake\/opencv4)\nfind_package(OpenCV REQUIRED)/~/catkin_ws/src/A-LOAM/CMakeLists.txt或者直接禁用 kittiHelper非必须模块# 在 CMakeLists.txt 中注释掉 kittiHelper 的编译# add_executable(kittiHelper src/kittiHelper.cpp)7. 第五步下载测试数据集KITTI 数据集推荐HDL-64激光雷达# 下载 KITTI Odometry 数据集序列00约 4GBwgethttps://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_10_03_drive_0027/2011_10_03_drive_0027_sync.zipunzip2011_10_03_drive_0027_sync.zip# 将 KITTI 数据转为 ROS bag# 修改 kittiHelper.cpp 中的路径后编译运行# rosrun aloam_velodyne kittiHelperNSH 数据集VLP-16体积小适合快速测试原始论文使用的小型室内外数据集可从 NSH 官方下载或使用其他 VL-16 数据替代。8. 第六步运行测试VLP-16 模式# 终端1启动 A-LOAMroslaunch aloam_velodyne aloam_velodyne_VLP_16.launch# 终端2播放数据包rosbag play YOUR_BAG_FILE.bag--clockHDL-64 模式KITTI# 终端1启动 A-LOAMroslaunch aloam_velodyne aloam_velodyne_HDL_64.launch# 终端2播放 KITTI bagrosbag play kitti_2011_10_03_drive_0027_synced.bag--clock-r1运行成功后RViz 中会显示白色点云当前帧面点surf彩色点云当前帧角点corner彩色线条里程计轨迹绿色线条建图轨迹彩色大点云全局地图9. 运行 rosbag 数据集的注意事项9.1 使用 --clock 参数# 必须加 --clock否则 A-LOAM 使用系统时间会出问题rosbag play xxx.bag--clock# 控制播放速度rosbag play xxx.bag--clock-r1# 正常速度rosbag play xxx.bag--clock-r0.5# 半速给算法更多处理时间9.2 查看轨迹# 订阅 odometry 话题rostopicecho/aft_mapped_path# 使用 rqt 可视化轨迹rqt_plot /aft_mapped_path/pose/pose/position/x:y:z10. 常见问题排查问题1Ceres 版本不兼容error: no matching function for call to ceres::Problem::AddResidualBlock(...)解决严格安装 Ceres 1.14.0参见上文第三节。问题2找不到 PCL 包Could not find a package configuration file provided by PCL解决sudoaptinstall-ylibpcl-dev ros-noetic-pcl-ros问题3编译时 OpenCV 冲突undefined reference to cv::imread(...)解决Ubuntu 20.04 自带 OpenCV 4.2需要在 CMakeLists.txt 中正确指定find_package(OpenCV 4 REQUIRED)问题4运行时点云不显示检查/velodyne_points话题是否有数据rostopic hz /velodyne_points检查 RViz 中的 Fixed Frame 是否设置为camera_init确保 rosbag 播放时加了--clock参数问题5轨迹漂移严重检查 LiDAR 内参是否正确launch 文件中的scan_line等参数KITTI 序列中车辆掉头时漂移严重这是 LOAM 的无回环特性导致的正常现象考虑使用 LeGO-LOAM 或 LIO-SAM 获得更好的效果11. 可选Docker 安装免环境配置A-LOAM 官方提供了 Docker 支持cd~/catkin_ws/src/A-LOAM/dockermakebuild# 启动 Docker 容器./run.sh16# VLP-16 模式./run.sh64# HDL-64 模式# 然后在容器内播包测试12. A-LOAM vs ORB-SLAM 安装对比对比项ORB-SLAM2/3A-LOAM传感器相机激光雷达框架依赖独立可执行文件必须 ROS核心优化库g2o自带Ceres 1.14手动安装可视化Pangolin手动安装RVizROS自带OpenCV必须3.x或4.x可选仅数据转换编译时间~10-15分钟~5-10分钟安装难度★★★★★主要坑在Ceres版本总结步骤操作时间安装 ROS Noeticapt install10-20分钟安装 PCL 基础依赖apt install5分钟编译 Ceres 1.14.0下载编译安装15-30分钟编译 A-LOAMcatkin_make5-10分钟下载测试数据取决于网速10-30分钟整个流程约40分钟至1.5小时。核心坑点只有一个——Ceres 版本必须是 1.14.x。掌握这一点安装基本不会出问题。