图解ORBSLAM2流程

本文详细介绍了ORBSLAM2单目版本的主要流程,包括Tracking、LocalMapping和LoopClosing三个线程的工作原理。通过mono_tum.cc文件为例,从main函数开始,讲解了如何构造System对象并逐帧处理图像。重点阐述了TrackReferenceKeyFrame()函数在跟踪过程中的作用,以及如何建立图像帧与地图点之间的联系。在TrackLocalMap()中,搜索并添加新的地图点,形成局部地图。最后讨论了关键帧的创建和MapPoint的三角化恢复,为后续的SLAM过程打下基础。
摘要由CSDN通过智能技术生成

这篇博文主要是梳理ORBSLAM2的流程,对于细节暂时不会很详细的描述(之后的博文会深究细节),且本博文暂时只描述ORBSLAM2中的Monocular(单目)情况。

在ORBSLAM2中,主要的三个线程是Tracking、LocalMapping、LoopClosing。三个线程的创建都是在System.cpp中,也就是在System类中的构造函数中创建了这三个线程。

以mono_tum.cc文件为例子,我们从main函数开始看。

1、首先构造System对象,对象名叫SLAM。正如上面所言,构造System之后,便创建了Tracking、LocalMapping、LoopClosing三个线程。

2、接下来便是一帧一帧地读取数据集中的图像,调用SLAM对象中的TrackMonocular()函数。

3、TrackMonocular()函数调用GrabImageMonocular()函数,在GrabImageMonocular()中,将第二步读取的图像转化为灰度图,并用该图像创建了mCurrentFrame对象,该对象由Frame类所构造的。调用Track()函数。

 

Track()函数便是Tracking线程中精髓所在。接下我们看Track()函数。

1、初始化,选取特征点匹配很好的相邻两帧进行初始化,具体细节另一篇博客再说,

2、跟踪,Track有TrackWithMotionModel()、TrackReferenceKeyFrame()、Relocalization(),这三个函数分别对应不同情况

下面以TrackReferenceKeyFrame()为track方式说明ORBSLAM2的流程。

 

说明下示

  • 11
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值