计算机视觉大型攻略 —— SLAM(4) ORB SLAM2(四)Loop closing线程与全局BA

ORB SLAM2系列的最后一篇,Loop closing线程与全局BA。

开源代码:https://github.com/raulmur/ORB_SLAM2.git

前三篇链接:系统架构跟踪线程Local Mapping线程

参考文献:
[1] ORB-SLAM: a Versatile and Accurate Monocular SLAM System
[2] ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras
[3] Double Window Optimization for Constant Time Visual SLAM
[4] Bags of Binary Words for Fast Place Recognition in Image Sequences
[5] ORB: an efficient alternative to SIFT or SURF

系统架构

论文[2]中给出的算法框架图。这一篇写Loop Closing线程与全局BA线程。

Loop Closing 线程

当机器人的轨迹完成一个环的时候,称为Loop closure。Loop closing线程需要首先检测到闭环事件,之后优化Pose Graph,启动全局BA线程,优化整个地图和关键帧。

Loop Detection

Loop Closing算法使用DBoW2实现回环的检测。

词袋(Bag of Words)

DBoW2算法的大体工作流程,

1. 为一组训练图像提取特征

2. 特征分类并创建词典。

使用K-means聚类,构成由Word{Wi}组成的词典。

3. 量化每幅图片,为图片的特征寻找词典内最接近的words,生成直方图。

4. 反向映射到图像(documents),生成Inverted Index。

5. 测试图像通过Inverted index在词典中快速匹配。

ORB SLAM中的回环检测

  • 计算K_{i}与其Covisibility Graph的邻居的BOW相似度S_{min}
  • 在Recognition database中排除相似度在S_{min}以下的关键帧。
  • 排除与K_{i}在Covisibiilty直接连接的关键帧。
  • 获得Loop candidiates。
  • 在Loop candidates中挑选最合适的Loop。

Loop Correction

  • 融合新插入的关键帧与Loop,在Covisibility Graph中建立新的边。
  • 优化Essential Graph。

全局BA

Loop closing线程最后启动全局BA线程,做最后的优化。

  • Full BA可以看做Local BA的特例。 
  • 优化所有的关键帧与地图点。
  • 全局优化的性能比较差,因此单独创建一个线程,异步操作。如果在此线程优化期间,发现了新的Loop,那么需要停止当前的优化,为新的Loop从头优化。

上一篇: Local Mapping线程

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值