ORB-SLAM2课程介绍 及 论文详解--总结自《全网最详细的ORB-SLAM2课程》

ORB-SLAM2课程介绍 及 论文详解

https://appafc4omci9700.h5.xiaoeknow.com/v1/course/video/v_604dce0ae4b0e51d821de16c?feature=&is_redirect=1&share_from=u_60605fd13b251_jsBsAc9HF0&type=2


一、ORB-SLAM2框架

ORB-SLAM2框架

1. 三个线程:TRACKING跟踪、LOCAL MAPPING局部建图、LOOP CLOSING闭环。
· TRACKING (尽可能多放关键帧和地图点进来,宽松)
 --> 预处理
 --> 三个重要的跟踪方式,用三种方式中的一种或者一种失败了用另一种做初始的跟踪
      (对应代码:(位姿预测)参考关键帧跟踪/(运动模型)恒速模型/(重定位跟踪))
 -->用局部地图做一个更精确的跟踪(只针对某一帧(位姿)做BA)
 -->生成关键帧(根据结果判断是否插入关键帧)
· LOCAL MAPPING
 --> 插入关键帧
 --> 筛选地图点(严格,地图点剔除)
 --> 只用关键帧生成新的地图点(比较稳定)
 --> 局部BA,针对几帧BA,不仅对位姿还对地图点做BA
 --> 局部关键帧剔除
· LOOP CLOSING
 --> 所有关键帧放在数据库里(绿色Recognition Database)
 --> (闭环检测)
         每来一个帧,就查询数据库(是否已经闭环),如果确认闭环,则计算SE3(需要用SE3矫正)
 --> (闭环融合/矫正)
         用当前关键帧和闭环关键帧,有漂移,用SE3做矫正,位姿融合
         优化本质图
2. 其他
· 全局BA(确认闭环后)
 full BA、更新地图
· MAP地图(一直维护着一个MAP)
 地图点(三维点),关键帧,共视图,扩展树
· PLACE RECOGNITION(位置识别)
 用词袋做的

二、ORB-SLAM1论文阅读-2015

概述(摘要)
 1)基于特征的单目SLAM系统,实时地,复杂运动情况下鲁棒,宽基线的闭环(wide baseline loop closing,即使t距离比较大,也能检测到闭环),重定位,自动初始化。所有地方都是使用的ORB特征,效率高。
 2)tracking跟踪,mapping建图,relocalization重定位,loop closing闭环检测。
 3)选择关键帧和地图点的时候,选择策略出色鲁棒性,紧密可跟踪的地图(只随着环境变化而增长),可长时间操作。
1. 介绍
 1)一个实时的SLAM算法需要有:有地图和与之对应的关键帧,复杂度只随着关键帧增长(选择策略尽量避免没必要的冗余),一个好的关键帧和地图点的策略产生更精确的结果;(为了非线性优化)初始化位姿的估计;局部地图可扩展性;快速全局优化来进行实时的闭环。
 2) PTAM:没有闭环,视角变换差,地图初始化需要人工干预,
 3)一系列的前人的工作组建出来ORB。
 4)自动初始化,本质图,宽进严出
2. 相关工作
· 位置识别Place Recognition
 1)图像到图像,图像到map,map到map,用到词袋bag of words。
 2)里面用的是brief描述子,与SIFT和SURF做对比,效果相当,但是breif没有尺度不变性和旋转不变性。
 3)而ORB-SLAM用ORB特征解决了这两个问题。
· 地图初始化
 1)单目没有深度,
 2)ORB里面,恢复相应的相机位姿用homography单应矩阵(平面)或者用本质矩阵/基础矩阵(非平面)来做。直到产生一个比较明显的视差 parallax才会成功初始化。(位移比较小初始不成功)
· 单目SLAM
 1)背景:以前用滤波(浪费计算量,有的真没有信息),关键帧的方法(与帧率无关,只处理关键帧)。在同样的计算量下,关键帧更加准确
 本文的闭环(loop closing)采用了 7个自由度(旋转*3+平移*3+尺度*1)的位姿图优化并且应用于本质图中。
 2)local map也基于共视关系
 3)LSD-SLAM:半稠密地图,直接法,仍然需要特征来做闭环,相机定位精度不如PTAM高
 4)SVO:帧率很高,适合无人机,没有闭环,俯视
 5)在跟踪阶段,尽量多的插入关键帧,然后再在local mapping时(有局部BA)移除冗余的,避免额外的计算成本。
3. 系统概述
· 特征选择
 ORB:计算快,匹配快,对光照、视角鲁棒(只比较中心点和周围点的亮度差异(二值)),wide baseline(提高BA精度)
· 三个线程
 tracking:定位相机的位姿,每一帧都要算位姿,算完之后决定他是否作为一个关键帧插入。如果帧丢失,执行relocalization重定位。
        用local covisible map局部共视地图
 local mapping:处理关键帧,在关键帧之间重新生成新的对应关系,新的关键帧之间三角化产生新的地图点,地图点剔除,关键帧剔除。
 loop closing:计算相似变换SIM3,,目的是把回环的地方对齐。用到本质图。
· 地图点,关键帧,以及他们的选择
 对地图点的描述(类里面有什么)
· 共视图和本质图(见三、)
· 词袋位置识别bags of words place recognition
 DBoW2视觉词典(离线创建的)。用了许多图提取ORB特征点,训练构建 了一个树状结构 。
 不再全范围的匹配,在一定相似范围层级搜索。
· 自动初始化
 计算两帧的相对位姿,三角化成地图点的初始化。地图与平面或非平面没有关系,非人工干预。
 初始化时,有多组解,怎么选择,每个点都检测一遍,找误差最小的。使初始化非常鲁棒。
4. Tracking
· ORB 特征提取
 不同数据集不同分辨率提取特征个数不一样。自适应阈值,特征不够就降低阈值,直到提取到足够数量的特征。
· 从以前的帧中初始化位姿估计
 恒速模型(a constant velocity motion model):
· 通过全局重定位初始化位姿估计(结合代码理解)
 如果跟踪丢失,将帧转换成词袋,并且查询识别数据库。使用PnP算法。
· 跟踪局部地图(Track Local Map)
 利用共视关系
· 新的关键帧选择(与代码对应)
 尽快插入关键帧,使得跟踪鲁棒。
5. 局部建图线程(Local Mapping)
· 关键帧插入
· 最近地图点剔除
· 生成新的地图点
 从连接关键帧三角化ORB(共视图)
· 局部BA
 优化当前处理的关键帧,以及所有和它向相连的关键帧(共视图),以及所有关键帧的地图点。
 在优化过程中,丢弃外点。
· 局部关键帧剔除
6. 闭环
· 闭环候选检测(非常严格)

比胡安检测确认候选帧

检测至少连续 三次检测到闭环成功(共视关系也得)才是闭环成功。(结构)
得到闭环候选。

· 计算相似变换(Similarity Transformation)–SIM3
 七个自由度:3*平移,3*旋转,1*尺度。
 计算相似变换,将误差累积做融合。也叫环的几何验证。(闭环矫正)
· 闭环融合(Loop Fusion)
 去掉一些重复duplicated地图点,由共视关系插入一些新的边。
· 本质图优化
7. 实验

闭环

闭环时,蓝色:闭环匹配,然后用SIM3进行相似变换,红色是局部地图点。
LocalBA速度和环境有关。
与PTAM对比,ORB-SLAM关键帧数量随着时间的增加,并没有增加很多。因为会删除冗余关键帧,把数量保持在一个合适的数量。

8. 总结
· 总结
 室内1cm,室外达到米级。融合了很多成果,是单目SLAM最完整的解决方案。关键帧的选择和剔除可以根据数据集的不同进行改进。
 优势:尺度不变,光照鲁棒,旋转不变,wide baseline宽基线。
· 改进
 地图点稀疏,希望更稠密。等等。(已经实现)
9. 附录
 一些东西的推导,看代码。
· 非线性优化

三、ORB-SLAM2论文阅读-

1. 介绍

以前的RGB-D用ICP,现在用BA效果更好
(RGB-D,双目)远点、近点(小于40倍的基线距离),越近的点越准。
远点对旋转用处比较大,平移和尺度不用。
双目和RGB-D一帧就能初始化,只需做刚度变换,不需要相似变换。


四、总览

1. ORB-SLAM2总
· 特点

1)所有的任务(跟踪/局部地图/闭环/重定位)采用相同的特征,使得系统更高效、简单可靠
2)ORB特征具有旋转/光照不变性,无需GPU即可实时
3)共视图使得跟踪/建图控制在局部共视区域,与全局地图大小无关,可以在大场景下运行
4)使用Esseÿtial Graph来优化位姿实现回环检测,耗时少精度高
5)实时重定位使得在跟踪丢失后可以恢复位姿,增强地图重用性
6)单目初始化和应用场景解耦,不管是平面/非平面场景,都可以自动初始化,无需人工干预
7)地图点和关键帧创建比较宽松,但后续会进行严格筛选,剔除冗余关键帧和误差大的地图点,增加建图过
程的弹性,在大旋转、快速运动、纹理不足等恶劣情况下可以提高跟踪的鲁棒性
8)相比于直接法,可以用于宽基线匹配,更适合于对深度精度要求较高的三维重建
9)适用于手持设备、汽车、机器人
10)集各种优秀的算法于一身,特征点法SLAM中最佳方案

· 不足

1)相比于直接法,特征提取比较耗时,运行速度没有直接法高
在这里插入图片描述

2)相比于直接法,在弱纹理/重复纹理/图像模糊的场景 下容易跟踪丢失
3)产生的地图比较稀疏(直接法可以产生半稠密地图)

2. 共视图(Covisibility Graph)

节点是关键帧,边是关键帧之间的共同观测地图点数目(至少15个)
在这里插入图片描述

(a)蓝色部分是关键帧,绿色的是当前帧,红色和黑色是地图点,(红色部分是当前的局部地图点,不是当前帧看到的,而是用了共视关系对当前帧的扩展)
(b)共视图
在这里插入图片描述

能通过共视关系,得到更多的信息,来优化最初比较粗糙的信息。

3. 本质图(Essential Graph)

在这里插入图片描述

(c)扩展树(绿色),父节点,子节点,父关键帧,子关键帧
闭环(红色):闭环检测成功
(d)本质图:边复杂一些

   · 只针对关键帧,不考虑普通帧
   · 共视图比较稠密,本质图比共视图更稀疏。这是因为本质图的作用是用在闭环矫正时,用相似变换来矫正尺度漂移,把闭环误差均摊在本质图中。本质图中节点也是所有关键帧,但是连接边更少,只保留了联系紧密的边来使得结果更精确。
   · 本质图中包含:1.Spanning tree连接关系;2.形成闭环的连接关系,闭环后(地图点变动后)新增加的连接关系;3.共视关系非常好(至少100个共视地图点)的连接关系|

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORB-SLAM2 的运行程序是一段预先编写好的计算机代码,用于实现 ORB-SLAM2 论文中提到的 Simultaneous Localization and Mapping (SLAM) 算法。它可以通过处理视觉数据(例如,从摄像机或激光雷达设备获取的数据),实时地构建和更新场景的三维地图,并同时确定机器人在环境中的位置。 ORB-SLAM2 的代码是开源的,可以在 GitHub 上免费下载,并可以在许多不同类型的计算机系统上运行。如果您想使用 ORB-SLAM2,您可以下载代码并在自己的计算机上运行它。 ### 回答2: ORB-SLAM2是一个用于单目相机、双目相机和RGB-D相机的实时SLAM系统。下面是ORB-SLAM2的运行程序: 1. 首先,安装所需的依赖项,包括OpenCV、Pangolin、DBoW2和g2o。这些依赖项可通过Github页面上的说明进行安装。 2. 然后,从Github页面上下载ORB-SLAM2的源代码。 3. 解压缩下载的源代码,并使用CMake进行编译。指定正确的路径以链接到依赖项。编译完成后,将生成ORB-SLAM2的可执行文件。 4. 准备运行ORB-SLAM2的数据集或实时摄像头输入。如果使用数据集,将其放置在指定的路径下。 5. 打开终端,并导航到ORB-SLAM2的可执行文件所在的目录。 6. 运行ORB-SLAM2,可以使用以下命令: ./ORB_SLAM2 [参数] 参数包括: -voc [词汇文件路径]: 使用指定的词汇文件 -settings [配置文件路径]: 使用指定的配置文件 -test [数据集路径]: 使用指定的数据集 ... 使用各种参数可以根据实际情况进行设置,例如选择使用单目相机还是双目相机,是否保存地图等。 7. 在运行程序后,ORB-SLAM2将初始化相机,跟踪相机姿态,并在实时中构建地图。可以在控制台上看到相机的轨迹和地图的构建。 需要注意的是,ORB-SLAM2的运行程序可能因使用的相机类型、参数配置和数据集而有所不同。因此,在实际应用中,可能需要根据具体情况进行适当的调整和设置。此外,ORB-SLAM2还提供了一些API和示例代码,可用于开发更多的自定义功能。 ### 回答3: ORB-SLAM2是一种基于特征点的稀疏SLAM算法,可以同时实现定位和建图。下面是ORB-SLAM2的运行程序流程简述。 首先,程序会加载相机的参数和配置文件,并初始化ORB特征点提取器、描述符以及地图等数据结构。接着,程序开始处理每一帧输入图像序列。 对于每一帧输入图像,首先会进行特征点提取和描述子计算。ORB-SLAM2使用Oriented FAST特征点检测器提取特征点,并计算ORB描述子。在提取到足够数量的特征点之后,会通过判断几何约束进行匹配。 接下来,程序会进行初始化或跟踪过程。初始化是指在场景中没有建立地图时,通过匹配帧间的ORB特征点,计算出相机的姿态信息,并根据三角测量法计算出特征点的三维坐标。 在跟踪过程中,程序会通过参考帧的姿态信息和特征点的深度信息进行位姿估计。同时,ORB-SLAM2还使用BA(Bundle Adjustment)优化算法对地图和相机的位姿进行优化,以提高位姿估计的准确性。 最后,程序会更新地图,并将当前帧作为参考帧保存。在运行过程中,ORB-SLAM2还会根据设定的策略进行回环检测,通过匹配历史帧和当前帧的特征点,判断是否存在回环,并进行地图的闭合和优化。 总结来说,ORB-SLAM2的运行程序包括相机参数加载、初始化、特征点提取和描述子计算、匹配、位姿估计和优化、地图更新和回环检测等步骤。通过这些步骤,ORB-SLAM2能够实现实时的稀疏SLAM定位和建图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值