
VINS系列|VINS-Mono论文精读(一)
- 论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8421746
- GitHub链接:https://github.com/HKUST-Aerial-Robotics/VINS-Mono
摘要
一个相机和一个低成本的惯性测量单元(IMU)构成了单目视觉-惯性系统(VINS),这是用于度量六自由度(DOF)状态估计的最小传感器套件(尺寸、重量和功率方面)。在本文中,我们提出了VINS-Mono:一个鲁棒且多功能的单目视觉-惯性状态估计器。本文方法从估计器初始化的鲁棒过程开始。一种紧耦合、基于非线性优化的方法被用于通过融合预积分IMU测量和特征观测来获得高度精确的视觉-惯性里程计。回环检测模块与我们紧耦合的方式相结合,能够以最小的计算量实现重定位。我们还执行4自由度的位姿图优化以增强全局一致性。此外,所提出的系统能够通过以高效的方式保存和加载地图来复用它。当前和先前的地图能够通过全局位姿图优化融合到一起。我们在公开数据集和真实世界实验中验证了本文系统的性能,并且与其它最先进的算法进行比较。我们还微型飞行器平台上执行机载回环自主飞行,并且将算法移植到基于iOS的演示中。我们突出了所提出的工作是一个可靠、完整和多功能的系统,它适用于需要高精度定位的不同应用。我们针对PCs(https://github.com/HKUST-Aerial-Robotics/VINSMono)和iOS移动设备(https://github.com/HKUST AerialRobotics/VINS-Mobile)开源了我们的实现。
介绍
状态估计毫无疑问是针对大量应用的最基本的模块,例如机器人导航、自动驾驶、虚拟现实和增强现实(AR)。仅使用单目相机的方法由于单目相机小体积、低成本和易于硬件布置的特点而在SLAM领域中获得极大关注。然而,单目纯视觉系统无法恢复尺度,因此限制了它们在真实世界机器人应用中的使用。最近,我们看到了使用低成本惯性测量单元(IMU)辅助单目视觉系统的发展趋势。这种单目视觉-惯性系统(VINS)的主要优势为观测度量尺度以及横滚角和俯仰角。这使得需要度量尺度状态估计的导航任务成为可能。此外,IMU测量的积分能够通过弥补由于光照变化、弱纹理区域或者运动模糊导致的视觉跟踪丢失之间的差距,以显著地提高运动-跟踪的性能。单目VINS不仅在地面机器人和无人机上广泛应用,还在移动设备上非常实用,它在尺寸、重量和功耗方面对于自身和环境感知具有巨大优势。
然而,一些问题影响了单目VINS的使用。第一个问题是严格的初始化。由于缺少直接距离测量,很难直接地将单目视觉结构与惯性测量融合。同时,注意到VINS是高度非线性的事实,我们在估计器初始化方面发现巨大挑战。在大多数情况中,系统应该从一个已知的静态位置启动,并且在开始时缓慢且小心地运动,这限制了它在实际中的使用。另一个问题为,对于视觉-惯性里程计(VIO)而言,长期漂移是不可避免的。为了消除漂移,必须开发回环、重定位和全局优化。除了这些关键问题外,地图保存和复用的需求正在逐渐增长。
为了解决所有这些问题,我们提出了VINS-Mono,这是一种鲁棒且多功能的单目视觉-惯性状态估计器,它是我们之前三项工作(Robust initialization of monocular visual-inertial estimation on aerial robots、Monocular visual-inertial state estimation for mobile augmented reality和Relocalization, global optimization and map merging for monocular visual-inertial SLAM)的结合和扩展。VINS-Mono包含以下功能:
1)能够从未知初始状态中初始化系统的鲁棒初始化过程;
2)紧耦合、基于优化的单目VIO,具有相机-IMU外参标定和IMU偏置纠正功能;
3)在线重定位和四自由度(DOF)全局位姿图优化;
4)能够保存、加载和融合多个局部位姿图的位姿图复用。
在这些功能中,鲁棒初始化、重定位和位姿图复用是我们的技术贡献,这来源于我们先前的工作。工程贡献包括开源系统集成、无人机导航实时演示和移动端应用。整个系统已经被成功应用于小型AR场景、中型无人机导航和大型状态估计任务,如图1所示。
本文的剩余部分结构如下。在第二节中,我们讨论了相关的文献。我们在第三节中给出完整的系统流程。在第四节中介绍了视觉和预积分IMU测量的预处理步骤。在第五节中,我们讨论了初始化过程的估计器。第六节介绍了一种紧耦合、自标定、基于非线性优化的单目VIO。第七节介绍了紧耦合的重定位。第八节中讨论了全局位姿图优化和复用。第九节给出了实验结果。最后,本文在第十节中总结了讨论和可能的未来研究方向。
相关工作
基于单目视觉的状态估计/里程计/SLAM的学术工作非常广泛。显著的方法包括PTAM、SVO、LSD-SLAM、DSO和ORB-SLAM。显然,任何试图进行全面相关回顾的尝试都是不完整的。然而,在本节中,我们跳过了对于纯视觉方法的讨论,只关注在单目视觉-惯性状态估计方面最相关的工作。
处理视觉和惯性测量最简单的方法是松耦合传感器融合,其中IMU被作为辅助视觉结构的独立模块。融合通常由扩展卡尔曼滤波器(EKF)完成,其中IMU用于状态传播,纯视觉位姿由于更新。此外,紧耦合视觉-惯性算法是基于EKF或者图优化的,其中相机和IMU测量从原始测量层次进行联合优化。一种主流的基于EKF的VIO方法为MSCKF。MSCKF在状态向量中维护若干个先前的相机位姿,并且在多个相机视图中使用相同特征的视觉测量来形成多约束更新。SR-ISWF是MSCKF的扩展,它使用平方根形式来实现单精度的表示,并且避免了较差的数值性质。这种方法采用逆滤波进行迭代地重新线性化,使得它等价于基于优化的算法。批量图优化或者BA技术维护并优化所有的测量以获取最优的状态估计。为了实现恒定的处理时间,基于图的VIO方法通常通过边缘化过去的状态和测量以在最新状态构成的有界滑动窗口中进行优化。由于非线性系统迭代求解的高计算要求,很少有基于图的方法能够在资源受限的平台(例如移动电话)上实现实时的性能。
对于视觉测量处理,根据残差模型的定义,算法能够被分类为直接或者非直接方法。直接方法最小化光度误差,而非直接方法最小化几何位移。直接方法由于其较小的吸引区域,因此需要良好的初始估计,而非直接方法在提取和匹配特征方面消耗了额外的计算资源。非直接方法由于其成熟度和鲁棒性,因此在真实世界工程部署中更为常见。然而,直接方法更易于扩展到稠密建图,因为它们直接在像素级别上操作。
IMU通常以比相机高得多的频率获取数据。不同的方法已经被提出用于处理高频的IMU测量数据。最直接的方法是在基于EKF的方法中使用IMU进行状态传播。在图优化方法中,开发了一种称为IMU预积分的高效技术以避免重复的IMU重新积分。这种技术首次在工作Visual-inertial-aided navigation for highdynamic motion in built environments without initial conditions中引入,它使用欧拉角参数化旋转误差。Shen等人使用连续时间的误差-状态动力学推导了协方差传播。在工作On-manifold preintegration for real-time visual–inertial odometry和IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation中,通过添加后验IMU偏置校正来进一步改进预积分理论。
精确的初始值对于初始化任何单目VINS都至关重要。工作Monocular visual–inertial state estimation with online initialization and camera–IMU extrinsic calibration和Initializationfree monocular visual-inertial estimation with application to autonomous MAVs中提出了一种利用短期IMU预积分获取的相对旋转的线性估计器初始化方法。该方法无法在原始投影方程中建模陀螺仪偏置和图像噪声。工作Closed-form solution of visual-inertial structure from motion中介绍了针对单目视觉-惯性初始化问题的闭式解。之后,工作Simultaneous state initialization and gyroscope bias calibration in visual inertial aided navigation中提出了通过添加陀螺仪偏置标定来扩展该闭式解。这些方法无法对惯性积分中的不确定性进行建模,因为它们依赖于IMU测量在长时间内的二重积分。工作Automatic reinitialization and failure recovery for aggressive flight with a monocular vision-based quadrotor中提出了一种基于SVO的重新初始化和故障恢复的算法,其需要额外的面向下方的距离传感器来恢复度量尺度。工作Visual-inertial monocular slam with map reuse中介绍了一种基于流行的ORB-SLAM的初始化算法,它对于尺度收敛所需要的时间超过10s。这会给刚开始就需要尺度估计的机器人导航任务带来问题。
里程计方法无论其依赖于何种基础数学公式,都在全局平移和旋转中受到长期漂移的影响。为此,回环在长期运行中发挥着重要作用。ORB-SLAM能够回环和复用地图,这充分地利用了词袋。在回环检测之后,执行7自由度(位置、姿态和尺度)的位姿图优化。
概述
所提出的单目视觉-惯性状态估计器的结构如图2所示。
系统从测量数据预处理开始,提取和跟踪特征,并且预积分两个连续帧间的IMU测量。初始化过程提供了所有必要的值,包括位姿、速度、重力向量、陀螺仪偏置和三维特征位置,用于初始化之后基于非线性优化的VIO。具有重定位模块的VIO紧融合预积分IMU测量数据和特征观测。最终,位姿图优化模块接受经过几何验证的重定位结果,并且执行全局优化以消除漂移。它还实现了位姿图复用。VIO和位姿图优化模块在单独的线程中同时运行。
与适用于双目相机的一种最先进VIO算法OKVIS相比,本文算法专门为单目相机设计。因此,我们特别提出了一种初始化过程、关键帧选择标准,并且使用和处理大视角(FOV)相机以获取更好的跟踪性能。此外,本文算法提供了一个带有回环和位姿图复用模块的完整系统。
测量值预处理
本节介绍惯性和单目视觉测量的预处理步骤。对于视觉测量,我们跟踪连续帧之间的特征,并且在最新帧中检测新的特征。对于IMU测量,我们在两个连续帧之间预积分它们。
A.视觉处理前端
对于每帧新图像,使用KLT稀疏光流算法来跟踪现有特征。同时,检测新的角点特征以在每帧图像中维持最小数量(100-300)的特征。检测器通过设置两个相邻特征之间像素的最小间隔来实现均匀特征分布。两维(2D)特征首先去畸变,然后在通过异常值剔除后投影到单位球面上。异常值剔除通过使用基础矩阵模型的RANSAC来执行。
在这步中还将选择关键帧。我们有两个关键帧选择标准。第一个为与先前关键帧不同的平均视差。如果当前帧和最新关键帧之间被跟踪特征的平均视差超过一个特定阈值,则将当前帧作为一个新的关键帧。注意,不仅平移会引起视差,旋转也会引起视差。然而,特征不能够通过纯旋转运动三角化。为了避免这种情况,我们在计算视差时使用陀螺仪测量的短期积分来补偿旋转。注意,该旋转补偿仅用于关键帧选择,并且不涉及VINS公式中的旋转计算。为此,即使陀螺仪包含较大噪声或者存在偏置,也只会产生次优的关键帧选择结果,不会直接影响估计质量。另一个标准为跟踪质量。如果被跟踪的特征数量低于一个特定阈值,我们将当前帧作为一个新的关键帧。这一标准是为了避免特征跟踪完全丢失。
B.IMU预积分
我们遵循先前IMU预积分的连续时间、基于四元数的推导,并且包含IMU偏置处理。我们注意到,当前IMU预积分过程与工作On-manifold preintegration for real-time visual–inertial odometry和工作IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation共享几乎相同的数值结果,但是使用了不同的推导过程。所以,我们在这里只给出简单的介绍。有关基于四元数推导的详细信息请参见附录A。
否则,当偏置估计变化明显时,我们在新的偏置估计下进行重新传播。该策略为基于优化的算法节省了大量的计算资源,因为我们不需要重复传播IMU测量数据。
估计器初始化
单目紧耦合VIO是一个高度非线性系统,它在开始时需要一个精确的初始估计值。我们通过松耦合方式将IMU预积分与纯视觉结构对齐来获得必要的初始值。
A.滑动窗口中的纯视觉SfM
初始化过程从纯视觉SfM开始以估计由没有尺度的相机位姿和特征位置构成的图。
B.视觉-惯性对齐
视觉-惯性对齐的图解如图3所示。
基本的思路为将没有尺度的视觉结构与IMU预积分匹配。
我们将公式(6)和公式(9)组合成如下线性测量模型:
文章转载自公众号:自动驾驶专栏
