在 ROS 生态中,除了slam_gmapping
(基于粒子滤波的 2D 激光 SLAM),还有多种常用的 SLAM 建图算法,涵盖2D SLAM、3D SLAM、视觉 SLAM等不同场景。以下是主流算法的详细介绍,包括其原理、适用场景和 ROS 实现:
一、2D 激光 SLAM 算法
适用于平面环境(如室内、走廊),依赖激光雷达(LiDAR)数据,精度较高,计算量较小。
1. Hector SLAM
- 原理:基于高斯牛顿法的扫描匹配,不依赖里程计,直接通过连续激光帧的匹配估计位姿,适合无轮式里程计的机器人(如无人机、履带车)。
- ROS 包:
hector_slam
- 优势:无需里程计,对运动噪声不敏感。
- 劣势:快速运动时易累积误差,适合小范围静态环境。
- 适用场景:室内小空间、地面不平坦的场景(如救灾机器人)。
2. Cartographer
- 原理:谷歌开源的实时 SLAM 算法,采用分支定界扫描匹配和子图优化,结合里程计和激光数据,支持 2D/3D 建图,精度和鲁棒性强。
- ROS 包