跳到主要内容 ORB-SLAM3 开源视觉与视觉惯性 SLAM 库详解 | 极客日志
C++ AI 算法
ORB-SLAM3 开源视觉与视觉惯性 SLAM 库详解 ORB-SLAM3 是由 UZ-SLAMLab 开发的开源实时 SLAM 库,支持单目、双目、RGB-D 相机及针孔与鱼眼模型。核心功能包括视觉惯性深度融合、多地图系统(Atlas)、改进的特征处理与匹配、增强闭环检测等。适用于无人机导航、AR 定位、自动驾驶、服务机器人等场景。需配置 Ubuntu 环境,依赖 OpenCV、Eigen3 等库,并提供 ROS 节点支持。
PentesterX 发布于 2026/3/30 更新于 2026/4/13 1 浏览简介
ORB-SLAM3 是由 UZ-SLAMLab 开发的开源实时 SLAM(Simultaneous Localization And Mapping,同时定位与建图)库,于 2021 年 12 月 22 日发布 V1.0 版本。作为 ORB-SLAM 系列的最新演进,它是首个能够使用单目、双目和 RGB-D 相机,结合针孔与鱼眼镜头模型,执行视觉、视觉惯性及多地图 SLAM 的实时库。在各类传感器配置下,ORB-SLAM3 均展现出与文献中最佳系统相当的鲁棒性,并在精度上显著超越。该项目不仅为学术界提供了强大的研究基准,也为工业界提供了可直接部署的高精度定位与建图解决方案。
多模态融合 :首次统一支持纯视觉、视觉惯性及多地图 SLAM
传感器全面 :兼容单目、双目、RGB-D 相机,支持针孔与鱼眼模型
精度领先 :在多个标准数据集上实现当前最高的定位精度
实时性能 :在普通计算机上即可实现实时处理
技术定位 :ORB-SLAM3 代表了视觉 SLAM 技术的前沿水平,通过引入惯性测量单元(IMU)融合和多地图系统,解决了长期运行中的尺度漂移、累积误差和场景变化适应等关键挑战。其开源特性促进了整个 SLAM 领域的技术进步与应用普及。
主要功能
1. 视觉 - 惯性 SLAM 深度融合 ORB-SLAM3 实现了视觉与惯性测量的紧密耦合,通过创新的惯性初始化方法,快速准确地估计尺度、重力方向、速度及 IMU 偏差。系统采用最大后验概率估计,在初始化阶段仅使用惯性测量进行优化,确保视觉 - 惯性融合的稳定性和准确性。这种深度融合使系统在快速运动、纹理缺失或动态干扰等挑战性场景中仍能保持鲁棒跟踪。
2. 多地图系统(Atlas) 引入基于位置识别的多地图管理系统,能够创建并管理多个独立子地图。当系统检测到已访问区域时,自动进行地图合并;当跟踪丢失时,创建新的子地图。这种机制支持长期、大规模环境下的连续运行,有效解决了传统 SLAM 系统在长时间运行后因累积误差导致的地图不一致问题。系统能够智能地在不同子地图间切换,实现无缝导航体验。
3. 相机模型扩展支持 除了传统的针孔相机模型,ORB-SLAM3 新增对鱼眼镜头模型的支持,特别适用于广角视觉系统。鱼眼模型处理大幅度的图像畸变,扩展了系统的适用场景,如无人机、车载环视系统等需要大视野的应用。系统提供统一的接口处理不同相机模型,用户只需在配置文件中指定相应参数即可切换。
4. 改进的特征处理与匹配 基于 ORB(Oriented FAST and Rotated BRIEF)特征,系统在特征检测、描述和匹配环节进行了多项优化。采用多尺度金字塔策略处理不同距离的特征,增强尺度不变性。改进的特征匹配算法在保持实时性的同时提高匹配准确性,特别是在低纹理或重复纹理区域。系统支持在线图像校正,处理原始相机输入。
5. 增强的闭环检测与重定位 集成改进的 DBoW2 位置识别系统,支持视觉词袋的快速场景匹配。闭环检测模块能够准确识别已访问场景,触发全局优化以校正累积误差。重定位功能在跟踪失败后通过查询关键帧数据库快速恢复相机位姿,提高系统鲁棒性。支持多地图间的跨地图位置识别,实现子地图的智能合并。
6. 分层优化架构 采用三层优化策略:短期跟踪的运动估计、中期局部地图的束调整、长期闭环后的全局优化。局部束调整优化当前关键帧及其共视关键帧,确保局部一致性;全局束调整在闭环检测后优化整个地图,保证全局精度。优化过程使用 g2o 图优化库,最小化重投影误差和惯性测量误差。
7. ROS 全节点支持 提供完整的 ROS(Robot Operating System)节点,支持单目、单目惯性、双目、双目惯性及 RGB-D 相机的实时处理。ROS 节点便于与机器人系统的其他组件集成,如路径规划、控制模块和传感器融合。节点支持在线图像校正和 CLAHE 直方图均衡化(主要用于 TUM-VI 数据集)。
安装与配置
环境要求
推荐 Ubuntu 16.04 或 18.04,其他平台也可编译
需要 C++11 或 C++0x 编译器支持
建议使用性能较强的计算机(如 i7 处理器)以确保实时性能
Pangolin :用于可视化和用户界面,需从 GitHub 下载安装
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)
安装步骤 确保系统已安装必要的开发工具和编译器。更新软件包列表,安装 CMake、Git 等构建工具。检查 C++ 编译器版本,确保支持 C++11 标准。
安装 Pangolin:从 GitHub 克隆仓库,创建构建目录,编译安装。安装 OpenCV:可从源码编译或使用包管理器安装。安装 Eigen3 线性代数库:通常可通过包管理器直接安装。安装 Python 开发库:sudo apt install libpython2.7-dev(Ubuntu)或使用系统预装版本(macOS)。
克隆 ORB-SLAM3 仓库到本地:git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3。进入项目目录:cd ORB_SLAM3。设置脚本执行权限:chmod +x build.sh。运行构建脚本:./build.sh。构建过程将编译第三方库和 ORB-SLAM3 核心库,生成共享库文件和可执行示例。
如需使用 ROS 功能,需要将 Examples/ROS/ORB_SLAM3 路径添加到 ROS_PACKAGE_PATH 环境变量中。编辑.bashrc 文件,添加相应的导出语句。运行 ROS 构建脚本:chmod +x build_ros.sh && ./build_ros.sh。构建成功后,将生成相应的 ROS 节点。
配置说明 ORB-SLAM3 需要相机标定参数文件,这些文件定义了相机的内参、畸变系数和传感器配置。项目为 EuRoC 和 TUM-VI 数据集提供了预配置的标定文件。用户处理自己的数据时需要创建相应的标定文件,可参考 Calibration_Tutorial.pdf 教程。
系统使用预训练的 ORB 词汇表进行位置识别,文件位于 Vocabulary/ORBvoc.txt。这个词汇表包含了 ORB 特征的视觉单词,用于快速图像匹配和闭环检测。词汇表文件较大,但只需加载一次。
用户可以根据具体应用调整系统参数,如特征数量、关键帧选择阈值、IMU 噪声参数等。这些参数影响系统的性能和精度,需要根据场景特点进行优化。配置文件采用 YAML 格式,便于阅读和修改。
如何使用
基本工作流程 确保所有依赖库已正确安装并配置。如果使用 ROS,确保 ROS 环境已正确设置。准备输入数据,可以是数据集文件或实时相机流。
下载 EuRoC 数据集序列(ASL 格式)。修改项目根目录下的"euroc_examples.sh"脚本,将 pathDatasetEuroc 变量指向数据集解压目录。执行脚本处理所有序列的所有传感器配置:./euroc_examples。评估轨迹精度:./euroc_eval_examples计算 RMS ATE(绝对轨迹误差)。
下载 TUM-VI 数据集。修改"tum_vi_examples.sh"脚本,将 pathDatasetTUM_VI 变量指向数据集目录。执行脚本处理所有序列:./tum_vi_examples。评估漂移误差:./tum_vi_eval_examples计算序列结束时的漂移。
实时相机处理 项目提供了针对 Intel RealSense T265 和 D435i 相机的示例程序。对于 D435i 双目惯性相机,运行:./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml。用户可根据自己的相机型号修改相应示例。
校准相机并创建标定文件(参考 Calibration_Tutorial.pdf)。修改提供的演示程序以适应特定相机模型。构建修改后的程序。连接相机并运行 ORB-SLAM3。
ROS 实时处理 对于单目输入话题/camera/image_raw,运行节点:rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE。
对于单目图像话题/camera/image_raw和惯性话题/imu,运行:rosrun ORB_SLAM3 Mono_Inertial PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE [EQUALIZATION]。可选第三个参数为 true 时应用 CLAHE 均衡化。
对于双目输入话题/camera/left/image_raw和/camera/right/image_raw,运行:rosrun ORB_SLAM3 Stereo PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION。对于鱼眼相机模型,无需在线校正。
对于双目图像和惯性输入,运行:rosrun ORB_SLAM3 Stereo_Inertial PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION [EQUALIZATION]。
对于 RGB-D 输入话题/camera/rgb/image_raw和/camera/depth_registered/image_raw,运行:rosrun ORB_SLAM3 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE。
下载 EuRoC 数据集的 rosbag(如 V1_02_medium.bag)。打开三个终端标签页,分别运行:roscore、rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml true、rosbag play --pause V1_02_medium.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu。加载词汇表后,在 rosbag 标签页按空格键开始播放。
性能分析 在 include/Config.h 文件中取消注释 #define REGISTER_TIMES,激活时间测量功能。执行后,终端将显示时间统计信息,并存储在 ExecTimeMean.txt 文件中。这些数据有助于分析系统各模块的计算开销,指导性能优化。
应用场景实例
实例 1:无人机自主导航与建图 场景描述 :无人机在复杂环境中执行巡检、测绘或搜救任务,需要精确的自主导航能力。传统 GPS 在室内或城市峡谷中不可靠,视觉惯性 SLAM 提供补充定位方案。
解决方案 :在无人机上部署 ORB-SLAM3 系统,使用双目惯性相机作为主要传感器。视觉惯性融合提供准确的 6 自由度位姿估计,即使在快速机动或短暂视觉遮挡时也能保持稳定跟踪。多地图系统支持大规模环境探索,当无人机返回基站时自动合并子地图。鱼眼镜头模型适用于广角视野,增强环境感知能力。
导航精度显著提高,视觉惯性融合减少累积误差
环境适应性增强,在 GPS 拒止区域仍能可靠工作
建图效率提升,多地图系统支持分段探索与自动合并
任务灵活性扩展,支持长期、大规模环境作业
实例 2:增强现实设备空间定位 场景描述 :AR 眼镜或手机 AR 应用需要将虚拟内容准确叠加到真实世界,传统基于标记或 IMU 的方法存在漂移问题,影响用户体验。
解决方案 :集成 ORB-SLAM3 为 AR 设备提供稳定的视觉惯性定位。单目惯性配置在资源受限的移动设备上实现高效运行。系统实时构建稀疏特征地图,为虚拟内容提供空间锚点。闭环检测纠正长期漂移,确保虚拟对象稳定锚定。重定位功能在设备重新进入场景时快速恢复位姿。
定位稳定性大幅提高,视觉惯性融合抑制 IMU 漂移
用户体验显著改善,虚拟内容抖动问题得到解决
启动速度加快,重定位支持快速场景识别
交互自然性增强,支持大范围移动和复杂手势
实例 3:自动驾驶车辆环境感知 场景描述 :自动驾驶汽车需要精确理解周围环境,包括静态结构和动态物体。高精度地图维护成本高,视觉 SLAM 提供实时环境建模能力。
解决方案 :将 ORB-SLAM3 集成到自动驾驶感知系统。双目惯性配置提供准确的尺度估计和运动状态。系统实时构建周围环境地图,识别道路特征、交通标志和障碍物。多地图系统支持城市级规模建图,不同车辆的地图可共享融合。视觉惯性融合增强在隧道、桥梁等 GNSS 受限区域的定位能力。
环境感知能力增强,视觉提供丰富的语义和几何信息
定位冗余性提高,多传感器方案增加系统安全性
地图更新效率优化,众包建图支持实时地图维护
成本效益改善,视觉系统补充昂贵传感器阵列
实例 4:服务机器人长期自主运行 场景描述 :商场导购、酒店服务或家庭助理机器人需要在动态环境中长期自主运行。传统 SLAM 系统在长时间运行后因累积误差导致地图不一致,影响导航可靠性。
解决方案 :部署 ORB-SLAM3 的多地图系统,支持机器人的长期自主运行。当环境发生显著变化(如家具移动、装饰更新)时,系统创建新的子地图。基于位置识别的地图合并机制确保全局一致性。视觉惯性配置增强在人员密集区域的跟踪鲁棒性。RGB-D 支持提供更丰富的环境信息。
长期运行稳定性提高,多地图系统适应环境变化
导航可靠性增强,闭环检测纠正累积误差
人机交互改善,准确位姿支持自然导引
维护成本降低,软件更新优于硬件改造
实例 5:工业检测与维护 场景描述 :工厂设备巡检、管道检测或结构健康监测需要精确的 3D 记录和缺陷定位。传统方法依赖预先布置的标记或高精度测量设备,部署复杂。
解决方案 :使用搭载 ORB-SLAM3 的移动检测平台。双目惯性系统在复杂工业环境中提供稳定的位姿估计。系统构建设备或结构的精确 3D 模型,标注检测位置。多会话建图支持大型设施的分布检测,数据自动对齐。鱼眼镜头适用于狭窄空间的全景记录。
检测效率大幅提高,实时建图指导完整覆盖
定位精度保证,视觉惯性融合提供亚厘米级精度
数据一致性增强,多会话建图支持分布式作业
部署灵活性改善,无需预先布置标记
实例 6:虚拟制作与影视特效 场景描述 :影视制作中需要将虚拟特效准确合成到实拍场景,传统基于标记点的方法限制摄像机运动,影响创作自由度。
解决方案 :在摄影机上安装惯性测量单元和相机,运行 ORB-SLAM3 实时跟踪摄像机运动。视觉惯性融合提供平滑准确的 6 自由度轨迹,支持自由运动拍摄。系统构建拍摄场景的稀疏地图,为特效合成提供空间参考。实时位姿输出驱动虚拟摄像机,实现精确的虚实合成。
拍摄自由度扩展,支持复杂摄像机运动
合成精度提高,视觉惯性跟踪减少位置误差
制作效率提升,实时位姿支持现场预览
创作灵活性增强,减少对标记点的依赖
GitHub 地址
⭐ Stars:持续增长中,是视觉 SLAM 领域最受欢迎的开源项目之一
📄 许可证:GPLv3 开源许可证,商业使用需联系作者获取闭源版本
💻 主要语言:C++
📅 最新版本:V1.0(2021 年 12 月 22 日)
ORB-SLAM3 论文 :"ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM",IEEE Transactions on Robotics,2021 年
IMU 初始化论文 :"Inertial-Only Optimization for Visual-Inertial Initialization",ICRA 2020
ORBSLAM-Atlas 论文 :"ORBSLAM-Atlas: a robust and accurate multi-map system",IROS 2019
ORBSLAM-VI 论文 :"Visual-inertial monocular SLAM with map reuse",IEEE Robotics and Automation Letters,2017 年
ORB-SLAM2 论文 :"ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras",IEEE Transactions on Robotics,2017 年
ORB-SLAM 论文 :"ORB-SLAM: A Versatile and Accurate Monocular SLAM System",IEEE Transactions on Robotics,2015 年(获 2015 IEEE Transactions on Robotics 最佳论文奖)
DBoW2 位置识别论文 :"Bags of Binary Words for Fast Place Recognition in Image Sequences",IEEE Transactions on Robotics,2012 年
完整源码 :核心 SLAM 系统实现
示例程序 :EuRoC、TUM-VI 数据集处理示例,RealSense 相机示例
ROS 节点 :实时相机处理节点
词汇表文件 :预训练的 ORB 视觉词汇表
标定文件 :常用数据集的相机标定参数
文档资料 :安装指南、使用说明、校准教程、依赖列表
评估脚本 :轨迹精度计算工具
安装依赖:Pangolin、OpenCV、Eigen3
克隆仓库:git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
构建项目:cd ORB_SLAM3 && chmod +x build.sh && ./build.sh
运行示例:处理 EuRoC 或 TUM-VI 数据集
集成相机:校准相机并修改示例程序
ROS 集成:构建 ROS 节点并运行实时处理
ORB-SLAM3 构建了完整的视觉惯性 SLAM 技术栈:
传感器融合 :视觉与惯性测量的紧密耦合
地图管理 :多地图系统的创建、合并与切换
位置识别 :基于 DBoW2 的快速场景匹配
优化框架 :基于 g2o 的分层非线性优化
相机模型 :针孔与鱼眼模型的统一处理
可视化 :基于 Pangolin 的实时 3D 显示
ORB-SLAM3 通过其创新的多地图系统和视觉惯性深度融合,将 SLAM 技术推向新的高度。无论是学术研究中的算法验证、工业应用中的高精度定位,还是教育领域的技术教学,这个项目都展现了卓越的价值。其清晰的架构设计和完整的文档支持,使得研究人员能够深入探索 SLAM 前沿,开发者能够快速集成到实际系统中。随着机器人、自动驾驶、增强现实等领域的快速发展,ORB-SLAM3 将继续在精确空间感知与定位方面发挥关键作用,推动整个行业的技术进步与应用创新。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown 转 HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online