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

本文介绍了SLAM的基本概念,包括定位与建图的相互关联,以及在不同场景的应用。视觉SLAM流程涉及视觉里程计、后端优化、回环检测和建图四个关键步骤。后端优化解决噪声问题,回环检测减少累积漂移,建图则构建度量或拓扑地图。SLAM问题被建模为状态估计问题,通过运动和观测方程处理测量数据来估计状态变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10452b63bbf09b14de0b01c3ea1156f9.png

初识SLAM


be967a84551018f2374e423d38aa57e5.png
https://www.zhihu.com/video/1213822277336707072

一、SLAM是什么?

先用三个视频直观感受SLAM

9283c7c918e8573810310c30eb709167.png
稀疏半稠密重建https://www.zhihu.com/video/1213824548535427072
bc8226c051e60ee864c98feda1af6f52.png
室内外定位https://www.zhihu.com/video/1213823972967583744
6b5bc9f7369ff9baa9140139288f1d1f.png
稠密重建https://www.zhihu.com/video/1213824042102575104

定义

SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边移动一边逐步描绘出此环境完全的地图,所谓完全的地图(a consistent map)是指不受障碍行进到房间可进入的每个角落。--百度百科
SLAM 问题的本质: 对运动主体自身和周围环境空间不确定性的估计。

自主运动的两大基本问题

1.我在什么地方?——定位

2.周围环境是什么样子?——建图

定位与建图=内外兼修 定位侧重对自身的了解,建图侧重对外在的了解

相互关联

准确的定位需要精确的地图

精确的地图来自准确的定位

“定位”和“建图”,可以看成感知的“内外之分”,一方面要明白自身的状态(即位置),另一方面也要了解外在的环境(即地图)。

09a0fab81045dd2736db24cf3556e663.png
各种各样的传感器

此处略去若干字.....

二、SLAM可以用在哪些地方?

d9e98d80592e70fba9fde8fb5327058b.png
自动驾驶定位https://www.zhihu.com/video/1213829345728774144
e4bbb13d07a8147d28b6fbaee2eebb69.png
AR(增强现实)https://www.zhihu.com/video/1213829456399527936
b1bcada63ca01b1fc115cc358cf7f71a.png
手持设备定位https://www.zhihu.com/video/1213829598305325056

三、经典视觉SLAM框架

dd88eb6f937acfd3ee403b12980f3736.png
整体视觉 SLAM 流程图

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

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

经典的视觉 SLAM 框架是过去十几年内,研究者们总结的成果。这个框架本身,以及 它所包含的算法已经基本定型,并且在许多视觉程序库和机器人程序库中已经提供。依靠 这些算法,我们能够构建一个视觉 SLAM 系统,使之在正常的工作环境里实时进行定位与建图。因此,我们说,如果把工作环境限定在静态、刚体,光照变化不明显、没有人为干 扰的场景,那么,这个 SLAM 系统是相当成熟的了。

视觉里程计

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

c291db6453cae3949d0ba00d1c09fe67.png
相机拍摄到的图片与人眼反应的运动方向

人类看到上图会很自然的反应出右图应该是左图向左旋转一定角度的结果,但是计算机是如何通过图像确定相机的运动呢?图像在计算机里只是一个数值矩阵。这个矩阵里表达着什么东西,计算机毫无概念。而视觉 SLAM 中,我们只能看到一 个个像素,知道它们是某些空间点在相机的成像平面上投影的结果。所以,为了定量地估 计相机运动,必须在了解相机与空间点的几何关系之后进行。

VO 能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构。只要把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决了定位问题。另一 方面,我们根据每个时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。然而,仅通过视觉里程计来估计轨迹,将不可避免地出现累计漂移(Accumulating Drift),,它将导致我们无法建立一致的地图。这是由于视觉里程计(在最简单的情况下)只估计两个图像间运动造成的。

1e8eab8abc406345649e7cf9e9c72635.png
累计误差与回环检测的校正结果

为了解决漂移问题,我们还需要两种技术:后端优化和回环检测。回环检测负责把“机器人回到原始位置”的事情检测出来,而后端优化则根据该信息,校正整个轨迹的形状。

后端优化

笼统地说,后端优化主要指处理SLAM过程中噪声的问题。后端优化要考虑的问题, 就是如何从这些带有噪声的数据中,估计整个系统的状态,以及这个状态估计的不确定性有多大——这称为最大后验概率估计(Maximum-a-Posteriori,MAP)。这里的状态既包括 机器人自身的轨迹,也包含地图。 在视觉 SLAM 中,前端和计算机视觉研 究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。

回环检测

回环检测,又称闭环检测(Loop Closure Detection),主要解决位置估计随时间漂移的问题。回环检测与“定位”和“建图”二者都有密切的关系。事实上,我们认为,地图存在 的主要意义,是为了让机器人知晓自己到达过的地方。为了实现回环检测,我们需要让机器人具有识别曾到达过的场景的能力。在检测到回环之后,我们会把“A 与 B 是同一个点”这样的信息告诉后端优化算法。 然后,后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如 果我们有充分而且正确的回环检测,就可以消除累积误差,得到全局一致的轨迹和地图。

建图

建图(Mapping)是指构建地图的过程。地图的形式随 SLAM 的应用场合而定。大体上讲,它们可以分为度量地图与拓扑地图两种。

0d1af1418c3fe990f5b917509d45bac5.png
形形色色的地图:2D 栅格地图、拓扑地图以及 3D 点云地图和网格地图
度量地图(Metric Map) 度量地图强调精确地表示地图中物体的位置关系,通常我们用稀疏(Sparse)与稠密(Dense)对它们进行分类。
拓扑地图(Topological Map) 相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。拓扑地图是一个 图(Graph),由节点和边组成,只考虑节点间的连通性,例如 A,B 点是连通的,而不考 虑如何从 A 点到达 B 点的过程。

四、SLAM 问题的数学表述

千言万语,不如公式来得痛快

各时刻的位置就记为

设路标点一共有 N 个,用
表示它们
这里
是运动传感器的读数(有时也叫输入),
为噪声

这里
是这次观测里的噪声

位置上 看到某个路标点
,产生了一个观测数据

运动方程:

观测方程:

这两个方程描述了最基本的 SLAM 问题:当我们知道运动测量的读数 u,以及传感器的读数 z 时,如何求解定位问题(估计 x)和建图问题(估计 y)?这时,我们把 SLAM 问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?

五、开发工具

CLion

有edu邮箱可以申请免费使用一年

参考

视觉SLAM十四讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值