连载文章,长期更新,欢迎关注:
下面将从原理分析、源码解读和安装与运行这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)欧拉角、旋转矩阵、四元数
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)