当前位置: 首页 > article >正文

具有平面规则性的单目视觉惯性里程计

具有平面规则性的单目视觉惯性里程计

Chuchu Chen*, Patrick Geneva*, Yuxiang Peng, Woosik Lee, and Guoquan Huang

*这些作者对工作做出了相等的贡献。这项工作部分得到了特拉华大学工程学院、NSF(IIS-1924897、SCH-2014264、CNS-2018905)和Google ARCore的支持。Geneva也部分得到了NASA DE Space Grant研究生奖学金的支持。作者隶属于特拉华大学机器人感知与导航组(RPNG),美国纽瓦克特拉华州19716,电子邮件:{ccchu, pgeneva, yxpeng, woosik, ghuang}@udel.edu

摘要

目前的单目视觉惯性里程计(VIO)方法依赖于稀疏点特征,部分原因是它们的效率、鲁棒性和普遍性,而忽略了高级结构规则,例如在人造环境中常见的平面,可以进一步约束运动。一般来说,由于它们的大空间存在,因此相机可以长时间观察到平面,因此,它们适合长期导航。因此,在本文中,我们设计了一种新颖的实时单目VIO系统,该系统完全由轻量级多状态约束卡尔曼滤波器(MSCKF)中的平面特征规范化。我们方法的核心是一种高效的鲁棒的基于单目的平面检测算法,该算法不需要类似于文献中常见的立体或深度摄像机的附加传感器模态,同时实现了对点特征到环境平面的实时规范化。具体来说,在提出的MSCKF中,长期存在的平面保持在状态向量中,而较短的平面在使用后被边缘化以提高效率。平面规则性应用于状态内SLAM特征和状态外MSCKF特征,从而充分利用环境平面信息以提高VIO性能。我们提出的方法通过广泛的蒙特卡罗模拟和不同的实际实验进行评估,包括作者收集的AR场景,并显示在结构化环境中胜过基于点的VIO。

视频演示

观看视频

AR桌子数据集

访问AR桌子数据集

I 引言和相关工作

融合IMU和相机测量以提供有效的三维运动跟踪的视觉惯性里程计(VIO)已经成为增强现实/虚拟现实应用的基础技术[1, 2, 3],主要得益于其低能耗、小尺寸、低成本和互补的传感特性。近年来,工业界和学术界已经致力于VIO算法的研究[4],这些算法可以广泛分为基于优化和基于滤波的方法。前者将非线性最小二乘(NLS)问题与所有可用测量值结合起来,通过迭代找到更精确的解,但由于重新线性化而产生较高的计算成本[5, 6, 7, 8]。相反,基于滤波的估计器(如多状态约束卡尔曼滤波器(MSCKF)[9])由于其效率而在资源受限平台上很受欢迎[10, 11, 12, 13, 14, 15]。特别地,MSCKF处理可用的视觉方位测量值,而不将点特征保留在其状态向量中,这是通过将观测投影到相应特征测量雅各比矩阵的零空间并推断出特征独立测量残差进行的(即,线性边缘化[16])。尽管如此,它可以选择将SLAM点特征包含在状态中-一旦丢失,就会被边缘化-以利用局部时间地图(或循环闭合)信息,同时仍然限制计算成本[17, 18, 19, 20]。

虽然基于最先进的基于MSCKF的单目VIO方法具有高效和鲁棒的点特征检测和跟踪机制,并实现了高精度性能[20],但它们无法利用特征之间(如果有)的结构正则信息,这在人造环境中可能普遍存在。理想情况下,可以利用像素级密集深度来强制执行结构约束,但由于优化变量(深度图)的数量庞大而计算昂贵[21, 22, 23, 24, 25]。考虑到资源严格,很难从单目图像中提取高级几何特征,例如平面,并推断出对低级点特征的状态之间的结构规则。因此,现有文献主要侧重于使用立体或深度传感器显式检测线和平面特征[26, 27, 28, 29]。

特别地,许多方法已经利

用了线特征与曼哈顿[30]或亚特兰大世界[31]规则的结合,由于结构化的线条(例如,与建筑基本方向对齐),直接提供全局姿态信息,从而提高了准确性[32, 33, 34, 35, 36, 37]。由于环境平面无法直接用单个单目相机检测到(深度不确定性),因此[26, 27, 28, 29]的作者依赖立体或深度传感器来提取3D平面,或者从单目SLAM输出中推断出类似曼哈顿的世界平面[30, 38]。一旦获得,提供全局姿态信息的线/平面法线通过四元数约束或EKF更新集成到滤波器状态中[32, 33, 34, 35, 36, 37, 39, 40, 41]。

最近,越来越多的人开始明确检测和利用单目图像中的环境平面[42, 43, 44, 45, 46]。虽然一些作品已经显示了从单个单目相机检测平面的可行性[42, 43, 44],但他们的方法严重依赖于预定义的分割或多个假设平面以进行高效的平面检测,在复杂环境中很难推广。其他人通过回归[47]推断地面平面,将图像分割成超像素[48],或使用CNN学习平面的外观[49]。然而,这些方法不能进行准确的平面分割,并且需要额外的深度信息。相反,我们的目标是提出一种实时的单目VIO方法,该方法完全由平面特征规范化,而无需立体或深度传感器,同时为低延迟运动跟踪提供轻量级的滤波器计算。

在本文中,我们提出了一种全面由平面特征规范化的单目VIO算法,该算法在轻量级MSCKF内。我们方法的核心是一种鲁棒的平面检测算法,它从单目图像中利用高级结构规则,无需额外的传感器模态(例如,立体或深度传感器)。通过在状态向量中高效检测和维护平面特征,我们的方法实现了在人造环境中的长期运动跟踪。我们的主要贡献总结如下:

  1. 我们设计了一种高效的平面检测算法,可直接从单目图像中提取平面特征,无需任何深度或立体信息。

  2. 我们提出了一个轻量级的MSCKF框架,将平面特征集成到滤波器状态中,以实现完全规范化的单目VIO。

  3. 我们通过广泛的蒙特卡罗模拟和实际实验证明了我们方法的有效性,在结构化环境中表现优异,超过了基于点的VIO。

本文的其余部分组织如下。在第二节中,我们介绍了关于单目VIO算法和结构规则利用的背景和相关工作。第三节介绍了我们提出的具有平面规则性的全面单目VIO方法。在第四节中,我们通过蒙特卡罗模拟和实际实验评估了我们方法的性能。最后,在第五节中,我们总结了本文,并提出了未来的工作方向。

II. 背景和相关工作

视觉惯性里程计:单目VIO通过将IMU测量与单个相机的视觉观察相融合,估计相机姿态和速度。IMU提供短期运动信息,而相机使用视觉特征约束长期漂移。IMU和相机测量的结合形成了一个紧密耦合的状态估计问题,可以使用基于优化或基于滤波的方法解决。

基于优化的VIO:基于优化的VIO将状态估计问题形式化为非线性最小二乘(NLS)优化问题,并通过迭代更新状态估计,以最小化观察到的视觉特征和IMU测量的重新投影误差。这些方法通常具有较高的精度,但由于非线

性优化和重新线性化而需要大量计算资源。

基于滤波的VIO:基于滤波的VIO方法,如扩展卡尔曼滤波器(EKF)或MSCKF,维护一个包含相机姿态、速度、IMU偏差和选定特征测量的紧凑状态向量,并使用IMU预积分和视觉特征测量执行递归状态更新。特别是,MSCKF处理特征域中的视觉测量,并通过边缘化旧特征以限制计算成本。尽管基于滤波的方法在计算上是有效的,但可能会受到线性化误差的影响,并且需要谨慎设计以处理非线性。

结构规则利用:结构规则,如平面表面和线性特征,在人造环境中普遍存在,并且可以为VIO提供额外的约束。许多方法利用结构规则来提高VIO的性能,包括曼哈顿世界假设、平面分割和线特征提取。然而,大多数现有方法依赖于立体或深度传感器来提取结构规则,从而限制了它们在资源受限场景中的适用性。

III. 具有平面规则性的单目VIO

在本节中,我们介绍了我们提出的具有平面特征的全面单目VIO方法。我们首先描述了我们从单目图像中鲁棒地检测平面的方法,然后介绍了轻量级MSCKF框架,以将平面规则性纳入状态估计。

A. 平面检测算法

我们的平面检测算法直接从单目图像中提取平面特征,无需立体或深度信息。该算法包括以下步骤:

  1. 特征检测:我们使用关键点检测器(例如FAST、ORB)从输入图像中提取特征点。
  2. 特征描述:对于每个检测到的关键点,我们计算一个特征描述符(例如BRIEF、FREAK)来表示局部图像外观。
  3. 特征匹配:我们在连续帧之间匹配特征描述符,以建立运动估计的对应关系。
  4. 运动估计:利用匹配的特征对应关系和IMU测量,我们估计相机相对于世界坐标系的运动(姿态和速度)。
  5. 平面假设生成:基于估计的相机运动,我们使用RANSAC或类似的鲁棒估计技术为场景中的候选平面生成假设。
  6. 平面参数估计:对于每个平面假设,我们使用最小二乘优化方法来细化平面参数(法向量、距离原点的距离)。
  7. 平面验证:我们根据几何一致性和时间一致性验证候选平面,以过滤错误的正例。

通过遵循这些步骤,我们的平面检测算法可以在单目图像中鲁棒地识别出平面特征,然后将其集成到MSCKF框架中进行状态估计。

B. 轻量级MSCKF框架

MSCKF是一种基于滤波的VIO方法,它维护一个包含相机姿态、速度、IMU偏差和选定特征测量的紧凑状态向量。我们的轻量级MSCKF框架通过将平面特征纳入状态估计过程来扩展传统MSCKF。我们MSCKF框架的关键组件如下:

  1. 状态向量:状态向量包含相机姿态、速度、IMU偏差和选定的特征测量,包括点特征和平面特征。
  2. 特征管理:MSCKF通过选择观测到的特征子集包含在状态向量中,并边缘化旧特征以维持计算效率。在我们的框架中

,我们使用一种高效的平面管理策略,以处理长期存在的平面特征和短期存在的点特征。
3. 预测更新:MSCKF使用IMU测量进行预测更新,并利用视觉特征进行测量更新,以执行递归状态估计。
4. 非线性优化:为了提高状态估计的精度,我们可以使用非线性优化方法对MSCKF状态进行后处理。

通过将平面特征集成到MSCKF框架中,我们的方法可以利用环境结构信息来提高运动跟踪的准确性和鲁棒性。

IV. 实验评估

我们通过广泛的蒙特卡罗模拟和实际实验评估了我们的方法在不同场景中的性能。我们的评估重点包括以下方面:

  1. 准确性:我们比较我们的方法与基于点特征的VIO方法在姿态和位置估计精度方面的性能。
  2. 鲁棒性:我们分析我们的方法在不同挑战条件下的鲁棒性,包括光照变化、遮挡和动态物体。
  3. 实时性:我们评估我们的方法的计算效率,包括状态估计的延迟和滤波器的计算负载。

通过这些实验,我们证明了我们的方法在结构化环境中具有优越的性能,并且可以在实时应用中实现高效的运动跟踪。

V. 结论和未来工作

在本文中,我们提出了一种具有平面规则性的全面单目VIO方法,该方法利用环境结构信息来提高运动跟踪的准确性和鲁棒性。我们的方法通过一种鲁棒的平面检测算法从单目图像中提取平面特征,并将其集成到轻量级MSCKF框架中进行状态估计。通过广泛的实验评估,我们证明了我们的方法在结构化环境中具有优越的性能,并且可以在实时应用中实现高效的运动跟踪。

未来的工作包括进一步改进我们的平面检测算法以提高鲁棒性和准确性,并将我们的方法扩展到更广泛的应用场景,如室内导航和无人机飞行。我们还计划将结构规则利用扩展到其他类型的环境特征,例如线性特征和体积特征,以进一步提高VIO的性能和适用性。

表 V:执行平面跟踪的跟踪统计数据和时间(即,它不包括稀疏点跟踪)

DatasetFeat. / PL.Pl. / FrameTrack Len.PL. ActiveTime (ms)
V1,0119.6 ± 13.32.9 ± 1.353.4 ± 74.00.9 ± 0.73.3 ± 0.7
V1,0213.7 ± 10.91.7 ± 1.320.0 ± 26.80.3 ± 0.52.5 ± 0.8
V1,0310.1 ± 9.40.7 ± 1.024.9 ± 26.00.0 ± 0.22.0 ± 0.7
V2,018.0 ± 5.01.4 ± 1.339.9 ± 43.10.1 ± 0.32.5 ± 0.6
V2,029.5 ± 8.11.0 ± 1.123.3 ± 22.80.0 ± 0.12.1 ± 0.6
V2,036.3 ± 1.80.2 ± 0.414.4 ± 15.00.0 ± 0.01.4 ± 0.6
----------------------------------------------------------------------
table_0127.3 ± 13.12.7 ± 1.161.1 ± 27.61.1 ± 0.53.5 ± 0.7
V2,0382.0 ± 58.72.2 ± 1.39.1 ± 29.41.2 ± 0.61.4 ± 0.9
----------------------------------------------------------------------
table_0333.9 ± 21.33.0 ± 1.288.5 ± 337.41.5 ± 0.64.0 ± 0.7
table_0435.3 ± 23.12.1 ± 0.986.8 ± 420.80.9 ± 0.44.2 ± 1.3
table_0538.6 ± 27.62.5 ± 1.0119.2 ± 327.21.2 ± 0.73.5 ± 0.6
table_0643.5 ± 30.52.0 ± 0.969.3 ± 131.61.1 ± 0.83.2 ± 0.8
table_0716.6 ± 8.22.8 ± 0.9106.8 ± 168.30.3 ± 0.53.0 ± 0.6
table_0820.7 ± 13.51.8 ± 1.054.1 ± 260.10.6 ± 0.52.7 ± 0.6

TABLE IV: Self-collected AR table ATE (degree / cm) and average timing for the table_01 dataset.

Algorithmtable_01table_02table_03table_04table_05table_06table_07table_08table_09
M-PT0.45 / 6.80.85 / 2.41.37 / 5.60.83 / 7.50.78 / 5.00.66 / 4.90.94 / 4.82.00 / 12.58.7 / 1.7
M-PT0.52 / 6.50.91 / 2.51.44 / 5.90.87 / 7.10.76 / 4.90.67 / 5.90.85 / 4.72.02 / 12.813.3 ± 3.2
M-PT0.67 / 4.60.72 / 2.00.96 / 3.00.75 / 3.20.62 / 4.00.75 / 4.40.92 / 4.21.88 / 9.213.9 ± 2.9
MS-PT1.15 / 5.71.79 / 4.12.41 / 6.91.28 / 5.70.56 / 2.70.78 / 3.61.00 / 4.80.68 / 11.29.4 ± 2.0
MS-PT1.32 / 5.50.89 / 2.51.03 / 4.51.10 / 4.71.01 / 4.41.81 / 6.01.06 / 4.61.29 / 11.215.0 ± 3.9
MS-PT1.25 / 5.10.65 / 2.31.05 / 4.60.79 / 5.00.70 / 2.61.29 / 4.51.12 / 5.10.82 / 6.814.7 / 3.2
VINS-Fusion [68]1.62 / 5.81.32 / 3.01.47 / 7.61.75 / 5.61.12 / 3.40.98 / 5.31.67 / 9.35.03 / 23.335.6 + 17.0*
OKVIS [6]2.48 / 9.02.01 / 7.73.94 / 15.32.05 / 16.20.77 / 24.50.74 / 10.22.07 / 13.81.54 / 19.885.5 ± 32.6*

http://www.kler.cn/a/290205.html

相关文章:

  • Linux如何更优质调节系统性能
  • 使用etl工具kettle的日常踩坑梳理之二、从Hadoop中导出数据
  • Linux 函数在多个地方被同时调用时,函数中的变量如何管理,确保互不影响
  • 更改Ubuntu22.04锁屏壁纸
  • WPF学习之路,控件的只读、是否可以、是否可见属性控制
  • C++ 数组与结构 编程练习
  • 反射API与AOP在微服务治理中的实践与思考
  • 飞利浦开放式耳机怎么样?南卡、飞利浦、QCY耳机真实测评
  • 【Leetcode 2399 】 检查相同字母间的距离 —— 哈希表
  • git分支的管理
  • Windows 欺骗主机 Burn-In 的自动化工具
  • Mysql-慢SQL的处理以及SQL优化
  • webpack--处理资源
  • 【linux002】目录操作命令篇 - ls 命令
  • 用table展示表头和侧边都是动态
  • 注册安全分析报告:央视网
  • 基于SpringBoot+Vue+MySQL的宠物寄养服务管理系统
  • ElementPlus实现页面,上部分是表单,下部分是表格
  • 从PX4源码PX4-Autopolite中的Boards中选择适合自己移植的版本
  • 828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp
  • 基于Python的网络编程
  • C1-1 ABB二次SDK开发——C#Window窗体-环境配置(带ABB二次开发SDK资源包)
  • 【赵渝强老师】MongoDB的MMAPv1存储引擎
  • Java 集合性能优化
  • 临时表的魔力:SQL中的快速缓存与数据处理
  • 前端常见文件下载方式总结