《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架

来源:互联网 发布:云创客软件骗局揭秘 编辑:程序博客网 时间:2024/05/16 09:46

《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架

  • 视觉SLAM十四讲学习系列1经典视觉SLAM框架
    • 视觉里程计
    • 后端优化
    • 回环检测
    • 建图
      • 度量地图
      • 拓扑地图
    • SLAM问题的数学表述

本文主要内容来自《视觉SLAM十四讲》第二讲-初识SLAM。

这里写图片描述

经典视觉SLAM流程包括:
1、传感器信息提取。主要是相机图像相关信息。
2、视觉里程计(Visual Odometry,VO),又称为前端。估算相邻图像间相机的运动及输出局部地图,为后端优化提供“初值”。
3、后端优化(Optimization)。后端接受前端测量的相机位姿和回环检测的信息,得到全局一致的轨迹和地图。
4、回环检测(Loop Closing)。回环检测判断机器人是否到达过先前的位置。若检测到回环,将信息提供给后端进行处理。
5、建图(Mapping)。根据估计的轨迹,建立与任务要求的地图。

视觉里程计

人眼可以轻松估算出图像是否移动(反过来想就是相机运动),但是不精确。要完成建图及定位任务,我们对视觉前端的要求是定量的估计相机运动

书中介绍的方法为,视觉里程计通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,但只计算相邻时刻的运动,不关心再往前的信息。(和马尔科夫状态过程类似?)但前端过程中必然存在误差,误差会不断累积,形成累积漂移。为消除漂移,我们需要回环检测后端优化

后端优化

前端所传数据中存在的误差,也可以理解为噪声

回环检测

回环检测主要解决位置估计随时间漂移的问题。假设机器人经过时间后回到了原点,但是由于累积误差,它的位置估计值很可能没有回到原点。要解决这一问题,我们需要让机器人具有识别到过去场景的能力。要实现这一目标可以通过多种方法,如识别二维码(通过opencv-aurco模块)。在本书中主要通过检测图像间的相似性来实现,基于ORB等特征点。

建图

对于不同的任务,建图要求也不同。如家用扫地机器人,我们只需要一个二维地图,标记出障碍物即可。对于有六个自由度的相机,我们需要三维地图。大体上讲,可以分为度量地图拓扑地图

各类地图

度量地图

度量地图强调精确地表示地图中物体的位置关系,通常用稀疏和稠密对其分类。稀疏地图不表达所有物体,而是选择一部分具有代表意义的东西,称之为路标(Landmark),不是路标的部分就可以全部忽略掉。稠密地图则着重于建模所有看到的东西,通常按照某种分辨率,由许多个小块组成,在二维地图中为小格子(grid),三维地图中为小方块(voxel)。每个小格含有占据、空闲、未知三种状态,以表达该格内是否有物体,可用于各种导航算法。

拓扑地图

拓扑地图更加强调地图之间元素的关系。拓扑地图是图(graph),由节点和边构成,只考虑节点之间的连通性,如A、B点是连通的,儿不考虑如何从A点到达B点。然而,拓扑地图不擅长表达具有复杂结构的地图。

SLAM问题的数学表述

书中这一段结合了许多后续章节的内容进行描述,笔者打算在完成基本学习任务,对SLAM有自己的见解之后再行补充这块内容。