ORB-SLAM3源码分析(案例分析)

发布于:2024-07-06 ⋅ 阅读:(191) ⋅ 点赞:(0)

一、ORB-SLAM3简介

ORB-SLAM3 (Oriented FAST and Rotated BRIEF SLAM 3) 是一种视觉SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)系统,用于机器人和计算机视觉领域。它是ORB-SLAM系列的第三个版本,ORB-SLAM3基于单目、双目和RGB-D摄像头,能够在不同的环境中进行实时的相机定位和稠密地图构建。

ORB-SLAM3的主要特点包括:

  1. 多传感器支持:支持单目、双目和RGB-D相机,这使得系统在不同的应用场景中具有更大的灵活性。
  2. 多线程架构:采用多线程架构,以提高系统的实时性和计算效率。
  3. 关键帧管理:通过关键帧管理系统来维护地图和优化轨迹,确保系统的鲁棒性和准确性。
  4. 回环检测与闭环优化:包括回环检测(Loop Closure)和全局闭环优化(Global Bundle Adjustment),以减少累计误差并提高定位精度。
  5. 稠密地图构建:能够构建稠密点云地图,提供更详细的环境表示。

ORB-SLAM3被广泛应用于机器人导航、增强现实(AR)、无人驾驶汽车等领域,因其精度高、鲁棒性强、实时性能好而受到学术界和工业界的高度关注。

二、ORB-SLAM3源码分析

ORB-SLAM3源码包含多个模块,内容比较多,此处为了方便了解其原理,选择源码中给出的案例库中的Stereo案例进行介绍。ORB-SLAM3官方GitHub地址:https://github.com/UZ-SLAMLab/ORB_SLAM3/tree/master
该案例演示了如何使用立体摄像头设置进行实时同步定位和映射。它展示了系统准确跟踪摄像头位置和构建环境 3D 地图的能力。
在这里插入图片描述
在这里插入图片描述

1.文件分析

源文件主要包含以下:

(1) YAML文件
(2)源代码文件 (.cc)
(3)时间戳文件 (.txt)

其中各种文件的作用如下:

(1)配置文件(YAML)
这些文件配置了不同数据集的参数,包括相机内参、外参和其他必要的SLAM参数:
EuRoC.yaml
KITTI00-02.yaml
KITTI03.yaml
KITTI04-12.yaml
RealSense_D435i.yaml
RealSense_T265.yaml
TUM-VI.yaml

(2)源代码文件
这些是不同数据集的主程序,展示了如何运行Stereo SLAM算法:
stereo_euroc.cc
stereo_kitti.cc
stereo_realsense_D435i.cc
stereo_realsense_t265.cc
stereo_tum_vi.cc

(3)时间戳文件
这些文件包含了不同数据集的时间戳信息,用于同步图像帧:
EuRoC_TimeStamps/ 目录下的时间戳文件
TUM_TimeStamps/目录

2.实现原理

案例实现主要分为以下几个步骤:
(1)初始化
(2)数据读取
(3)特征提取
(4)特征匹配(在左右图像之间匹配ORB特征,计算视差图以获得深度信息)
(5)位姿估计
(6)地图构建
(7)回环检测与闭环优化(检测并处理回环,以减少累计误差并优化地图)

各个主程序文件的作用:

EuRoC 数据集:使用stereo_euroc.cc文件EuRoC.yaml配置文件和相应的时间戳文件进行SLAM操作。
KITTI 数据集:使用stereo_kitti.cc文件,加载KITTI00-02.yaml、KITTI03.yaml或KITTI04-12.yaml配置。
RealSense 数据集:stereo_realsense_D435i.cc或stereo_realsense_t265.cc文件RealSense_D435i.yaml或RealSense_T265.yaml配置。
TUM-VI 数据集:stereo_tum_vi.cc文件TUM-VI.yaml配置文件和相应的时间戳文件进行SLAM操作。

运行不同的主程序文件,加载相应的配置和时间戳文件后,程序会执行如下操作:
(1)读取并同步左右图像。
(2)提取和匹配特征点。
(3)估计相机位姿并构建三维地图。
(4)进行回环检测和闭环优化(如有回环)。

三、运行图

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到