ORB-SLAM2源码分析(单目)——局部地图跟踪

ORB-SLAM2源码分析(单目)——局部地图跟踪

在这里插入图片描述

一、 局部地图跟踪简介

参考关键帧、恒速模型、重定位跟踪方式得到当前帧地图点后做的后处理,每次跟踪都使用。前提是必须知道当前帧的位姿和地图点(尽管不准确),利用到了当前帧的两级共视关键帧的信息,使得位姿更加准确。
当前帧:mCurrentFrame(当前帧是普通帧)
参考关键帧: 与当前帧共视程度最高的关键帧作为参考关键帧,mCurrentFrame.mpReferenceKF在KeyFrame::UpdateConnections() 里确定关键帧的父子关系(当前帧必须是关键帧)
父关键帧:和当前关键帧共视程度最高的关键帧
子关键帧:是上述父关键帧的子关键帧

首先根据前面得到的当前帧的地图点来找能观测到当前帧的一级共视关键帧,将这些一级共视关键帧的二级关键共视帧、子关键帧、父关键帧一起作为局部关键帧;
取出上述局部关键帧中所有的地图点作为局部地图点;
将局部地图点投影到当前帧,去掉不在视野内的无效的地图点,剩下的局部地图点投影到当前帧进行匹配(函数SearchByProjection)对匹配结果再做BA优化(仅优化位姿)

二、 更新局部关键帧 mvpLocalKeyFrames 和局部地图点 mvpLocalMapPoints

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

三、 将当前帧的一级共视关键帧和二级共视关键帧的地图点进行投影,投影到当前帧上,在进行搜索匹配,得到更多的匹配信息

将当前帧的一级共视关键帧和二级共视关键帧的地图点,投影到当前帧上,如果当前帧也能观察到该地图点,则进行搜索匹配,增加匹配点的数量,也能增加当前帧观察的地图点数量,从而使得跟踪更加稳定,求得的位姿也更加精准
在这里插入图片描述

1、 遍历当前帧的地图点,标记这些地图点不参与之后的投影搜索匹配
在这里插入图片描述

2、 判断所有局部地图点中除当前帧地图点外的点,是否在当前帧视野范围内
在这里插入图片描述

3、 如果需要进行投影匹配的点的数目大于0,就进行投影匹配,增加更多的匹配关系
在这里插入图片描述

4、 通过投影地图点到当前帧,对Local MapPoint进行跟踪(SearchByProjection)
在这里插入图片描述

5、 前面新增了更多的匹配关系,BA优化得到更准确的位姿
在这里插入图片描述

6、 根据跟踪匹配数目及重定位情况决定是否跟踪成功

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43391596/article/details/129692784