ORB-SLAM2代码阅读(一)

ORB-SLAM2代码阅读(一)

代码总逻辑

参考:ORB-SLAM2详解(一)简介
ORB-SLAM主要分为三个线程进行,分别是Tracking、LocalMapping和LoopClosing。三个线程分别存放在对应的三个文件中,分别是Tracking.cpp、LocalMapping.cpp和LoopClosing.cpp文件中。ORB-SLAM2的总框架如下:
在这里插入图片描述在这里插入图片描述
(1)跟踪(Tracking)
  这一部分主要工作是从图像中提取ORB特征,根据上一帧进行姿态估计,或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧。

(2)建图(LocalMapping)
  这一部分主要完成局部地图构建。包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆集调整(Local BA),最后再对插入的关键帧进行筛选,去除多余的关键帧。

(3)闭环检测(LoopClosing)
  这一部分主要分为两个过程,分别是闭环探测和闭环校正。闭环检测先使用WOB进行探测,然后通过Sim3算法计算相似变换。闭环校正,主要是闭环融合和Essential Graph的图优化。

stereo_kitti

由于项目需要双目摄像头来跑,所以主要看了双目的代码,从stereo_kitti文件看起(stereo:双目;kitti:数据集)
在这里插入图片描述

System

在上个文件主函数中,我们创建了一个ORB_SLAM2::System的对象SLAM,这个时候就会进入到SLAM系统的主接口System。这个代码是所有调用SLAM系统的主入口:
在这里插入图片描述

Frame

Tracking线程的第一步就是读取图像,构建Frame。

Tracking

系统的第一个线程:跟踪线程
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值