视觉SLAM十四讲第 2 讲 初识 SLAM

1. SLAM 是什么

SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。如果传感器主要为相机,就称为“视觉 SLAM”。

SLAM 问题的本质:对运动主体自身和周围环境空间不确定性的估计。

2. 自主运动的两大基本问题

1)我在什么地方?-定位

2)周围环境是什么样子?-建图

视觉 SLAM ,主要是指如何用相机解决定位和建图问题。

利用相机在场景中运动的过程中得到一系列连续变化图像,进行定位和地图构建。

3. 相机

按照相机的工作方式,可分为单目(Monocular)、双目(Stereo)和深度相机(RGB-D)三个大类。

3.1 单目相机

只使用一个摄像头进行 SLAM 的做法称为单目 SLAM(Monocular SLAM)。

优点:结构简单、成本低;

照片,是以二维的形式记录了三维的世界,这个过程中丢掉了深度(距离)信息。

单目SLAM中,必须移动相机,才能估计它的运动(motion)和场景中物体的远近和大小。

视差(Disparity):相机移动时物体在图像上的运动形成视差,通过视差可以判断物体的远近,是一个相对的值。

尺度(Scale):单目SLAM估计的轨迹和地图将与真实的轨迹和地图相差一个因子,称为尺度。

尺度不确定性(Scale Ambiguity):单目SLAM无法仅凭图像确定真实尺度的性质。

缺点:平移之后才可以计算深度,无法确定真实尺度;根本原因是通过单张图片无法确定深度。

3.2 双目相机

目的:通过某种手段测量物体离我们的距离,克服单目无法知道距离的缺点,通过单个图像恢复场景的三维结构,消除尺度不确定性。

组成:双目相机由两个单目相机组成,这两个相机之间的距离(称为基线(Baseline))是已知的。通过基线可以估计每个像素的空间位置。双目相机测量到的深度范围与基线相关。基线距离越大,能够测量到的就越远。

缺点:配置与标定均较为复杂,其深度量程和精度受双目的基线与分辨率限制,而且视差的计算非常消耗计算资源

3.3 深度相机

特点:用红外光或飞行时间(Time-of-Flight,ToF)原理,通过主动向物体发射光并接收返回光,测出物体离相机的距离。是通过物理的测量手段,所以相比于双目可节省大量的计算量。

缺点:测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等,主要用于室内 SLAM

4. 经典视觉SLAM框架

整个视觉 SLAM 流程分为以下几步:
1. 传感器信息读取。在视觉 SLAM 中主要为相机图像信息的读取和预处理。在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
2. 视觉里程计 (Visual Odometry, VO)。视觉里程计任务是估算相邻图像间相机的运动,以及局部地图的样子。VO 又称为前端(Front End)。
3. 后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在 VO 之后,又称后端(Back End)。
4. 回环检测(Loop Closing)。回环检测判断机器人是否曾经到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
5. 建图(Mapping)。根据估计的轨迹,建立与任务要求对应的地图。

如果工作环境限定在静态、刚体,光照变化不明显、没有人为干扰的场景,这个 SLAM 系统已经相当成熟

4.1 视觉里程计

视觉里程计VO 关心相邻图像之间的相机运动,VO 能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构。它和实际的里程计一样,只计算相邻时刻的运动,与过去的信息没有关联。

视觉里程计可以估计两张图像间的相机运动。那么只要把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决定位问题。

然而,仅通过视觉里程计来估计轨迹,将不可避免地出现累计漂移(Accumulating Drift)。这
是由于视觉里程计(在最简单的情况下)只估计两个图像间运动造成的。

为了解决漂移问题,我们还需要两种技术:后端优化和回环检测。

4.2 后端优化

后端优化主要指处理 SLAM 过程中噪声的问题。

后端优化要考虑的问题,就是如何从这些带有噪声的数据中,估计整个系统的状态,以及这个状态估计的不确定性有多大——称为最大后验概率估计(Maximum-a-Posteriori,MAP)。

视觉 SLAM 中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。

4.3 回环检测

回环检测,又称闭环检测(Loop Closure Detection),主要解决位置估计随时间漂移的问题。例如把“原点”识别出来,我们再把位置估计值“拉”过去,就可以消除漂移了。

回环检测与“定位”和“建图”二者都有密切的关系。地图存在的主要意义,是为了让机器人知晓自己到达过的地方。为了实现回环检测,我们要让机器人具有识别曾到达过的场景的能力。

我们可以判断图像间的相似性,来完成回环检测。所以视觉回环检测,实质上是一种计算图像数据相似性的算法。

4.4 建图

建图(Mapping)是指构建地图的过程。地图是对环境的描述,但这个描述并不是固定的,需要视 SLAM 的应用而定。大体可以分为度量地图与拓扑地图两种。

度量地图(Metric Map)

度量地图强调精确地表示地图中物体的位置关系,通常我们用稀疏(Sparse)与稠密(Dense)进行分类。

稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。例如选择一部分有代表意义的东西,称为路标(Landmark),一张稀疏地图就是由路标组成的地图,不是路标的部分就可以忽略。

稠密地图着重于建模所有看到的东西。通常按照某种分辨率,由许多个小块组成。二维度量地图是许多个小格子(Grid),三维则是许多小方块(Voxel)。一般地,一个小块含有占据、空闲、未知三种状态,以表达该格内是否有物体。

对于定位来说,稀疏路标地图就足够了。而用于导航时,我们往往需要稠密的地图。

拓扑地图(Topological Map)

相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个由节点和边组成的图(Graph),只考虑节点间的连通性,不擅长表达具有复杂结构的地图。

5. SLAM问题的数学表述

5.1 运动方程

x 表示位置,uk 是运动传感器的读数(也叫输入),wk 为噪声。

5.2 观测方程

在 xk 位置上看到某个路标点 yj ,产生了一个观测数据 zk,j

y表示路标,vk,j 是这次观测里的噪声。

这两个方程描述了最基本的 SLAM 问题:当我们知道运动测量的读数 u,以及传感器的读数 z 时,如何求解定位问题(估计 x)和建图问题(估计 y)?

因此SLAM问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?

按照运动和观测方程是否为线性,噪声是否服从高斯分布进行分类,分为线性/非线性和高斯/非高斯系统。

线性高斯系统(Linear Gaussian, LG )是最简单的,它的无偏的最优估计可以由卡尔曼滤波器(Kalman Filter, KF)给出。

非线性非高斯系统(Non-Linear Non-Gaussian,NLNG )中,我们会使用以扩展卡尔曼滤波器(Extended Kalman Filter, EKF)和非线性优化两大类方法去求解它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值