德鲁周记06--VSLAM从入门到入坟

VSLAM入门

  • 介绍
  • 基础知识
    • 三维空间的刚体运动
      • 欧式变换
      • 四元数
      • 欧拉角
    • 李群与李代数
    • 线性拟合
    • 相机
      • 单目相机
      • 双目相机
      • 深度相机
  • 基本框架
    • 视觉里程计
      • 特征匹配ORB
      • 直接法
      • 对比
    • 后端优化
      • EKF
      • BA(Bundle Adjustment)
    • 回环检测
    • 建图

因为研究生的工程实践我选择了这个方向,这两周一直在学VSLAM,看完了高翔老师的视频和《视觉SLAM十四讲》,强烈推荐!!!入门必看,神书!!当然我第一遍自我感觉是肯定没看太懂的,只能说知道了一个框架和目前的一些主流算法。正好下周要开题,要做PPT所以也写一篇博客记录一下,算是一个入门介绍吧,希望多少能对你有点帮助。

介绍

SLAM(Simultaneous Localization and Mapping),同步定位与地图构建,最早在机器人领域提出,它指的是:机器人从未知环境的未知地点出发,在运动过程中通过重复观测到的环境特征定位自身位置和姿态,再根据自身位置构建周围环境的增量式地图,从而达到同时定位和地图构建的目的。简单点说就是解决机器人“我在哪?“,”我周围有什么?“的问题。由于SLAM的重要学术价值和应用价值,一直以来都被认为是实现全自主移动机器人的关键技术。

自从上世纪80年代SLAM概念的提出到现在,SLAM技术已经走过了30多年的历史。SLAM系统使用的传感器在不断拓展,从早期的声呐,到后来的2D/3D激光雷达,再到单目、双目、RGBD、ToF等各种相机,以及与惯性测量单元IMU等传感器的融合;SLAM的算法也从开始的基于滤波器的方法(EKF、PF等)向基于优化的方法转变,技术框架也从开始的单一线程向多线程演进。

随着最近几年计算机视觉技术的快速发展,SLAM技术越来越多的应用于家用机器人、无人机、AR设备,基于VSLAM逐渐开始崭露头角

基础知识

想要搞清楚VSLAM首先得了解这些基础知识,我也只是简单介绍,更详细得论证过程我建议去看看高翔老师的书,结合网上的详细讲解学习。

三维空间的刚体运动

这个是基础,基于这个才能测定相机和物体的位置与位姿。本质上是数学问题。所以这里要用到Eigen库。

欧式变换

这个是用矩阵来表达刚体运动,如果有一定线性代数的基础,应该能够理解,矩阵通过线性变化就能表示物体的旋转,在加上一个移动量,就能得到具体的移动和旋转从而测定物体位姿。具体后面的运算很多,包括如何变换,如何优化计算,所以如果要搞清楚还是看看书吧。德鲁周记06--VSLAM从入门到入坟_第1张图片

四元数

四元数是通过下面这个表达式来表示物体的位置
在这里插入图片描述
q1,q2,q3分别表示三个方向的旋转,也是在VSLAM中常见的表示法。

欧拉角

欧拉角就是根据某根轴旋转来表示位置,但是存在万向锁的问题,一般不用在具体程序中,但是可以用在平常的描述问题。

李群与李代数

这又是一个复杂的数学问题,简单说说目的和用法吧,主要在很多点进行线性拟合时,要求导取误差最小值,但是矩阵无法求导,所在通过李群和李代数转换关系转换为李代数,来进行优化,最终能够实现位姿预测。
具体如下图,其中so(3)表示三维旋转,se(3)表示三维旋转加位移,所以两者的自由度不一样。这块主要用到Sophus库计算特殊正交群SO(3)和特殊欧式群SE(3)。
德鲁周记06--VSLAM从入门到入坟_第2张图片

线性拟合

这块主要是对曲线进行拟合,因为大多数情况下都不是线性问题,也不是高斯噪声,所以要用到高斯牛顿法和列文伯格-马夸尔特方法。这块也用到了Eigen库,然后使用g2o进行曲线拟合。

相机

单目相机

单目相机只有一个镜头,所以丢弃了深度这个元素,通过两次照片中近处移动慢远处移动快来估计深度,这个具体算法比较复杂。
德鲁周记06--VSLAM从入门到入坟_第3张图片

双目相机

这个是两个镜头,通过两个镜头中同一个相的位置不同可以得到物体的深度。
德鲁周记06--VSLAM从入门到入坟_第4张图片

深度相机

这个相机专业有一个飞行时间TOF或者红外结构光来测定深度德鲁周记06--VSLAM从入门到入坟_第5张图片
德鲁周记06--VSLAM从入门到入坟_第6张图片

基本框架

德鲁周记06--VSLAM从入门到入坟_第7张图片
现在都是基于这个流程来实现整个建图过程,有些系统不存在回环检测。
德鲁周记06--VSLAM从入门到入坟_第8张图片

视觉里程计

特征匹配ORB

ORB(Oriented FAST+BRIEF)通过像素变化选取角点作为描述子和关键点,记录两个随机像素差进行特征点匹配。通过2D-2D对极约束/3D-2D PnP/3D-3D ICP等计算位移。
德鲁周记06--VSLAM从入门到入坟_第9张图片
德鲁周记06--VSLAM从入门到入坟_第10张图片
这种方法的特点是鲁棒性强,但是单目只能构建稀疏图,对特征点数量有一点要求。

直接法

直接法是基于光流法,在像素灰度不变的强假设下,直接选取关键点计算位移
德鲁周记06--VSLAM从入门到入坟_第11张图片
这种方法的特点是速度快,依赖关键点像素梯度,可构建稠密和半稠密,但是容易受光照和大范围运动影响,并且无法实现回环检测。

对比

*******************ORB*****************************直接法
德鲁周记06--VSLAM从入门到入坟_第12张图片

后端优化

后端优化主要分为EKF和BA(Bundle Adjustment)两种方式,现在应该BA用的比较多。

EKF

德鲁周记06--VSLAM从入门到入坟_第13张图片

BA(Bundle Adjustment)

Bundle Adjustment:每个特征反射的光束,通过调整它们的空间位置和相机姿态,使它们都汇聚到相机光心。然后形成一个矩阵再计算,但是矩阵的计算比较复杂,后续又产生了一系列的优化方式:图优化,滑动窗口滤波,位姿图等。德鲁周记06--VSLAM从入门到入坟_第14张图片

回环检测

回环检测主要基于词袋模型,这个也只有特征匹配可以做到,也就是将特征保存在一个词袋中,当有可能发生回环是检测当前的特征和之前是否一样。主要是下面两种方式:
1. 字典-K叉树
工具:DBoW3
2. 基于深度学习的回环检测
方法:聚类问题

建图

建图主要是通过点云来实现有下面两种比较常见:
德鲁周记06--VSLAM从入门到入坟_第15张图片

你可能感兴趣的:(德鲁周记,SLAM,slam)