zoukankan      html  css  js  c++  java
  • ORB-SLAM2阅读笔记(一)从mono_eourc.cpp出发理解ORB-SLAM2

    泡泡机器人上已经有公开课ORB-SLAM2的代码详解了,我也先看了一个多小时的视频,后来发现看完还是迷迷糊糊,自己没看源码,根本不明白讲的什么,因此,打开文件开始阅读源码。

    为了阅读逻辑清楚,我从ORB-SLAM的Example文件中的mono_eourc.cpp开始看。

    1.检查运行程序需要的可执行文件、字典路径、一些内参设置文件的路径(比如相机内参、畸变等、尺度因子)、放图片的文件夹目录、记录时间的文件路径。一共五个参数,如果在终端上没有输满这五个参数,会报错"Usage: ./mono_tum path_to_vocabulary path_to_settings path_to_image_folder path_to_times_file"

    2.加载输入的图片和时间序列,将它们放在定义好的向量变量中,准备slam输入数据。

    3.开始创建SLAM系统了。这一步用到了system.cpp,下面开始讲system.cpp的主要内容和主要目的:

    (1)主要目的:创建SLAM系统中的4个线程,完成参数的设置。

    (2)内容:

    a.传入回环检测所需要的字典文件路径,系统内参设置文件的路径,设置传感器类型、使用的模式(即前端只追踪还是既追踪也定位的模式)。

    b.开始判断上面传入的参数是否有效,若无效将输出错误提醒信息

    c.创建一系列变量:关键帧数据库、地图、画图。

    d.通过创建track、localmapp、loopcloser、viewer四个指针变量,来初始化四个线程。

    e.再通过各个指针变量的成员函数来指定四个线程相互的关系。

    4.开始对图片序列进行遍历追踪,也就是说一个一个图片地传入track线程里,单目就是TrackMonocular(),传入的参数是一张图片和时间戳。

    至此,也就真正的进入了SLAM系统内,进行追踪、优化、定位、回环等问题。

    下一节,开始进入TrackMonocular()函数,更深入的讲解ORB-SLAM2代码!

  • 相关阅读:
    Panorama和Pivot的区别
    Windows phone 全景视图
    在usercontrol里实现导航
    (App.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    Windows phone重写返回键
    Windows Phone 8弹窗
    Kotlin 区间的一些小注意
    Kotlin 区间和循环 Loop和Range
    Kotlin when 流程判断
    Kotlin 在kotlin内使用Java的一些注意(长篇)
  • 原文地址:https://www.cnblogs.com/excellentlhw/p/10720414.html
Copyright © 2011-2022 走看看