RTAB-Map:面向大规模长期在线运行的开源视觉与激光 SLAM 框架【文献解读】
RTAB-Map:面向大规模长期在线运行的开源视觉与激光 SLAM 框架【文献解读】
文献:RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation
作者:Mathieu Labbé, François Michaud
单位:Interdisciplinary Institute of Technological Innovation (3IT), Department of Electrical Engineering and Computer Engineering, Université de Sherbrooke, Canada
期刊:Journal of Field Robotics, Vol. 36, No. 2, pp. 416–446, 2019
论文 PDF:https://arxiv.org/pdf/2403.06341
项目主页:https://introlab.github.io/rtabmap/
RTAB-Map 核心库:https://github.com/introlab/rtabmap
ROS/ROS 2 接口:https://github.com/introlab/rtabmap_ros
摘要
本文系统介绍了 RTAB-Map 从“基于外观的回环检测模块”发展为完整图优化 SLAM 框架的过程。它并不是只针对某一种相机或某一种激光雷达设计,而是将 RGB-D、双目相机、二维激光、三维点云、轮式里程计和 IMU 等信息统一接入同一套图优化后端,并提供视觉里程计、激光里程计、回环检测、邻近检测、图优化、二维/三维占据栅格生成、多会话建图和长期记忆管理等功能。
论文的核心价值不在于提出一个单独的新特征点或新优化公式,而在于解决真实机器人长期运行时的系统性问题:如何让不同传感器配置能够在同一框架中公平比较,如何在地图规模持续增长时保持在线计算时间可控,以及如何直接输出可供机器人导航使用的二维/三维地图。 作者在 KITTI、TUM RGB-D、EuRoC 和 MIT Stata Center 数据集上,对视觉、视觉惯性、二维激光和三维激光配置进行了统一评测,进一步总结了不同传感器在精度、实时性、地图质量和工程部署方面的优缺点。
1. 论文解决的关键科学问题与技术挑战
1.1 大规模与长期运行下的实时性退化
图优化 SLAM 的地图通常由位姿节点和约束边构成。随着机器人持续运行,节点数量不断增加,回环候选检索、邻近检测、图优化和全局地图重建的计算量都会增长。如果单次更新耗时超过传感器输入周期,就会产生数据积压、地图延迟甚至影响导航安全。
因此,论文关注的不是一般意义上的“平均帧率”,而是更严格的工程约束:
- 每次 SLAM 更新必须尽量在固定时间上限内完成;
- 地图规模增长后,算法仍能持续在线运行;
- SLAM 不能长期占满计算资源,必须为规划、避障和控制模块保留计算余量。
1.2 单一传感器的退化与里程计失效
视觉和激光各自存在典型退化场景:
- 相机容易受到弱纹理、白墙、黑暗、曝光变化、遮挡、运动模糊和动态物体影响;
- 短距离激光在长直走廊、开阔空间或几何结构单一环境中,沿不可观方向容易产生漂移;
- 仅依赖轮式里程计时,打滑、原地转向和轮径误差会带来累计漂移;
- 仅依赖局部里程计无法长期保证全局一致性,仍需要回环约束修正误差。
论文希望通过可替换的里程计前端和统一的图优化后端,让视觉、激光及本体传感器相互补充,而不是将系统绑定在某一种传感器上。
1.3 回环检测的鲁棒性与错误约束抑制
回环检测能够显著修正累计漂移,但错误回环会对整张地图造成破坏。重复走廊、相似房间、光照变化和动态环境都可能产生错误外观匹配。
RTAB-Map 因此采用多级验证:
- 基于词袋模型生成回环候选;
- 使用贝叶斯滤波器累计回环概率;
- 利用 PnP-RANSAC 进行几何验证;
- 存在激光数据时再用 ICP 精化约束;
- 图优化后检查新约束引起的误差变化,异常时拒绝该回环。
1.4 面向导航的地图输出问题
许多视觉 SLAM 系统主要输出稀疏特征点和相机位姿,但实际机器人导航通常需要:
- 二维占据栅格,用于全局规划和局部避障;
- 三维占据地图或 OctoMap,用于三维碰撞检测;
- 稠密点云,用于环境重建、调试和感知模块;
- 标准 ROS TF 变换,用于统一
map、odom、base_link和传感器坐标系。
本文的重要目标之一,是让视觉 SLAM 也能像传统二维激光 SLAM 一样,直接生成可用于导航的地图产品。
1.5 多会话建图与初始位置未知
机器人重启后,通常不知道自己在历史地图中的初始位置。RTAB-Map 支持先建立一个新的独立会话,待机器人再次观察到历史位置后,通过回环约束自动求得两个会话之间的坐标变换并合并地图。这可以避免每次重启都重新建图,也适合在已有地图上增量扩展新区域。
1.6 视觉 SLAM 与激光 SLAM缺少统一比较平台
不同 SLAM 方法往往使用不同数据集、不同传感器、不同输入频率和不同输出形式,导致视觉与激光方法难以直接比较。本文把多种视觉和激光里程计接入同一个 RTAB-Map 后端,在相同的数据、图优化流程和地图输出条件下进行评测,使比较更接近真实机器人系统的工程需求。
2. RTAB-Map 总体架构与技术路线
RTAB-Map 是一种模块化图优化 SLAM。其数据流可概括为:
多传感器输入与 TF
↓
时间同步与坐标变换
↓
视觉/激光/轮式-惯性里程计
↓
STM 创建节点和局部占据栅格
↓
回环检测 + 邻近检测
↓
位姿图优化
↓
二维栅格 / OctoMap / 稠密点云 / TF 修正
↓
WM-LTM 记忆管理保证长期在线运行

图 1 RTAB-Map 总体系统架构:多传感器输入、图优化、记忆管理与地图输出
图中的地图由节点和边组成:
- 节点保存机器人位姿、原始或压缩传感器数据、视觉词袋、局部占据栅格等;
- 相邻边由连续帧之间的里程计变换产生;
- 回环边由外观回环检测和几何验证产生;
- 邻近边由当前位置附近的激光扫描匹配产生;
- 所有边共同作为图优化约束,优化结果通过
map→odom修正机器人全局位姿。
这一架构最关键的设计是:里程计前端与地图后端解耦。 RTAB-Map 不强制使用某一种里程计,只要外部模块能够输出标准位姿和 TF,就可以作为 SLAM 前端输入。因此,它既可以组成视觉 SLAM,也可以组成激光 SLAM,还可以使用轮式里程计、视觉惯性里程计或其他第三方里程计。
3. 核心算法原理
3.1 图优化 SLAM 基本模型
设机器人在节点 iii 的位姿为 Xi∈SE(3)\mathbf{X}_i\in SE(3)Xi∈SE(3),传感器或里程计给出的节点 iii 到节点 jjj 的相对观测为 Zij\mathbf{Z}_{ij}Zij。对应的约束残差可写为:
eij(X)=Log(Zij−1(Xi−1Xj)) \mathbf{e}_{ij}(\mathbf{X})= \operatorname{Log}\left( \mathbf{Z}_{ij}^{-1} \left(\mathbf{X}_i^{-1}\mathbf{X}_j\right) \right) eij(X)=Log(Zij−1(Xi−1Xj))
整个位姿图优化问题为:
X∗=argminX∑(i,j)∈EeijTΩijeij \mathbf{X}^{*}=\arg\min_{\mathbf{X}} \sum_{(i,j)\in\mathcal{E}} \mathbf{e}_{ij}^{T} \mathbf{\Omega}_{ij} \mathbf{e}_{ij} X∗=argXmin(i,j)∈E∑eijTΩijeij
其中,Ωij\mathbf{\Omega}_{ij}Ωij 是观测信息矩阵。RTAB-Map 集成了 TORO、g2o 和 GTSAM。论文测试版本默认使用 GTSAM,因为它在单会话六自由度地图中具有较好的优化质量,并且相较 g2o 对多会话图合并略稳健。
图优化并不会凭空消除误差,它依赖高质量约束:
- 相邻约束决定局部轨迹连续性;
- 回环约束负责消除长期累计漂移;
- 邻近约束增强几何重复区域的局部一致性;
- 协方差或信息矩阵决定不同约束在优化中的权重。
3.2 视觉里程计:F2F 与 F2M
RTAB-Map 提供两种标准视觉里程计模式:
- Frame-To-Frame(F2F):当前帧与最近关键帧匹配;
- Frame-To-Map(F2M):当前帧与多个历史关键帧构成的局部特征地图匹配。

图 2 RGB-D/双目视觉里程计流程:F2F 与 F2M 两种匹配方式
视觉里程计的主要步骤如下。
(1)特征检测与深度获取
系统默认使用 GFTT 检测角点。对于 RGB-D 相机,深度图直接提供特征点深度;对于双目相机,通过 Lucas-Kanade 光流搜索左右图像对应点并计算视差。
(2)特征匹配
- F2F 主要使用光流在当前帧和关键帧之间跟踪特征,计算较快;
- F2M 使用 BRIEF 描述子、最近邻搜索和 NNDR 检验,将当前帧特征与局部特征地图匹配,通常更稳定,但计算量更大。
NNDR 的基本形式为:
d1d2<τNNDR \frac{d_1}{d_2}<\tau_{\text{NNDR}} d2d1<τNNDR
其中 d1d_1d1 和 d2d_2d2 分别是最近邻和次近邻描述子距离。该检验用于剔除歧义匹配。
(3)运动预测
系统根据上一时刻运动采用常速度模型预测特征搜索区域,减少重复纹理和动态物体造成的误匹配。如果基于预测未能求得有效位姿,系统会扩大搜索范围并重新匹配。
(4)PnP-RANSAC 位姿估计
利用二维图像点与三维地图点之间的对应关系求解当前相机位姿。RANSAC 用于剔除外点,只有内点数量超过 Vis/MinInliers 时才接受该变换。
(5)局部束调整
求得初始位姿后,对相机位姿和局部三维特征进行优化:
minT,{Pk}∑kρ(∥uk−π(TPk)∥2) \min_{\mathbf{T},\{\mathbf{P}_k\}} \sum_k \rho\left( \left\| \mathbf{u}_k-\pi(\mathbf{T}\mathbf{P}_k) \right\|^2 \right) T,{Pk}mink∑ρ(∥uk−π(TPk)∥2)
其中 π(⋅)\pi(\cdot)π(⋅) 为相机投影模型,ρ(⋅)\rho(\cdot)ρ(⋅) 为鲁棒核函数。F2M 会对局部特征地图中的多个关键帧进行优化,因此通常比 F2F 更抗快速旋转和短时特征丢失。
(6)关键帧与局部地图维护
当有效内点比例低于 Odom/KeyFrameThr 时更新关键帧。F2M 的局部特征地图设有最大容量 OdomF2M/MaxSize,超出后删除较旧且当前未匹配的特征,从而避免前端计算量无限增长。
(7)跟踪失败处理
若重新匹配后仍无法获得有效变换,则输出无效位姿并将协方差设为很大值,使下游模块能够识别里程计丢失。视觉里程计后续可以在重新观察到足够特征时恢复。
3.3 激光里程计:S2S 与 S2M
激光里程计对应视觉前端的两种模式:
- Scan-To-Scan(S2S):当前扫描与上一关键扫描配准;
- Scan-To-Map(S2M):当前扫描与局部点云地图配准。

图 3 激光里程计流程:S2S、S2M、运动预测与 ICP 配准
(1)点云滤波与法向量估计
输入二维激光或三维点云先进行降采样,并转换到机器人基座坐标系。点到平面 ICP 还需要估计点云法向量。
(2)ICP 配准
点到点 ICP 的目标函数为:
T∗=argminT∑i∥qi−Tpi∥2 \mathbf{T}^{*}=\arg\min_{\mathbf{T}} \sum_i\left\|\mathbf{q}_i-\mathbf{T}\mathbf{p}_i\right\|^2 T∗=argTmini∑∥qi−Tpi∥2
点到平面 ICP 为:
T∗=argminT∑i[niT(qi−Tpi)]2 \mathbf{T}^{*}=\arg\min_{\mathbf{T}} \sum_i \left[ \mathbf{n}_i^{T} \left(\mathbf{q}_i-\mathbf{T}\mathbf{p}_i\right) \right]^2 T∗=argTmini∑[niT(qi−Tpi)]2
在人造室内环境中,墙面和地面等平面较多,点到平面 ICP 通常收敛更快;在树林等缺少规则平面的场景中,点到点 ICP 可能更合适。
(3)初值与退化处理
ICP 对初值敏感。RTAB-Map 可以使用:
- 上一帧相对运动构成的常速度预测;
- 轮式里程计或其他外部里程计作为初值。
论文特别讨论了长直走廊退化问题:若激光只能看到两条平行墙面,ICP 能约束横向位置和航向,但难以准确估计沿走廊方向的位移。RTAB-Map 根据点云法向量 PCA 的特征值评估几何复杂度;当结构复杂度低于阈值时,部分不可观方向由外部里程计提供。
(4)关键帧与点云地图更新
S2S 根据扫描重叠率决定是否替换关键帧;S2M 先从新扫描中减去局部地图内已有点,再加入剩余点,并限制地图最大点数。S2M 通常比 S2S 更稳定,但计算量更高。
3.4 多传感器时间同步与 TF 管理
RTAB-Map 支持 RGB-D、双目、二维激光、三维点云、里程计和用户数据等多类输入。不同传感器频率和时间戳不同,因此需要:
- 同一硬件内部的数据使用精确同步,例如双目左右图像;
- 不同传感器之间使用近似同步,例如 RGB-D、激光和轮式里程计;
- 通过
rgbd_sync将相机内部消息先合成为统一 RGB-D 消息,再与其他传感器同步; - 通过 TF 明确
base_link与各传感器坐标系之间的外参。
这一部分看似属于工程实现,但错误的时间同步和外参会直接造成尺度误差、运动估计错误和地图重影,是实际部署中的关键环节。
3.5 STM、WM 与 LTM 三级记忆结构
RTAB-Map 的长期运行能力来自记忆管理机制。其内存结构包括:
- STM(Short-Term Memory):保存最新节点,避免相邻帧被误认为全局回环;
- WM(Working Memory):当前参与回环检索、邻近检测和地图组装的活动节点;
- LTM(Long-Term Memory):暂时不参与在线计算、但保存在数据库中的历史节点。
每个新节点会根据与上一节点的外观相似度进行“排练”处理。若连续观测高度相似,则合并权重并减少冗余节点。超过时间阈值 Rtabmap/TimeThr 或节点阈值 Rtabmap/MemoryThr 后,系统优先把权重较低且较旧的节点转移到 LTM。
当机器人在 WM 中检测到历史回环时,与该位置相邻的 LTM 节点会重新调入 WM。这样,系统并非一次性把整张历史地图加载进内存,而是随着机器人重新进入旧区域逐步“回忆”附近节点。
该机制实现了两个目标:
- 在线模块只处理有限规模的活动图,控制更新时间;
- 历史信息并未删除,仍可用于多会话定位和最终离线地图恢复。
3.6 基于词袋的回环检测
RTAB-Map 使用增量视觉词典构建词袋表示。图像特征首先量化为视觉单词,再通过 TF-IDF 衡量当前节点与 WM 中历史节点的相似性。
一个视觉单词 www 在节点 iii 中的 TF-IDF 权重可表示为:
tfidf(w,i)=tf(w,i)logNnw \operatorname{tfidf}(w,i)= \operatorname{tf}(w,i) \log\frac{N}{n_w} tfidf(w,i)=tf(w,i)lognwN
其中 NNN 是 WM 中节点总数,nwn_wnw 是包含视觉单词 www 的节点数量。频繁出现在多数图像中的视觉单词区分度较低,而只在少数地点出现的单词权重更高。
候选相似度随后输入贝叶斯滤波器,估计“当前位置属于历史地点”还是“新地点”。当回环概率超过 Rtabmap/LoopThr 后,再进行几何验证。存在激光数据时,视觉估计得到的回环变换还会由 ICP 进一步精化。
需要注意:本文版本的全局回环候选生成仍主要依赖相机。没有相机时可以输入空图像,并仅依赖激光邻近检测进行地图修正,但这不等价于具备完整的激光全局地点识别能力。
3.7 邻近检测
邻近检测不依赖全局外观检索,而是在当前位姿附近的图节点中寻找可由激光扫描配准的节点。它特别适合:
- 机器人从相反方向重新经过同一走廊;
- 相机视角差异过大导致视觉回环失败;
- 需要利用局部几何约束加强图的一致性。
候选范围由 RGBD/ProximityMaxGraphDepth 限制,从而使计算量与局部邻域规模有关,而不是随整张地图线性增长。
3.8 错误回环拒绝与鲁棒图优化
新回环加入图后,RTAB-Map 检查优化前后该约束的位姿变化。如果变化超过平移方差乘以 RGBD/OptimizeMaxError,说明新约束与现有图严重冲突,系统会拒绝该节点新加入的回环边和邻近边。
这一机制不是完整的最大一致集或动态协方差缩放方法,但能够在重复场景下提供一层实用的错误回环保护。
3.9 局部占据栅格生成
每个 STM 节点可预先计算局部占据栅格。这样在发生回环、全局节点位姿被重新优化后,无需重新处理所有原始传感器数据,只需要按新位姿重新拼接局部地图。

图 4 根据深度图、激光和参数配置生成二维或三维局部占据栅格
主要过程包括:
- 深度图或双目视差投影为三维点云;
- 体素滤波降低点数;
- 根据法向量与竖直方向夹角分割地面和障碍物;
- 需要二维地图时,将三维点投影到地面平面;
- 使用二维或三维射线追踪标记传感器与障碍物之间的空闲区域;
- 三维射线追踪结果可保存为 OctoMap。
二维局部栅格占用内存更小、生成更快,但无法恢复完整三维地图。三维局部栅格可同时生成二维地图、三维地图和点云,代价是更高的存储与计算开销。
3.10 全局地图组装

图 5 从局部二维/三维栅格生成二维栅格、OctoMap 和点云
每个局部地图根据优化后的节点位姿变换到 map 坐标系并合并。发生回环后,需要根据全部新位姿重新生成全局地图,以恢复此前由于位姿误差而被错误清除或错误叠加的障碍物。
输出包括:
/grid_map:二维占据栅格;/octomap_grid:由 OctoMap 投影得到的二维栅格;/octomap:三维占据地图;/cloud_map:二维/三维稠密点云;/cloud_obstacles:障碍物点云;/cloud_ground:地面点云。
4. 实验设计
4.1 实验数据集与评测目的
| 数据集 | 主要传感器 | 典型场景 | 主要评测内容 |
|---|---|---|---|
| KITTI | 双目相机、Velodyne 64 线激光 | 室外车辆、大尺度道路、高速运动 | 双目与三维激光里程计精度、运行时间 |
| TUM RGB-D | Kinect RGB-D | 手持室内、小尺度办公室 | RGB-D 里程计、深度误差与快速旋转影响 |
| EuRoC | 双目相机、IMU | 无人机、室内快速运动 | 视觉与视觉惯性里程计、运动模糊鲁棒性 |
| MIT Stata Center | 双目、RGB-D、二维激光、轮速与 IMU | PR2 室内机器人、在线 ROS 回放 | 多传感器在线比较、多会话、地图质量和长期运行 |
前三个数据集采用离线处理,并在单 CPU 核上统计前端耗时;MIT 数据集以 ROS 原始频率在线回放,更接近实际机器人运行。为公平比较轨迹精度,轨迹评测阶段关闭 RTAB-Map 的记忆裁剪机制,使完整图始终参与优化。
4.2 轨迹误差指标
论文主要使用绝对轨迹误差 ATE。设估计位姿为 Pi\mathbf{P}_iPi,真值位姿为 Qi\mathbf{Q}_iQi,经过坐标对齐后的误差为:
Ei=Qi−1SPi \mathbf{E}_i=\mathbf{Q}_i^{-1}\mathbf{S}\mathbf{P}_i Ei=Qi−1SPi
则 ATE 的均方根为:
ATERMSE=1N∑i=1N∥trans(Ei)∥2 \operatorname{ATE}_{\mathrm{RMSE}}= \sqrt{\frac{1}{N} \sum_{i=1}^{N} \left\| \operatorname{trans}(\mathbf{E}_i) \right\|^2} ATERMSE=N1i=1∑N∥trans(Ei)∥2
其中 S\mathbf{S}S 是轨迹对齐变换。由于部分双目相机标定和 RGB-D 深度存在尺度偏差,论文对视觉轨迹额外进行尺度校正,以尽量把算法误差与传感器标定误差分开。
在 MIT 在线导航实验中,论文还关注:
- ATEend\mathrm{ATE}_{end}ATEend:序列结束时的误差;
- ATEmax\mathrm{ATE}_{max}ATEmax:运行过程中出现的最大误差。
对于导航,ATEmax\mathrm{ATE}_{max}ATEmax 往往比最终误差更重要。即使最终通过回环把地图拉回正确位置,机器人在回环发生前若已经漂移数米,仍可能无法安全规划到历史位置。
5. 实验结果与分析
5.1 KITTI:双目与三维激光对比
KITTI 同时提供同步双目图像和 Velodyne 点云,适合比较视觉与三维激光方案。
主要结论如下:
- ORB2-RTAB 精度较高,但计算开销较大。 在 RTAB-Map 的视觉前端中,ORB2-RTAB 在 11 个序列中的 10 个序列取得较优的平均平移误差,但单核平均耗时约 175 ms,难以满足 10 Hz 严格实时处理。
- F2M 是精度与计算量之间更均衡的方案。 F2M 单核平均耗时约 82 ms,KITTI 测试榜平移误差约 1.26%,旋转误差约 0.0026 deg/m0.0026\,\mathrm{deg/m}0.0026deg/m,与同时期 ORB-SLAM2 和 LSD-SLAM 接近。
- S2S 比 S2M 更快。 两者在多数序列精度接近,S2S 平均约 62 ms,S2M 约 82 ms,因此计算资源有限时可优先考虑 S2S。
- 激光并非所有场景都占优。 在高速公路序列 01 中,环境几何结构单一,三维激光对俯仰角估计较差;视觉特征可以覆盖更远区域,反而能够更好约束俯仰方向。
- 几何特征提取有助于提升激光里程计。 原始 LOAM 的结果整体优于仅使用通用 ICP 的 S2S/S2M,说明边缘和平面特征能够改善点云运动估计。
5.2 TUM RGB-D:深度误差与同步问题
TUM 数据集中,ORB2-RTAB 在 7 个序列中的 6 个取得 RTAB-Map 前端内的最佳结果,F2M 次之。
实验揭示了 RGB-D 方案的两个实际问题:
- 相机快速运动时,RGB 与深度图不同步会导致图像特征绑定错误深度;
- 距离较远时,RGB-D 深度误差增大,会影响三维特征位置和 PnP 估计。
ORB2-RTAB 通过局部地图和多帧三角化不断修正特征三维位置,因此对错误初始深度相对不敏感。完整 ORB-SLAM2 在某些序列中仍优于 ORB2-RTAB,主要原因是 ORB-SLAM2 在回环后执行全局束调整,而 RTAB-Map 后端主要优化节点之间的位姿约束。
5.3 EuRoC:高速运动下 IMU 的价值
EuRoC 包含无人机快速运动、运动模糊和左右相机曝光差异。论文在双目处理前加入曝光补偿。
主要结果:
- ORB2-RTAB 在 11 个序列中的 6 个取得 RTAB-Map 前端内较好结果,但计算量较高;
- V2-03-difficult 中存在高速运动和明显运动模糊,纯视觉方法容易中断;
- OKVIS 和 MSCKF 是测试中能够完整跟踪该困难序列的方案,说明 IMU 在视觉短时失效时能够提供关键运动约束;
- F2F、Fovis 和 MSCKF 具有较好的实时性,但快速并不必然代表最终精度最高。
该实验说明:对于无人机、四足机器人或高速运动平台,纯视觉前端可能无法只靠增加特征点数量解决运动模糊问题,加入 IMU 通常比单纯提高图像匹配复杂度更有效。
5.4 MIT Stata Center:真实机器人在线与多会话实验
该数据集同时包含二维长距离激光、双目、RGB-D、轮式里程计和 IMU。论文还把 30 m 激光裁剪为 5.6 m,以模拟低成本短距离激光。
在二维激光 SLAM 对比中,WheelIMU→S2M + RTAB-Map 与 Cartographer、GMapping、Karto SLAM 和 Hector SLAM 进行了比较。
| 激光配置 | 方法 | 序列 12-14-25 ATEend / ATEmax | 序列 12-33-29 ATEend / ATEmax |
|---|---|---|---|
| 长距离 | RTAB-Map WheelIMU→S2M | 0.05 / 0.05 m | 0.08 / 0.09 m |
| 长距离 | Cartographer | 0.11 / 0.11 m | 0.10 / 0.12 m |
| 短距离 | RTAB-Map WheelIMU→S2M | 0.07 / 0.08 m | 0.09 / 0.10 m |
| 短距离 | Cartographer | 0.45 / 0.52 m | 0.32 / 0.47 m |
| 短距离 | Hector SLAM | 4.59 / 4.59 m | 5.53 / 5.53 m |
结果说明:
- 长距离激光能够观察更多几何结构,即使不依赖很强的外部里程计也较稳定;
- 短距离激光在长走廊中容易出现几何退化;
- Wheel+IMU 提供运动初值后,S2M 能显著抑制退化方向漂移;
- Hector SLAM 不使用外部里程计,在短距离激光走廊场景中出现明显发散。

图 6 MIT Stata Center 多会话地图及图约束示例
5.5 不同传感器的地图质量与计算开销
论文不仅比较定位精度,还比较局部/全局占据栅格生成时间。
主要规律如下:
- 二维激光生成二维栅格最快。 局部栅格生成约 1–4 ms,数据量小且无需深度投影和地面分割。
- RGB-D 比双目更容易生成稠密地图。 RGB-D 可直接使用深度图;双目还需计算稠密视差,约增加 10 ms 左右。
- 二维射线追踪代价低,但可能错误清除障碍。 当相机安装较高且看不到桌腿或障碍物底部时,二维射线可能把真实障碍后的区域误标为空闲。
- 三维射线追踪更安全,但计算开销显著。 OctoMap 重建在回环后可能达到秒级,特别是高分辨率深度点云。
- 激光地图几何边界通常最清晰,但只能感知扫描平面高度上的障碍。 RGB-D 可以观察桌面、椅子等非扫描平面障碍;双目具有更大视场,但在无纹理地面和墙面处深度稀疏、噪声较大。
因此,地图形式应根据任务选择,而不是默认追求最高维度:
- 仅做平面导航时,二维局部/全局栅格更高效;
- 需要识别悬空障碍或复杂三维结构时,才使用三维局部栅格和 OctoMap;
- 静态环境若不需要清除动态障碍,可关闭三维射线追踪以节省大量计算。
5.6 记忆管理实验
两段 MIT 数据被连续回放,形成包含两个会话的大规模实验。地图更新频率为 2 Hz,即每次更新最多允许约 500 ms。
不使用记忆管理时,随着节点数量增加,回环检测、邻近检测、图优化和全局地图组装时间逐步增长,部分更新超过实时上限。使用 Rtabmap/MemoryThr=300 后,系统把低权重历史节点转移到 LTM,活动图规模受到限制。

图 7 使用记忆管理后的 RTAB-Map 模块耗时,虚线为 2 Hz 实时约束
实验结果表明:
- WM 与 LTM 之间节点转移带来平均约 52 ms 的额外开销;
- 依赖图规模的其他模块耗时明显下降,整个实验能够满足 2 Hz 实时约束;
- 使用记忆管理时,在线地图只显示机器人附近和当前被“回忆”的历史区域,而不是始终显示完整环境;
- 在线结束后可以从 LTM 恢复全部节点并生成完整地图;
- 使用与不使用记忆管理的最终 ATE 均约为 12 cm,说明计算裁剪没有明显破坏最终轨迹精度。
这一结果体现了 RTAB-Map 的核心思想:长期在线运行不是无限加速完整全局计算,而是把当前导航需要的局部知识保留在 WM,把暂时不需要的历史信息移入 LTM。
6. 论文的主要创新点与学术贡献
6.1 构建统一的视觉—激光图优化 SLAM 框架
RTAB-Map 把视觉里程计、视觉惯性里程计、激光里程计、轮式里程计和第三方前端统一为标准里程计输入,使同一后端既能组成视觉 SLAM,也能组成激光 SLAM或多传感器系统。这种前后端解耦显著提高了算法复用性和对比实验的公平性。
6.2 提出面向长期在线运行的记忆管理机制
STM-WM-LTM 结构通过节点重要性、时间阈值和内存阈值控制活动图规模,使回环检测和地图更新在大规模运行中保持有界。与简单删除旧关键帧不同,LTM 中的节点仍保存在数据库中,并可在重访旧区域时动态恢复。
6.3 将多传感器同步、TF 与导航地图输出纳入完整 SLAM 系统
论文不仅关注轨迹精度,还解决真实机器人所需的 ROS 坐标变换、消息同步、二维/三维占据地图、点云输出、地图保存和定位模式切换。这使 RTAB-Map 从研究原型变成可直接接入导航栈的系统级工具。
6.4 统一比较视觉与激光 SLAM 的精度、实时性和地图质量
作者在四类数据集上使用统一后端比较多种前端配置,不仅报告 ATE,还分析:
- 计算时间和内存占用;
- 视觉弱纹理、运动模糊和深度误差;
- 激光走廊退化和量程影响;
- 二维/三维射线追踪的地图质量;
- 多会话合并和长期运行实时性。
这种评测比单纯给出轨迹排行榜更接近自主导航系统的实际需求。
6.5 提供可执行的传感器选择与系统配置原则
论文形成了较明确的工程结论:
- 除非使用长距离激光,否则应提供轮式里程计或 IMU 等本体里程计;
- 短距离激光和相机都可能在特征不足区域退化,但退化类型不同;
- 高动态平台应优先考虑视觉惯性里程计;
- 平面导航不应盲目使用高开销三维地图;
- 长期运行必须限制活动图规模,而不是仅依赖更强硬件。
6.6 开源和可复现性贡献
RTAB-Map 以 C++ 库、独立程序和 ROS 包形式公开,集成多种第三方里程计和图优化库。论文中的系统结构、关键参数、数据集和比较方法较为完整,具有较高的工程复现价值。
7. 方法局限性与批判性分析
7.1 视觉与激光仍属于松耦合关系
本文版本通常先通过视觉获得回环或定位变换,再用激光 ICP 精化。如果视觉几何验证失败,激光并不能独立完成对应的全局回环。作者也将视觉—激光更紧密耦合作为后续研究方向。
7.2 全局回环检测仍依赖视觉词袋
即使系统运行在“激光 SLAM”模式,全局地点识别主要仍由相机外观完成。纯激光配置只能依赖局部邻近检测,适合漂移较小、环境规模有限的情况,但难以替代真正的激光全局地点识别描述子。
7.3 动态环境处理能力有限
系统通过 RANSAC、运动预测和错误回环检查降低动态物体影响,但没有显式进行动态目标检测和静态/动态地图分离。行人或可移动物体可能在点云和占据栅格中留下伪影,需要额外语义分割或动态物体过滤模块。
7.4 精度比较受到标定与尺度校正影响
论文对部分双目基线和 RGB-D 深度进行了尺度修正,并在视觉轨迹评测中进行尺度对齐。这有助于减少数据集标定误差影响,但也意味着结果并非完全等同于未经校正的端到端部署表现。实际系统仍需认真完成内参、外参和时间同步标定。
7.5 完整地图实时性与局部在线地图之间存在取舍
记忆管理保证了实时性,但在线 WM 地图可能只覆盖机器人附近区域。需要全局显示、全局规划或远距离任务分配时,应确认被规划区域是否已从 LTM 调入,或者使用独立的全局地图服务。
7.6 论文对比算法具有时代背景
论文正式发表于 2019 年,主要比较 ORB-SLAM2、LOAM、Cartographer、GMapping、Karto、Hector SLAM、OKVIS、MSCKF 等当时常用方法。其系统设计和工程结论仍有参考价值,但不能直接代表当前 RTAB-Map、ORB-SLAM3、FAST-LIO2、LIO-SAM、VINS-Fusion 等新版本或新算法之间的最新性能排名。
7.7 ORB2-RTAB 内存问题属于当时集成版本现象
论文指出,当时把 ORB-SLAM2 作为里程计前端并限制局部地图大小时,特征删除后内存未完全释放,导致 RAM 持续增长。该结论应理解为论文测试版本的实现问题,而不是对所有后续版本的永久判断。
8. 面向实际机器人的配置建议
8.1 室内轮式机器人与长走廊
推荐配置:
轮式里程计 + IMU
↓
S2M 二维激光里程计
↓
相机外观回环 + 激光 ICP 精化
↓
二维占据栅格
外部里程计可补偿短距离激光在走廊方向上的退化,相机用于全局回环,二维栅格直接接入导航栈。
8.2 低成本 RGB-D 机器人
RGB-D 可以同时用于视觉里程计、回环和稠密地图,但不宜在弱纹理走廊中只依赖视觉里程计。更稳妥的方案是使用轮式里程计作为基础运动估计,RGB-D 负责回环和障碍物补充。
8.3 双目室外移动平台
F2M 在精度和计算量之间较均衡;高速或强振动平台应加入 IMU,并使用视觉惯性前端。需要注意双目曝光一致性、时间同步和基线标定。
8.4 三维建图与避障
若目标是三维重建、悬空障碍检测或无人机导航,可保存三维局部栅格并生成 OctoMap。但必须评估回环后全图重建耗时。静态环境可关闭射线追踪,动态环境则需要更谨慎的三维空闲空间更新。
8.5 长时间运行
应根据机器人速度和传感器量程设置:
Rtabmap/DetectionRate:保证相邻节点数据有足够重叠;Rtabmap/TimeThr:限制单次更新耗时;Rtabmap/MemoryThr:限制 WM 节点数量;Mem/STMSize:避免最近相邻帧参与全局回环;Mem/RehearsalSimilarity:抑制停留或缓慢运动产生的冗余节点。
参数不能孤立设置。例如提高建图频率会增加节点重叠和回环机会,但也会更快消耗内存并增加图优化负担。
9. RTAB-Map 与 ORB-SLAM2 的关系
两者并不是完全相同层级的工具:
- ORB-SLAM2 是以 ORB 特征、局部地图、回环和束调整为核心的视觉 SLAM 系统;
- RTAB-Map 是可接入多种里程计前端、支持视觉和激光、能够输出二维/三维占据地图并进行长期记忆管理的完整框架。
论文中的 ORB2-RTAB 配置关闭了 ORB-SLAM2 自身的全局回环,把其跟踪和局部地图部分作为视觉里程计输入,再由 RTAB-Map 负责回环、位姿图优化和地图生成。因此,ORB-SLAM2 可以成为 RTAB-Map 的一种前端,而 RTAB-Map 不能简单理解为“另一个 ORB-SLAM2”。
对于只需要相机轨迹和稀疏视觉地图的任务,ORB-SLAM 系列通常更专注;对于需要 ROS 导航、多传感器切换、二维/三维占据地图、多会话和长期在线运行的移动机器人,RTAB-Map 的系统完整性更有优势。
10. 总结
这篇论文的核心结论可以概括为:
RTAB-Map 通过“可替换里程计前端 + 外观回环与邻近检测 + 位姿图优化 + 二维/三维地图组装 + STM/WM/LTM 记忆管理”,把视觉 SLAM、激光 SLAM 和机器人导航所需的工程功能统一到同一个开源框架中。
它最具研究价值的部分不是某一个单独算法模块,而是围绕真实机器人长期自主运行构建出的完整技术闭环:
- 利用视觉、激光和本体传感器组合降低局部里程计退化;
- 利用回环与图优化维持全局一致性;
- 利用局部占据栅格支持二维和三维地图快速重建;
- 利用多会话机制实现重启后的地图续建与合并;
- 利用 WM-LTM 记忆管理控制活动图规模,保证长期在线计算可控;
- 通过统一数据集和真实 ROS 回放揭示不同传感器配置的实际优缺点。
因此,RTAB-Map 更适合被理解为一个模块化、多传感器、面向导航和长期运行的图优化 SLAM 平台,而不仅是一个基于 RGB-D 相机的建图算法。
参考链接
- 论文主页:https://arxiv.org/abs/2403.06341
- 正式论文:https://doi.org/10.1002/rob.21831
- RTAB-Map 官网:https://introlab.github.io/rtabmap/
- RTAB-Map 核心库:https://github.com/introlab/rtabmap
- RTAB-Map ROS/ROS 2:https://github.com/introlab/rtabmap_ros
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)