0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

视觉SLAM开源算法ORB-SLAM3原理与代码解析

INDEMIND 来源:INDEMIND 2023-11-09 17:25 次阅读

ORB-SLAM最早的版本在2014年的RSS上发布,在2016年作者又发布了ORB-SLAM2,接着在2020年发布了ORB-SLAM 3。ORB-SLAM1只能针对单目相机数据进行处理;ORB-SLAM 2 增加了对于双目和RGB-D相机的处理,在回环检测模块增加了Full Global BA的处理;ORB-SLAM 3则增加了对于IMU融合的支持,兼容鱼眼相机模型,并且增加了Altas多地图的支持;同时,回环检测为了支持多地图的模式,提供了一种叫Welding BA的优化方式。ORB -SLAM的作者将上述提到的各版本项目都开源了,为学术研究还是工程落地都提供了很好的参考。

01

基础概念

首先来介绍一下ORB SLAM中涉及的一些基础概念。

帧&关键帧:视觉SLAM都是对一个图像序列进行处理,每一张图像被称为帧,而关键帧则是通过一定筛选机制得到的、具有一定代表性的图像帧。

地图点/路标点:将图像上被观察到的特征点通过三角化等方式进行深度恢复,我们就可以得到其对应的在三维空间的位置,同时包含帧的观测信息,这种点就被称为地图点或路标点。

共视:当一个地图点被多帧观察到时,我们就可以称这几帧有基于该地图点的共视关系。

共视图&本质图:我们可以把共视关系作用边表示,关键帧用节点表示,就可以建立共视图,而本质图在共视图基础上只保留具有较强共视关系的边。

d37f29b6-7ee0-11ee-939d-92fbcf53809c.png

Altas(地图集):ORB-SLAM 3提供了多地图的存储和拼接功能,在跟踪丢失后可以尝试将现有地图和历史地图进行匹配、融合,并更新当前的活跃地图(Active Map)。

数据关联:在语义SLAM中,第k帧检测到物体Obj1、Obj2,第k+1帧检测到物体Obj3、Obj4,确定Obj1和Obj3、Obj4中的哪一个是对真实世界中同一个物体的多次观测,这是数据关联的一个直观例子。在间接法(特征法)SLAM中,表现为不同帧中的特征,哪些是对应于同一个空间路标点/地图点的。在ORB3中考虑到的数据关联包括短期内滑动窗口中关键帧观测到的路标点和图像特征的数据关联;中期的数据关联是指图像特征与局部地图点的关联;长期的数据关联包括利用场景识别技术和词袋模型,在回环检测、重定位等过程中的数据关联;而多地图的数据关联还可以实现地图之间地图点的匹配和融合。

ORB-SLAM 3的基本流程和此前的ORB版本没有显著的改变,只是也增加了部分新特性。基于词袋模型的关键帧数据和之前差不多,每一个关键帧均会被存入数据库用于回环检测。地图结构上进行了改进,ORB-SLAM3使用Altas地图集的结构,地图中包含一个Active Map和若干个Non-active Map,每个Map均包括地图点,关键帧,共视图,Spanning Tree等信息。跟踪线程添加了IMU的积分,并且和以前一样进行关键帧的判断和构造;在LocalMapping线程中中执行IMU的初始化,以及和之前相同的冗余关键帧和地图点剔除、新地图点的创建等工作;在回环检测部分主要添加了多地图的融合。

d39219c2-7ee0-11ee-939d-92fbcf53809c.png

ORB-SLAM 3框架

总结一下,ORB-SLAM3的贡献包括:

1、提供了一个单双目VI-SLAM的系统;

2、改善召回率的场景识别技术;

3、多地图机制;

4、抽象的相机表示。

02

抽象相机模型介绍

为什么ORB-SLAM3需要一个抽象的相机模型呢?

相比于传统相机,鱼眼相机超过180度的广视角可以获取更多的信息,但是因为它不符合针孔模型数学建模的假设,导致uniform reprojection error的假设失效;如果对于图像直接进行裁剪,将会导致外围图像丢失,反而丧失了鱼眼相机大视角的优势。在ORB-SLAM3中,相机成像模型提供投影、反投影和相关的雅克比计算等函数,并且将此前系统中的EPNP更换为MAP-PNP, 从而实现了相机成像模型与SLAM部分的解耦,还可以扩展,能将相同的SLAM pipeline用于大部分类型的相机。

此外,针对双目相机模型,ORB-SLAM3也提供了一定的改善。ORB-SLAM2假设我们针对双目相机预先进行了极线矫正,但是很多时候由于无法保证左右目相机光轴的绝对平行,极线矫正的效果也往往不好;而有些时候,我们需要使用两个参数不同的相机进行观测,而ORB-SLAM2无法兼容这类双目相机,如类似RGB-D相机中焦距、分辨率相差巨大的彩色相机+近红外相机,如果将彩色图像和近红外图像组成双目图像,ORB-SLAM2无法综合利用这对图像估计相机位姿。在ORB-SLAM3中将左右两目相机视作为具有固定位姿变换的两台单目相机使用,并且也不再限制两台相机必须具有足够面积的、重叠的共视区域,解决了这个问题。

03

VISLAM实现和IMU初始化

ORB-SLAM3中VI-SLAM在ORB-SLAM-VI上进行了改进,包括:提供快速,准确的IMU初始化;支持单双目VI-SLAM;支持针孔/鱼眼相机模型。在视觉和IMU融合方面,ORB-SLAM3在位姿求解时所建立优化问题的残差项,包括所有关键帧和上一帧IMU估计的残差项,以及所有路标点观测的视觉误差项。其中针对视觉路标点的观测,为了避免错误匹配造成的极端值的影响,嵌套了鲁棒核函数。

IMU初始化的目的是为了得到Body系速度、重力方向和IMU偏置。ORB-SLAM3中初始化流程的设计建立在作者的几点思考上:

1、ORB-SLAM纯单目已经可以初始化得到精确的地图,尺度信息可以通过IMU得到;双目图像输入下则尺度客观,可以不考虑尺度信息的问题;

2、如果将尺度单独作为优化变量进行表示和优化,效果比在BA中的隐式表达收敛更快;

3、IMU初始化过程中必须考虑传感器的不确定性,否则会产生难以预测的巨大误差。

接下来的讨论IMU初始化问题时,均指单目输入时的初始化。ORB3中IMU初始化的步骤包含三步,第一步是纯视觉最大后验估计(MAP),第二步是纯惯性MAP,第三步是视觉+惯性MAP。针对纯视觉MAP,我们提取初始化后2s内10帧图像进行纯视觉BA,从而得到没有尺度信息的相机位姿和路标点位置。接下来我们进行只有IMU参与的初始化,最终得到的优化结果是:帧位姿、速度和地图点,并都具有正确的尺度;Body系Z轴将被旋转到和重力方向一致;IMU的偏置被更新。第三步是视觉IMU联合后验估计,ORB-SLAM3只需要2秒就可以完成尺度的初始化,误差在5%左右,此外,ORB-SLAM3还将进行只包含尺度因子和重力方向的优化,10秒一次,用于避免传感器运动缓慢时IMU激励不够的情况。

ORB-SLAM3中的跟踪和建图和ORB-SLAM-VI类似,在短期跟丢后,在满足一定条件时会尝试利用IMU积分得到的位姿信息进行重定位;当丢失持续一定时间后,将会重新初始化,创建新的Active map。

04

改进的回环检测与多地图融合

这一部分的内容很大程度上和ORB-SLAM2是相同的,我们首先来回顾一下基本概念。

准确率(PrecisionRate):检测到的回环中正确的比率。

召回率(RecallRate):检测到的回环占总真实回环数的比率。

在ORB-SLAM1/2中,仅通过DBoW词袋数据库就可实现50%~80%的准确率和召回率。在回环时,通过增加几何一致性和时间一致性检验,牺牲召回率来增加准确率。ORB-SLAM3改进了回环检测的速度,提高了召回率,并且增加了多地图的部分。

寻找闭环帧的过程可以分为六步:

1.针对每一个新关键帧,在数据库中查询到三个最相似的关键帧;

2.尝试对新关键帧及其共视关键帧,和候选关键帧及其共视关键帧进行数据关联;

3.利用匹配的特征点和地图点求解位姿转换;

4.利用位姿变换的初始估计,进行点云重投影寻找新的匹配,并且进行位姿的优化求精;

5.对时间一致性的检验,此前的步骤相对复杂,在ORB-SLAM3中局部地图里面已有关键帧的共视信息进行判断;

6.利用重力方向对于回环结果进行检查。

回环检测后是进行回环还是地图合并,取决于当前关键帧检测到的回环关键帧是在当前的active map还是在其他map。当对non-active map和active map进行融合时,共视图和本质图同步更新,active map中的信息被追加到历史地图中,匹配到的non-active map变成新的map。

05

总结

总体来说,ORB-SLAM3的流程和ORB-SLAM1/2非常相似,对于ORB-SLAM系列熟悉的同学应该很容易上手;相机模型的抽象处理,使得SLAM位姿求解过程和相机成像模型解耦,理论上支持绝大多数成像模型的相机;通过对于IMU的支持,ORB-SLAM系列加入了VI-SLAM的大家庭,也表明多传感器融合的SLAM是目前一大发展趋势;多地图的机制有利于跟丢后保留尽可能多的信息用于后续补救,也为后续实现多机器协同的SLAM提供了工作基础。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4484

    浏览量

    91339
  • 图像
    +关注

    关注

    2

    文章

    1072

    浏览量

    40131
  • SLAM
    +关注

    关注

    22

    文章

    399

    浏览量

    31640

原文标题:干货丨视觉SLAM开源算法ORB-SLAM3 原理与代码解析

文章出处:【微信号:gh_c87a2bc99401,微信公众号:INDEMIND】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问用树莓派运行ORB-SLAM2算法可行吗?

    最近想用树莓派3B跑ORB-SLAM2,现在的问题就是Pangolin无法执行,每次执行都报错 Pangolin X11: Unable to retrieve framebuffer
    发表于 03-15 22:30

    SLAM技术的应用及发展现状

    应用行业也可分为两大类,即工业领域和商业领域。商业用途方面,目前应用最为成熟的应该是扫地机行业,而扫地机也算机器人里最早用到SLAM技术这一批了,国内的科沃斯、塔米扫地机、岚豹扫地机通过用SLAM算法
    发表于 12-06 10:25

    视觉SLAM特征点法与直接法对比分析

    视觉SLAM——特征点法与直接法对比以及主流开源方案对比 ORB LSD SVO DSO
    发表于 06-02 16:56

    视觉SLAM笔记总结

    【总结】视觉SLAM笔记整理
    发表于 07-17 14:05

    激光SLAM视觉SLAM有什么区别?

    机器人定位导航中,目前主要涉及到激光SLAM视觉SLAM,激光SLAM在理论、技术和产品落地上都较为成熟,因而成为现下最为主流的定位导航方式,在家用扫地机器人及商用送餐机器人等服务机
    发表于 07-05 06:41

    基于视觉slam自动驾驶

    基于视觉slam自动驾驶,这是我们测试的视频《基于slam算法的智能机器人》调研分析报告项目背景分析机器人曾经是科幻电影中的形象,可目前已经渐渐走入我们的生活。机器人技术以包含机械、
    发表于 08-09 09:37

    激光SLAM视觉VSLAM的分析比较

    什么是激光SLAM视觉VSLAM又是什么?激光SLAM视觉VSLAM有哪些不同之处?
    发表于 11-10 07:16

    机器人SLAM实现

    针对复杂环境下机器人的同时定位与地图构建( SLAM)存在实时性与鲁棒性下降等问题,将一种基于ORB特征点的关键帧闭环检测匹配算法应用到定位与地图构建巾。研究并分析了特征点提取与描述符建立、帧间配准
    发表于 03-26 10:57 6次下载

    ORB-SLAM3ORB-SLAM2相比有哪些优势呢?

    自主导航是机器人基础性和关键性技术,是机器人实现其他更高级任务的前提。视觉 SLAM (Simultaneous Localization And Mapping) 利用视觉传感器获取环境图像信息,基于多视图几何
    的头像 发表于 01-16 10:58 2410次阅读

    OV2SLAM(高速视觉slam)简析

    视觉里程计最近几年越来越受到学术界以及工业界的认可,以ORB和VINS为代表的视觉SLAM已经可以满足绝大多数场景,而OV2SLAM在其他V
    的头像 发表于 03-21 17:16 1039次阅读

    ORB-SLAM3整体流程详解

    ORB-SLAM2相比,ORB-SLAM3在处理大视差和长时间未观测到的场景时效果更好。它还提供了更准确的帧间运动估计和更快的处理速度。
    的头像 发表于 06-19 09:28 2544次阅读
    <b class='flag-5'>ORB-SLAM3</b>整体流程详解

    视觉SLAM开源方案汇总 视觉SLAM设备选型

    SLAM至今已历经三十多年的研究,这里给出经典视觉SLAM框架,这个框架本身及其包含的算法已经基本定型,并且已经在许多视觉程序库和机器人程序
    发表于 08-10 14:15 569次阅读
    <b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b><b class='flag-5'>开源</b>方案汇总 <b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>设备选型

    视觉SLAM是什么?视觉SLAM的工作原理 视觉SLAM框架解读

    近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前
    的头像 发表于 09-05 09:31 2660次阅读
    <b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>是什么?<b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>的工作原理 <b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>框架解读

    基于英特尔开发套件使用ORB-SLAM3实现无人机实时定位

    工业建模对于精度有着高要求,这意味着无人机的 SLAM 算法要提供可靠的实时位姿估计。ORB-SLAM3 是目前融合双目视觉与 IMU 的优秀算法
    的头像 发表于 09-18 10:12 683次阅读
    基于英特尔开发套件使用<b class='flag-5'>ORB-SLAM3</b>实现无人机实时定位

    工程实践中VINS与ORB-SLAM的优劣分析

    ORB-SLAM是一种基于特征的单目视觉SLAM系统,广泛用于实时三维地图构建和机器人定位。该系统使用ORB特征进行高效的视觉识别和地图重建
    的头像 发表于 04-08 10:17 1276次阅读
    工程实践中VINS与<b class='flag-5'>ORB-SLAM</b>的优劣分析