ORB-SLAM2源码学习:rgbd_tum.cc源文件

前言

1.标注好的源码放在最后边了,可直接看标注好的源码,前边的内容只是对编写代码做的简单梳理,如果能够对大家学习代码时有帮助那就希望大家能够点赞+收藏吧!(嘿嘿)

2.如果大家在学习的过程中发现我存在错误,请大家在评论区指出来,我会及时修改并回复。(谢谢)

一、代码逻辑

1.包含必要的标准库和第三方库头文件:

#include <iostream>
#include <vector>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <System.h>

2.声明函数原型:

a.函数原型一般放在main函数前边确保在调用函数时,编译器已经知道该函数的声明和参数类型。

b.由于ORB-SLAM2提供了三种模式(单目、双目、RGBD),故这个加载图像函数LoadImages在每个程序中不同(参数列表里参数的不同)。

void LoadImages(const string &strAssociationFilename, vector<string> &vstrImageFilenamesRGB,
                vector<string> &vstrImageFilenamesD, vector<double> &vTimestamps);

3. 编写main 函数:

a.参数验证:检查传入参数的数量并给出提示。

if (argc != 5) {
    cerr << "Usage: ..." << endl;
    return 1;
}

b.初始化数据结构:定义并初始化保存图像文件名、深度图文件名和时间戳的向量。

vector<string> vstrImageFilenamesRGB;
vector<string> vstrImageFilenamesD;
vector<double> vTimestamps;

c.调用 LoadImages 函数:读取关联文件数据。

LoadImages(strAssociationFilename, vstrImageFilenamesRGB, vstrImageFilenamesD, vTimestamps);

d.检查图像和深度图的数量一致性

if (vstrImageFilenamesRGB.empty() || vstrImageFilenamesD.size() != vstrImageFilenamesRGB.size()) {
    cerr << "Error: ..." << endl;
    return 1;
}

e.创建 SLAM 系统实例,配置参数。

ORB_SLAM2::System SLAM(argv[1], argv[2], ORB_SLAM2::System::RGBD, true);

构造函数具体定义如下: 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值