ORB SLAM2阅读笔记之mono_kitti

本文是关于ORB SLAM2在单目相机设置下的 mono_kitti 阅读笔记,介绍了ORB-SLAM系统的基本框架和工作流程。系统通过LoadImages读取图像,实例化SLAM系统并进行循环跟踪,包括跟踪、本地建图和闭环检测等核心模块。重点分析了主程序的图片读取、SLAM系统创建以及Tracking过程。
摘要由CSDN通过智能技术生成

一、摘要

ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模的、小规模的、室内室外的环境都可以运行。该系统对剧烈运动也很鲁棒,支持宽基线的闭环检测和重定位,包括全自动初始化。该系统包含了所有SLAM系统共有的模块:跟踪(Tracking)、建图(Mapping)、重定位(Relocalization)、闭环检测(Loop closing)。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。ORB-SLAM2在ORB-SLAM的基础上,还支持标定后的双目相机和RGB-D相机。
ORB-SLAM主要分为三个线程进行,也就是论文中的下图所示的,分别是Tracking、LocalMapping和LoopClosing。
提便宜图片1

二、系统框架

首先从mono_kitti.cc(单目相机)这个主程序来看整个代码。程序框架为:
图片2
(1)首先使用LoadImages读取图片目录和时间戳文件
(2)创建ORB_SLAM2::System对象
(3)循环读取数据
 (3.1)读取图片
 (3.2)读取时间戳
 (3.3)将图片传给SLAM系统
(4)关闭SLAM系统
(5)将相机轨线保存到硬盘中

三、 SLAM系统的创建

图片3
(1)创建了ORB词袋的对象
(2)创建了关键帧的数据库
(3)创建地图对象
(4)创建两个显示窗口
(5)初始化Tracking对象
(6)初始化Local Mapping对象,并开启线程运行
(7)初始化Loop Closing对象,并开启线程运行
(8)初始化窗口,开启线程显示图像和地图点

四、主程序部分分析

1.读取文件

/*读取文件目录*/
    if(argc != 4)
    {
   
        cerr << endl << "Usage: ./mono_kitti path_to_vocabulary path_to_settings path_to_sequence" << endl;
        return 1;
    }

    // 检索图片路径
    vector<string> vstrImageFilenames;
    vector<double> vTimestamps;


    //load函数,从第三个传入参数装载图像和时间戳,vstrImageFilenames是装有图像地址+名字的vector,vTimestamps是times.txt里每一行的时间组成的vector
    LoadImages(string(argv[3]), vstrImageFilenames, vTimestamps);

    //有几张图片
    int nImages = vstrImageFilenames.size();

程序运行需要传入三个参数:① 字典词包的路径; ② 系统中装有一些如相机参数、viewer窗口的参数的配置文件,格式为YAML; ③数据集的路径。

LoadImages函数

void LoadImages(const string 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值