SLAM
Carlos橘子柠檬
在读
展开
-
【机器学习】3-4-2 非矩阵分解
#3-4-2非矩阵分解import mglearnimport numpy as npimport matplotlib.pyplot as pltimport pandas as pdfrom sklearn.datasets import load_breast_cancerfrom sklearn.datasets import make_moonsfrom sklearn.d...原创 2019-11-25 22:52:51 · 317 阅读 · 0 评论 -
【SLAM】视觉里程计的入门实践
1.典型特征1)前言在SLAM系统问题中,根据经典的框架,分为:前端、后端、回环、建图四大部分。所谓前端,就是视觉里程计的部分,视觉里程计又称前端。是视觉构建中,前端的作用就是把图像的信息处理为相关后续可以使用的计算向量,就是通过图像得出相机的运动信息,为后续计算提供可能。> 图像处理中,特征点指的是图像灰度值发生剧烈变化的点或者在图像边缘上曲率较大的点(即两个边缘的交点)。图像特征点在基于特征点的图像匹配算法中有着十分重要的作用。图像特征点能够反映图像本质特征,能够标识图像中目标物体。通过特征原创 2020-05-26 15:25:54 · 1003 阅读 · 0 评论 -
【SLAM】对极几何学习与实践
一、对极约束1.前言问:对极约束是用来干嘛的?什么是对极约束?答:对于已经知道的图像2D点,通过若干点来匹配得出相机的运动情况,什么是对极约束呢,接下来我会介绍一下。如上图所示,可以简单的了解了什么是对极约束。对极约束是一种约束条件,是在我们不知道三维点P的真实空间三维位置的时候,通过相关的几何关系将三维P点在第二帧的图像上有可能的投影位置在约束条件下为一条直线上(就是极线)。然后,通过相关特征匹配,我们确定两个三维点p2与p1一样,都是空间点P的投影。2.约束我们通过相关计算,经过相机原创 2020-05-26 15:23:24 · 975 阅读 · 1 评论 -
【SLAM】三角测量与PNP
一、三角测量在深度估计中,双目视觉可以通过极限约束找到对应的三维点信息,在雷达中可以通过TOF找到深度信息,那么在单目视觉中,如何获得深度信息呢?这就需要三角测量。> 三角测量在三角学与几何学上是一借由测量目标点与固定基准线的已知端点的角度,测量目标距离的方法。而不是直接测量特定位置的距离(三边量测法)。当已知一个边长及两个观测角度时,观测目标点可以被标定为一个三角形的第三个点。三角量测亦可意指为超大三角形系统的精确测量,称作三角量测网络。这源自于威理博·司乃耳于1615-17的作品,他展现原创 2020-05-26 15:02:47 · 1957 阅读 · 0 评论 -
【SLAM】G2OBA优化及ICP的学习实践
1.G2O在之前的章节我已经讲过了G2O(General Graph Optimization)的相关原理以及应用,这次的BA优化问题呢,我们也可以转化为一个G2O来求解。G2O(General Graph Optimization)———— 通用图优化。G2O(General Graph Optimization)的核里带有种类多样的求解器,而它的顶点、边的类型也是多种多样。我们可以自己定义顶点和边。总的来说,如果一个优化问题能够表达成图(顶点与边),那么这个问题就可以用G2O(General G原创 2020-05-26 14:47:04 · 1408 阅读 · 0 评论 -
【SLAM】特征匹配的光流实践
1.前言在前面所介绍的特征匹配的运算上,通过已经完成的特征匹配进行相机运动位姿估计的计算,这种方法看起来似乎非常可行,但是,他也存在很多问题:1.特征点的计算是一个非常耗时的过程2.特征点的数量有限3.不是所有关键点都是被认为是特征点这么多问题要怎么去解决呢,其实就是可以用到直接法了。在讲解直接法之前,我来先谈谈光流法。由于特征点的匹配存在这么多问题,为了简化他,我们可以只提取特征点,不进行匹配,就是不计算描述子,这样就会大大减少他的计算量,但是,不进行特征匹配,如何得到可以利用的后续计算信原创 2020-05-26 14:46:14 · 2717 阅读 · 1 评论 -
【SLAM】直接法应用
1.直接法的引入在光流的计算中,他的计算量比起特征匹配的计算量要小很多,但是依然很大;在BA优化问题中,我们通过最小化重投影误差,可以获得较优化的转移矩阵(包括旋转矩阵和平移矩阵)。直接法与光流法类似,对于不同视角的2个相机位姿,依然可以用一个旋转矩阵和一个平移矩阵表示三维点,只不过在直接法中,假设图像具有光照不变性,即灰度不变性,就是我们假设一系列的图像的灰度是不变的。> 关键点的提取与描述子的计算非常耗时。实践当中,SIFT目前在CPU上是无法实时计算的,而ORB也需要近20毫秒的计算。如原创 2020-05-26 14:45:18 · 1549 阅读 · 0 评论 -
【SLAM】状态估计系统和卡尔曼滤波
1.状态估计> 状态估计(state estimation)根据可获取的量测数据估算动态系统内部状态的方法。对系统的输入和输出进行测量而得到的数据只能反映系统的外部特性,而系统的动态规律需要用内部(通常无法直接测量)状态变量来描述。因此状态估计对于了解和控制一个系统具有重要意义。状态估计(state estimation)根据可获取的量测数据估算动态系统内部状态的方法。对系统的输入和输出进行测量而得到的数据只能反映系统的外部特性,而系统的动态规律需要用内部(通常无法直接测量)状态变量来描述。因此原创 2020-05-26 14:44:28 · 4392 阅读 · 0 评论 -
【SLAM】BA和图优化的入门与实践
1.BA与三维投影我们知道BA优化就是使用三维点进行投影找出最合适的相机位姿(旋转矩阵和平移矩阵),换句话,就是通过迭代调整光束,使其光束满足约束平面,这个迭代也是可以通过最小二乘法实现的。那我们的转换步骤有哪些呢?通过旋转矩阵和平移矩阵将三维点从世界坐标系转换为相机坐标系归一化进行畸变校正由相机内参得出相机图像的二维矩阵。当然,上述步骤所推算出的目标只是推测的二维坐标,我们希望这个推测的二维坐标与真实观测到的二维坐标一致,但是在实际的系统中,这往往是由差异的。通过这原创 2020-05-26 14:43:39 · 5141 阅读 · 0 评论 -
【SLAM】滑动窗口法及其优化求解实践
1.大规模下的BA问题我们知道,在一个完整而实际的slam系统中,BA的计算量规模会随着系统的运行,其规模越来越大,这在实际运行中是不能被允许的,因为这会严重影响SLAM系统的运行。试想一下,如果在例如一个西安市这种规模的建图问题上,把每一帧图像作为要BA优化的部分,这是难以想象的规模。因此,在BA优化中,我们会严格控制其需要进行的优化量,这种办法有很多,比如提取关键帧,这样的的话,我们只需要优化关键帧即可,至于非关键帧,我们就不用管他,当然,对于非关键帧,也可以用于定位检测等,不再用于建图优化。原创 2020-05-26 14:42:52 · 5072 阅读 · 0 评论 -
【SLAM】位姿图优化的入门与实践
1.位姿图当把BA优化问题中的位姿图的问题简化要怎么做?BA优化中的计算量很大很大,为了减少计算量,我已经介绍过很多方法了,这里,我们可以对位姿图进行优化,要如何做到,其实也很简单,只需要把相机观察的三维点去掉,在g2o优化问题上,只使用相机顶点,以及相邻相机顶点的关系描述即可。这样,我们就大大简化了计算量,为啥这就简化计算量了呢,因为我们只考虑相机顶点,以及相邻相机顶点的关系,不考虑三维点了,我们知道,三维点的数量一定远远大于相机位姿顶点的数量。这就是位姿图,在g2o优化问题上,只使用相机顶点,原创 2020-05-26 14:41:38 · 7096 阅读 · 3 评论 -
【SLAM】创建字典进行回环检测教程
1.前言现在,我们已经知道了SLAM中在前端进行姿态估计,在前端估计中,相邻的时间中,位姿的估计可以使用前端估计解决;在较长的时间中,位姿估计可以使用图优化解决;那么,对于更长的时间呢,如果依然使用图优化会导致漂移的持续累计,这时候,要怎么解决来遏制这种长时间导致的漂移呢?这就要用到回环检测了。> 回环检测,又称闭环检测,是指机器人识别曾到达某场景,使得地图闭环的能力。说的简单点,就是机器人在左转一下,右转一下建图的时候能意识到某个地方是“我”曾经来过的,然后把此刻生成的地图与刚刚生成的地图做原创 2020-05-26 14:40:40 · 600 阅读 · 2 评论 -
【SLAM】使用单目相机进行地图构建
1.前言经过我们连续超长时间的学习,我们终于可以到介绍建图问题了!之前我们一致在介绍SLAM系统的前三大组成部分,前端估计、后端估计、回环检测,那么,第四大部分,建图问题,就从本文开始介绍,这也是SLAM系统中基础环节的最后一个问题。试想一下,对于基于人工设计的特征点,它构建的地图是怎么样的呢?由于特征点的稀疏性,这会导致SLAM地图构建的稀疏性,对于稀疏的地图,在一些场景下是可以使用的,比如大致的路线规划,但是,在大多数场景下,我们还是希望构建一个不是那么稀疏的地图,即稠密地图或者半稠密地图。原创 2020-05-26 14:39:31 · 3382 阅读 · 0 评论 -
【SLAM】稠密建图的讨论与八叉树三维地图的构建
1.前言我们已经讲过了单目相机构建稠密地图,当然,对于视觉,这是一个简单有效的办法,对于SLAM系统来讲,它还有很多不足。> 稀疏地图反而更容易做导航,稠密地图作用一般是三维重建考虑的问题。主要缺陷有如下几点:像素梯度深度参数图像投影多线程我们接下来先讨论一下这些缺陷以及他的解决办法。2.梯度与深度1.像素梯度对于极线约束,最简单就是使用单个像素的对比,找到最相似的一个作为匹配,但是这有很多误差,所以,诞生了使用块匹配作为匹配方式,虽然这个已经很大程度降低了他的误匹配率,但原创 2020-05-26 14:38:38 · 4566 阅读 · 3 评论 -
【SLAM】视觉SLAM系统设计与未来研究探讨
1.前言经过漫长的SLAM系列文章更新,视觉SLAM基础入门与学习部分进入最后一章,这一章,我会总结一下之前讲过的各个部分的基础知识,并带领大家完成一个完整SLAM系统的设计并展望一下未来的研究方向。首先,依然带给大家来自百度百科关于SLAM的严格定义:> SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。问题可以描述为:将一原创 2020-05-26 14:37:14 · 1280 阅读 · 0 评论