SLAM学习笔记(一)

本文介绍了SLAM的基本概念,包括经典视觉SLAM框架、视觉里程计、回环检测和后端优化。深入讲解了三维空间刚体运动的描述方式,如旋转矩阵、变换矩阵、四元数和欧拉角。还探讨了李群与李代数在解决SLAM优化问题中的作用,以及指数与对数映射在旋转表示中的应用。
摘要由CSDN通过智能技术生成

相机按照工作方式不同,分为:

  • 单目相机(Momocular):结构简单、成本低
  • 双目相机(Stereo):双目相机的距离估计是比较左右眼的图像获得的。双目与多目的缺点是配置与标定较为复杂,其深度量程和精度受双目的基线与分辨率所限,而且视差的计算非常消耗资源,需要使用GPU和FPGA设备加速,才能实时输出整张图像的距离信息。现有条件下,计算量是双目的主要问题之一。
  • 深度相机(RGB-D):其最大特点是可以通过红外结构或Time-of-Flight(ToF)原理,像激光传感器那样,通过主动向物体发射光并接收返回的光,测出物体与相机之间的距离。相比于双目可节省大量的计算资源。缺点:测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题。slam方面主要用于室内,室外较难应用。

经典视觉SLAM框架

  1. 传感器信息读取。在视觉slam中主要为相机图像信息的读取和预处理。
  2. 前端视觉里程计(Visual Odemetry,VO):估计相邻图像间相机的运动,以及局部地图的样子。VO又称前端。
  3. 后端(非线性)优化(Optimazition)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的轨迹和地图。
  4. 回环检测(Loop Closure Detection)。回环检测判断机器人是否到达过先前的位置,如果监测到回环,他会把信息提供给后端进行处理。回环检测实质上是一种计算图像数据相似性的算法。
  5. 建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。构建地图的过程。

如果把工作环境限定在静态、刚体、光照变化不明显、没有人为干扰的场景,这种场景下的slam技术已经相当成熟。

度量地图(Metric Map):强调精确地表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(Dense)对其分类。定位时使用稀疏地图,导航使用稠密地图。

拓扑地图(Topological Map):是一个图,由节点个边组成只考虑节点的连通性。

 视觉里程计

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

        视觉里程计能够通过相邻帧间的图像古遗迹相机运动,并恢复场景的空间结构。称它为‘里程计’是因为它和实际的里程计一样,只计算相邻时刻的运动,和过去的信息没有关联。

漂移:是由于视觉里程计的估计误差导致的,先前时刻的误差会传递到下一刻,导致经过一段时间后,估计的轨迹就不再准确。

后端优化和回环检测可以解决漂移问题。回环检测负责把“把机器人回到原始位置”的事情检测出来,后端优化则根据该信息校正整个轨迹的形状。

在视觉slam中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法

SLAM问题的本质:对运动物体自身和周围环境空间不确定性的估计。为解决slam问题,我们需要状态估计理论,把定位和见图的不确定性表达出来,然后采用滤波器或非线性优化,估计状态的均值和不确定性(方差)。

视觉回环检测实质上是一种计算图像数据相似性的算法。

SLAM问题的数学表述

离散 时刻:t=1,...,K;

轨迹:x_{1},...,x_{k};

路标:N个,用y_{1},...,y_{N}表示

k时刻位于x_{k}处探测到某一个路标y_{i}

运动方程:                                        ​​​​​ x_{k}=f({x_{k-1},{u_{k}},\omega _{k}})

 这里,u_{k}是运动传感器的读数或者输入,\omega _{k}为该过程中加入的噪声。

观测方程:在k时刻位于x_{k}处探测到某一个路标y_{i},产生一个观测数据z_{k,j}。用一个抽象函数h来描述这个关系:

                                                        z_{k,j}=h(y_{i},x_{k},v_{k,j})

 v_{k,j}是这次观测里的噪声。

SLAM过程可以总结为两个基本方程:

                                                        \left\{\begin{matrix} x_{k}=f({x_{k-1},{u_{k}}, \omega _{k}}) k=1,...,K\\z_{k,j}=h(y_{i},x_{k},v_{k,j}) (k,j)\in \O \end{matrix}\right.

其中\varnothing是一个集合,记录着哪个时刻观察到了哪个路标。这;两个方程描述了最基本的slam问题:

当知道运动测量的读数u,以及传感器的读数z,如何求解定位问题(估计x)和建图问题(估计y)?

我们就把slam问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?

第3讲:三维空间刚体运动

三位空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。

3.1旋转矩阵

1、内积

                                       a\cdot b=a^{T}b=\sum_{i=1}^{3}a_{i}b_{i}=\left | a \right |\left | b \right |cos\left \langle a,b \right \rangle

\left \langle a,b \right \rangle指向量\vec{a},\vec{b}的夹角。 也可以描述向量间的投影关系。

2、外积

a\times b=\begin{Vmatrix} e_{1} &e_{2} & e_{3}\\ a_{1} &a_{2} & a_{3} \\ b_{1} &b_{2} & b_{3} \end{Vmatrix} =\begin{bmatrix} a_{2}b_{3}-a_{3}b_{2}\\ a_{3}b_{1}-a_{1}b_{3}\\ a_{1}b_{2}-a_{2}b_{1} \end{bmatrix}=\begin{bmatrix} 0 & -a_{3} &a_{2} \\ a_{3}& 0 & -a_{1}\\ -a_{2}& a_{1} & 0 \end{bmatrix}b _{=}^{def}\textrm{}a^{\wedge }b

 外积的结果是一个向量,他的方向垂直于这两个向量,大小为\left | a \right |\left | b \right |sin\left \langle a,b \right \rangle,是两个向量张成的四边形的有向面积。

反对称符号:^

反对称矩阵:

                                                                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值