
简介
ORB-SLAM3 是由 UZ-SLAMLab 开发的开源实时 SLAM(Simultaneous Localization And Mapping)库,于 2021 年 12 月发布 V1.0 版本。作为该系列的最新演进,它是首个能够统一使用单目、双目和 RGB-D 相机,结合针孔与鱼眼镜头模型,执行视觉、视觉惯性及多地图 SLAM 的实时系统。
在各类传感器配置下,ORB-SLAM3 均展现出与文献中最佳系统相当的鲁棒性,并在精度上显著超越。它不仅为学术界提供了强大的研究基准,也为工业界提供了可直接部署的高精度定位与建图解决方案。其核心价值在于首次统一支持纯视觉、视觉惯性及多地图 SLAM,兼容多种相机类型,且在普通计算机上即可实现实时处理。
主要功能
1. 视觉 - 惯性 SLAM 深度融合
系统实现了视觉与惯性测量的紧密耦合,通过创新的惯性初始化方法,快速准确地估计尺度、重力方向、速度及 IMU 偏差。采用最大后验概率估计,在初始化阶段仅使用惯性测量进行优化,确保融合的稳定性和准确性。这使得系统在快速运动、纹理缺失或动态干扰等挑战性场景中仍能保持鲁棒跟踪。
2. 多地图系统(Atlas)
引入基于位置识别的多地图管理系统,能够创建并管理多个独立子地图。当检测到已访问区域时自动合并地图;跟踪丢失时则创建新子地图。这种机制有效解决了传统 SLAM 因累积误差导致的地图不一致问题,支持长期、大规模环境下的连续运行与无缝导航。
3. 相机模型扩展支持
除了传统的针孔模型,新增对鱼眼镜头模型的支持,特别适用于广角视觉系统。鱼眼模型能处理大幅度的图像畸变,扩展了无人机、车载环视系统等大视野场景的适用性。系统提供统一接口,用户只需在配置文件中指定参数即可切换。
4. 改进的特征处理与匹配
基于 ORB 特征,系统在检测、描述和匹配环节进行了多项优化。采用多尺度金字塔策略增强尺度不变性,改进的匹配算法在低纹理或重复纹理区域也能保持高准确性。同时支持在线图像校正,处理原始相机输入。
5. 增强的闭环检测与重定位
集成改进的 DBoW2 位置识别系统,支持视觉词袋的快速场景匹配。闭环检测模块准确识别已访问场景,触发全局优化以校正累积误差。重定位功能在跟踪失败后通过查询关键帧数据库快速恢复位姿,支持多地图间的跨地图位置识别。
6. 分层优化架构
采用三层优化策略:短期跟踪的运动估计、中期局部地图的束调整、长期闭环后的全局优化。局部束调整确保局部一致性,全局束调整保证全局精度。优化过程使用 g2o 图优化库,最小化重投影误差和惯性测量误差。
7. ROS 全节点支持
提供完整的 ROS 节点,支持单目、单目惯性、双目、双目惯性及 RGB-D 相机的实时处理。便于与机器人系统的其他组件集成,如路径规划、控制模块和传感器融合。节点支持在线图像校正和 CLAHE 直方图均衡化。
安装与配置
环境要求
- 操作系统:推荐 Ubuntu 16.04 或 18.04,需 C++11 或 C++0x 编译器支持。
- 核心依赖:
- Pangolin:用于可视化和用户界面。
- OpenCV:至少需要 3.0 版本,推荐使用 3.2.0 或 4.4.0。
- Eigen3:线性代数库,g2o 优化库的依赖,至少需要 3.1.0。
- DBoW2 和 g2o:包含在项目 Thirdparty 文件夹中,无需单独安装。
- Python:用于计算轨迹与地面真值的对齐,需要 Numpy 模块。
- ROS:可选,如需使用 ROS 节点,建议 ROS Melodic (Ubuntu 18.04)。

