视觉SLAM十四讲笔记---02初始SLAM

第二次看高翔博士的《视觉SLAM十四讲》,把一些觉得重要的笔记或者一些自己的想法写下来。
之前第一次主要读完之后没有留下深刻的印象,代码也就只是简单地跑了一下,希望这次能够沉淀下自己的东西,也能学会自己写一些代码。
代码都是在kdevelop中跑的,比直接gedit下调试方便。
欢迎志同道合的朋友们一起交流!


1、相机的分类

(1)单目Monocular

  • 优势:结构简单、成本低。

  • 局限:

    深度信息的缺失==>通过平移可以计算深度
    但仍然是一个相对的值(将相机的运动和场景大小同时放大,单目看到的像是一样的)==>尺度不确定性
    ==>双目、深度相机或融合激光雷达等其他传感器

(2)双目Stereo

由两个单目相机组成,两个相机之间的距离(基线)已知。

  • 优势:可以获得深度信息。

  • 缺点:配置与标定均较为复杂,其深度量程和精度受双目的基线与分辨力的限制,且视差的计算非常消耗计算资源。

(3)深度RGB-D

利用红外结构光或Time-of-Flight原理,主动向物体发射光并接受返回的光,测出物体距离相机的距离,

  • 优势:可以获得深度信息;利用物理手段,可节省大量的计算量。

  • 缺陷:测量范围窄、噪声大、视野小、易受到日光干扰等,适用于室内。

2、经典视觉SLAM框架

视觉SLAM十四讲笔记---02初始SLAM_第1张图片
当把工作环境限制在静态、刚体、光照变化不明显、没有人为干扰的场景下,这个系统相当成熟。

(1)视觉里程计

  • 计算机如何通过图像确定相机的运动?==>了解相机与空间点的几何关系
  • 视觉里程计仅利用相邻两帧图像来估计两帧图像间的相机运动,如此累计可以得到机器人的轨迹,即解决了定位问题。同样可以根据每个时刻的相机位置,计算出各像素对应的空间点的位置,即得到地图
  • 但是每次估计会有误差产生,如此累计会导致累计漂移问题,最终无法建立一致的地图。
  • 故,在视觉里程计的基础上需要加入后端优化和回环检测技术。

(2)后端优化

  • 目标:处理前端传来的带噪声的数据,以此估计整个系统的状态以及这个状态估计的不确定性有多大(最大后验概率估计)。
  • 主要是滤波与非线性优化算法。

(3)回环检测

  • 目标:解决位置估计随时间漂移的问题。实质上是计算图像数据相似性的算法。
  • 需要让机器人具有识别曾到达过的场景的能力。可以判断图像间的相似性来完成回环检测。
  • 回环检测的信息会使后端优化得到的结果更加的正确。

(4)建图

  • 度量地图Metric Map
    强调精确地表示地图中的物体的位置关系。
    有时也会出现一致性问题。
    • 稀疏Sparse
      选择具有代表意义的东西,即路标Landmark,其余可忽略;可以用于定位。
    • 稠密Dense
      二维格子(grid)或三维方块(voxel)都存储着该位置是否可以通过的信息;消耗大量存储空间;可以用于导航。
  • 拓扑地图
    强调地图元素之间的关系。 只考虑节点间的连通性,放送了地图对精确位置的需要,去掉地图的细节问题。
    不擅长表达具有结构结构的地图。
    导航与路径规划的实现还在研究中。

总结:传感器数据为输入,仅用视觉里程计也能完成定位和建图,但是为了解决漂移累计得到全局一致的地图,可以采用后端优化的问题更正确地得到最终的结果,而回环检测则可以理解为一种特殊情况的数据输入。

3、SLAM问题的数学表述

(1)数学模型

时刻:t = 1, …, K
位置:x1,…,xK
路标:y1,…,yN 假设有N个路标点

  • 数学模型:

运动方程:xk = f(xk-1, uk, wk)

uk为运动传感器的读数(或输入),wk为噪声。
反映从k-1时刻到k时刻,位置x如何变化。

观测方程:zk,j = h(yj, xk, vk,j)

vk,j为噪声。
反映在xk位置上看到某个路标点yj,产生了一个观测数据zk,j

(2)参数化
根据真实运动和传感器的种类,存在着若干种参数化的方式。

  • 例:位姿由两个位置和一个转角描述,即xk = [x, y, θ]Tk
    运动传感器能够测量到在每两个时间间隔位置和转角的变化量uk = [△x, △y, △θ]Tk
    且假设线性关系,则运动方程可以为:
    视觉SLAM十四讲笔记---02初始SLAM_第2张图片
  • 例:假设使用二维激光传感器获得一个2D路标点,测得到路标点的距离r和夹角φ。
    记路标点为y = [px, py]T,观测数据为z = [r, φ]T
    则观测方程可以有:
    视觉SLAM十四讲笔记---02初始SLAM_第3张图片
    (3)状态估计问题
    由两个方程描述了最基本的SLAM问题:已知运动测量的读数u,及传感器读数z,求解定位问题(x)和建图问题(y)==>状态估计问题
  • 根据运动和观测方程是否为线性,噪声是否服从高斯分布可以分类:
    • 线性高斯:卡尔曼滤波器。
    • 非线性非高斯:扩展卡尔曼滤波器+非线性优化。
    • 线性非高斯
    • 非线性高斯

你可能感兴趣的:(视觉SLAM十四讲,视觉SLAM十四讲,学习笔记)