视觉slam十四讲 pdf_视觉SLAM十四讲学习笔记(一)

本次给大家带来的是高翔的《视觉SLAM十四讲》一书中第二讲的学习笔记。

这次及此后的相关推送中的提及到的“书”,不加说明均指作者高翔的《视觉SLAM十四讲》一书。


引子

说到定位,大多数人的第一印象可能都是GPS。诚然,如今用GPS实现室外环境定位非常容易,我们日常使用的手机基本上都有GPS。然而GPS也远不是完美无缺的,因为它完全依赖于远距离在轨卫星发来的微弱无线电信号。这就意味着在没有无线电信号的地方GPS无法工作,例如在一些室内、水下、地下,甚至在城市的高楼大厦之间。此外,GPS信号还极其微弱,而且很容易拥塞,根本不能用于某些实时的应用场合。

SLAM——Simultaneous Localization and Mapping,中文翻译过来就是同时定位与建图。SLAM的主要任务就是定位和建图。

定位是对自身的状态估计,建图是对外在环境的估计,也就是作者高翔在书中所说的“内外兼修”。

和GPS相比起来,SLAM是通过传感器测得的数据来实现定位功能。也就是说,SLAM可以在没有卫星信号的情况下工作,而且SLAM可以达到的定位精度更高。无人驾驶、AR等领域都有用到SLAM技术。


传感器

对于一个在没有GPS信号的未知地图中运动的机器人,它需要通过传感器获得数据,再对观测数据进行处理,从而估计机器人的运动(定位)和场景结构(建图)。

传感器有很多种,比如相机、IMU(惯性测量单元)、激光雷达,甚至GPS也可以看做是一种传感器。

按照传感器是否安装在机器人本体上,可以分为两类,一类是携带在机器人本体上的,一类是安装在环境中的。对于安装在环境中的传感器,它们约束了外部环境,但只有满足这些约束时,基于它们的定位才能工作。显然,这种定位方案要在满足约束后才能工作,因此不是一个通用的解决方案。

而携带在机器人本体上的传感器可以通过读取外部环境的某种观测数据,通过一些间接的手段,利用这些数据推算自己的位置。这种定位方案没有对环境提出任何要求,因此可以适用于未知环境。

在SLAM中非常强调未知环境,因此,使用携带在机器人本体上的传感器来完成SLAM是重点关注的问题。而对于视觉SLAM来说,就是用相机来实现SLAM。


相机

常见的相机有单目相机、双目相机和其他多目相机以及深度相机。

单目相机:使用一个摄像头进行SLAM的做法称为单目SLAM。

单目相机结构简单,成本低。但单张图片丢失了三维空间的深度信息,它只是空间在二维平面上的投影,比如有人通过手机摄像头拍摄一张图片,我们看到图片之后,自己会对图片中物体的大小和远近有一个估计,但图片中物体的真实大小和远近可能并不是我们看到的那样。一叶障目,能遮泰山。照片中很大的东西既可能真的很大也可能是在近处很小的东西,照片中很小的东西既可能是真的很小也可能是远处很大的东西(想一想奥特曼和怪兽大乱斗是怎么拍摄的就知道了)。

那我们要如何确定图片中物体的大小和远近呢?

如果我们把相机适当平移一段距离,再拍摄另一张图片,现在我们有两张图片。近处的物体移动快,远处的物体移动慢。当相机移动时,物体在图像上的运动就形成了视差。通过比较视差,我们可以定量的判断物体的相对远近。但我们也就只能知道物体的相对远近,并不能知道物体的实际大小。事实上,单目SLAM估计的轨迹和地图和与真实的轨迹和地图相差一个因子(比例),这个因子就叫做尺度。而单目SLAM无法凭借图像确定物体真实尺度的性质,叫做尺度不确定性。

要计算深度信息,需要把相机平移,得到另一张图片,这样两张图片之间通过特征提取与匹配,通过三角测量可以计算出深度,但这样计算出来的深度也无法确定其真实尺度(把初始化的平移当做单位1,但这个单位具体多大不知道)。平移之后才能计算深度,计算深度后也无法确定真实尺度,其根本原因是通过单张图片无法确定深度。

双目相机和深度相机:这两种相机都可以获取深度信息。

首先对于双目相机,相近的两个摄像机拍摄物体时,会得到同一物体在摄像机的成像平面的像素偏移量。有了像素偏移量、相机焦距和两个摄像机的实际距离这些信息,根据数学换算即可得到物体的距离。根据双目测距原理应用在图像上每一个像素点时,即可得到图像的深度信息。

2334834f4c833e79029dc3508adb3586.png

双目测距原理(图片源自https://blog.csdn.net/bit_cs2010/article/details/52829190)

双目相机是通过视差测量深度的。深度相机(又称RGB-D相机)测量深度的方法按照原理可以分为两种:红外结构光和飞行时间法(ToF,Time-of-Flight)。

两种方法都是要通过接收发射出去的光来测出深度。在结构光原理中,相机根据返回的结构光图案,计算距离;ToF中,相机向物体发射脉冲光,根据光束发射到返回的飞行时间计算距离(至于激光测距是逐点扫描获得距离,而ToF相机可以同时获得整个图像的像素深度)。


经典视觉SLAM框架

6bee43c28cb07306236f43ecd5dbf1e8.png

(图片来源于书上)

视觉里程计:估计相邻图像间的相机运动,以及局部地图的样子。

后端优化:接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。后端优化要考虑的问题,就是要从带有噪声的数据中估计整个系统的状态,以及估计状态的不确定性有多大——这称为最大后验概率估计。

回环检测:判断相机是否到达先前的位置,主要解决位置估计随时间漂移的问题(误差累积)。如果检测到回环,把信息提供给后端进行处理。对于视觉SLAM来说,就是一个计算图像相似度的算法。

建图:根据估计得到的轨迹,建立任务要求的地图。

地图大体上可以分为度量地图(Metric Map)和拓扑地图(Topological Map)。

度量地图强调精确地表示地图中物体的位置关系,通常分为稀疏地图和稠密地图。稀疏地图对地图进行了抽象,地图中只有路标。稠密地图着重于建模所有看到的东西,它通常按照某种分辨率,有许多小块组成。二维度量地图是由许多小格子组成,三维度量地图则是由许多立体小方块组成。

拓扑地图更强调地图元素之间的关系,它是一个由节点和边组成的图(Graph),只考虑节点之间的连通性。它放松了地图对精确位置的需要,去掉了地图的细节问题,是一种更为紧凑的表达方式。


后台直接回复关键字:SLAM,便可获取前九讲电子版。

以上就是本次推送的全部内容了,本次内容是《视觉SLAM十四讲》第二讲的学习笔记,期待下次再会!

40ab8e561453ca1498ec53ba6e4045c6.png

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页