ORB-SLAM策略思考之跟踪线程
1 特征点提取
- 图像金字塔,来解决尺度不变性问题(通过缩放后,得到原图像上的特征点位置信息)
- FAST角点检测+灰度质心法,来解决旋转不变性问题(使用按行对称搜索的策略,加速)
- 特征点分块双阈值提取+四叉树筛选策略,来使得FAST特征点分布较均匀,防止特征点集中导致位姿估计失败
- 对图像添加一个19像素的镜像边框,防止BRIEF描述子模版超出图像边界导致描述子计算失败
- 得到特征点后,注意使用相机畸变参数,将畸变特征点的位置进行校正
2 地图初始化
- 使用初始化匹配(只进行原图匹配)策略来寻找两帧之间的特征点,用于构建基础矩阵或者单应性矩阵
- 双线程恢复相机运动,使用基础矩阵和单应性矩阵恢复两种方式恢复相机运动
- 使用RANSAC和卡方检验来构建评分系统,用于实现端到端的相机运动恢复
- 使用初始化帧和匹配帧的双关键帧策略,实现地图的初始化(0和1的id在初始化阶段就被添加到全局地图中)
- 使用全局优化的方式,对全局地图中的位姿和关键帧信息进行优化,用于校正初始地图的位姿和地图点信息
3 位姿估计
- 使用恒速模型跟踪、基于上一帧的跟踪和重定位跟踪来提高跟踪过程的鲁棒性,保证跟踪的成功率
- 使用速度参量、基于词袋的匹配方式和两帧之间的BA优化,进行恒速跟踪,这种方式计算量小,是首先需要考虑的方式
- 当恒速模型跟踪失败时,尝试基于上一帧的跟踪策略,采用窗口匹配和两帧之间BA优化的策略进行跟踪,这种方式的计算量要比恒速模型跟踪的计算量大一些,主要是用在的窗口匹配上
- 当基于上一帧的跟踪策略失败时,使用重定位进行位姿拯救,主要采用的策略有:
- 基于关键帧数据库的候选关键帧筛选策略
- 基于词袋的特征点匹配+RANSAC的EPnP的位姿估计策略,通过判断RANSAC迭代次数和内点数目来筛选候选关键帧策略
- 基于重投影的匹配方式产生新的匹配(已经成功的匹配不参加),基于BA优化来优化位姿
- 如果重定位失败时,进行整个系统的重启工作,以当前帧进行整个SLAM系统的重启
4 局部地图跟踪
- 使用一阶向量和二阶相连关键帧的方式进行局部地图的构建
- 采用未匹配地图点+可视信息筛选可以进行匹配的地图点,可视条件如下:
- 地图点深度为正
- 重投影符合去畸变参数要求
- 深度在地图点的最大和最小深度范围内
- 视角满足小于60°的要求
- 使用重投影匹配的方式添加匹配信息,并根据是否发生过重定位进行匹配参数构建
- 认为刚刚发生的重定位后,位姿信息并不准确,将会扩大匹配阈值
- 使用局部BA进行位姿优化(3D地图点固定)
5 关键帧筛选
- 局部建图线程停止或者需要停止,则不插入
- 如果重定位距离较近且地图中的关键帧数目较多,则不插入
- 下面是关键帧插入策略
- condition1:当上次插入关键帧距离当前帧较远时
- condition2:当局部建图线程需要关键帧时
- 条件2满足,则插入关键帧
- 条件1满足且条件2不满足时,终止局部建图线程中的BA优化,且不插入当前关键帧