经典视觉SLAM框架


视觉SLAM模块:

传感器数据------->前端视觉里程计------->后端非线性优化------->建图

       |                           回环检测                      |

1、传感器信息读取:读取相机的图像信息和进行预处理。

2、视觉里程计VO(又称为前端):估算相邻图像间相机的运动,以及局部地图的样子。

3、后端优化:接受不同时刻视觉里程计测量的相机位姿,以及回环检测信息,对它们进行优化,得到全局一致的轨迹和地图。

4、回环检测:判断机器人是否到达过先前的位置。若检测到回环,它会把信息提供给后端进行处理。

5、建图:根据估计的轨迹,建立与任务要求对应的地图。

如果把工作环境限定在静态、刚体、光照变化不明显、没有人为干扰的场景,那么SLAM系统已经相当成熟了。

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

图像在计算机中只是一个数值矩阵(矩阵中代表着什么东西是机器学习要解决的问题)

在视觉SLAM中,我们只能看到一个个像素点,知道它们是某些空间点在相机的成像平面投影的结果。故定量的估计相机的运动,必须先了解相机与空间点的几何关系。

VO通过相邻帧间的图形估计相机的运动并恢复场景的空间结构。“里程计”:它与实际的里程计一样,只计算相邻时刻的运动,和再往前的过去的信息无关。

飘移:仅通过视觉里程计(只估计两个图像间的运动)来估计轨迹,将不可避免地出现累计漂移。漂移将导致无法建立一致的地图,为了解决漂移需要两种技术:后端优化和回环检测。

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

后端优化:主要指处理SLAM过程中噪声的问题。要考虑:①如何从这些带有噪声的数据中估计整个系统的状态。②这个状态估计的不确定性有多大(最大后验概率估计)这里的状态包括机器人自身的轨迹,也包含地图。

(传感器带有一定的噪声)要考虑的问题:①估计噪声有多大,②噪声是如何从上一时刻传递到下一时刻的,③我们对于当前的估计有多大的自信。

 在SLAM框架中,前端给后端提供待优化的数据+这些数据的初始值,前端与计算机视觉更为相关一些。

后端负责整体的优化过程,它往往面对的只是数据。后端与滤波和非线性优化算法相关。

为了解决slam问题,我们需要状态估计理论,把定位和建图的不确定性表达出来,然后采用滤波器或非线性优化估计状态的均值和不确定性(方差)。

回环检测:主要是解决位置估计随时间漂移的问题。

机器人可以通过判断图像间的相似性来完成回环检测。实质上是一种计算机图像数据相似性算法。

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

建图对于建图,没有一个固定的形式和算法。地图的形式随SLAM的应用场合而定。大体上分为:度量地图、拓扑地图。

度量地图强调精确地表示地图中物体的位置关系,通常用稀疏和稠密对其分类。

稀疏地图进行了一定的抽象,不需要表达所有的物体。选择一部分具有代表意义的东西称之路标。由路标组成的地图,不是路标的部分可以忽略掉。对于定位可以用稀疏地图。

稠密地图着重于建模所有看到的物体,对于导航需要稠密地图。稠密地图往往是按照某种分辨率,由许多个小块组成。对于二位度量地图是许多小格子,三维是小方块。

一般,一个小块具有:占据,空闲,未知三种状态,以及该表格内是否有物体。

当查询某个空间位置时,地图能够给出该位置是否可以通过的信息。

拓扑地图:

拓扑地图强调地图元素之间的关系。它是一个图,由节点和边组成,只考虑节点间的连通性。放松了对于精确位置的要求,去掉了地图的细节问题,是一种更为紧凑的表达方式。拓扑地图不擅长表达具有复杂结构的地图。如何对于地图进行分割形成节点和边,如何使用拓扑地图进行导航与路径规划仍是值得研究的问题。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM