前言
RTAB-Map(Real-Time Appearance-Based Mapping)是一个开源的 RGB-D SLAM 框架,广泛应用于机器人导航、3D 重建和环境建图。该项目目前仍在积极维护中,支持实际环境部署。本文基于相关论文梳理其核心原理,为后续实践打下基础。

1. 主要贡献
该框架的核心设计目标包括以下几点:
- 在线处理能力:SLAM 模块的输出延迟需限制在传感器数据接收后的最大允许范围内。随着地图增长,回环检测、图优化和建图的处理时间会增加。限制计算负载对于避免模块滞后至关重要,甚至在某些场景下关乎安全。
- 稳健且低漂移的里程计:虽然回环检测能校正漂移,但在探索新区域或特征不足时,里程计漂移可能导致定位失败。混合使用本体感受传感器(如轮速计)和外部传感器(相机、激光雷达)能显著提升鲁棒性。
- 鲁棒的定位能力:SLAM 必须能在重访旧位置时准确识别回环以校正地图。动态环境、光照变化或几何重复都可能导致误定位,因此算法需具备抗干扰能力。
- 实用的地图生成:大多数导航方法基于占据栅格。提供 3D 或 2D 占据栅格的 SLAM 方案更易于集成。此外,支持先建图后切换至纯定位模式,可节省内存并优化管理效率。
- 多会话建图:解决'机器人被绑架问题'。重启时若不知晓与旧地图的相对位置,无法规划路径。多会话建图允许启动时初始化新地图,当遇到旧位置时自动计算转换矩阵。这避免了重新构建整个环境,仅需增量更新。
2. 关键内容
RTAB-Map 是一种基于图的 SLAM 方法,自 2013 年起集成到 ROS 中(rtabmap_ros 包)。其架构灵活,里程计作为外部输入,支持多种传感器类型以适应不同应用。

传感器同步后,短期记忆(STM)模块创建节点,存储里程计姿态、原始传感器数据及辅助信息。节点创建速率由 Rtabmap/DetectionRate 控制,需根据机器人速度和传感器范围调整以保证数据重叠。图优化会将误差传播至全图以减少漂移。优化后可发布 OctoMap、点云或 2D 占据栅格输出,并通过 /map→/odom 提供里程计校正。
2.1 里程计
里程计节点支持任意类型的里程计方法,从简单的轮式编码器到复杂的视觉或激光雷达方案。无论何种传感器,都必须通过 TF 发布当前估计位姿(如 /odom → /base_link)。
2.1.1 视觉里程计
RTAB-Map 实现了两种经典视觉里程计模式:
- Frame-to-Map (F2M):当前帧与历史关键帧构建的特征地图配准。
- Frame-to-Frame (F2F):当前帧与上一个关键帧配准。
两者逻辑同样适用于激光雷达,称为 Scan-to-Map (S2M) 和 Scan-to-Scan (S2S)。
处理流程如下:
- 特征检测:使用 GFTT 检测特征,数量受
Vis/MaxFeatures限制。双目图像通过光流法计算视差,RGB-D 图像利用深度图作为掩码。 - 特征匹配:F2M 模式下计算 BRIEF 描述子并与特征地图进行最近邻搜索;F2F 模式直接对 GFTT 特征进行光流计算,速度更快。
- 运动预测:利用恒速模型缩小匹配窗口,提升动态环境下的匹配质量。




