ORB_SLAM2源码小记0

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//ORB_SLAM2/Vocabulary/ORBvoc.txt /home//ORB_SLAM2/Examples/Monocular/TUM1.yaml /home//ORB_SLAM2/Examples/Monocular/rgbd_dataset_freiburg1_xyz

你可能感兴趣的:(C++,计算机视觉CV,SLAM)