news 2026/5/30 1:01:33

A-LOAM 保姆级安装教程(Ubuntu 20.04 + ROS Noetic + Ceres 1.14)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A-LOAM 保姆级安装教程(Ubuntu 20.04 + ROS Noetic + Ceres 1.14)

前言

A-LOAM(Advanced implementation of Lidar Odometry And Mapping)是香港科技大学空中机器人团队基于 LOAM 论文重写的激光SLAM系统。它使用Eigen + Ceres Solver替代了原始 LOAM 中复杂的手动求导,代码结构清晰,是3D激光SLAM入门的最佳选择。

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


1. 系统环境要求

项目要求说明
操作系统Ubuntu 18.04 / 20.04 LTS本文以 Ubuntu 20.04 为例
ROSMelodic / Noetic必须
C++ 标准C++14Ceres 1.14 要求
CMake3.3.2+
内存4GB+KITTI 数据集需 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-c'echo "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# 设置环境变量echo"source /opt/ros/noetic/setup.bash">>~/.bashrcsource~/.bashrc

4. 第二步:安装 PCL 和基础依赖

# PCL 点云库(Ubuntu 20.04 自带 PCL 1.10)sudoaptinstall-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# OpenCV(kittiHelper 需要)sudoaptinstall-ylibopencv-dev

5. 第三步:编译安装 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# 编译安装mkdirbuild&&cdbuild cmake..-DCMAKE_BUILD_TYPE=Releasemake-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# 设置环境变量echo"source ~/catkin_ws/devel/setup.bash">>~/.bashrcsource~/.bashrc

Ubuntu 20.04 OpenCV 4.x 兼容性修复

如果在 Ubuntu 20.04 上遇到 OpenCV 相关编译错误:

# 修改 CMakeLists.txt,添加准确的 OpenCV 查找路径# 在 find_package(OpenCV REQUIRED) 之前添加:sed-i's/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(约 4GB)wgethttps://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 kittiHelper

NSH 数据集(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--clock

HDL-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:z

10. 常见问题排查

问题1:Ceres 版本不兼容

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(手动安装)RViz(ROS自带)
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。掌握这一点,安装基本不会出问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 0:57:28

如何高效处理B站视频内容:bili2text技术深度解析

如何高效处理B站视频内容:bili2text技术深度解析 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text Bilibili视频转文字是许多内容创作者、学生和研究…

作者头像 李华
网站建设 2026/5/30 0:52:56

基于Llama与RAG架构的私有AI研究助手:从零部署到高级优化

1. 项目概述:为什么需要一个私有的AI研究助手?在信息爆炸的时代,无论是学术研究者、技术开发者还是深度内容创作者,每天都要在海量的论文、文档、代码库和网页信息中穿梭。公共的AI助手虽然强大,但存在几个核心痛点&am…

作者头像 李华
网站建设 2026/5/30 0:46:51

YimMenu:GTA5玩家的终极防护盾与游戏体验增强器

YimMenu:GTA5玩家的终极防护盾与游戏体验增强器 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/5/30 0:45:44

三步轻松复活经典游戏联机:IPXWrapper让老游戏重获新生

三步轻松复活经典游戏联机:IPXWrapper让老游戏重获新生 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你是否还记得那些和小伙伴们通宵联机玩《星际争霸》《帝国时代》《红色警戒》的青春岁月?随着Windo…

作者头像 李华