【视觉SLAM十四讲】ch2笔记【逐行代码带你解析】【适合纯小白 ps:因为我就是】(持续更新中)

本文介绍了视觉SLAM的基本概念,包括其定义、经典视觉SLAM框架(传感器信息读取、前端视觉里程计、后端非线性优化、回环检测和建图),以及SLAM问题的数学表述。作者分享了初识SLAM的学习过程和实践内容,如Ubuntu安装与C++环境配置。

前言

       大一大二东学学西学学了一大堆,这个暑假想往难一点的方向探索探索,以后想从事机器人行业,所以先从SLAM开始,希望这个暑假能把他更新完。
ps:对于这个方向我也只是初学者,大家看的时候一定要带辩证的思维看,因为我也不敢说我写的这个内容是正确的,同时我也希望大家对我做出一些建议和反馈。

       原书代码Github链接: link
       笔者代码Github链接: link

ch2 初识SLAM

2.1.什么是SLAM

       SLAM是指Simultaneous Localization and Mapping,翻译过来就是同时定位与地图构建模型,他解决了定位与地图构建的问题,说人话就是:
       1.我在什么地方——定位
       2.周围环境怎么样——建图

2.2经典视觉SLAM框架

经典的视觉SLAM框架
       视觉SLAM的流程分为以下步骤:

2.2.1.传感器信息读取

2.2.2.前端视觉里程计

       这个就是读取了前后两张(两张只是一个假设)图片的数据,然后根据图片信息的变化估计出运动的轨迹,但是仅仅通过这种视觉里程计来估计轨迹,不可避免的就会产生误差,这个误差我们这里叫他飘移,而这种误差是累计性的,也就是估计的越多,误差就会越大,这里我们称之为累积飘移(Accumulating Drift),这将导致我们定位也不准,建图也不准,于是,我们引入了下面两种东西:后端优化和回环检测。

2.2.3.后端非线性优化

        我们原始数据的读取来自于各式各样的传感器,但是传感器的数据不可能完全精确,会有误差,这里我们称之为噪声,后端优化要考虑的问题,就是如何从这些带有噪声的数据中去估计整个系统的状态,以及这个状态估计的不确定性有多大,这里的状态包括机器人自身的轨迹,也包含地图。

        在视觉SLAM中,前端负责图像的特征提取与匹配等等,后端则主要是滤波和非线性优化算法

2.2.4.回环检测

        回环检测,又称闭环检测,主要解决位置估计随时间漂移的问题。与后端优化任务目标相同,但是使用的方法有所差异。

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

        视觉回环检测实质上是一种计算图像数据相似性的算法。由于图像的信息非常丰富,使得正确检测回环的难度降低了不少。

        在检测到回环之后,我们会把“A与B 是同一个点”这样的信息告诉后端优化算法。然后后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,则可以消除累积误差,得到全局一致的轨迹和地图。

2.2.5.建图

        建图是指构建地图的过程。地图的形式随SLAM的应用场合而定,大体上分为度量地图拓扑地图

        度量地图
        度量地图通常用稀疏和稠密分类,稀疏地图进行了一定程度上的抽象,稠密地图着重于建模所有看到的东西,定位时用稀疏路标地图就足够了,而导航往往需要稠密地图。

        拓扑地图
        相比于度量地图的精确性拓扑地图更强调地图元素之间的关系。拓扑地图是一个图(Graph).由节点和边组成,只考虑节点间的连通性,例如只关注 A、B 点是连通的,而不考虑如何从 A点到达 B点。它放松了地图对精确位置的需要,去掉了地图的细节,是一种更为紧凑的表达方式然而,拓扑地图不擅长表达具有复杂结构的地图。如何对地图进行分割,形成节点与边,又如何使用拓扑地图进行导航与路径规划,仍是有待研究的问题。

2.3.SLAM问题的数学表述

在这里插入图片描述
        第一个方程是运动方程,xk是当前位置,xk-1是前一时刻的位置,uk是当前输入的数据,wk是噪声。

        第二个方程是观测方程,zk,j是观测数据,观测方程描述的是,当机器人在xk位置上看到某个路标点yj时,产生了一个观测数据zk,j,vk,j是这次观测里的噪声。由于观测所用的传感器形式更多,这里的观测数据z及观测方程h也有许多不同的形式。

        有了这两个方程,我们就成功节=的将SLAM“问题建模成了一个状态估计问题

2.4.ch2的实践

        书里这部分讲了如何安装ubuntu,并配置c++环境,我对这部分比较熟悉,就不写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值