陌归:ORB-SLAM2的跟踪模式——参考关键帧跟踪、恒速模型跟踪、重定位跟踪 应用场景: 前面3种跟踪方式得到当前帧当前帧的位姿和地图点(尽管不准确),局部地图跟踪利用到了当前帧的两级共视关键帧的信息,使得位姿更加准确。 个人感觉这是orb可以高精度的重要部分。 具体步骤: 首先根据前面得到的当前帧的地图点来找能...
Step 1: 更新局部关键帧mvpLocalKeyFrames和局部地图点mvpLocalMapPoints Step 2: 在局部地图中查找与当前帧匹配的MapPoints, 其实也就是对局部地图点进行跟踪 Step 3: 更新局部所有MapPoints后对位姿再次优化 Step 4: 更新当前帧的MapPoints被观测程度, 并统计跟踪局部地图的数目 Step 5: 决定是否跟踪成功 代码分析 ...
Tracking线程的局部地图跟踪,首先每次更新当前帧的局部关键帧,再由局部关键帧得到局部地图点。而当前帧的局部关键帧是:(1)和当前帧共视(有共同地图点)的关键帧,(2)以及(1)中每个关键帧的最强共视关键帧10帧,(3)还有(1)中的的孩子和父亲关键帧统统拉入伙。然后通过局部关键帧得到局部地图点,用于Tracking线程的位...
ORB-SLAM2初步--局部地图构建 一、局部地图构建简介 为什么叫“局部”地图构建,我的理解是这个线程的主要任务是像地图中插入关键帧(包括地图点等信息),以及需要进行LocalBA优化一个局部地图,这是相对于回环检测时进行的全局优化来说的,所以称为局部地图构建。而局部地图构建的主要任务就是上面说的,等待跟踪过程判断是...
ORB-SLAM2学习5 Tracking.h 一、直接上图,清楚明了。(来自论文) 我们注意到TRACKING线程,很清楚明白的告诉了我们是如何跟踪的,第一,提取ORB特征;第二,进行地图初始化(如果没初始化的话)。第三,初始位置估计(这里用3种模型,代码在这里经过了很多判断来选择这三种模型的其中一种)得到是一个很粗略的初始位姿;第...
计算关键帧特征点的BoW映射,将关键帧插入地图,每次只对一帧进行操作: 计算该关键帧特征点的Bow映射关系 跟踪局部地图过程中新匹配上的MapPoints和当前关键帧绑定 constvector<MapPoint*>vpMapPointMatches=mpCurrentKeyFrame->GetMapPointMatches();// 对当前处理的这个关键帧中的所有的地图点展开遍历for(size_t i=...
三维地图的建立是通过对局部地图点进行三角化得到的,这些局部地图点是通过多个关键帧之间的特征匹配计算得出的。 以上就是ORB-SLAM2的工作流程的详细步骤。通过图像输入和预处理、特征提取与描述子计算、初始化、跟踪、局部地图更新、闭环检测、地图优化、回环检测与闭合、重定位和三维重建及地图保存,ORB-SLAM2能够实现...
ORB_SLAM2作为优秀的视觉slam系统,值得初学者深入学习,不仅学习到丰富的理论知识,而且接触到优秀的编程技巧和规范; 该框架主要由跟踪线程[即主函数]、局部建图线程、回环检测线程组成;从这篇文章开始,我们将详细介绍跟踪线程中所涉及的知识点,按照总-分-总的思路,通过多篇文章进行叙述; ...
[1] 计算机视觉Life ORB-SLAM2源码讲解专题四:单目Tracking线程源码 帧间跟踪 (1)正常模式:(2)出现意外:(3)实在不行,垂死挣扎:局部地图跟踪 关键帧判断和产生 EPNP的使用原则 好像只有重定位才用到。 比如匀速运动模型或者是参考关键帧模型,都不用,因为他们的匹配点比较好。纯跟踪是什么意思...
在重定位阶段,当跟踪失败或者场景发生剧烈变化时,算法会使用局部地图和全局地图进行重定位。局部地图是基于ORB特征点的,通过与局部地图的匹配可以重新定位相机的位姿。而全局地图是基于所有帧之间的相对位姿关系构建的,通过与全局地图的匹配可以精确地定位相机。 ORB_SLAM2的视觉惯性紧耦合定位算法的优势在于可以将视觉和...