ORB_SLAM2代码阅读(1)——系统入口

本文详细介绍了ORB_SLAM2的stereo_kitti.cc示例,包括图像加载、SLAM系统初始化、追踪过程以及System类的构造函数、TrackStereo()函数和SaveTrajectoryKITTI()函数的工作原理。ORB_SLAM2是一个实时的、适用于大规模环境的特征点SLAM系统,支持单目、双目和RGB-D相机。
摘要由CSDN通过智能技术生成

1、说明

本文以~/ORB_SLAM2/Examples/Stereo/stereo_kitti.cc 为起点一步步阅读ORB_SLAM2代码。由于本人也是初学,阅读代码过程中难免出现错误,希望各位谅解。

2、简介

ORB-SLAM是由Raul Mur-Artal,J. M. M. Montiel和Juan D. Tardos于2015年发表在IEEE Transactions on Robotics。ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模的、小规模的、室内室外的环境都可以运行。该系统对剧烈运动也很鲁棒,支持宽基线的闭环检测和重定位,包括全自动初始化。该系统包含了所有SLAM系统共有的模块:跟踪(Tracking)、建图(Mapping)、重定位(Relocalization)、闭环检测(Loop closing)。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。ORB-SLAM2在ORB-SLAM的基础上,还支持标定后的双目相机和RGB-D相机。

其系统结构图如下图所示:
在这里插入图片描述
可以看到ORB-SLAM主要分为三个线程进行,分别是Tracking、LocalMapping和LoopClosing。三个线程分别存放在对应的三个文件中,分别是Tracking.cpp、LocalMapping.cpp和LoopClosing.cpp文件中,很容易找到。

3、stereo_kitti.cc

stereo_kitti.cc 是针对KITTI数据集的双目ORB_SLAM示例。该示例比较简单,主要包括四部分:

  1. 载入图像 :根据命令行输入的参数,载入在相关文件夹下图像和时间戳。LoadImages(string(argv[3]), vstrImageLeft, vstrImageRight, vTimestamps);*注 :该过程只是将图像的名称保存在相应的vector变量中。
  2. 创建SLAM系统:根据命令行输入的参数创建SLAM系统并进行系统初始化。ORB_SLAM2::System SLAM(argv[1],argv[2],ORB_SLAM2::System::STEREO,true);其中:argv[1]表示词袋文件的路径,argv[2]表示配置文件的路径,ORB_SLAM2::System::STEREO表示创建SLAM系统为双目SLAM系统,true表示进行可视化操作。
  3. 传入图像进行追踪 :通过一个循环过程将图像传入SLAM系统中进行追踪。SLAM.TrackStereo(imLeft,imRight,tframe);
  4. 停止SLAM系统并保存轨迹:通过Shutdown()函数停止SLAM系统中的所有线程,利用SaveTrajectoryKITTI()函数来保存轨迹。

该示例主要内容就是这三部分,其他内容主要是相关变量的定义和追踪时间的统计过程。

4、SLAM系统文件(Sy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值