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代码!
ORB-SLAM2阅读笔记(一)从mono_eourc.cpp出发理解ORB-SLAM2的更多相关文章
- Mongodb源代码阅读笔记:Journal机制
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
- Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable
酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...
- Hadoop阅读笔记(五)——重返Hadoop目录结构
常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...
随机推荐
- 颜色空间之CIE2000色差公式
CIEDE2000色差公式 为了进一步改善工业色差评价的视觉一致性,CIE专门成立了工业色差评价的色相和明度相关修正技术委员会TC1-47(Hue and Lightness Dependent ...
- shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
let a = [1, 2, 3]; let b = a.shift(); console.log(a); // [2, 3] console.log(b); // 1 返回值 从数组中删除的元素; ...
- Ubuntu搜狗拼音输入法崩溃问题
Ubuntu 14.04.5 LTS 环境下搜狗拼音经常崩溃,似乎也没有什么特别好的解决办法. 以下是重启命令 #!/bin/sh >/dev/>& >/dev/>&a ...
- MySql中order by和union all同时使用
() UNION ALL () 两边的语句加上括号就可以了
- Linux下使用ps命令查看某个进程文件的启动位置
ps -ef|grep shutdown ls -al /proc/4170
- 并发编程 process 模块的方法及运用 僵尸与孤儿
进程创建的两种方法 Process() 继承Process 重写run方法,传参数的时候要写init,但是注意要在init方法中运行父类的init方法 Windows下写代码开启子进程时,必须写上if ...
- 985. Sum of Even Numbers After Queries
We have an array A of integers, and an array queries of queries. For the i-th query val = queries[i] ...
- 关于逻辑回归是否线性?sigmoid
from :https://www.zhihu.com/question/29385169/answer/44177582 逻辑回归的模型引入了sigmoid函数映射,是非线性模型,但本质上又是一个线 ...
- 网站JS控制的QQ悬浮
这是一个网站JS控制的QQ悬浮客服:代码1document.writeln("<div id=\"feedback\"><div id=\"f ...
- Servlet第二篇(介绍、ServletConfig;ServletContext)
什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...