Advertisement

视觉SLAM笔记(3) 视觉SLAM框架

阅读量:

视觉SLAM框架主要包括经典框架、视觉里程计、后端优化、回环检测和建图五个核心部分。首先通过相机的运动变化生成连续图像序列,并利用这些图像数据进行定位与地图构建。经典框架涉及对相机运动的估计(视觉里程计)和地图的生成(建图),但单纯的前端估计容易导致累计漂移问题。为了解决这一问题,在后端优化中引入了最大后验概率估计方法,并结合回环检测技术减少漂移影响。回环检测通过识别机器人回到已访问的位置来校正轨迹误差,并将信息传递给后端优化进行全局调整。建图分为度量地图和拓扑地图两种形式:度量地图强调精确的位置关系表示(如稀疏或稠密映射),而拓扑地图关注节点间的连接关系(如路径规划)。整体而言,视觉SLAM通过前端估计与后端优化相结合,并利用回环检测消除误差,最终实现准确的定位与建图。

视觉SLAM笔记(3) 视觉SLAM框架

  • 1. 经典框架
  • 2. 视觉里程计
  • 3. 后端优化
  • 4. 回环检测
  • 5. 建图
    • 5.1. 度量地图
    • 5.2. 拓扑地图

1. 经典框架

相机在场景中运动的过程将捕捉到一系列连续变化的动态图像
视觉SLAM的主要任务是通过这些数据源完成定位与环境构建任务

这项任务并非想象中那么简单

在这里插入图片描述

把整个视觉 SLAM 流程分为以下几步:

  1. 传感器信息读取
    在视觉 SLAM 应用中,主要针对相机图像数据进行获取与预处理操作。
    此外,在机器人系统中还会涉及编码盘、惯性测量单元等多种传感器的数据采集与同步校准。

  2. 视觉里程计 (Visual Odometry, VO)
    视觉里程计的主要功能是估计相邻图像之间的摄像头姿态变化以及描绘环境局部结构的状态。
    VO 也被认为是 前端 (Front End)。

  3. 后端优化
    后端接收来自不同时间点视觉里程计测得的相机姿态数据及回环检测信息
    经过优化处理后,生成了一致的整体轨迹和地图数据
    作为位于 Visual Odometry(VO)之后的重要环节,在此阶段完成的数据处理被称为后端处理系统(Back End Processing)。

  4. 回环检测 (Loop Closing)
    通过回环检测机制识别机器人是否曾访问过之前记录的位置
    当系统检测到机器人进入循环状态时,该系统将相关信息反馈至后端处理流程

  5. 建图 (Mapping)
    它根据估计的轨迹,建立与任务要求对应的地图

该系统框架已基本完善,并已在多个视觉处理平台和机器人开发框架中得到实际应用。基于这些技术基础,我们实现了第一个基于深度学习的SLAM系统原型,在常规工作环境下实现了对物体定位与环境建图的能力。

因此,在将工作环境设定为固定不变的条件下,并且确保光线变化不大以及不受外界干预的影响时


2. 视觉里程计

视觉里程计关心相邻图像之间的相机运动,最简单的情况当然是两张图像之间的运动关系

在这里插入图片描述

例如,在观察到上图后,“右图应该是左图向左旋转一定角度的结果”。不妨思考一下:我们是如何了解‘向左旋转’这件事儿的?人类依靠视觉不断探索世界,并估算自己的位置;然而却很难将这种直觉理性化地说出来。观察到上图后,“离得近的是吧台桌旁”,而远处则是墙壁与黑板。

当相机向左移动时,在吧台左侧近处的部分进入镜头视野范围内,而右侧远处的柜子则退出镜头范围之外
根据这些观察结果,则可推断相机应是向左转动

然而,在深入了解时

这促使我们思考:计算机是如何从图像中确定相机的运动轨迹的?

前面也提过,在计算机视觉领域中存在许多看似理所当然的事物,在实际应用中却面临巨大的挑战。
实际上,在计算机中的图像被建模为一个数值矩阵。
其中所包含的信息对于普通的计算机来说显得极为陌生——这也是当前机器学习面临的核心难题之一。
视觉 SLAM 技术仅能观察到成千上万的像素点,并且这些像素点的位置依赖于相机内部参数以及外部环境参数。
只有当系统能够理解相机与空间物体之间的几何关系时才能实现对相机运动的有效估计。

阐述这个几何关系和VO的实现过程需要打下一些背景知识。在此处对VO形成直观概念后,在背景知识打下之后才能理性地展开讨论。因此,在此之前只需了解VO是如何通过相邻帧间图像估计相机运动并恢复场景的空间结构。

将其定义为"里程计"是因为该系统遵循与传统里程计相同的特性。该系统仅依据当前时刻与前一时刻的数据来计算运动量,并不涉及历史信息。

在这一点上 VO 类似于一种仅具备短暂记忆特性的物种
假设已经有了一个视觉里程计 并用于估计两张图像间的相机运动
一旦实现了这一过程 就能够将相邻时间段内的连续运动串联起来 构建出机器人的运动轨迹 并最终实现定位
另一方面 通过确定各个时间点相机的位置 就能计算出各个像素在空间中的对应位置 进而构建出地图
至此 使用VO是否已经成功地解决了SLAM问题呢?

视觉里程计确实是 SLAM 系统中的关键组成部分。
然而,在仅依赖视觉信息进行轨迹估计时,
必然会导致 累计漂移 (Accumulating Drift)
原因在于,在最简单的场景下,
该系统仅基于两个连续图像之间的运动计算,
从而忽略了后续累积误差的影响。

每次估算都会伴随一定的误差影响,
而这种误差的影响机制会导致前期偏差被传递到后续阶段。
经过一段时间后,
估算出的路径将偏离真实位置。
例如,
机器人先是转向左方并完成90度的旋转,
随后又转向右方并完成另一个90度的转弯。
因为计算过程中存在偏差,
特别是在初始设定中的第一个90度被误判为89度,
这会导致后续的所有运动计算都产生累积性偏差。
最终的结果是,
即使之后的所有估算都尽可能精确,
仍然会在位置上落后于实际值一个单位长度。

这也就是所谓的漂移 (Drift),它将导致我们无法建立一致的地图

在这里插入图片描述

会发现原本直的走廊变成了斜的,而原本 90 度的直角变成了歪的,脑壳疼!

为了消除移动偏差这一问题, 除了现有的主控系统外, 需要引入两项技术——后端优化与回环检测机制. 回环检测主要负责识别机器人是否回到了初始位置. 而后端优化能够通过分析回环检测提供的相关信息, 对整个运动轨迹的形态进行调整.


3. 后端优化

可以理解为后端优化的核心任务在于通过改进算法和模型设计,在复杂的 SLAM 应用场景中有效降低数据质量带来的负面影响。
实际上,在实际应用中我们很难确保所有数据均为完美无缺的信息源。
在大多数工业环境中使用的廉价传感器往往表现出较大的测量误差特性。
这不仅要求我们能够从观测数据中推导出可靠的相机运动信息。
同时还需要深入理解这些不确定性是如何随着时间推移逐步累积,并影响当前状态估计的质量。

在进行后端优化时需要考虑的问题包括:首先是如何从这些包含噪声的数据中推断出系统运行的状态及其不确定程度;其次这种方法被称为 最大后验概率估计 (Maximum-a-Posteriori, MAP)。

在这个问题中,
这里的状态既涵盖了机器人运动轨迹的信息又涵盖了地图数据。
相比之下,在SLAM框架中‘视觉里程计’部分通常被称作‘前端模块’。
在SLAM框架中,
前端系统生成用于优化的数据集合,
并提供初始配置信息作为起始基准。
而后端系统主要处理整体优化问题,
并不需要关注具体数据来源的具体传感器类型。
其中,
在视觉SLAM领域中
前端技术与计算机视觉研究领域密切相关。
后端则主要是滤波
非线性优化算法

在历史语境下,在机器人学领域内,“后端优化”这一概念起初并未获得独立的学术称谓,在相当长的一段时间内它主要指为 SLAM 研究提供理论支撑的技术方案。最初阶段的 SLAM 问题实质上涉及对物体运动状态的估计——这正是后端优化的目标所在。

最初探讨 SLAM 体系的文献中

为实现 SLAM 问题研究,在机器人感知与导航领域具有重要意义。必须依赖状态估计理论框架,通过模型量化定位和建图过程中的不确定性,并结合滤波器方法或非线性优化技术,以均值和方差(即不确定性)作为评估标准进行系统状态推断。

这些后续再慢慢谈


4. 回环检测

回环检测(也称闭环检测),即...技术。
其核心任务是解决位置估计误差随着时间推移累积的现象。

在实际情况中,在经过一段持续的运动周期后归于原点。然而由于漂移影响,其位置估计值并未回归至原点。

如果有一种方法
当机器人识别出自身处于起始位置时或通过定位系统确定起始位置后
能够修正位置数据以消除漂移
那么这通常被称为回环检测法。

环路检测与'定位'和'建图'这两方面均存在紧密联系。从理论上讲,地图的主要作用是为了帮助机器人了解自身访问过的场所。

为了使回环检测得以达成, 机器人必须具备辨识曾经访问过的区域的能力.
其方法途径多种多样, 在某些情况下可参考前文所述的方式, 在机器人底部安装特定的标识符(如二维码图片).
一旦它识别到了这个标志物, 就能确定自己回到了初始位置.

然而,在这种情况下, 该标志物本质上是一种依赖于环境的传感器, 这种依赖关系对实际应用场景形成了限制(例如无法进行二维码识别)。我们希望机器人能够直接利用自身携带的传感器——即基于图像数据来进行这一操作。举个例子来说, 可以通过分析多帧图像间的相似度来进行循环检测任务。

这一特征与人类具有相似性,在观察到两组图像时,人们倾向于更容易识别这些图像起源于同一地点。若回环检测机制成功运行,则能够在一定程度上有效地降低了累计误差的影响程度。视觉回环检测作为一种技术手段,在本质上是一种用于比较图像数据间相似程度的方法。鉴于当前技术条件下考虑到的图像是二维平面信息载体的特点以及其信息量的巨大潜力,在实际应用中实现精确的回环检测仍然面临诸多挑战。

当检测到回环时,在优化算法中传递了"A与B是同一个点"的相关数据信息。随后,在处理这些新数据时,在优化算法中将对轨迹和地图进行相应调整以适应回环检测的结果。具备足够的准确度的回环检测将有助于减少积累的误差,并最终构建出全局一致的轨迹和地图。


5. 建图

地图绘制(Mapping)指构建地图的过程。
然而,并非所有的地图都是固定的描述方式;具体而言,则取决于SLAM技术在不同场景中的应用需求。

在这里插入图片描述

家用扫地机器人主要在低矮平面运动,在二维地图上即可进行导航。当需要三维重建时,则要求的是具体的空间点数据以及带纹理的三角面片信息;而其他情况下仅需了解可达性信息即可完成导航任务;甚至有时不需要地图本身的支持,在行驶的车辆往往能提供现成的地图信息。例如当地已有人绘制好的地图就可以被利用进行导航操作。

对于地图而言,则蕴含着无尽的想象与期待。这种现象表明,在现有的技术手段如视觉里程计、回环检测以及后端优化等基础上构建地图时,并不具备固定的形态与统一的方法论。从空间数据的角度出发,在三维坐标系中定义的一组离散点集合也可以被视为一种地理表示方式;同样地,在二维图像中经过精心渲染呈现出丰富细节的三维模型也能够满足基本的地图需求;而那些标注了城市节点、村庄分布以及铁路网络等关键要素的画面,则被认定为另一种形式的地图表示方式。

大体上讲,它们可以分为

  • 度量地图
  • 拓扑地图

5.1. 度量地图

度量地图(Metric Map)的核心关注点在于精准呈现空间布局。在实际应用中,我们常采用**稀疏(Sparse)与稠密(Dense)**两种方法来进行分类划分。其中,稀疏地图通过一定程度的抽象简化,并非必须完整描绘所有细节

在这里插入图片描述

比如选取一部分具有代表意义的东西称为路标(Landmark)。
一张稀疏地图是由路标的集合构成的,并非忽略其未包含的部分。
相比之下,在这种情况下稠密地图更注重其建模过程。
通过使用稀疏路径标记图来进行定位任务时,则足以达到预期效果。

而这些系统通常依赖于高分辨率的地图来进行路径规划。
高分辨率的地图通常由多个小单元组成。
在二维空间中使用栅格(Grid)模型,在三维空间中则采用体素(Voxel)形式。
每个单元包含三种状态:占据、空闲或未知。
当对某个空间位置进行查询时,
这种表示方法能够提供该位置是否可达的信息。
这种表示方法被广泛应用于多种路径规划算法,
例如A算法和D算法等。
这种方法受到机器人研究者的广泛关注。

但是也意识到这种地图需要为每个网格点记录其状态信息从而造成较大的存储空间消耗并且在大多数情况下这些地图中的细节信息往往是冗余的


5.2. 拓扑地图

相比而言,在保证一定比例的地理信息准确性的同时(或说在满足特定的空间分析需求的前提下),拓扑地图(Topological Map)特别突出显示并更加注重各地图形要素间的相互关联和联系

拓扑地图是一个图(Graph),包含节点和边,并仅关注节点间的连接关系
例如A点和B点之间存在路径相连,并不关心具体的路径细节

在这里插入图片描述

该系统通过减少对精确位置的需求并简化地图细节,在表示方式上更加简洁高效。
然而,在处理复杂结构的地图方面存在不足。
在如何将地图划分为节点和边以及如何利用拓扑地图进行导航和路径规划方面仍存在诸多问题。


参考:

《视觉SLAM十四讲》


相关推荐:

视觉 SLAM 笔记(2) 相机系统
视觉 SLAM 笔记(1) 初识 SLAM 与计算机视觉基础


谢谢!

全部评论 (0)

还没有任何评论哟~