# 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)。