《视觉SLAM十四讲》公式笔记(ch02 初识SLAM)

目录

相机

单目相机

双目相机 (Stereo) 

深度相机(RGB-D)

经典视觉 SLAM 框架

视觉里程计

后端优化

回环检测

建图

度量地图(Metric Map)

拓扑地图(Topological Map)

SLAM 问题的数学表述


相机

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

单目相机

        只使用一个摄像头进行 SLAM 的做法称为单目 SLAM Monocular SLAM)。 这种传感器结构特别的简单、成本特别的低,所以单目 SLAM 非常受研究者关注。照片,本质上是拍照时的场景(Scene),在相机的成像平面上留下的一个投影。它以二维的形式反映了三维的世界。显然,这个过程丢掉了场景的一个维度:也就是所谓的深度(或距离)。在单目相机中,我们无法通过单个图片来计算场景中物体离我们的距离(远近)。 我们必须移动相机之后,才能估计它的运动Motion ,同时估计场景中物体的远近和大小,不妨称之为 结构 Structure )。

双目相机 (Stereo) 

        双目相机由两个单目相机组成,但这两个相机之 间的距离(称为基线 Baseline))是已知的。我们通过这个基线来估计每个像素的空间位置。

深度相机(RGB-D)

        它最大的特点是可以通过红外结构光或 Time-of-Flight (ToF)原理,像激光传感器那样,通过主动向物体发射光并接收返回的光,测出物体离相机的距离。 这部分并不像双目那样通过软件计算来解决,而是通过物理的测量手段,所以相比于双目可节省大量的计算量。 不过,现在多数 RGB-D 相机还存在测量范围窄、噪声大、视野小、易受日 光干扰、无法测量透射材质等诸多问题,在 SLAM 方面,主要用于室内 SLAM,室外则较难应用。

经典视觉 SLAM 框架

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

视觉里程计

        叫它为“里程计”是因为它和实际的里程计一样,只计算相邻时刻的运动,而和再往前的过去的信息没有关联估计了两张图像间的相机运动。那么,只要把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决了定位问题。然而, 仅通过视觉里程计来估计轨迹,将不可避免地出现累计漂移(Accumulating Drift)。这是由于视觉里程计(在最简单的情况下)只估计两个图像间运动造成的。

后端优化

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

回环检测

        回环检测,又称闭环检测(Loop Closure Detection ),主要解决位置估计 随时间漂移的问题。 为了实现回环检测,我们需要让机 器人具有 识别曾到达过的场景的能力。在检测到回环之后,我们会把“ A B 是同一个点”这样的信息告诉后端优化算法。

建图

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

度量地图(Metric Map

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

拓扑地图(Topological Map

        相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个图(Graph ),由节点和边组成,只考虑节点间的连通性。

SLAM 问题的数学表述

“小萝卜携带着传感器在环境中运动”,由如下两件事情描述:
1. 什么 是运动 ?我们要考虑从 k-1  时刻到 k  时刻,小萝卜的位置 x   是如何变化的。
运动方程:
\boldsymbol{x}_k=f\left(\boldsymbol{x}_{k-1},\boldsymbol{u}_k,\boldsymbol{w}_k\right)
其中, x_k 和  {x}_{k-1} 表示小萝卜在 k 和   k-1 时刻的位置, u_k 是 是运动传感器的读数(有时也叫 输入 ),w_k  为噪声。
2. 什么 是观测 ?假设小萝卜在 k  时刻,于 x_k 处探测到了某一个路标 y_j ,我们要考虑 这件事情是如何用数学语言来描述的。
\boldsymbol{z}_{k,j}=h\left(\boldsymbol{y}_j,\boldsymbol{x}_k,\boldsymbol{v}_{k,j}\right)
其中,y_j 是第 j 个路标点,{z}_{k,j} 是在 x_k 位置上观测 y_j  产生的观测数据,{v}_{k,j} 表示噪声。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值