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

因为研究生的工程实践我选择了这个方向,这两周一直在学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库。

欧式变换

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

四元数

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

欧拉角

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

李群与李代数

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

线性拟合

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

相机

单目相机

单目相机只有一个镜头,所以丢弃了深度这个元素,通过两次照片中近处移动慢远处移动快来估计深度,这个具体算法比较复杂。
在这里插入图片描述

双目相机

这个是两个镜头,通过两个镜头中同一个相的位置不同可以得到物体的深度。
在这里插入图片描述

深度相机

这个相机专业有一个飞行时间TOF或者红外结构光来测定深度在这里插入图片描述
在这里插入图片描述

基本框架

在这里插入图片描述
现在都是基于这个流程来实现整个建图过程,有些系统不存在回环检测。
在这里插入图片描述

视觉里程计

特征匹配ORB

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

直接法

直接法是基于光流法,在像素灰度不变的强假设下,直接选取关键点计算位移
在这里插入图片描述
这种方法的特点是速度快,依赖关键点像素梯度,可构建稠密和半稠密,但是容易受光照和大范围运动影响,并且无法实现回环检测。

对比

*******************ORB*****************************直接法
在这里插入图片描述

后端优化

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

EKF

在这里插入图片描述

BA(Bundle Adjustment)

Bundle Adjustment:每个特征反射的光束,通过调整它们的空间位置和相机姿态,使它们都汇聚到相机光心。然后形成一个矩阵再计算,但是矩阵的计算比较复杂,后续又产生了一系列的优化方式:图优化,滑动窗口滤波,位姿图等。在这里插入图片描述

回环检测

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

建图

建图主要是通过点云来实现有下面两种比较常见:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值