视觉SLAM十四讲——第二讲学习笔记

视觉SLAM十四讲

第二讲 初识SLAM

1.1 SLAM

SLAM(同时定位与地图构建)指搭载特定传感器的主体,在没有环境先验信息的情况下,在运动过程中建立环境的模型,同时顾及自己的运动。

2.2 经典视觉SLAM框架

在这里插入图片描述

  1. 传感器信息读取:在视觉SLAM种主要为相机图像信息的读取和预处理。
  2. 前端视觉里程计(Visual Odometry,VO):估算相邻图像间相机的运动以及局部地图。
  3. 后端(非线性)优化:接受不同时刻视觉里程计测量的相机位姿,以及回环检测信息,对他们进行优化,得到全局一致地图。
  4. 回环检测(Loop Closure Detection):回环判断机器人是否到达过先前的位置
  5. 建图(Mapp):根据估计的轨迹建立任务相对应的地图。
2.2.1 视觉里程计

视觉里程计关心相邻图像之间的相机运动。

仅通过视觉里程计估计轨迹,将出现累计漂移现象。将导致无法建立一致的地图,需要后端优化回环检测。回环检测负责把机器人“回到原来的位置”,后端优化根据该信息矫正整个轨迹的形状

2.2.2 后端优化

后端优化主要指处理SLAM过程中的噪声问题。

视觉里程计有时被称为前端,由前端给后端提供待优化的数据,。后端优化负责整体的优化过程,往往只面对数据,在视觉SLAM中,前端和计算机视觉领域更为相关,比如图像的特征提取和匹配等,后端则主要是滤波和非线性优化算法。

SLAM问题的本质:对运动主体自身和周围环境空间不确定性的估计

2.2.3 回环检测

主要解决位置估计随时间飘移的问题。为实现回环检测,需要让机器人具有识别到过场景的能力。视觉回环检测实质上是计算图像数据相似性的算法。·

2.2.4 建图

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

度量地图(Metric Map)强调精确的表示地图中物体的位置关系,通常用稀疏和稠密对其分类。稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。例如选取一部分具有代表意义的东西,称之为路标,稀疏地图就是由路标组成的地图。相对的,稠密图着重于建模所有看到的物体。定位时,使用稀疏路标地图就足够了。二导航时则需要稠密地图。稠密地图通常按照某种分辨率,有多个小块组成。在二维地图中体现为多个小格子,在三维地图中则体现为多个小方块。通常一个格子有占据、空闲和未知三种状态,来表达该格子中是否有有物体。

拓扑地图(Topological Map)更强调地图元素之间的关系。拓扑地图是一个图,由节点和边组成,只考虑节点之间的联通性。

2.2 SLAM问题的数学表述

由于相机是在某些时刻采集数据的,因此我们只关心这些时刻和地图,这就把连续时间的运动变成了离散时刻 t = 1 , . . . , K t=1,...,K t=1,...,K当中发生的事情。在这些时刻,用 x x x表示机器人自身的位置,于是各时刻位置为 x 1 , … , x K x_1,\dots,x_K x1,,xK,构成了机器人的轨迹。在地图方面,地图由多个路标组成,每个时刻,传感器会检测到一部分路标点,得到他们的观测数据。用 y 1 , … , y N y_1,\dots,y_N y1,,yN表示。

运动可以抽象为一个数学模型
x k = f ( x K − 1 , u k , w k ) x_k=f(x_{K-1},u_k,w_k) xk=f(xK1,uk,wk)
这里 u k u_k uk是运动传感器的读数或输入, w k w_k wk表示该过程中加入的噪声。 f ( ⋅ ) f(·) f()用于表述运动的过程,称之为运动方程。

与运动方程相对应,存在一个观测方程,描述的是机器人在 x k x_k xk位置上看到某个路标点 y j y_j yj时,产生的观测数据 z k , j z_{k,j} zk,j。同样,用一个抽象函数 h h h​来描述:
z k , j = h ( y j , x k , v k , j ) z_{k,j}=h(y_j,x_k,v_{k,j}) zk,j=h(yj,xk,vk,j)
这里 v k , j v_{k,j} vk,j是这次观测过程产生的噪声。

针对不同传感器,运动方程与观测方程有不同的参数化表示,SLAM过程可以表示为两个基本方程:
{ x k = f ( x k − 1 , u k , w k ) , k = 1 , ⋯   , K z k , j = h ( y j , x k , v k , j ) , ( k , j ) ∈ O . \left\{\begin{array}{ll}\boldsymbol{x}_{k}=f\left(\boldsymbol{x}_{k-1}, \boldsymbol{u}_{k}, \boldsymbol{w}_{k}\right), & k=1, \cdots, K \\ \boldsymbol{z}_{k, j}=h\left(\boldsymbol{y}_{j}, \boldsymbol{x}_{k}, \boldsymbol{v}_{k, j}\right), & (k, j) \in \mathcal{O} .\end{array}\right. {xk=f(xk1,uk,wk),zk,j=h(yj,xk,vk,j),k=1,,K(k,j)O.
其中, O \mathcal{O} O是一个集合,记录在那个时刻观察到了哪个路标。这两个方程描述了SLAM的基本问题:当知道运动测量的读书 u u u,以及传感器的数据 z z z时,我们讲SLAM问题建模成了一个状态估计问题:如何通过有噪声的测量数据,估计内部的、隐藏的状态变量?

状态估计问题的求解,由方程具体形式以及噪声的分布有关。线性高斯系统的无偏最有估计可以由卡尔曼滤波器给出。非线性非高斯系统可以使用看u欧战的卡尔曼滤波和非线性优化两大类方法求解。
分布有关。线性高斯系统的无偏最有估计可以由卡尔曼滤波器给出。非线性非高斯系统可以使用看u欧战的卡尔曼滤波和非线性优化两大类方法求解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值