视觉SLAM第二讲笔记

第二讲

基本概念

  1. 视觉里程计(Visual Odometry, VO)

    视觉里程计任务是估算相邻图像间相机的运动,它只计算相邻时刻的运动。仅仅通过 VO 来估计轨迹,将出现累计漂移。解决这个问题需要后端优化和回环检测。

  2. 后端优化(Optimization)

    处理 SLAM 过程中的噪声问题,从带有噪声的数据中,估计整个系统的状态,以及状态估计的不确定性有多大,称为最大后验概率估计(MAP)。

  3. 回环检测(Loop Closing)

    解决位置估计的时间漂移问题,即让机器人具有识别曾经到达过的场景的能力。主要利用了图像之间的相似性。

  4. 建图(Maping)

    分为 度量地图拓扑地图 两种

    • 度量地图强调精确的表示地图中物体的位置关系,用 Sparse 和 Dense 来分类。
    • 拓扑地图强调地图元素间的关系,拓扑地图是一个 图(Graph),由边和节点组成,要考虑他们之间的连通性。

数学描述

  1. 运动方程
    $$
    x_k=f(x_{k-1},u_k,w_k)
    $$
    $x_k$ 表示 k 时刻的位置,$u_k$ 表示传感器在 k 时刻的读数。

  2. 观测方程
    $$
    z_{k,j}=h(y_j,x_k,v_{k,j})
    $$
    $z_{k,j}$ 表示观测数据。

这两个方程讲 SLAM 建模为一个状态估计的问题,根据方程和噪声的种类分为 线性/非线性高斯/非高斯 系统。

C++

  • CMakeLists.txt 声明 cmake 命令要做的事情。

  • cmake 生成 makefile 文件,make 根据 makefile 编译整个工程。

    1
    2
    3
    4
    $ make bulid
    $ cd build
    $ cmake ..
    $ make

    上面这行命令会在build文件夹里生成可执行文件。

头文件和库文件

.h文件是头文件,内含函数声明、宏定义、结构体定义等内容