ORB-SLAM2源码分析(单目)——局部建图线程

ORB-SLAM2源码分析(单目)——局部建图线程

一、 局部建图线程简介

在这里插入图片描述

局部建图线程的主要作用:
(1) 承上启下。接收跟踪线程输入的关键帧并进行局部地图优化、删除冗余关键帧等;将优化后的关键帧发送给闭环线程。
(2) 实现中期数据关联。跟踪线程中仅使用了相邻普通帧或关键帧的信息,而且只优化当前帧的位姿,没有联合优化多个位姿,没有优化地图点。局部建图线程里满足一定共视关系的多个关键帧及其对应的地图点都参与优化。使得关键帧的位姿和地图点更加准确。
(3) 利用共视关键帧之间重新匹配得到更多新的地图点,增加地图里地图点的数目,可以提高跟踪的稳定性。
(4) 删除冗余关键帧可以降低局部BA的规模和次数。提高实时性。
跟踪线程和局部建图线程操作范围对比:
在这里插入图片描述

跟踪线程中,只跟上一帧的数据进行关联处理,而局部建图线程中,使用全部的关键帧进行关联处理
局部建图线程流程:

在这里插入图片描述

		局部建图线程、跟踪线程、闭环线程是并行的关系

二、 删除冗余的地图点(MapPointCulling)和关键帧(KeyFrameCulling)

删除冗余的地图点(MapPointCulling):
在这里插入图片描述

(1) 根据相机类型设置不同的观测阈值
在这里插入图片描述

用于后续检测地图点的被观测次数,如果小于该阈值,则代表该地图点被关键帧看到的次数太少,则删除该地图点
(2) 遍历检查新添加的地图点,判断是否要删除地图点
在这里插入图片描述

删除冗余的关键帧(KeyFrameCulling):
要在处理完所有关键帧后,在进行删除冗余关键帧操作
检测当前关键帧在共视图中的关键帧,根据地图点在共视图中的冗余程度剔除该共视关键帧
冗余关键帧的判定:90%以上的地图点能被其他关键帧(至少3个)观测到
在这里插入图片描述

(1) 根据共视图提取当前关键帧的所有共视关键帧
在这里插入图片描述

(2) 对所有的共视关键帧进行遍历
在这里插入图片描述

(3) 遍历该共视关键帧的所有地图点,其中能被其它至少3个关键帧观测到的地图点为冗余地图点
在这里插入图片描述

(4) 如果该关键帧90%以上的有效地图点被判断为冗余的,则认为该关键帧是冗余的,需要删除该关键帧
在这里插入图片描述

三、 检测当前帧是否为关键帧(NeedNewKeyFrame)

判断当前帧是否为关键帧
在这里插入图片描述

(1) 纯VO模式和局部地图线程被占用情况下,不进行检测
在这里插入图片描述

检测成关键帧时,会将该关键帧插入到局部地图线程,如果局部地图线程正在被闭环检测使用,则不进行插入。
(2) 获取当前地图中的关键帧数目,如果距离上一次重定位较近,并且关键帧数目超出了最大限制,不插入关键帧
在这里插入图片描述

(3) 当前帧有多少地图点是被其他关键帧观测过

在这里插入图片描述

(4) 判断是否将当前帧当成关键帧进行插入
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、 关键帧之间生成新的地图点(CreateNewMapPoints)

当前关键帧与相邻关键帧通过三角化产生新的地图点,使得跟踪更稳
(1) 在当前关键帧的共视关键帧中找到共视程度最高的nn帧相邻关键帧
在这里插入图片描述

(2) 遍历相邻关键帧,搜索匹配并用极线约束剔除误匹配,最终三角化
在这里插入图片描述

(3) 判断相机运动的基线是不是足够长
在这里插入图片描述

(4) 根据两个关键帧的位姿计算它们之间的基础矩阵
在这里插入图片描述

(5) 通过词袋对两关键帧的未匹配的特征点快速匹配,用极线约束抑制离群点,生成新的匹配点对
在这里插入图片描述

(6) 对每对匹配通过三角化生成3D点,和 Triangulate函数差不多
· 取出匹配特征点
· 利用匹配点反投影得到视差角
· 对于双目,利用双目得到视差角;单目相机没有特殊操作
· 三角化恢复3D点
· 检测生成的3D点是否在相机前方,不在的话就放弃这个点
· 计算3D点在当前关键帧下的重投影误差
· 检查尺度连续性
· 三角化生成3D点成功,构造成MapPoint
· 为该MapPoint添加属性
· 将新产生的点放入检测队列

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五、 融合重复的地图点(SearchInNeighbors)

要在处理完所有关键帧后,在进融合重复地图点操作
检查并融合当前关键帧与相邻帧(两级相邻)重复的地图点
(1) 获得当前关键帧在共视图中权重排名前nn的邻接关键帧
在这里插入图片描述

(2) 存储一级相邻关键帧及其二级相邻关键帧
在这里插入图片描述

(3) 将当前帧的地图点分别投影到两级相邻关键帧,寻找匹配点对应的地图点进行融合,称为正向投影融合
在这里插入图片描述

(4) 将两级相邻关键帧地图点分别投影到当前关键帧,寻找匹配点对应的地图点进行融合,称为反向投影融合
在这里插入图片描述

(5) 更新当前帧地图点的描述子、深度、平均观测方向等属性
在这里插入图片描述

(6) 更新当前帧与其它帧的共视连接关系
在这里插入图片描述

六、 局部线程BA(LocalBundleAdjustment)

在这里插入图片描述

(1) 将当前关键帧及其共视关键帧加入局部关键帧
在这里插入图片描述

(2) 遍历局部关键帧中(一级相连)关键帧,将它们观测的地图点加入到局部地图点
在这里插入图片描述

(3) 得到能被局部地图点观测到,但不属于局部关键帧的关键帧(二级相连),这些二级相连关键帧在局部BA优化时不优化
在这里插入图片描述

(4) 构造g2o优化器
在这里插入图片描述

(5) 添加待优化的位姿顶点:局部关键帧的位姿
在这里插入图片描述

(6) 添加不优化的位姿顶点:固定关键帧的位姿,注意这里调用了vSE3->setFixed(true)
不优化为啥也要添加?回答:为了增加约束信息
在这里插入图片描述

(7) 添加待优化的局部地图点顶点
在这里插入图片描述

(8) 在添加完了一个地图点之后, 对每一对关联的地图点和关键帧构建边
在这里插入图片描述

在这里插入图片描述

(9) 分成两个阶段开始优化。
在这里插入图片描述

(10) 检测outlier,并设置下次不优化
在这里插入图片描述

(11) 排除误差较大的outlier后再次优化 – 第二阶段优化
在这里插入图片描述

(12) 在优化后重新计算误差,剔除连接误差比较大的关键帧和地图点

在这里插入图片描述
在这里插入图片描述

(13) 优化后更新关键帧位姿以及地图点的位置、平均观测方向等属性

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORB-SLAM2是一款基于特征点的SLAM算法,可以在实时运行中实现稠密地的构和定位。ORB-SLAM2的代码解析v1.2 pdf为ORB-SLAM2算法的代码进行详细讲解的文档。 这个文档详细介绍了ORB-SLAM2算法的各个模块以及其组成部分,包括像预处理、特征点提取、视觉里程计、回环检测、地和定位等。对于每个模块,文档都进行了详细的讲解,并展示了一些代码实现和示例。 其中,ORB特征点的提取是ORB-SLAM2的一个重要特点。文档详细介绍了ORB特征点的提取与描述,并对其进行了性能优化。在视觉里程计中,文档详细介绍了基于ORB-SLAM2的相机位姿估计算法,并同时对其进行了实验验证。 此外,orb-slam2码解析 v1.2 pdf还对ORB-SLAM2的一些扩展进行了介绍,如RGBD-SLAM、半稠密点云地、直接法视觉里程计等等。 总之,ORB-SLAM2是一个非常强大的SLAM算法,通过对orb-slam2码解析 v1.2 pdf的学习,可以更好地理解其原理和实现,也为进一步研究和应用提供了参考。 ### 回答2: ORB-SLAM2是一种基于单目相机的实时稠密SLAM系统,被广泛应用于机器人、自动驾驶、增强现实等领域。ORB-SLAM2码解析v1.2 pdf是一份PDF文档,对ORB-SLAM2代码进行了详细的解析和分析。 该文档分为多个章节,首先介绍了ORB-SLAM2的概述和背景,包括SLAM系统的基本原理和ORB特征点的提取与匹配算法。接着,文档对ORB-SLAM2的系统框架、流程和算法进行了详细介绍,主要包括定位、、闭环检测和重定位等核心模块的实现细节。 文档还对ORB-SLAM2的实验结果和性能进行了评估和分析,包括系统的重定位精度、质量、算法复杂度和实时性等指标。同时,文档还针对ORB-SLAM2的应用场景进行了讨论和展望,包括基于ORB-SLAM2的三维重、SLAM与深度学习的融合等前沿研究方向。 总之,ORB-SLAM2码解析v1.2 pdf是一份非常有价值的文档,对想要深入了解和应用ORB-SLAM2的研究者和开发者有很大的帮助和启发作用。它不仅详细介绍了ORB-SLAM2的理论基础和实现细节,还从实验和应用角度对其性能和前景进行了评估和展望,为相关领域的技术人员提供了重要的参考和指导。 ### 回答3: ORB-SLAM2是一种基于单目或双目相机的实时视觉SLAM系统,可以在无GPS信号的情况下,通过对相机的位置和姿态的估计,构3D环境地ORB-SLAM2码解析 v1.2 PDF是一份解析ORB-SLAM2码的文档,其中包含了ORB-SLAM2的基本架构、算法实现以及关键代码的详细解释。通过学习该文档,可以深入了解ORB-SLAM2的原理和实现方法,从而更好地应用该系统进行SLAM操作。 该文档主要包括以下几个部分: 1.ORB-SLAM2的系统结构:介绍ORB-SLAM2的整体结构和各模块之间的关系。 2.特征提取与匹配:详细介绍ORB特征的提取和匹配算法,包括ORB算法原理、特征对齐和描述符生成等。 3.全局BA和回环检测:讲解ORB-SLAM2的全局优化和回环检测方法,其中包括BA算法流程、优化目标函数、回环检测的实现等。 4.实时定位:探讨如何实现ORB-SLAM2的实时运动估计和位姿估计,包括相机位姿估计、尺度恢复和点云重等内容。 除此之外,该文档还对ORB-SLAM2的一些高级技术进行了讲解,如基于深度学习的特征提取、基于语义信息的地等。 总之,该文档是一份非常有价值的ORB-SLAM2码解析资料,对于深入了解ORB-SLAM2的实现原理、优化方法和应用场景,具有重要的参考意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值