![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM研究
文章平均质量分 83
Rap_God
渣渣一个
展开
-
半直接法视觉里程计(SVO)实践
本文主要分两部分,编译安装SVO后对官方数据集的测试以及实验室摄像头的测试。一.SVO安装及测试在官方github首页上有比较详细的安装说明,不过部分步骤略有问题,此处给出成功安装的步骤。操作系统为ubuntu16.04并且安装ROS系统。共创建两个工作空间,一个存放各种库,包括fast、g2o以及Sophus,另一个存放SVO代码。1.安装Sophus库按照步骤即可cd原创 2017-05-20 20:22:55 · 7207 阅读 · 4 评论 -
ORBSLAM2学习之LocalMapping线程
LocalMapping线程的整个过程其实都在对应的文件中,之前已经分析过LocalMapping的源码,因此这里就只放一个流程图就好了。其他的代码部分详见:https://blog.csdn.net/u012936940/article/details/81784080...原创 2018-08-29 16:18:41 · 770 阅读 · 0 评论 -
ORBSLAM2学习之Tracking线程
之前阅读了ORBSLAM2代码的各个类,对整个代码的功能有了了解,接下来整理下几个线程的逻辑,这样才能更清晰,计划是用文字书写,其实原本用流程图更加合适一些,不过简单画了下发现很花时间,还是以后闲了再化成图吧。ORBSLAM共有四个线程,分别是Tracking主线程,LocalMapping线程,LoopClosing线程和观测窗口线程,其中Tracking线程运行在主循环中,...原创 2018-08-27 23:23:36 · 2059 阅读 · 1 评论 -
ORBSLAM2学习之LoopClosing线程
LoopClosing线程的逻辑关系也比较简单,基本上看对应的类即可,这次只是放下该线程的流程图其中闭环检测候选帧的流程如下:原创 2018-08-30 20:37:15 · 1094 阅读 · 0 评论 -
ORBSLAM2源码学习(9) LoopClosing类
该类负责闭环的检测和校正,逻辑关系比较简明while(1){ // Check if there are keyframes in the queue // Loopclosing中的关键帧是LocalMapping发送过来的,LocalMapping是Tracking中发过来的 // 在LocalMapping中通过InsertKeyFram...原创 2018-08-18 23:01:36 · 1097 阅读 · 0 评论 -
ORBSLAM2源码学习(8) LocalMapping类
最近有点事博客更新断了几天,接下来争取一次性更完。LocalMapping这个类维护了一个局部地图,对关键帧进行处理、地图点检查剔除、生成新地图点。还是先上代码再总结。#include "LocalMapping.h"#include "LoopClosing.h"#include "ORBmatcher.h"#include "Optimizer.h"#include<mu...原创 2018-08-17 22:51:08 · 1041 阅读 · 0 评论 -
ORBSLAM2源码学习(7) Initializer类
Initializer类主要负责SLAM系统的初始化,在ORB中初始化非常重要,好的初始化是系统后续更少出错的基础。以单目为例,ORB中创建了一个初始化器,负责初始化工作。void Tracking::MonocularInitialization(){ // 如果单目初始化器还没有被创建,则创建单目初始化器 if(!mpInitializer) { ...原创 2018-08-04 20:42:19 · 1496 阅读 · 0 评论 -
ORBSLAM2源码学习(6) ORBmatcher类
还是先上代码再放总结#include "ORBmatcher.h"#include<limits.h>#include<opencv2/core/core.hpp>#include<opencv2/features2d/features2d.hpp>#include "Thirdparty/DBoW2/DBoW2/FeatureVector.h"...原创 2018-08-04 00:04:00 · 2646 阅读 · 2 评论 -
ORBSLAM2源码学习(2)Frame类
这次是Frame类,Frame类应该可以说是SLAM系统中处理的一个基本单元,它将一副(或双目)图像包装成一个类,给他增加基本的信息,如这幅图的位姿、编号、特征点、对应的参考帧等重要信息,还包含一些设置参数、获取参数的方法。是SLAM的基本数据单元,直接上代码Frame.h#ifndef FRAME_H#define FRAME_H#include<vector&...原创 2018-07-20 22:49:54 · 3405 阅读 · 0 评论 -
ORBSLAM2源码学习(5) KeyFrame类
先上代码,再做总结#ifndef KEYFRAME_H#define KEYFRAME_H#include "MapPoint.h"#include "Thirdparty/DBoW2/DBoW2/BowVector.h"#include "Thirdparty/DBoW2/DBoW2/FeatureVector.h"#include "ORBVocabulary.h"#inc...原创 2018-07-29 00:19:58 · 1885 阅读 · 0 评论 -
ORBSLAM2源码学习(4) MapPoint类
真的是愤怒了,写了半天一按发表突然出现个空白的写博客界面???写半天啥都没了???你不是每隔一会自动保存呢?我真的是无语#ifndef MAPPOINT_H#define MAPPOINT_H#include"KeyFrame.h"#include"Frame.h"#include"Map.h"#include<opencv2/core/core.hpp>#inc...原创 2018-07-28 22:12:03 · 2121 阅读 · 0 评论 -
ORBSLAM2源码学习(1)ORBextractor
关于ORBSLAM2的学习已经有一段时间了,开始是照着网上各路大神的博客,对着代码梳理了下流程,算是对这个代码的工作过程有了个了解,接下来详细阅读源码,学习各部分的具体实现。这部分是特征点的提取和描述子的计算。 ORBSLAM使用的是ORB特征,即Oriented FAST and Rotated BRIEF,是对FAST特征点与BREIF特征描述子的一种结合与改进。关...原创 2018-07-19 22:56:49 · 5021 阅读 · 0 评论 -
ORBSLAM2源码学习(3) Map类和KeyFrameDataBase类
将这两个类放在一起是因为代码都比较短,比较容易理解,否则一个类单独一篇那恐怕要写好久了...1.Map类Map类管理整个地图,因此其具有的属性是所有的地图点和关建针,即普通的帧是不管的,另外还有一些帧编号之类的东西,该类具有添加、删除关键帧的方法和添加、删除地图点的方法,另外就是一个返回属性的函数。直接上代码了。#ifndef MAP_H#define MAP_H#includ...原创 2018-07-24 16:52:11 · 1403 阅读 · 0 评论 -
对极几何及单应矩阵
1.本质矩阵用两个相机在不同位置拍摄同一物体,两张照片中的景物有重叠部分,那么理论上这两张照片会存在一定的对应关系,本节任务是探索如何描述他们之间的对应关系--对极几何,属于立体视觉的部分。关于相机成像模型等部分这里不多介绍,默认理解这部分知识。首先来看几个基本概念图中的概念有:极点e:分别是左边相机中心在右图像平面上的像,右相机中心在左像平面上的像。极平面:两个相机中心和空间中某店p形成的平面。...原创 2018-06-18 13:34:09 · 6481 阅读 · 4 评论 -
Eigen学习(八)几何模块的实践
Eigen的几何模块用来表达空间的旋转、平移等变换。3维空间中刚体的运动有六个自由度,分别是绕3个轴的旋转运动和沿着3个轴的平移运动。对于旋转可以用3x3的旋转矩阵R表示,旋转矩阵描述了刚体经过矩阵作用后的姿态信息,旋转矩阵是一个正交矩阵;然而旋转矩阵有9个参数,9个参数描述6自由度的旋转,有点冗余了。因此旋转还可以用旋转向量来表示,空间中物体的旋转可以看作是绕这某个轴转过一定的角度完成,...原创 2018-04-08 19:59:48 · 2385 阅读 · 0 评论 -
ORBSLAM2源码学习(10) Optimizer类
应该是到最后一个类了。。。先代码后总结。整体参考了网络上吴博大佬的注释,感谢!#include "Optimizer.h"#include "Thirdparty/g2o/g2o/core/block_solver.h"#include "Thirdparty/g2o/g2o/core/optimization_algorithm_levenberg.h"#include "Thir...原创 2018-08-25 21:41:12 · 2844 阅读 · 2 评论