ORB_SLAM2系统代码流程粗讲解(二)

注:本文讲解的是整个系统的运行过程,不涉及具体代码的讲解。均假设系统运行没有重复构建现象

上一篇博客:ORB_SLAM2系统代码流程粗讲解(一)
系统有三个线程并行运行,其中追踪线程(tracking)在主函数,即主线程中运行。

今天这篇文章讲一下局部建图线程,具体的函数实现在:***LocalMapping.cc***中,找到 ***run()***函数

1.首先说明,局部建图所需要的数据是追踪线程传送过来的关键帧队列,所以在进行局部的建图的时候,需要将标志位mbAcceptKeyFrames置为false。

2.接下来,从关键帧的队列中取出一帧,计算该关键帧用向量来表示,即根据词袋模型计算得出词袋向量,接下来处理该关键帧中的地图点,并且更新关键帧的连接关系,处理完成之后将该关键帧插入到地图中。

3.接下来根据地图点的观测情况剔除质量不好的地图点,剔除该地图点的条件是:
(1)跟踪到该地图点的帧数相比预计可观测到该地图点的 帧数的比例小于25%
(2)从该地图点建立开始,到现在已经过了不小于两个关键帧,但是观测到该点的项技术却不超过阈值(单目情况下阈值=2.;双目和RGBD情况下阈值=3)
(3)从该地图点建立开始,已经过了三个关键帧没有被剔除,说明是质量好的点,仅将它队列中删除。

4.接下来,用当前关键帧与相邻关键帧通过三角化产生新的地图点,使得跟踪更加稳定。

5.处理完关键帧队列中的关键帧,检查并融合当前关键帧和相邻关键帧中的重复地图点

6.接下来进行一个局部地图的BA优化

7.系统结束,将标志位mbAcceptKeyFrames置为true,即可以开始接收来自追踪线程的关键帧

最后关于标志位的应用,即线程之间的调度可以看我写的另外一篇文章:

ORB-SLAM2 线程之间的调度

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值