【SLAM十四讲学习笔记】第2讲 初识 SLAM

SLAM十四讲学习笔记

第2讲 初识 SLAM



2.1 SLAM 是什么?

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

按照相机的工作方式,我们把相 机分为单目(Monocular)、双目(Stereo)和深度相机(RGB-D)三个大类
单目相机 只使用一个摄像头进行 SLAM 的做法称为单目 SLAM(Monocular SLAM)。 这种传感器结构特别的简单、成本特别的低。
单目相机只是三维空间的二维投影 。人类:对大部分场景都有一个直观的距离感(空间感) 估计场景中物体的远近和大小,不妨称之为结构(Structure)
近处的 物体移动快,远处的物体则运动缓慢。当相机移动时,这些物体在图像上的运动,形成了视差。
单目 SLAM 估计的轨迹和地图,将与真实的轨迹、地图,相差一个因子,也就是所谓的尺度(Scale)。由于单目 SLAM 无法仅凭图像确定这个真实尺度,所以又称为尺度 不确定性。
双目相机 (Stereo) 和深度相机 两个相机之 间的距离(称为基线(Baseline)是已知的。计算量是双目的主要问题之一。
深度相机(又称 RGB-D 相机 )它最大的特点是可以通过红外结构光或 Time-of-Flight(ToF)原 理,像激光传感器那样,通过主动向物体发射光并接收返回的光,测出物体离相机的距离。 通过物理的测量手段,所以相比于双目 可节省大量的计算量。目前常用的 RGB-D 相机包括 Kinect/Kinect V2、Xtion live pro、 Realsense 等。不过,现在多数 RGB-D 相机还存在测量范围窄、噪声大、视野小、易受日 光干扰、无法测量透射材质等诸多问题 。

2.2 经典视觉 SLAM 框架

在这里插入图片描述

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

如果把工作环境限定在静态、刚体,光照变化不明显、没有人为干 扰的场景,那么,这个 SLAM 系统是相当成熟的了
VO:叫它为“里程计”是因为它和实际的里程计一样,只计算相邻时刻的运动,而和再往前的 过去的信息没有关联。 估计了两张图像间的相机运动。那么,只要 把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决了定位问题。 将不可避免地出现累计漂移(Accumulating Drift)。这 是由于视觉里程计(在最简单的情况下)只估计两个图像间运动造成的。 回环检测负责把“机器 人回到原始位置”的事情检测出来,而后端优化则根据该信息,校正整个轨迹的形状。
后端优化:主要指处理 SLAM 过程中噪声的问题。 如何从这些带有噪声的数据中,估计整个系统的状态以及这个状态估计的不确定性有多大(最大后验概率估计 )。在视觉 SLAM 中,前端和CV研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。
回环检测:又称闭环检测(Loop Closure Detection),主要解决位置估计随时间漂移的问题。需要让机 器人具有识别曾到达过的场景的能力。视觉回环检测,实质上是一种计算图像数据相似性的算法。我们会把“A 与 B 是同一个点”这样的信息告诉后端优化算法。 然后,后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。
建图(Mapping):是指构建地图的过程。(2D 栅格地图、拓扑地图以及 3D 点云地图和网格地图 )地图的形式随 SLAM 的应用场合而定。 大体上讲,它们可以分为度量地图与拓扑地图两种。
度量地图:例 如,我们选择一部分具有代表意义的东西,称之为路标(Landmark),那么一张稀疏地图 就是由路标组成的地图,而不是路标的部分就可以忽略掉。相对的,稠密地图着重于建模 所有看到的东西。对于定位来说,稀疏路标地图就足够了。而用于导航时,我们往往需要 稠密的地图 。大规模度量地图有时会出现一致性问题。
相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个 图(Graph),由节点和边组成,只考虑节点间的连通性。

2.3 SLAM 问题的数学表述

离散时刻 t = 1, . . . , K ,各时刻的位置就记为 x1 , . . . , xK ,它们构成了主体的轨迹。地图方面,我们设地图是由许多个路标(Landmark)组成的,而每个时刻,传感器会测量到一部分路标点,得到它们的观测数据。不妨设路标点一共有 N 个,用 y1, . . . , yN 表示它们。

运动数学模型: xk =f(xk−1,uk,wk). (2.1)

这里 uk 是运动传感器的读数(有时也叫输入),wk 为噪声。整个函数可以指代任意的运动传感器。我们把它称为 运动方程。

观测方程描述的是,当小萝卜在 xk 位置上 看到某个路标点 yj,产生了一个观测数据 zk,j。同样,我们用一个抽象的函数 h 来描述这 个关系:

zk,j = h(yj,xk,vk,j). (2.2)

这里 vk,j 是这次观测里的噪声。由于观测所用的传感器形式更多,这里的观测数据 z 以及观测方程 h 也许多不同的形式。

参数化方式(Parameterization):如在平面中运动,那么,它的位姿x由两个位置和一个转角来描述,即xk =[x,y,θ]Tk。同时,运动传感器能够测量到小萝卜在每两个时间间隔变化量uk =[∆x,∆y,∆θ]Tk,那 么,此时运动方程就可以具体化为:
在这里插入图片描述
观测一个 2D 路标点时,能 够测到两个量:路标点与小萝卜本体之间的距离 r 和夹角 φ。我们记路标点为 y = [px , py ]T,观测数据为 z = [r, φ]T ,那么观测方程就具体化为:

在这里插入图片描述
如何求解定位问题(估计 x)和建图问题(估计 y)?这时,我们把 SLAM 问题建模成了一个状态估计问题。

2.4 实践:编程基础


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值