一起自学SLAM算法:9.1 ORB-SLAM2算法

连载文章,长期更新,欢迎关注:


写在前面

第1章-ROS入门必备知识

第2章-C++编程范式

第3章-OpenCV图像处理

第4章-机器人传感器

第5章-机器人主机

第6章-机器人底盘

第7章-SLAM中的数学基础

第8章-激光SLAM系统

第9章-视觉SLAM系统

        9.1 ORB-SLAM2算法

        9.2 LSD-SLAM算法

        9.3 SVO算法

第10章-其他SLAM系统

第11章-自主导航中的数学基础

第12章-典型自主导航系统

第13章-机器人SLAM导航综合实战


下面将从原理分析、源码解读和安装与运行这3个方面展开讲解ORB-SLAM2算法。

9.1.1 ORB-SLAM2原理分析

前面已经说过,ORB-SLAM2算法是特征点法的典型代表。因此在下面的分析中,首先介绍一下特征点法的基本原理。特征点法中除了最基本的特征提取和特征匹配外,还涉及到相机在三维空间运动时位姿的表示,以及帧与帧之间配对特征点、环境地图点、相机位姿等共同形成的多视图几何关系。在掌握了特征点法、三维空间运动和多视图几何这些基本知识后,就可以结合论文[4]对ORB-SLAM2系统框架展开具体分析了。

1.特征点法

通过第7章的学习,我们已经知道SLAM就是求解运动物体(比如机器人、无人机、相机等)的位姿和环境中路标点(也就是环境地图点)的问题。当相机从不同的角度拍摄同一个物体时可以得到不同的图像,而这些图像中具有很多相同的信息,这就构成了共视关系。一幅图像由很多像素点组成,那么如何利用每帧图像中像素点所包含的信息表示这种共视关系,并利用该共视关系计算出相机位姿和环境地图点呢?

可能大家会最先想到,直接将图像中的每个像素点放入某种计算模型中参与计算,通过这种由像素点直接参与计算的共视关系计算模型就能求出机位姿和环境地图点,这就是前面说过的直接法,关于直接法的详细分析将在9.2节中展开。

除了用像素点直接构建共视关系,还有一种比较间接的方法,就是先从图像像素点中提取一些比较独特的点(即特征点),然后在不同视角拍摄的图像中寻找特征点的匹配关系。接着,将这些匹配好的特征点用来构建共视关系计算模型求出机位姿和环境地图点,这就是前面说过的特征点法。下面对特征点法中的特征提取、特征匹配和模型构建展开讨论。

(1)特征提取

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

(2)特征匹配

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

(3)模型构建

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

2.三维空间运动

相机的运动过程可以看成三维空间的刚体运动,所谓刚体,就是运动物体的机械形状随运动不发生变化。假如以相机起始时刻的位姿(Pose[0])处建立世界坐标系(World),经过运动之后相机到达位姿(Pose[1]),那么相机在世界坐标系下的位姿Pose[1]就可以看成位姿Pose[0]经过旋转和平移的合成,如图9-4所示。也就是说相机位姿由3自由度旋转量和3自由度平移量共同表示,一共为6个自由度。旋转量表示相机在空间中的朝向,具体表达形式包括欧拉角、旋转矩阵、四元数等;平移量表示相机在空间中的位置,也就是x、y、z坐标值。

图9-4  三维空间刚体运动

(1)欧拉角、旋转矩阵、四元数

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值