ORB-SLAM2 三种跟踪模式总结(参考关键帧跟踪、恒速模型跟踪、重定位跟踪)

总体概要

在系统初始化成功后,mState状态会置位,下一帧来临后,首先检查上一帧的地图点是否需要进行替换,如果需要替换则替换。由于刚初始化完成,所以相机是没有速度的,所以首先使用参考关键帧进行跟踪当前帧。当系统刚发生重定位后,也需要使用参考关键帧进行跟踪。在正常情况下,系统使用恒速模型进行跟踪当前帧。若使用恒速模型跟踪失败,则使用参考关键帧进行跟踪。若使用参考关键帧进行跟踪也没有跟踪到当前帧,则系统只能进行重定位了。若系统中的关键帧数量过少,也就是说系统刚开始运行就要重定位,那么就重置系统,重新初始化,重新开始。

TrackReferenceKeyFrame() 参考关键帧跟踪

使用参考关键帧进行跟踪当前帧的情况是

  • 系统刚初始化完成,相机速度为0;
  • 系统刚发生重定位;
  • 恒速模型跟踪失败;

使用参考关键帧进行跟踪,也就是说与当前帧有几帧距离了,(正常情况下,使用该函数时恒速模型已经跟踪当前帧失败了)所以需要加速进行处理,否则有可能会花费时间过长。
首先使用词袋BoW加速当前帧与参考帧之间的特征点匹配,加快了搜索速度,如果搜索到的特征点少于15个,那么就会直接退出,认为跟踪失败了。如果跟踪到的匹配的特征点的数量大于15个,就将上一帧的位姿作为当前帧的初始值,然后使用BA优化当前帧的位姿,就这将去除外点,统计内点的数量。如果内点的数量超过10个,那么就认为使用参考关键帧跟踪当前帧成功了,否则,失败。

TrackWithMotionModel() 恒速模型

正常情况下,系统使用该中模型。该函数是用上一帧来跟踪当前帧。
首先,更新上一帧的位姿。对于双目或者RGB-D相机,还会生成新的临时地图点(但是这些地图点只是用来跟踪的,不加入地图中,跟踪完成后会进行删除)。通过上一帧的位姿以及之前估计的速度估计当前帧的位姿的初始值(十分粗糙,不准确,后面会使用优化)。

根据相机的模型单目还是双目,设置特征匹配过程中的搜索半径,单目的搜索半径小。使用上一帧的地图点投影到当前帧中,在当前帧中的固定区域进行搜索,会搜索到很多的候选匹配点,然后通过描述子之间的距离进行匹配,描述子距离最小的作为较为准确的待匹配点,接着使用直方图进行筛选,剔除掉不一致的匹配点。若匹配点的数量过少,会扩大搜索半径再次进行搜索。如果匹配点的数量还是太少,则使用恒速模型跟踪当前帧失败。否则,使用PnP进行BA优化,获得较为准确的位姿,统计内点的数量,将外点所对应的地图点进行删除。若内点的数量小于阈值10个匹配点,则跟踪失败,否则,跟踪成功。

Relocalization() 重定位跟踪

如果使用恒速模型跟踪当前帧未成功且参考关键帧跟踪也失败了,系统只能进行重定位了。

系统为了保证不会跟踪失败,重定位的过程比较谨慎,会进行一系列的操作,实在拯救不了了,才会判定系统重定位失败。

使用该函数时,系统已经经历了恒速模型和参考关键帧模型,且已经跳过了上一帧,时间已经花费挺久了,所以这里要加速处理,否则实时性就难以保证。因此系统中主要使用了词袋进行加速处理。

首先,通过词袋查找关键帧数据库中与当前帧相似的候选关键帧。然后遍历每一个候选关键帧与当前帧通过词袋进行特征点跟踪并通过直方图检查选址一致性,剔除掉不一致的匹配点,获得每一个候选关键帧和当前帧的匹配点个数。若匹配的特征点个数少于15个,则放弃该候选关键帧,否则,通过当前帧与匹配的特征点建立EPnP算法。

遍历每一个满足阈值要求的EPnP算法,迭代五次,求取当前帧的位姿。然后通过已经获得匹配点进行PnP BA算法求取当前帧的位姿。如果内点的数量少于10个,则跳过当前的候选关键帧。若内点的数量nGood大于10但是小于50个,说明系统还是有可能重定位成功的,那么就用投影的方式将候选关键帧中未匹配的地图点投影到当前帧中,进行匹配,并通过旋转直方图进行筛选,再增加一些匹配关系nadditional。如果nGood + nadditional 大于50了,那么就再次进行优化,若内点的数量good 大于30 小于 50, 那么就再次重投影,直到成功为止。
经过一些列的操作的目的就是为了拯救系统,让系统跟踪成功。

TrackLocalMap() 跟踪局部地图

上面提及的参考关键帧跟踪、恒速模型跟踪、重定位跟踪之后都要经过该函数,还函数的目的是为了增加新的匹配点,以便使得当前帧获得更多的三维点,防止后面跟着跟着就跟丢了,还有一个目的是增加更多的约束,能够使得当前帧的位姿更加准确。

首先通过共视图来更新局部关键帧和局部地图点,使用局部关键帧观测到的地图点且当前帧未观测到地图点投影到当前帧上,以搜索更多的匹配关系。
然后通过BA优化当前帧的位姿,获得更加准确的位姿。统计内点的数量,如果内点的数量过少,则跟踪局部地图失败

总结

如果关键帧跟踪、恒速模型跟踪、或者重定位跟踪中只要其中任意一个跟踪成功且跟踪局部地图成功,则当前帧跟踪成功。然后就是确定是否插入关键帧的问题了。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值