论文阅读 <Relocalization, Global Optimization and Map Merging for Monocular Visual-Inertial SLAM>

看了一下港科的基于vins拓展的论文<relocalization, global optimization and merging for vins>,在回环的实现部分总体没有什么变化,DBoW2 + PnPRANSAC + 4DOF pose graph,唯一的改动是在pnp前面加了个fundamental matrix RANSAC,应该是有效果调优的,但是根据之前VINS和LDSO的写法,DBoW2 + PnPRANSAC也是够用的.别的一些不同的操作就是在用回环帧更新当前pose的位姿的时候不是直接修正,而是把回环帧作为一个固定帧加入到当期那滑窗.其他的工作更偏向纯实现吧,包括地图的保存和读取.

Abstract

VINS会漂移并且不能提供绝对的位姿估计.

衡量历史信息来进行重定位然后修正漂移是一个热点话题.

通过高效的存储和加载地图来重复使用地图.

现在的地图和以往的可以被融合,通过全局pose graph.

代码已经被融合近VINS-Mono了.

Introduction

里程计会产生drift,及时IMU可以修正在roll和pitch角的drift,其他4个维度还是会漂的.

另一个问题是里程计是一个基于第一帧计算相对变化的系统而不是计算一个绝对的位姿.每一次我们启动系统的时候,起始点都会变成第一帧然后输出一个不是固定坐标系下的里程.

[7, 8]松耦合IMU和相机,然后用KF.

一个比较有名的基于EKF的VIO方案是MSCKF.几个相机的位姿会被保持在状态向量里.所以连续帧看到的同样的特征会形成multi-constraint update.

重定位算法可以基于地图的类别分为两类.

  • offline-built地图

[17]-[19]

[18],[19] build an offline map in geometric configuration

[17] build the offline map by learning method.

  • online-built地图

[20]和[22]用BRISK特征,[21]用ORB.这些方法都缺少加载和复用之前地图的能力.

System Overview

1563258945405

基本pipeline就这样.

Algorithm

A. Visual-Inertial Odometry

就是个VINS简介.

B. Loop Detection

我们用了DBoW2,每一个关键帧,我们用了500个FAST特征,然后用BRIEF描述子.

比之前的VINS里回环操作多了一个2D-2D,可能是有好处的,不知道出于什么考量.因为只是PnPRANSAC工作的也很好,包括LDSO也是这么操作的.

我们用了两步,

  • 先是2D-2D的Fundamental Matrix RANSAC.
  • 然后是3D-2D的PnP RANSAC

1563260961985

C. Tightly-Coupled Relocalization

1563261373161

我们没有只是计算了两个匹配帧的相对位子,我们通过在局部滑窗联合优化loop closure frame来解决.

这个回环帧被看做一个局部滑窗中的固定的额外帧.

在cost function中也只是加了个回环帧的重投影误差.

1563261558819

这种联合优化的方式会生成更高精度的结果.

D. Global Pose Graph Optimization

当我们固定过去的状态的时候,local window会立刻飞到一个"没有漂移"的地方. 这样的话,轨迹就会有一个跳跃.为了使得整个轨迹持续而平滑,我们用了一个轻量级的4DOF的pose graph.

1563261036642

4DOF的优化是比一般的pose graph不一样一些,因为重力可观以后,角度中只有yaw角不可观.

1) Four Accumulated Drift Direction

pitch和roll是可观的.

2) Adding Keyframes into the Pose Graph

每一帧在它被边缘化呢以后就会被加入pose graph. (?)为啥

然后会有两种变,顺序边和回环边.

3) 4-DOF Pose Graph Optimization

4) Map Merging

E. Map Reuse

  1. Pose Graph Saving

我们只需要保存每一个节点和边,和每一个关键帧描述子(节点).

原图被扔了(这个和VINS中的操作一致.)

特征的描述子消耗的内存最多,就是500*32一个关键帧.

  1. Pose Graph Loading

没啥.

Experiment Result

..

Conclusion

..

原文地址:https://www.cnblogs.com/tweed/p/11195333.html