# A-LOAM **Repository Path**: hf26023/A-LOAM ## Basic Information - **Project Name**: A-LOAM - **Description**: A-LOAM基础上,将输入点云话题改为launch中配置 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: devel - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-12 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # A-LOAM ## LOAM 的高级实现 A-LOAM 是 LOAM(J. Zhang 和 S. Singh,LOAM: Lidar Odometry and Mapping in Real-time)的高级实现,使用 Eigen 和 Ceres Solver 简化代码结构。该代码基于 LOAM 和 [LOAM_NOTED](https://github.com/cuitaixiang/LOAM_NOTED) 修改而来。代码清晰简洁,没有复杂的数学推导和冗余操作,是 SLAM 初学者的良好学习材料。 **修改者:** [Tong Qin](http://www.qintonguav.com), [Shaozu Cao](https://github.com/shaozu) ## 1. 前提条件 ### 1.1 **Ubuntu** 和 **ROS** Ubuntu 64 位 16.04 或 18.04。 ROS Kinetic 或 Melodic。[ROS 安装](http://wiki.ros.org/ROS/Installation) ### 1.2. **Ceres Solver** 参考 [Ceres 安装](http://ceres-solver.org/installation.html)。 ### 1.3. **PCL** 参考 [PCL 安装](http://www.pointclouds.org/downloads/linux.html)。 ## 2. 构建 A-LOAM 克隆仓库并 catkin_make: ``` cd ~/catkin_ws/src git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git cd ../ catkin_make source ~/catkin_ws/devel/setup.bash ``` ## 3. Velodyne VLP-16 示例 下载 [NSH indoor outdoor](https://drive.google.com/file/d/1s05tBQOLNEDDurlg48KiUWxCp-YqYyGH/view) 到 YOUR_DATASET_FOLDER。 ``` roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch rosbag play YOUR_DATASET_FOLDER/nsh_indoor_outdoor.bag ``` ## 4. KITTI 示例(Velodyne HDL-64) 下载 [KITTI Odometry dataset](http://www.cvlibs.net/datasets/kitti/eval_odometry.php) 到 YOUR_DATASET_FOLDER,并在 `kitti_helper.launch` 文件中设置 `dataset_folder` 和 `sequence_number` 参数。注意还需要通过 `kitti_helper.launch` 中的参数将 KITTI 数据集转换为 bag 文件。 ``` roslaunch aloam_velodyne aloam_velodyne_HDL_64.launch roslaunch aloam_velodyne kitti_helper.launch ``` ## 5. Docker 支持 为了方便构建,我们在代码中加入了 docker。Docker 环境类似沙箱,使代码环境独立。要使用 docker,首先确保你的机器上已安装 [ros](http://wiki.ros.org/ROS/Installation) 和 [docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/)。然后通过 `sudo usermod -aG docker $YOUR_USER_NAME` 将你的账户加入 `docker` 组。**如果出现 `Permission denied` 错误,请重新打开终端或注销后重新登录。** ``` cd ~/catkin_ws/src/A-LOAM/docker make build ``` 构建过程可能需要一些时间,取决于你的机器性能。之后运行 `./run.sh 16` 或 `./run.sh 64` 启动 A-LOAM,即可看到结果。 ## 6. 话题流程图式说明 A-LOAM 的运行流程由三个主要节点组成: 1. `scanRegistration`:点云去畸变与特征提取 2. `laserOdometry`:基于特征的里程计前端 3. `laserMapping`:地图优化后端 ```text raw point cloud | (kitti_helper 输出) v /iris_0/velodyne_points /velodyne_points | v scanRegistration | |-- /velodyne_cloud_2 |-- /laser_cloud_sharp |-- /laser_cloud_less_sharp |-- /laser_cloud_flat |-- /laser_cloud_less_flat v laserOdometry | |-- /laser_cloud_corner_last |-- /laser_cloud_surf_last |-- /velodyne_cloud_3 |-- /laser_odom_to_init |-- /laser_odom_path v laserMapping | |-- /laser_cloud_surround |-- /laser_cloud_map |-- /velodyne_cloud_registered |-- /aft_mapped_to_init |-- /aft_mapped_to_init_high_frec |-- /aft_mapped_path ``` ### 6.1 输入话题 - `/iris_0/velodyne_points`:默认激光点云输入。 - `/velodyne_points`:KITTI 数据集辅助节点 `kitti_helper` 输出的点云。 ### 6.2 关键中间话题 - `/velodyne_cloud_2`:去畸变后的原始点云,供 `laserOdometry` 使用。 - `/laser_cloud_sharp`:尖锐角点特征。 - `/laser_cloud_less_sharp`:次尖锐角点特征。 - `/laser_cloud_flat`:平面点特征。 - `/laser_cloud_less_flat`:次平面点特征。 - `/laser_cloud_corner_last`:上一次帧的角点特征,用于地图匹配。 - `/laser_cloud_surf_last`:上一次帧的平面特征,用于地图匹配。 - `/velodyne_cloud_3`:当前帧的全分辨率点云(已对齐到末端帧)。 - `/laser_odom_to_init`:里程计前端位姿估计,从 `/camera_init` 到 `/laser_odom`。 - `/laser_odom_path`:里程计路径。 ### 6.3 输出话题 - `/laser_cloud_surround`:局部地图点云(可视化/调试)。 - `/laser_cloud_map`:完整地图点云。 - `/velodyne_cloud_registered`:对齐后的当前帧点云。 - `/aft_mapped_to_init`:地图优化后的最终位姿,从 `/camera_init` 到 `/aft_mapped`。 - `/aft_mapped_to_init_high_frec`:高频发布的优化后实时位姿。 - `/aft_mapped_path`:优化后位姿路径。 ## 7. 致谢 感谢 LOAM(J. Zhang 和 S. Singh,LOAM: Lidar Odometry and Mapping in Real-time)和 [LOAM_NOTED](https://github.com/cuitaixiang/LOAM_NOTED)。