自己一点理解,欢迎纠错哈
ORBSLAM2 代码框架:
├── build_ros.sh --使用ROS接口编译,支持ROS;
├── build.sh --非ROS接口,编译;
├── CMakeLists.txt --使用CMake工具构建代码;
├── cmake_modules --使用第三方库;
│ └── FindEigen3.cmake
├── Examples --开发实例,包含ROS接口和非ROS接口,针对双目,单目,RGBD相机
│ ├── Monocular
│ │ ├── EuRoC_TimeStamps
│ │ │ ├── MH01.txt
│ │ │ ├── MH02.txt
│ │ │ ├── MH03.txt
│ │ │ ├── MH04.txt
│ │ │ ├── MH05.txt
│ │ │ ├── V101.txt
│ │ │ ├── V102.txt
│ │ │ ├── V103.txt
│ │ │ ├── V201.txt
│ │ │ ├── V202.txt
│ │ │ └── V203.txt
│ │ ├── EuRoC.yaml
│ │ ├── KITTI00-02.yaml
│ │ ├── KITTI03.yaml
│ │ ├── KITTI04-12.yaml
│ │ ├── mono_euroc.cc
│ │ ├── mono_kitti.cc
│ │ ├── mono_tum.cc
│ │ ├── TUM1.yaml
│ │ ├── TUM2.yaml
│ │ └── TUM3.yaml
│ ├── RGB-D
│ ├── ROS
│ └── Stereo
├── include --生成ORBSLAM2库所需要的头文件;
│ ├── Converter.h --生成数据格式的装换,涉及到给g2o,Eigen,OpenCV;
│ ├── FrameDrawer.h --当前图像帧的显示
│ ├── Frame.h --帧的对象,通用的帧属性和成员函数
│ ├── Initializer.h --单目相机的初始化
│ ├── KeyFrameDatabase.h --关键帧数据库
│ ├── KeyFrame.h --关键帧
│ ├── LocalMapping.h --局部地图线程,关于插入关键帧的处理,地图点剔除,关键帧剔除
│ ├── LoopClosing.h -- 回环检测线程,关于回环检测和回环校正
│ ├── MapDrawer.h --地图的绘制,采用的pangaolin
│ ├── Map.h -- 包含地图点和关键帧
│ ├── MapPoint.h --地图点属性及其函数
│ ├── Optimizer.h --优化主要是各种BA
│ ├── ORBextractor.h --ORB特征点的提取
│ ├── ORBmatcher.h --ORB特征点匹配
│ ├── ORBVocabulary.h --引入词典
│ ├── PnPsolver.h --主要是EPnP,3D-2D匹配,实现重定位
│ ├── Sim3Solver.h --相似变化,主要是和回环检测有关
│ ├── System.h --系统入口文件,开启三个主要线程和可视化线程,还有一些词袋和配置文件等
│ ├── Tracking.h --主要是关于Tracking线程
│ └── Viewer.h --可视化主线程
│
├── src --对应于相应的头文件,见include文件夹
│ ├── Converter.cc
│ ├── Frame.cc
│ ├── FrameDrawer.cc
│ ├── Initializer.cc
│ ├── KeyFrame.cc
│ ├── KeyFrameDatabase.cc
│ ├── LocalMapping.cc
│ ├── LoopClosing.cc
│ ├── Map.cc
│ ├── MapDrawer.cc
│ ├── MapPoint.cc
│ ├── Optimizer.cc
│ ├── ORBextractor.cc
│ ├── ORBmatcher.cc
│ ├── PnPsolver.cc
│ ├── Sim3Solver.cc
│ ├── System.cc
│ ├── Tracking.cc
│ └── Viewer.cc
├── Thirdparty --第三方库文件:后端优化库g2o和场景识别DBOW2
│ ├── DBoW2
│ └── g2o
└── Vocabulary --存放字典库
每个文件初略了解一下功能,下面进行较为详细解读