SLAM基础 - 前端、后端

"前端、后端构成"

Posted by xxc on July 18, 2018

SLAM 前端 - 后端

前端:程序框架、数据结构、类

后端:优化

前端

程序框架:组织管理代码

Linux:

  • 代码结构:

    1、bin:二进制文件

    2、include:头文件

    3、lib:编译好的库文件

    4、src:源代码文件

    5、config:配置文件

    6、test:测试用文件

  • 基本数据结构:

    1、帧:视觉SLAM中是关键帧,包含图像,特征点、位姿、内参等信息

    2、路标:图像中的特征点

    3、配置文件:如相机内参、特征点数量、匹配时选择的比例等

    ——文件读取:OpenCV提供的FileStorage类,它可以读取YAML文件,且可以访问其中任意一个字段

    4、坐标变换:定义一个类把坐标变换相关操作都放在一起

    (注意事项:上述几个概念都以类表示,尽量保证一个类有单独的头文件和源文件,避免把多个类放在同一文件中。)

  • 讨论:

    在普通VO(视觉里程计)的框架中,特征提取和匹配算法的速度对整体速度影响最大。

局部地图&全局地图

局部地图:描述附近的特征点信息,只保留离相机较近的特征点,其他的丢掉。这些特征点用于和当前帧匹配来求位置,追求速度

全局地图:记录所有特征点,表达整个环境,主要用于回环检测和地图表达

——维护局部地图规模很重要

VO是局部的短时间内的运动,和完整的SLAM有一些区别

后端

  • 扩展卡尔曼滤波EKF

    假设马尔可夫性,简单的一阶马氏:k时刻状态只与k-1时刻有关,而与之前的无关。EKF和KF区别在于对运动方程和观测方程进行线性化

  • 主流:非线性优化

    依然考虑k时刻状态与之前所有的状态有关,使用BA的思想通过图优化的方法进行优化,常用的框架有g2o,ceres