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

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

3天内不再提示

ORB SLAM中涉及的一些基础概念

新机器视觉 来源:深蓝学院 作者:深蓝学院 2022-10-28 14:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文总结于上交感知与导航研究所科研助理——刘国庆关于【视觉SLAM开源算法ORB-SLAM3 原理与代码解析】的公开课。

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的作者将上述提到的各版本项目都开源了,为学术研究还是工程落地都提供了很好的参考。

1

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

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

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

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

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

19664f5c-5680-11ed-a3b6-dac502259ad0.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的初始化,以及和之前相同的冗余关键帧和地图点剔除、新地图点的创建等工作;在回环检测部分主要添加了多地图的融合。

198b1c38-5680-11ed-a3b6-dac502259ad0.png

ORB-SLAM 3框架

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

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

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

3、多地图机制;

4、抽象的相机表示。

2

抽象相机模型介绍

为什么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中将左右两目相机视作为具有固定位姿变换的两台单目相机使用,并且也不再限制两台相机必须具有足够面积的、重叠的共视区域,解决了这个问题。

3

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。

4

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

这一部分的内容很大程度上和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。

5

总结

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

审核编辑 :李倩

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

    关注

    23

    文章

    4761

    浏览量

    97156
  • SLAM
    +关注

    关注

    24

    文章

    456

    浏览量

    33189
  • orb
    orb
    +关注

    关注

    0

    文章

    21

    浏览量

    10155

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

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    贴片电容精度J±5%的一些详细知识

    贴片电容精度J±5%表示电容的实际值与标称值之间的偏差范围在±5%以内 ,以下是关于贴片电容精度J±5%的一些详细知识: 、精度等级含义 J±5% :字母“J”在贴片电容的标识通常表示标称精度
    的头像 发表于 11-20 14:38 162次阅读
    贴片电容精度J±5%的<b class='flag-5'>一些</b>详细知识

    FPGA和GPU加速的视觉SLAM系统特征检测器研究

    特征检测是SLAM系统中常见但耗时的模块,随着SLAM技术日益广泛应用于无人机等功耗受限平台,其效率优化尤为重要。本文首次针对视觉SLAM流程开展硬件加速特征检测器的对比研究,通过对比现代SoC平台
    的头像 发表于 10-31 09:30 306次阅读
    FPGA和GPU加速的视觉<b class='flag-5'>SLAM</b>系统<b class='flag-5'>中</b>特征检测器研究

    Whetstone代码涉及的浮点指令汇编分析

    对benchmark的whetstone进行代码分析,通过反汇编统计所出现的浮点指令,共有26种,如下 特点是只涉及单精度的浮点指令,并且存在有浮点Load/Store的压缩指令,还有一些伪代码不过不影响
    发表于 10-22 08:11

    种适用于动态环境的自适应先验场景-对象SLAM框架

    由于传统视觉SLAM在动态场景容易会出现严重的定位漂移,本文提出了种新颖的基于场景-对象的可靠性评估框架,该框架通过当前帧质量指标以及相对于可靠参考帧的场景变化,全面评估SLAM
    的头像 发表于 08-19 14:17 646次阅读
    <b class='flag-5'>一</b>种适用于动态环境的自适应先验场景-对象<b class='flag-5'>SLAM</b>框架

    基于深度学习的增强版ORB-SLAM3详解

    ORB-SLAM3虽是当前最先进的SLAM,但由于使用传统的ORB(定向FAST和旋转BRIEF)特征,在尺度、旋转和光照发生显著变化时可能会表现出局限性。
    的头像 发表于 07-14 17:21 1286次阅读
    基于深度学习的增强版<b class='flag-5'>ORB-SLAM</b>3详解

    种适用于动态环境的实时RGB-D SLAM系统

    近期用于视觉SLAM的3D高斯泼溅(3DGS)技术在跟踪和高保真建图方面取得了显著进展。然而,其顺序优化框架以及对动态物体的敏感性限制了其在现实场景的实时性能和鲁棒性。为此,我们提出
    的头像 发表于 07-04 15:14 987次阅读
    <b class='flag-5'>一</b>种适用于动态环境的实时RGB-D <b class='flag-5'>SLAM</b>系统

    在低功耗蓝牙产品开发的过程,会涉及一些参数的选择和设定,这些参数是什么意思,该如何设定呢?(蓝牙广播)

    在低功耗蓝牙产品开发的过程,会涉及一些参数的选择和设定,这些参数是什么意思,该如何设定呢?在此介绍一些: 蓝牙的广播类型(Advertising Type) 可连接广播(ADV_I
    发表于 06-25 18:25

    Debian和Ubuntu哪个好一些

    兼容性对比Debian和Ubuntu哪个好一些,并为您揭示如何通过RAKsmart服务器释放Linux系统的最大潜能。
    的头像 发表于 05-07 10:58 866次阅读

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    SLAM在结构化环境更稳定,而视觉SLAM(如ORB-SLAM3)更适合动态场景。 SLAM Toolbox的实践应用
    发表于 05-03 19:41

    树莓派在自动化控制项目中的一些潜在应用

    自动化控制项目中的一些潜在应用。之前,我们已经为Arduino平台探讨了相同的话题。我们确定Arduino是个出色的教育工具,但由于一些限制,它无法在工业环境完全
    的头像 发表于 03-25 09:45 479次阅读
    树莓派在自动化控制项目中的<b class='flag-5'>一些</b>潜在应用

    种基于点、线和消失点特征的单目SLAM系统设计

    本文提出了种稳健的单目视觉SLAM系统,该系统同时利用点、线和消失点特征来进行精确的相机位姿估计和地图构建,有效解决了传统基于点特征的SLAM的局限性。
    的头像 发表于 03-21 17:07 840次阅读
    <b class='flag-5'>一</b>种基于点、线和消失点特征的单目<b class='flag-5'>SLAM</b>系统设计

    独立服务器和云服务器哪个快一些

    独立服务器和云服务器哪个快一些?在数字服务部署,独立服务器与云服务器的速度差异并非绝对,需结合资源配置与应用场景综合判断。以下是UU云对独立服务器和云服务器的核心维度对比分析:
    的头像 发表于 02-05 10:08 805次阅读

    AN29-关于DC-DC转换器的一些想法

    电子发烧友网站提供《AN29-关于DC-DC转换器的一些想法.pdf》资料免费下载
    发表于 01-08 13:57 0次下载
    AN29-关于DC-DC转换器的<b class='flag-5'>一些</b>想法

    种基于MASt3R的实时稠密SLAM系统

    本文提出了种即插即用的单目SLAM系统,能够在15FPS的帧率下生成全局致的位姿和稠密几何图形。 01   本文核心内容 视觉SLAM乃是当今机器人技术与增强现实产品的基础性构建模
    的头像 发表于 12-27 15:25 2291次阅读

    数据手册一些参数的数值有时画条横线或者空着不填是什么意思?

    数据手册一些参数的数值有时画条横线或者空着不填是什么意思? 如上表, tCS的最大值是15ns,最小值和典型值都是空着的,是不是最小值和典型值我可以随便取(大于0小于15就行)?还是说只有最大值给出了,我只能取给出的最
    发表于 12-16 07:45