![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
slam学习
文章平均质量分 61
金木炎
目前研究视觉3dreconstructure,slam和navigation。
展开
-
orbslam2(1)-初始化
单目SLAM地图初始化的目标是构建初始的三维点云。由于不能仅仅从单帧得到深度信息,因此需要从图像序列中选取两帧以上的图像,估计摄像机姿态并重建出初始的三维点云。ORB-SLAM中提到,地图初始化常见的方法有三种。方法一追踪一个已知物体。单帧图像的每一个点都对应于空间的一条射线。通过不同角度不同位置扫描同一个物体,期望能够将三维点的不确定性缩小到可接受的范围。方法二基于假设空间存转载 2016-06-29 14:59:03 · 3730 阅读 · 2 评论 -
svo(slam)理论基础
这篇博客主要根据贺一加博客和svo论文来总结的。对于svo我总结为3个步骤:step1. Sparse directly Image Alignment这个公式是直接法来求重投影残差的最小值。其实也是再求上面的公式可也分为三个部分:第一步为根据图像位置和深度逆投影到三维空间,第二步将三维坐标点旋转平移到当前帧坐标系下(这里的旋转和平移T(k,k-1)就是优化原创 2016-08-20 22:20:45 · 6292 阅读 · 0 评论 -
orbslam特征点的计算和描述子的计算,汉明距离匹配
ORB特征是目前最优秀的特征提取与匹配算法之一,下面具体讲解一下: 特征点的检测图像的特征点可以简单的理解为图像中比较显著显著的点,如轮廓点,较暗区域中的亮点,较亮区域中的暗点等。ORB采用FAST(features from accelerated segment test)算法来检测特征点。这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周围领域内转载 2016-10-23 10:59:34 · 16132 阅读 · 3 评论 -
eigen库的基本操作
Eigen 矩阵定义#include Matrixdouble, 3, 3> A; // Fixed rows and cols. Same as Matrix3d.Matrixdouble, 3, Dynamic> B; // Fixed rows, dynamic cols.Matrixdouble, Dynamic, Dynam转载 2016-10-25 09:58:47 · 2406 阅读 · 0 评论 -
单目/双目与imu的融合(一)
目前单目slam存在初始化的尺度问题和追踪的尺度漂移问题,而双目也存在精度不高和鲁棒性不好的问题。针对这些问题,提出了融合imu的想法。那么imu的作用是什么呢?单目(1)解决初始化尺度问题(2)追踪中提供较好的初始位姿。(3)提供重力方向(4)提供一个时间误差项以供优化双目(1)追踪中提供较好的初始位姿。(2)提供重力方向(3)提供一个时间误差项以供优原创 2016-12-11 21:29:17 · 30045 阅读 · 15 评论 -
坐标对齐(估计值-真实值)
.h文件#include #include #include #include using namespace std;struct PoseDatas{ double time; Eigen::Matrix position;};class Coordinate_Align{ public: void input_datas(const string &keyfr原创 2017-03-10 23:33:06 · 2843 阅读 · 3 评论 -
单目与IMU融合初始化
orbslam论文初始化方法:本初始化算法主要包括(1)陀螺仪偏差的估计;(2)在不考虑加速度偏差下的尺度和重力矢量的粗略估计;(3)加速度偏差的估计和重力矢量,尺度的优化;(4)速度估计。原创 2017-03-11 22:45:56 · 6495 阅读 · 2 评论 -
qt 下使用ROS
这种配置方法要求Qt creator是从源安装的,如果你是从.run文件安装的,那么先进入你的安装文件夹下卸载,再执行sudo apt-get install qtcreator安装好后把qtcreator.desktop文件考出来,并修改编辑:cp /usr/share/applications/qtcreator.desktop ~sudo gedit qtcreator转载 2017-07-17 19:00:44 · 1048 阅读 · 0 评论 -
视觉slam学习资料
一直想写博客,一来是实验室太忙,二来是自己初入视觉slam,怕误人子弟。所以一直没写,但是实验室的同学说我可以介绍一些基础给那些刚入门的人参考。那么从今天开始我就开始陆陆续续的把我所了解的visual slam写给大家。希望一些大牛能指正!这篇博客就把我自己整理的资料贴出来,供大家参考。(1) orb_slam 官网(网站最后有5篇论文,价值很高)http://webdiis.uniz原创 2016-06-29 13:25:07 · 16560 阅读 · 12 评论 -
ceres_solver
1:google 官网 http://ceres-solver.org/2:一篇中文博客讲的很好:http://m.blog.csdn.net/HUAJUN998/article原创 2017-10-09 15:31:38 · 1861 阅读 · 0 评论 -
VIO算法总结(一)
所谓VIO(visual inertial odometry)就是视觉传感器(camera)+IMU(inertial measurement unit)一起来做自主定位。目前主要应用手机AR,无人车高精地图,无人机等领域。这个技术目前做的怎么样呢?理论很成熟,但是纯靠vio去解决定位的应用并不多。手机AR算是一个比较成功单靠vio做的比较好应用,automated driving, UAV 和m...原创 2018-12-29 15:32:22 · 16843 阅读 · 1 评论 -
orbslam2-导航(1)-原理
从今天开始博主我就把我用orbslam2导航的原理和code讲给大家。首先,orbslam2构建的map是稀疏地图,有人说稀疏地图怎么导航,不是只有稠密map,至少是半稠密map才能navigation吗?是的,要想navigation必须要有一个好的地图例如:2D栅阁地图,3D的octomap。博主的导航是基于记忆轨迹的方式来navigation的。下面我就把博主的导航原理讲给大家。原创 2016-07-01 15:33:07 · 8526 阅读 · 5 评论 -
orbslam2-基础理论(六)-g2o(常用的优化算法)
2. 几个数学概念1) 梯度(一阶导数)考虑一座在 (x1, x2) 点高度是 f(x1, x2) 的山。那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到底有多陡。注意,梯度也可以告诉我们不在最快变化方向的其他方向的变化速度(二维情况下,按照梯度方向倾斜的圆在平面上投影成一个椭圆)。对于一个含有 n 个变量的标量函数,即函数输入一个 n 维 的向量,输出一个转载 2016-08-08 15:38:35 · 5104 阅读 · 0 评论 -
orbslam2(2)-追踪
最近在读ORB-SLAM的代码,虽然代码注释算比较多了,但各种类和变量互相引用,看起来有点痛苦。索性总结了一下Tracking部分的代码结构,希望能抓住主要思路,不掉坑里。可以看出,追踪部分的主要思路是在当前帧和(局部)地图之间寻找尽可能多的对应关系,持续优化位姿和地图。转载 2016-07-01 15:20:20 · 1627 阅读 · 0 评论 -
orbslam2(3)-优化
ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确。因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色。这一小节探讨一下ORB-SLAM里用到的优化。ORB-SLAM选用g2o作为图优化的方法,关于g2o可以参考http://www.cnblogs.com/gaoxiang12/p/5304272.html。一、为什么要优化转载 2016-07-01 15:24:44 · 4495 阅读 · 0 评论 -
orblsam2-理论基础(三)
看到orbslam2初始化里的Initializer::ReconstructH和Initializer::ReconstructF两个子函数里用到了opencv::SVD分解。这里我将会详细讲解SVD的分解理论!奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解假设M是一个m×n阶矩阵,其中的元素全部属于域 K,也就是 实数域或复数域原创 2016-07-12 14:20:47 · 2082 阅读 · 1 评论 -
orbslam2-基础理论(4)词袋
手懒了!2012年dbow2的论文:http://webdiis.unizar.es/~dorian/papers一篇中文dbow2的博客:http://blog.csdn.net/fuxingyin/article/details/51489160原创 2016-07-26 10:26:07 · 3111 阅读 · 0 评论 -
使用自己笔记本摄像头运行orbslam2
首先你已经装了ros indigo (1)配置环境变量下面我们开始创建一个catkin 工作空间:(在主文件夹下)$ mkdir -p ~/catkin_ws/src$ cd ~/catkin_ws/src即使这个工作空间是空的(在'src'目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它:$ cd ~/catkin_ws/原创 2016-07-05 10:13:00 · 9433 阅读 · 5 评论 -
orbslam2的基础理论(一)
本篇博客借鉴了许多经典博客的理论。orbslam2相机pose估计和map point结构恢复orbslam2的相机初始估计有两种方法:本证矩阵E和单应矩阵两种方法,具体可以看我之前的博客oerslam2-初始化(1)再讲相机pose估计之前,我要讲一下相机的数学模型和对极几何。我觉得首先我们要理解相机模型中的四个平面坐标系的关系:像素平面坐标系(u,v)、像平面坐标系(图原创 2016-07-05 10:49:29 · 6627 阅读 · 6 评论 -
ICCV研讨会:实时SLAM的未来以及深度学习与SLAM的比较
这篇短文写的很好,我把它copy到这里供大家学习上一届「国际计算机视觉大会(ICCV:International Conference of Computer Vision )」成为了深度学习(Deep Learning)技术的主场,但在我们宣布卷积神经网络(ConvNet)的全面胜利之前,让我们先看看计算机视觉的「非学习(non-learning)」几何方面的进展如何。同步定位与地图构建原创 2016-07-15 16:56:05 · 8650 阅读 · 0 评论 -
orbslam作者的ppt
Should we still do sparse-feature based SLAM?1) Monocular ORB-SLAM(Mur-Artal, Montiel, Tardos T-RO 2015)2) Monocular Semi Dense Mapping(Mur-Artal, Tardos, RSS 2015)3) Stereo/RGB-D OR原创 2016-07-16 10:52:08 · 2925 阅读 · 3 评论 -
orbslam2-基础理论(二)
这篇将要讲orbslam2相机初始位置估计的另一种方法:单应矩阵H(使用场景:平面,视差小)在计算机视觉中,平面的单应性被定义为一个平面到另外一个平面的投影映射。因此一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。如果点Q到成像仪上的点q的映射使用齐次坐标,这种映射可以用矩阵相乘的方式表示。若有一下定义:则可以将单应性简单的表示为:这里引入参数原创 2016-07-05 12:42:15 · 6313 阅读 · 0 评论 -
orbslam2-基础理论(五)ransac
在基于特征点的视觉SLAM中,通常情况下,在特征匹配过程中往往会存在误匹配信息,使得计算获取的位姿精度低,易产生位姿估计失败的问题,因此,剔除这些错配点有很大的必要性。常会用到RANSAC算法进行消除两两匹配图像的误匹配点,如果只停留在应用的层面上很简单,直接调用opencv函数就行,看到效果时,感觉好神奇,到底怎么实现的啊,以前一直也没弄太明白,与图像结合的博客也比较少,在查阅了一些资料后,笔者转载 2016-07-31 10:55:51 · 8811 阅读 · 4 评论 -
cmake,ros,c++和opencv经常出现的问题总结
本篇博客目的是介绍一些比较容易犯错或是比较重要的知识点。即帮助博主自己梳理,也共享给遇到同样问题的人。这篇博客会一直更新下去。一:opencv (1)inv()求逆、t()求转置、determinant()求行列式、norm()求范数、cross()求两个向量的叉乘、dot()求两个向量的点乘。二:cmake (1) 如何生成.so库文件 在CMakeL原创 2016-07-14 14:55:18 · 3132 阅读 · 1 评论 -
VIO算法总结(二)
VIO后端,后端有两种方法,一种是非线性优化,另一种是滤波,这两种有啥区别呢?其实这里面的知识还挺多的。在数学上两者都是从full Bayesian推导的,我们都知道Kalman filter的无偏估计是要求系统是线性的,而且噪声是高斯的。对于非线性和噪声非高斯的系统如slam,需要线性近似,即EKF。这是有线性误差的,对于非线性优化其实也有线性误差的。因此我认为滤波和非线性优化两种方法,如果...原创 2018-12-29 19:42:00 · 3318 阅读 · 0 评论