欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ORB_SLAM2源码小记0

程序员文章站 2024-03-24 23:44:46
...

ORB_SLAM源码小记

参考ORB_SLAM Paper

基本思路

ORB_SLAM:概括为基于稀疏特征点的间接法
**ORB_SLAM基本由三个线程实现,
1. Tracking,负责估计每帧的相机位姿,判断关键帧;
2. Mapping,实现Bundle Adjustment,对新增加的关键点搜索关键点并重构,筛选并删除部分关键点。
3. Loop-closing,对每个关键帧实施闭环检测,若发现,进行环首尾的对准;进行pose的图优化。优化中利用了提出的Essential Graph概念。

数据结构

  1. 特征点与关键帧
  2. Covisibility Graph and Essential Graph

主要变量

以kitti_mono为例

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

System在主循环调用TrackMonocular(…)

class System {
  //Main function
  cv::Mat& TrackMonocular(const cv::Mat& image, const double time_stamp);  
}

在TrackMonocular(…)函数中调用Tracking类指针的GrabImageMonocular(…)

class Tracking {
  //main function
  cv::Mat& GrabImageMonocular(const cv::Mat& image, const double time_stamp);
}

```shell
./ORB_SLAM2/Examples/Monocular/mono_tum /home/<your computer>/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/<your computer>/ORB_SLAM2/Examples/Monocular/TUM1.yaml /home/<your computer>/ORB_SLAM2/Examples/Monocular/rgbd_dataset_freiburg1_xyz
相关标签: SLAM CV