前言
本论文由ETH实验室在ICRA 2018上发表,其对目前公开的单目VIO算法(MSCKF、OKVIS、ROVIO、VINS-Mono、SVO+MSF、SVO+GTSAM),在飞行机器人常用的各种硬件(Laptop、Intel NUC、UP Board和ODROID)上进行测试比较,其评价内容包括位姿估计精度、单针处理时间、CPU和内存占用率,评价的数据集为EuRoC。
该论文其他部分可以参考原文与泡泡翻译的文章 VIO:飞行机器人单目VIO算法测评,这里主要是对测试的单目VIO算法预积其评价结果进行介绍。
VIO算法
简要总结一下在次基准测试中作为代表的VIO算法主要特性。虽然这些不同的方法并非文献中所提出算法的详尽列举,但是这些公开实现很好地覆盖了算法的种类,包括松耦合和紧耦合算法,基于滤波与优化算法,以及表示特征和错误的不同术语。
MSCKF
Multi-state constraint Kalman filter(多状态约束卡尔曼滤波器)是许多目前专有VIO系统的基础,但直到最近还没有可靠、公开的实现。 原始MSCKF算法提出了一种测量模型,该模型使用特定图像特征在所有相机姿态之间的几何约束,而不需要维持状态中3D特征位置的估计。扩展卡尔曼滤波器后端在事件相机输入中实现了MSCKF的这种方式,但也适用于标准摄像机的特征跟踪。 在本文发表时,MSCKF的实现将公开。
OKVIS
Open Keyframe-based Visual-Inertial SLAM(OKVIS)[2]利用关键帧位姿的滑动窗口进行非线性优化。 代价函数是针对加权视觉特征重投影误差和加权惯性误差项联合制定的。 前端使用多尺度Harris角点检测器来提取特征点,然后计算BRISK描述子,以便在帧之间执行数据关联。先于滑动窗口的关键帧在状态估计器外被边缘化。 OKVIS使用Google ceres solver来执行非线性优化。 需要注意的是,OKVIS没有针对单目VIO进行优化,它在双目相机下具有卓越的性能。该算法提供与ROS兼容的软件包。
ROVIO
Robust Visual Inertial Odometry(ROVIO)是一种基于扩展卡尔曼滤波器(EKF)的视觉状态估计器,它提出了几个创新性。 除了采用3D位置以机器人为中心的方向向量和距离表示的FAST角点特征,在图像流中提取特征轴的多层次图像块。 利用IMU预测运动跟踪图像块特征,并且在更新时将光度误差作为更新项。 与OKVIS不同,ROVIO是作为单目VIO开发的。该算法已提供开源软件包。
VINS-Mono
VINS-Mono与OKVIS相似,是跟踪鲁棒的角点特征,基于非线性优化滑动窗口估计器。然而,VINS-Mono在估计器框架中包含几个新特点。作者提出了一种送耦合的传感器融合初始化方法,可以从任意初始状态引导估计器。IMU测量在优化之前进行预积分,并且提出了用于重定位的紧耦合。VINS-Mono还具有4自由度位姿图优化和回环检测模块。虽然我们没有明确考虑完整SLAM系统,由于VINS-Mono中回环检测模块紧密集成,我们在使用和不使用这个模块的情况下评估算法的性能(在实验中以vinsmonolc和vinsmono进行区分)。该软件提供了ROS兼容的PC版和用于移动设备状态估计的iOS实现。
SVO + MSF
Multi-Sensor Fusion (MSF) 是一种用于状态估计中融合不同传感器数据的通用EKF框架。Semi-Direct Visual Odometry (SVO) 是一种轻量计算级的视觉里程计算法,通过跟踪FAST角点特征并最小化周围图像块的光度误差来对齐图像。然后通过最小化非线性最小二乘问题中特征的重投影误差的方式,与场景结构共同优化稀疏地图。从纯视觉SVO得到的位姿估计被提供给MSF作为通用位姿传感器的输出,然后与IMU数据进行融合。由于该方法为松耦合,位姿的尺度必须近似正确,需要手动初始化或其他用于估计距离的传感器。MSF和SVO都是开源的,通过ROS接口进行通信。这个系统在实验中成为svomsf。
SVO + GTSAM
该视觉里程计前端与SVO + MSF系统相同,也使用了松耦合的后端,通过iSAM2在线执行因子图优化。作者在该集成系统中展示了结果,并提出在位姿图优化中使用预计分的IMU因子。这种算法的组成部分,SVO和GTSAM4.0 优化工具都是开源的,但是整合在一个系统的算法并未公开。该系统在实验中成为svogtsam。
IV. DISCUSSION
图1为第3章结果的另一种表示。这些散点图显示了CPU使用率、内存使用率、每帧处理时间与RMSE的关系,其中每个标记表示一个算法在一个硬件平台上的性能,并覆盖所有EuRoC数据集。这些标记分别以颜色和形状编码表示其算法和硬件平台,并说明误差和计算资源之间的关系。
MSCKF 作为此评估中的最老算法,仍然在基准测试的某些方面展现了竞争性。该算法成功地完成了所有硬件平台上的所有序列,无论平台如何,准确性都是一致的。除了鲁棒性之外,它通常提供适度的资源使用和低的每帧处理时间。然而,大多数现代算法能够通过可管理地增加资源需求来实现更高的总体准确度。
OKVIS 尽管由于每帧处理时间过长而导致更新率较低,但在所有硬件平台(包括嵌入式系统)上都表现出了准确性能。这表明基础算法是鲁棒的,但低帧率的容忍度可能部分归因于EuRoC数据集中的低速轨迹。
ROVIO虽然表现出具有严格界限和一致的资源使用情况以及所有数据集序列的准确性能,其无法在Up Board上运行。在其他硬件平台上性能准确且一致,这表明在性能足够强大的计算机上,其对于具有挑战性的轨迹具有良好的鲁棒性。
VINS-Mono在所有硬件平台上的性能是最一致准确和鲁棒的。 启用闭环进一步改善结果,尽管其无法在ODROID上可用的约束计算上实现。 这种卓越的性能是以可能过高的资源使用水平为代价的。部署该算法用于飞行机器人的状态估计时,用户必须考虑需要保留用于导航、控制和其他感知应用的计算资源。
SVO + MSF 作为这里唯一的松耦合算法,提供最高的计算效率,但具有相应最低的精度。该算法还需要手动初始化以正确估计其位姿的尺度,这与紧密耦合算法直接在状态中估计尺度不同。 然而,对于许多飞行机器人应用,这种配置的精度可能足够。
在考虑没有显式闭环的算法中,SVO + GTSAM 能为许多平台数据集的组合生成最准确的轨迹。由于前后端分离,它能够以相对较高的CPU利用率、高内存利用率和较低的帧处理时间实现这一目标。但是这种方法并不像其他方法那样鲁棒。 其中一个原因是在位姿图中三角测量较差的视觉特征会使数值不稳定,从而导致后端失败。因此尽管有一些吸引人的状态估计属性,这种方法可能不适合在飞行机器人上部署。
从笔记本电脑到NUC的CPU利用率的提高表明,一些算法如SVO + MSF、SVO + GTSAM 和 VINS-Mono,对CPU时钟速度敏感。如果算法主要在一个计算密集型线程中运行,则可以通过提高时钟速度来实现性能提升。ROVIO在Up Board上的失败提供了进一步证明CPU时钟速度重要性的依据。即使减少参数设置,滤波器也会在此平台上的所有实验中快速发散,这表明尽管其计算资源充足,但由于Up Board CPU的时钟频率较低,更新速度太慢。
这些结果表明了关于具有嵌入式单板计算机的飞行机器人系统的状态估计算法选择的一些结论。对于计算能力受限的硬件平台,如Up Board和ODROID,SVO + MSF提供了最高效的性能,尽管它在整体精度上做出了重大牺牲,并且在最具有挑战性的轨迹上具有鲁棒性。如果资源预算允许将更高的计算资源分配给状态估计器,则VINS-Mono(如果可能的话带回环检测)在所有硬件平台和序列上提供最高级别的准确性和鲁棒性。在两个极端之间的良好折中方案是ROVIO,它可以提供比SVO + MSF更高的准确性和比VINS-Mono低得多的资源利用率。但是需要注意的是,无法在Up Board上运行ROVIO,该算法对每帧处理时间比其他算法更敏感。
V. CONCLUSION
在本文工作中,我们在一系列不同计算资源的硬件平台上,对公开的视觉惯性里程计算法的状态估计性能进行调查。在评估这些算法时,我们的目标是在硬件和轨迹上其性能进行基准测试,其代表了具有有限机载计算能力的飞行机器人的状态估计水平。第三章结果表明,正如读者所预料的,在视觉状态估计中没有免费的午餐。精度和鲁棒性可以通过额外的计算资源提高,但是在资源有限的系统上,在需求之间找到适当的平衡具有挑战性。我们希望本文提出的结果和结论可以帮助研究界学者们找到适合他们飞行机器人系统的折中方案。