ORBSLAM2代码学习(4):localmapping线程
2020-03-06 17:37
1431 查看
注意:localmapping线程处理的是每一个从tracking线程送过来的kf。而tracking线程处理的是每一个frame。
步骤1:检查是否有kf从tracking中送入。
如果没有就不做处理。
如果有就进行下面的步骤。
步骤2:对新送入的关键帧进行处理。
2.1 计算该关键帧的bow向量。
2.2 将tracking线程局部地图(与localmapping线程中的局部地图不同)中跟踪到的mappoints与该关键帧进行关联。
2.3更新关键帧间的连接关系,Covisibility图和Essential图(tree)
2.4将该关键帧插入到loaclmapping中的地图中去。
步骤3:剔除该kf中的不好的mappoints
不好的mappoints是值在论文中提到的不复合规则的mappoints。
步骤4:通过三角化再生成一些mappoints
因此这个kf中的mappoints分别来自:
1、本身的mappoints;2、tracking线程中localmap中的mappoints;3、和三角化生成的mappoints。
如果已经处理完队列中的最后的一个关键帧,则检查并融合当前关键帧和相邻关键帧重复的mappoints,如果队列中还有等待处理的kf,则重复进行步骤2,3,4。
如果已经处理完队列中的最后的一个关键帧 且localmapping 线程未被要求停止,则进行局部BA优化,并删除冗余的关键帧。(疑问:什么时候localmapping 线程会被要求停止。)如果队列中还有等待处理的kf,则重复进行步骤2,3,4。
参考
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- ORBSLAM代码学习(5):loopclosing线程
- 学习ORB_SLAM2源代码及相关库
- ORB_SLAM2代码逻辑分析(2.1) -- Tracking线程(Tracking类) -- 位姿估计
- ORB-SLAM2 Tracking 线程
- SLAM十四讲 第七讲orb_cv代码 使用OpenCV 4.0 报错 identifier "CV_LOAD_IMAGE_COLOR" is undefined
- ORB-SLAM论文学习
- ORB_SLAM 中特征提取代码介绍
- ORB-SLAM2从理论到代码实现(七):Tracking.cc程序详解(中)
- ORBSLAM学习-图像特征点
- ORB-SLAM2从理论到代码实现(二):System.cc程序分析
- DBoW2原理与代码分析(结合ORB_SLAM2)
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
- 通过代码学习C#&.NET——委托使用(线程、任务)
- SLAM入门之ORBSLAM2代码理解——系统框架
- 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
- linux下交替打印AB代码实现——线程相关函数学习心得
- ubuntu12.04+ros fuerte 跑ORB_SLAM代码