从零开始创建二维激光SLAM
项目基础介绍和主要编程语言
项目名称: 从零开始创建二维激光SLAM
项目链接: GitHub - xiangli0608/Creating-2D-laser-slam-from-scratch
主要编程语言: C++
项目核心功能
该项目旨在从零开始创建一个二维激光SLAM(Simultaneous Localization and Mapping)系统。通过逐步实现和改进现有的开源激光SLAM框架,项目涵盖了以下核心功能:
- 激光数据处理: 包括激光数据的遍历、特征提取、格式转换等。
- 帧间坐标变换: 使用ICP(Iterative Closest Point)和PL-ICP(Point-to-Line ICP)算法计算雷达的帧间坐标变换。
- 激光里程计: 基于PL-ICP算法计算并累加帧间坐标变换,生成激光雷达里程计。
- 栅格地图构建: 包括简单的栅格地图构建、基于GMapping和Hector的栅格地图构建。
- 运动畸变校正: 使用IMU(惯性测量单元)和轮速计进行二维激光雷达数据的运动畸变校正。
- 前端与后端优化: 实现基于Karto的前端和基于G2O、Ceres、GTSAM的后端优化。
项目最近更新的功能
项目最近更新的功能主要包括:
- 基于Karto的前端实现: 使用slam_karto的代码,调用open_karto进行前端实现,并注释掉了回环检测与后端优化部分。
- 基于sparse-bundle-adjustment的后端优化与回环检测的实现: 使用slam_karto的代码,实现了karto的后端优化模块,并在室外数据集上验证了回环检测与后端优化的效果。
- 基于G2O的后端优化的实现: 使用g2o代替sba进行karto的后端优化计算。
- 基于Ceres的后端优化的实现: 使用ceres代替sba进行karto的后端优化计算。
- 基于GTSAM的后端优化的实现: 使用gtsam代替sba进行karto的后端优化计算。
这些更新进一步完善了项目的功能,使其在二维激光SLAM领域更加全面和实用。