AI

RTAB-Map

Real-Time Appearance-Based Mapping

Posted by LXG on June 16, 2026

rtabmap-github

ROS2 环境检查


# source /opt/ros/humble/setup.bash

# ros2 doctor

安装 rtabmap


sudo apt update

sudo apt install \
ros-humble-rtabmap \
ros-humble-rtabmap-ros \
ros-humble-rtabmap-msgs

$ ros2 pkg list | grep rtabmap
rtabmap_conversions
rtabmap_demos
rtabmap_examples
rtabmap_launch
rtabmap_msgs
rtabmap_odom
rtabmap_python
rtabmap_ros
rtabmap_rviz_plugins
rtabmap_slam
rtabmap_sync
rtabmap_util
rtabmap_viz

rtabmap 命令

核心运行与可视化工具

  • rtabmap
    • 介绍:RTAB-Map 的官方图形界面(GUI)主程序。你可以通过它直接连接相机建图、导入数据集、查看 3D 点云拼接效果以及进行在线实时 SLAM。
  • rtabmap-console
    • 介绍:RTAB-Map 的纯命令行控制台版本(无图形界面)。适合跑在没有显示器的机器人、服务器或树莓派上,在后台默默进行建图并保存数据库。
  • rtabmap-odometryViewer
    • 介绍:纯里程计可视化工具。如果你只想单独测试视觉里程计(VO)或轮式里程计的轨迹漂移情况,而不进行后端的全局建图与回环检测,用这个工具观察最轻量。
  • rtabmap-lidar_viewer
    • 介绍:一个简易的 3D 激光雷达(LiDAR)点云数据查看器,主要用来快速预览采集到的激光点云文件。

数据集与相机驱动输入工具(包含你遇到的问题核心)

  • rtabmap-rgbd_dataset
    • 介绍重点工具。专门用来离线读取、回放和处理各大公开 RGB-D 数据集(如 TUM、EuroC、ICL-NUIM)的命令行工具。你之前遇到的 rgb_sync 命名要求,正是由这个工具的内部解析机制决定的。
  • rtabmap-rgbd_camera
    • 介绍:相机硬件测试驱动。无需打开庞大的主界面,直接在终端调用它即可快速验证你的外接硬件相机(如 Intel RealSense、Stereolabs ZED、Orbbec 等)能否被系统正常读取并输出图像。
  • rtabmap-camera
    • 介绍:普通的普通单目/普通普通相机读取工具。
  • rtabmap-kitti_dataset
    • 介绍:专门针对自动驾驶领域大名鼎鼎的 KITTI 室外双目/激光雷达数据集的专用读取与回放工具。
  • rtabmap-dataRecorder
    • 介绍:数据录制器。用于把相机捕捉到的 RGB 图像、深度图、时间戳等原始数据直接录制保存为一个特定的 .db 文件,方便后续做离线 SLAM 实验。

数据库维护与离线后期优化工具(核心亮点)

  • rtabmap-databaseViewer
    • 介绍极为常用的工具。专门用来分析建图结束后保存的 .db 数据库。你可以查看每一帧的视觉特征点匹配、检测被错误关联的回环、手动删除错误的闭环约束,甚至是导出拼好的 3D 模型。
  • rtabmap-recovery
    • 介绍数据库修复工具。当系统异常断电、闪退导致 .db 数据库文件损坏打不开时(你之前遇到的错误弹窗就是它触发的),可以用它尝试将残留的节点数据捞出来修复。
  • rtabmap-reprocess
    • 介绍离线重新处理工具。这是学术研究的神器。如果你用相同的传感器录制了一段数据,修改了提取特征点的算法(比如从 SURF 改成 ORB),可以用它在不重新录制数据的前提下,对数据库里面的数据重新跑一遍 SLAM。
  • rtabmap-globalBundleAdjustment
    • 介绍:全局光束法平差工具(GBA)。在离线状态下对已有的整个 SLAM 轨迹和点云进行高精度的非线性最小二乘优化,用于极大程度地消除长距离漂移。
  • rtabmap-detectMoreLoopClosures
    • 介绍:离线回环再检测工具。建图时有些回环可能因为计算超时漏掉了,在建图结束后运行它,可以让算法花更多的时间去数据库里死磕,强行找出更多隐藏的闭环。

数据导出与分析报告工具

  • rtabmap-export
    • 介绍:数据导出命令行版。可以把数据库里的 3D 点云无损导出为常见的 3D 模型格式(如 .ply, .pcd, .obj),供 MeshLab、CloudCompare 等软件或 3D 打印使用。
  • rtabmap-report
    • 介绍:性能报告生成器。分析数据库并输出详尽的 SLAM 统计图表(包括内存占用变化、每帧计算耗时、回环检测成功率等趋势图),非常适合写论文时拿来当实验图表。
  • rtabmap-info
    • 介绍:快速查看数据库基础信息的命令行工具,比如直接输出数据库里有多少个关键帧、有没有包含三维重构数据、文件大小等。

其他辅助小工具

  • rtabmap-calibration
    • 介绍:相机标定/校准工具。用于标定单目、双目或 RGB-D 相机的内参以及彩色镜头与红外镜头之间的外参,生成 SLAM 算法需要的 yaml 标定文件。
  • rtabmap-cleanupLocalGrids
    • 介绍:用于清理和重构栅格地图(Grid Map)的局部冗余数据。
  • rtabmap-extractObject
    • 介绍:基于 3D 边界框或点云分割,从已经建好的三维地图中强行提取出某一个特定物体的点云数据。
  • rtabmap-res_tool & rtabmap-res_tool-0.3.0
    • 介绍:资源管理与分辨率缩放的内部辅助小工具。

TUM_RGB-D 数据集

TUM RGB-D 数据集是由慕尼黑工业大学(Technical University of Munich)计算机视觉实验室发布的一个极为经典的 SLAM(同时定位与地图构建)评测基准。自2012年发布以来,它成为了评估 RGB-D SLAM(彩色+深度相机) 算法(如 ORB-SLAM2/3、RTAB-Map、ElasticFusion 等)性能的行业事实标准。

1. Freiburg 1 系列 (fr1):标准室内与基础测试

特点:使用第一代 Kinect 采集,视角较窄,深度图噪点相对较大。

压缩包文件名 场景内容 核心测试目的 / 算法难点 推荐测试阶段 / 难度
rgbd_dataset_freiburg1_xyz.zip 纯手持前后左右平移 测试视觉里程计(VO)的最基础平移计算,排除旋转干扰。 入门冒烟测试 ★☆☆☆☆
rgbd_dataset_freiburg1_rpy.zip 原地手持翻滚、俯仰、偏航(旋转) 测试算法在无平移、纯旋转下的退化表现(特征点容易跟丢)。 基础功能测试 ★★☆☆☆
rgbd_dataset_freiburg1_desk.zip 典型的办公桌环境(显示器/书本/键盘) 最经典的通用基准测试。评估算法在纹理、结构丰富环境下的综合表现。 核心性能评估 ★★★☆☆
rgbd_dataset_freiburg1_room.zip 相机在整个房间绕行一大圈回到原点 专门用来测试算法的回环检测(Loop Closure)与全局后端优化能力。 闭环能力测试 ★★★★☆
rgbd_dataset_freiburg1_floor.zip 相机对着地面移动 弱纹理、高重复性环境,测试算法在视觉特征缺失时的鲁棒性。 极端环境测试 ★★★★☆

rgbd_dataset_freiburg1_room

rgbd_dataset_freiburg1_room

2. Freiburg 2 系列 (fr2):长距离与机器人搭载

特点:使用 Asus Xtion 采集,图像质量较高,运动多由 Pioneer 先锋轮式机器人底盘驱动(Z轴稳定)。

压缩包文件名 场景内容 核心测试目的 / 算法难点 推荐测试阶段 / 难度
rgbd_dataset_freiburg2_xyz.zip 机器人底盘驱动的纯平移 Fr2 传感器下的平移基准线数据。 入门冒烟测试 ★☆☆☆☆
rgbd_dataset_freiburg2_desk.zip 办公桌环境(对照 fr1_desk) 用于对比不同传感器(Kinect vs Xtion)在相似场景下的算法表现。 核心性能评估 ★★★☆☆
rgbd_dataset_freiburg2_large_with_loop.zip 大范围工业大厅,轨迹最终闭合 评估算法在长距离运动下的累积误差消除与大范围回环能力。 对照组实验(优) ★★★★☆
rgbd_dataset_freiburg2_large_no_loop.zip 大范围工业大厅,单向推算不闭合 与上一个数据集形成完美对照,用于量化“回环检测”对算法精度的绝对贡献 对照组实验(劣) ★★★☆☆
rgbd_dataset_freiburg2_360_kidnap.zip 快速360度旋转,中途故意遮挡相机 魔鬼测试。遮挡模拟了机器人被“绑架”跟丢,测试算法的重定位功能 鲁棒性终极挑战 ★★★★★
rgbd_dataset_freiburg2_pioneer_360.zip 机器人原地360度剧烈转圈 测试算法在遭遇高角速度、画面剧烈模糊时的帧间匹配能力。 抗晃动测试 ★★★★☆
rgbd_dataset_freiburg2_pioneer_slam.zip 机器人搭载,长距离室内探索(标准版) 贴近真实的 AGV/扫地机导航场景,评估里程计在平面运动下的实用性。 机器人落地测试 ★★★☆☆
rgbd_dataset_freiburg2_pioneer_slam2.zip 机器人长距离探索(序列二) 变换了行进路线和局部障碍物,用于验证算法的泛化性。 迭代验证测试 ★★★☆☆
rgbd_dataset_freiburg2_pioneer_slam3.zip 机器人长距离探索(序列三) 进一步改变光照和运动轨迹,多用于多地图拼接或连续建图测试。 迭代验证测试 ★★★☆☆

rgbd_dataset_freiburg2_pioneer_slam

3. Freiburg 3 系列 (fr3):视觉与结构退化控制(写论文核心)

特点:严格控制环境中的“3D几何结构”和“视觉纹理”两大变量,专门暴露各类 SLAM 的物理死穴。

压缩包文件名 几何结构 (Structure) 视觉纹理 (Texture) 相机距离 / 测试目的与难点 推荐测试阶段 / 难度
fr3_nostructure_notexture_far.zip ❌ 无(平整表面) ❌ 无(白墙) 远距离。地狱场景,视觉特征点和点云配准全部失效,测试算法何时崩溃。 极限边缘测试 ★★★★★
fr3_nostructure_notexture_near_withloop.zip ❌ 无(平整表面) ❌ 无(白墙) 近距离(含回环)。特征全无,由于距离近,仅靠极其微弱的红外噪点或回环硬撑。 极限边缘测试 ★★★★★
fr3_nostructure_texture_far.zip ❌ 无(平整平面) 有(贴满海报) 远距离。平面海报,纯视觉(如 ORB)的乐园,但 3D 建图(如 ICP)由于缺乏起伏会退化。 纯视觉算法评测 ★★☆☆☆
fr3_nostructure_texture_near_withloop.zip ❌ 无(平整平面) 有(贴满海报) 近距离(含回环)。测试在完美的二维像素特征下,全局后端优化的极限对齐精度。 算法精度上限测试 ★★☆☆☆
fr3_structure_notexture_far.zip 有(白漆楼梯/方块) ❌ 无(全是纯白) 远距离。直接法/光流 SLAM 的噩梦,但却是 RGB-D/点云 SLAM 的天堂(全靠深度图配准)。 深度图配准评估 ★★★★☆
fr3_structure_notexture_near.zip 有(白漆楼梯/方块) ❌ 无(全是纯白) 近距离。眼睛看是一片白,但深度图凹凸有致。用来测试纯几何里程计(如 Point-to-Plane ICP)。 几何里程计测试 ★★★☆☆
fr3_structure_texture_far.zip 有(杂物台阶) 有(丰富色彩) 远距离。理想环境。但远距离导致第一代相机的深度数据噪点呈指数级上升,测试去噪能力。 综合抗噪测试 ★★★☆☆
fr3_structure_texture_near.zip 有(杂物台阶) 有(丰富色彩) 近距离。完美教科书环境。视觉特征无限,深度极其精准,用来跑出算法的理论最高精度。 算法上限/基准测试 ★☆☆☆☆

深度相机 Orbbec Gemini 336L

Orbbec Gemini 336L相机

Orbbec Gemini 336L 是奥比中光 Gemini 330 系列中的一款高性能双目3D相机。它最大的特点是,在 Gemini 335L 的优异性能基础上,通过过滤可见光来增强主动红外成像,从而在强光、反光等复杂光照条件下,也能输出稳定、精准的深度图像

如何打开相机

OrbbecSDK

OrbbecSDK_v2