更多精彩内容,请关注公众号:智驾机器人技术前线
文章信息
-
标题:基于视觉和惯性测量单元的里程计关键技术研究综述
-
作者:张 彧 檀祖冰 曹东璞 陈 龙
-
来源:机械工程学报
摘要
环境感知与状态估计是智能网联车关键技术之一。同时定位与建图技术(Simultaneous location and mapping technology, SLAM),旨在同时完成自身的状态估计与环境建模,被广泛应用于智能网联车领域。随着研究的深入,学者们发现通过融合多种传感器,可以实现传感之间的短板互补,提升和加强状态估计的实时性与稳定性。融合视觉和惯性导航仪(Inertial measurement unit, IMU)的实例——视觉惯性里程计(Visual-inertial odometry, VIO),由于具有较高的性价比获得了许多研究人员的青睐。VIO 在视觉里程计(Visual odometry,VO)的基础上引入 IMU 测量,很好地改善了尺度漂移的问题,同时也能极大缓解短期内图像过曝、特征缺失等问题导致的视觉定位失效问题。并且 VIO 在通过结合冗余传感器提升精度的同时,也通过滑动窗口和状态边缘化等方案保证系统实时性,是兼顾精度和运行效率的典范。细致介绍 VIO 系统的标准定义与基础模型,并对其关键模块,包括初始化、视觉信息提取与关联、求解与优化、标定,进行详尽的技术梳理与前沿工作回顾,对前沿工作的优点和局限进行详细分析,总结了常用的视觉惯性数据集,并对 VIO 当前存在的问题和未来发展方向进行了总结和展望。
里程计方法
本节依据图 1,对 VIO 系统的几大关键模块进行算法回顾和前沿工作回顾。
image
初始化
视觉惯性系统中的初值主要包括系统的速度、姿态、陀螺仪偏差、加速度偏差、重力方向以及视觉的尺度。由于视觉惯性系统的高度非线性,视觉惯性里程计算的性能在很大程度上依赖系统的初值的精度。一方面,在最优解附近进行估计可以加速收敛,减少计算耗时。另一方面,良好的初始化可以有效减少系统收敛到局部最优解的风险。机器人领域一般通过采用具有较大收敛域的迭代方式或者鲁棒核函数来解决收敛到局部最优解的问题,但是这些方法都会因为引入冗余计算而增加计算耗时。因此准确、快速的初始化过程对VIO系统至关重要。
早期视觉惯性系统中的初始化方法通过求解线性闭式解获取部分系统初始状态,MARTINELLI等[18-19]提出了在已知系统方向的情况下,仅基于短期惯性测量值积分和单个特征值自然观测来初始化系统状态的算法。这些方法可以提供机器人的姿态(滚转角和俯仰角)、速度、相机观测到的特征的位置估计,以及在文献[18]中的加速度计偏差。但是这些方法只是在理论上对求解过程进行了描述并通过模拟一般高斯运动进行仿真验证,并且由于缺乏对陀螺仪偏差的估计,该类方法在陀螺仪数据存在偏差时表现不佳。针对这一局限,KAISER等[20]引入了陀螺仪偏差的自动估计,提升了对IMU偏差的鲁棒性。随后,MARTINELLI等[21]将这一闭式解求解方法进行拓展,使其适应配置相同、相互可见的多个智能体初始状态求解。不过,这些方法都需要对多个相机观测点的加速度测量值进行二重积分,从而导致累积误差较大。在此基础上,KNEIP等[22]提出的方法,在不依赖于系统的方向信息的同时仅使用了加速度测量值的一次积分,避免了累积误差的过度干扰,不过由于只利用了单个积分周期的IMU测量值进行初始化,仍然存在对IMU噪声过度敏感的缺陷。文献[23-24]介绍了一种适用于无噪声情况的线性求解方法,该方法通过短期的IMU预积分对旋转进行估计,但是仍然缺乏对陀螺仪偏差的建模。
随后,通过运行快速松耦合 SLAM 方法进行初始化的方法出现在大众的视野中。FAESSL 等[25]提出了一种基于半直接视觉里程计(Semi-direct visual odometry,SVO)[26]的再初始化和故障恢复方法,利用惯性测量数据稳定微型飞行器的状态,并启动 SVO 获取位置反馈,该方案还使用了一个面向地面的测距传感器获取高度信息。文献[27]中提出了另一种松耦合滤波系统的初始化算法,该算法利用连续两帧之间的光流来提取速度和地平面。在初始姿态应与重力对齐的情况下,该方法在初始阶段不需要或仅需要少量运动。文献[28]在文献[19-20]的基础上,采用多轮次视觉惯性 BA 进行可观性和一致性检验提升了系统的鲁棒性。每个轮次都重新选取多尺度 ORB 特征点,并通过随机采样一致性(Random sample consensus,RANSAC)进行特征点集合的迭代,同时只有在特征点集合的可观性和一致性达标时才结束轮次循环。由于是通过重复采样选取点的集合来进行多次初始化尝试,可能出现的较低的初始化召回率是这个方法存在的问题。
近年来,学者们认识到视觉与惯性参数对初值的精确性需求并不同,求解的复杂性差异也较大。文献[29-31]都采用多次不同目标的估计进行初始化。首先通过视觉里程计方案,进行纯视觉估计,然后将视觉估计结果作为已知量进行惯性估计,最后将已知的估计结果作为初值进行视觉惯性联合估计,得到更精确的初值。这类方法都基于共同的假设:视觉能够提供足够鲁棒的初始轨迹,同时惯性参数不确定性比视觉更大,求解惯性参数时时可以视视觉提供的轨迹为稳定常数。MUR-ARTAL 等[29]提出了一种基于 ORB-SLAM 等[32]的初始化算法,在完成一组关键帧的处理后,计算了视觉惯性全局 BA 的尺度、重力方向、速度和 IMU 偏差的初始估计。然而,该方法可能需要超过 10 s 的时间用于完成尺度收敛。QIN 等[30]通过与 MUR-ARTAL 等的方法[29]相似的步骤,选择性忽略了初始化阶段的加速度计偏差,使得估计过程的收敛速度得到了较大的提升。但是这个方法在估计过程中,没有考虑不同传感器的差异性,所有残差项都被赋予了同样的权值,导致最终得到的估计结果偏离最优解。CARLOS 等[31]将视觉惯性初始化表述为仅惯性最优估计问题,考虑 IMU 噪声的概率模型,通过参数化方法将尺度纳入参数估计,并一次求解所有惯性参数,避免了解耦估计产生的不一致性。
视觉信息提取与关联
VIO的主要任务是根据相机采集的图像和IMU数据估计系统的运动。其中一大主要步骤是根据视觉图像构建对运动的约束,并融入优化问题。图像 本身是以二维矩阵形式存储的亮度和色彩或灰度信息,通常在 SLAM 中对视觉信息的利用需要通过视觉信息提取和数据关联的步骤来完成。其中根据图像信息使用方法的不同,可以分为间接法和直接法两种。
间接法
间接法使用额外的特征提取和特征匹配步骤跟踪图像中的点特征进行数据关联,并通过重投影误差构建约束,因此间接法也被称为特征点法。在SLAM中,我们希望特征点拥有以下的特性:可重复性,同一特征出现在不同图片中;可区分性,不同特征具有不同的表达;高效性,少量特征点可以代表整个图片;局部性,特征点仅代表小片关联区域。因此 SLAM 中关注的特征点往往是角点。常用的角点包括 Harris[33]、FAST[34]、GFTT[35],特征描述包括 ORB[36]、BRISK[37]、SURF[38]和 SIFT[39]等。
在间接法中,特征点的关联与位姿计算是解耦的,两者可以分步进行。间接法求解姿态的目标函数通常为最小化重投影误差。ORB-SLAM[17, 32, 40]是间接法 SLAM 中应用最广泛的方案之一,它使用 ORB[36]特征进行特征提取与匹配以支持里程计的帧间位姿信息的获取,并通过 ORB 特征构建视觉词袋模型(Bag of visual words, BoVW)完成回环检测步骤。ORB-SLAM3[17]中实现了支持视觉、视觉惯性、混合地图的 SLAM 系统,并支持鱼眼等不同相机模型。LEUTENEGGER 等[12]采用拓展多尺度 SSE 优化的 Harris 角点检测,并提取 BRISK 描述子。为了平衡全局特征点分布,OKVIS 抑制了强角点附近的弱角点。并且将重力方向在图像平面的投影作为描述子提取的方向。QIN 等[14]检测 GFTT 角点,并通过 KLT 稀疏光流法在后续图像中追踪已经检出的角点。同时 VINS-Mono中通过设置相邻特征点之间最小的像素距离来维持合理的特征数量与分布。
此外,作为替代和补充,点特征之外的一些额外的特征也被同样被用于视觉的特征提取与匹配工作。KOTTAS 等[41]最早使用线特征进行滤波器的更新并进行可观性分析。YU 等[42]拓展了 KOTTAS 的方法,使用了更好的线参数并支持卷帘相机,并随后在文献[43]中提出了支持对非直线轮廓进行描述的边参数化方法。ZHENG 等[44]同时结合了点特征和线特征进行状态更新。GUO 等[45]在使用 RGBD 的 VINS 系统中同时采用了点特征和面特征,在假设平面朝向为已知先验的情况下,将对点的观测建模为相对位置。他们的可观性分析显示他们的系统和 VIO 系统一样具有四个不可观测的方向。HSIAO 等[46]提出了一种稠密平面惯性 SLAM(DPI-SLAM),将惯性与积分、稠密 VO 和平面朝向结合作为约束构建松耦合系统。
直接法
不同于间接法,直接法使用原始图像信息进行数据关联。直接法具有三项前提假设:① 相邻帧之间亮度恒定;② 相邻帧之间时间连续或者是运动非常微小;③ 图像具有空间一致性,临近区域的像素点保持相似的运动。由于直接法需要同一空间点在两帧中投影的像素具有相同光度,因此直接法对相机的曝光变化具有很强的敏感性。基于亮度恒定假设,直接法一般采用最小光度误差来估计相机和路标点的位置。
根据使用的像素的数量,直接法可以分为稠密和半稠密两种。在同步定位与建图技术当中,DTAM使用了全部的像素点,为稠密直接法;LSD-SLAM和DSO使用了梯度明显的像素点,为半稠密直接法;SVO则使用了特征点周围邻域的像素块,也是半稠密直接法[47-49]。
早期一些直接法的工作[13, 15, 26, 48, 49, 52, 60],通过提取视觉特征点(不计算描述子或者特征匹配)或者采样来筛选关键点,并追踪筛选后的关键点在帧间变化情况,构建视觉残差。LSD-SLAM[48]作为经典的半稠密直接法SLAM方法之一,提出了直接法与地图梯度的关系和像素梯度与极线方向的角度关系,在CPU上实现了半稠密场景的重建。不过基于直接法的工作无法提供回环检测的手段,LSD-SLAM采用了基于特征点法的方案进行回环检测。这项工作在后续的研究[50-51]中被拓展到了立体和全景相机。在LSD-SLAM的基础上,ENGEL等[49]对图像中梯度显著、或者边缘点进行网格化均匀采样以降低计算量,并以紧耦合方式估计关键帧深度和相机位姿降低累积误差。WANG等[52]则进一步将该方法拓展至鱼眼相机。
直接法以耦合的方式处理了数据提取与关联问题,并不依赖于特征点一一配对,免除了特征计算的时间消耗。同时直接法也适用于部分特征缺失的场景,可以进行半稠密地图重建。不过从另一方面来讲,直接法本身具有多项强假设,并且难以实现地图复用以及回环检测的功能。
求解与优化
出于平衡实时性与估计精度的考虑,产生了求解式(9)的不同实现方案。我们可以从不同角度划分现存的VIO系统方案。
-
从参与估计的相机位姿数量进行划分:
-
基于全平滑器(Full smoothers,或批量非线性最小二乘算法,Batch non-linear least-squares) 的方法会估计以往所有的相机位姿。
-
基于固定滞后平滑器(Fixed-lag smoothers,或滑动窗估计器,Sliding window estimators) 的方法只考虑最近一个窗口内的位姿。
-
基于滤波(Filtering) 的方法只估计最近的状态。
-
基于固定滞后平滑器和滤波的方法,都会将旧状态进行边缘化,它们的信息以高斯先验(Gaussian prior)的形式保留下来。滤波、固定滞后平滑器与全平滑器,是VIO系统三种主要的优化范式(Paradigm)。
-
-
从表达测量与高斯先验的方式进行划分:
-
基于拓展卡尔曼滤波器(Extended Kalman filter) 的方法使用协方差矩阵表达不确定性。
-
基于信息滤波器(Information filter)和平滑器(smoother) 的方法借助信息矩阵(协方差矩阵的逆),或是信息矩阵的平方根表达不确定性。
-
-
从测量模型可被线性化的次数进行划分:
-
标准的卡尔曼滤波器只处理一次测量就将其“丢弃”。
-
迭代的卡尔曼滤波器(例如ISPKF[55]) 则在一个时刻上进行了多次迭代。
-
基于平滑器的方法允许对状态进行多次线性化。可以证明,迭代的卡尔曼滤波器收敛于最大后验估计的解,等价于高斯牛顿批量估计得到的结果。
-
近年来,由于硬件设备的计算性能获得了巨大的提升,因此固定滞后平滑器和全平滑器得到了广泛的关注。此外,由于认识到VIO系统的“稀疏性”在快速状态估计上的关键作用,例如“舒尔补(Schur complement)”、“贝叶斯树”等线性代数工具的运用,使得基于平滑器的方法既能提供较好的精度,也可达到一定的实时性要求。下面,本文我们基于一个来源于文献[2]的图例,给出对三种VIO系统优化范式的讨论。
image
基于滤波器
基于滤波器的方法只对最近的状态进行推理和更新,是最轻量的最优状态估计器。在经典的滤波方法中,位姿与路标都为待优化的变量存在于状态向量中,然而,计算复杂度随路标的数量呈二次增长。为使之满足实时性要求,必须减少跟踪的路标点数量[58-60]。
MOURIKIS 等[61]开发了最早可用的MSCKF(Multi-State Constraint Kalman Filter)算法,解决了EKF-SLAM特征点过多导致计算复杂度急剧上升的问题。在MSCKF算法中,状态向量只维护固定数目的相机位姿,并不断边缘化(Marginalisation)历史位姿。当新的特征观测输入时,只执行特征的跟踪。在某一特征跟踪丢失时,即利用所有的历史观测三角化路标点,构建约束并执行EKF中的更新步骤。
注意到,在最早的MSCKF中,特征点需要多次观测,才能确定其空间信息,我们称这一方式为"延迟初始化"(Delay initialization)。延迟初始化的存在,使得对一系列路标测量值的处理,要被延后到所有观测都已获取到进行,不能利用当前所有的视觉信息估计当前的位姿,影响了滤波器的精度。在后来,MONTIEL 等[62]提出了“逆深度”参数化方法,使得特征点在第一次被观测到时即可生成一个初始概率分布,完成初始化。
此外,例如MSCKF这样不将特征点纳入优化变量中考虑的方法,也称为“无结构化”(structureless)方法。在后来,CARLONE 等[63]将这一思想拓展到基于因子图求解器中,提出了“Smart factor”——这类别因子存在于求解方程中,但不需要输出。通过对其特别的优化,使得求解问题变量规模更小,无需执行延迟初始化,提高系统求解速度的同时不牺牲过多的精度。
为了进一步提升基于滤波方法的稳定性,标准的卡尔曼滤波算法在不同维度上得到了拓展。由于基于EKF的方式需要执行线性化的过程,在状态传播和测量更新后滤波器便永久删除旧状态,线性化时造成的误差和错误的离群值信息将会被永久锁定,造成不精准的估计结果。其中一个解决方案是——使用迭代的拓展卡尔曼滤波器(IEKF)进行估计。IEKF通过迭代同一个时刻,能取得与最小二乘估计等价的结果[56]。文献[55, 64]等方法基于该种滤波器完成。
考虑到计算效率与数值稳定性,有研究人员将平方根逆滑动窗口滤波器(SR-ISWS)引入到MSCKF框架中[54, 65],在不损失精度的同时,降低了对资源的消耗,使得能够在移动设备上运行VI系统。在提升滤波器一致性的方面,诸如文献[66-68]等工作将变分卡尔曼滤波器[69]应用到估计中,取得了不错的效果。同时,有的研究者考虑基于矩阵李群的贝叶斯融合方法,进行状态传播和更新[70, 71]。
此外,还有支持时间戳不正确的卷帘相机(对应全局快门相机)[42, 72]基于MSCKF的VIO系统,以及ECKENHOFF等人提出的支持任意数目相机与单个IMU的MC-VINS[73]、支持任意相机与IMU的MIMC-VINS[74]。这些方案大大提升了VIO系统的故障可伸缩性。更为引人注目的是,许多学者针对应用系统可观性分析技术[75-77]到基于线性化的滤波器中,诞生了许多不同的OC-MSCKF算法[78-82],提升了在退化运动下VIO系统的稳定性。
基于固定滞后平滑器
固定滞后平滑器在给定长度的滑动窗口内进行状态估计,并将旧状态边缘化,是目前应用最广泛的优化方式[10, 12, 14, 17, 83]。由于平滑器保留了最近的部分状态并允许对它们执行重线性化(Relinearize),在处理非线性问题时,平滑器的结果远优于滤波器的结果。此外,平滑器中鲁棒核函数(Robust kernel function)的存在可较好地处理离群测量点,提升VIO系统的稳定性。
然而,固定滞后平滑器仍需对窗口外的状态执行边缘化,该过程会向信息矩阵(式(9)左侧)引入被边缘化状态的高斯先验信息,使得矩阵变得稠密,这妨碍了利用稀疏矩阵的性质进行加速运算[84]。
LEUTENEGGER 等[12]建议放弃某些测量,而不是将它们边缘化,以保持问题的稀疏性。此外,边缘化旧状态的过程,仍然存在一定的线性化误差,因此可能会导致不一致性的出现。这种方法可以减少计算量,同时避免因边缘化引入的稠密矩阵对计算性能的影响,但也可能因为放弃一些测量而导致信息的丢失,需要在实际应用中权衡取舍。
基于全平滑器基于全平滑器
基于全平滑器的方法考虑整个历史时刻的所有相机姿态和路标,并通过构建一个大的非线性优化问题进行状态求解。该类方法可以提供最优的精度,但是一般需要耗费较大的计算资源,运行时间也不是恒定的。因此可以看到,文献[12, 85]提出的工作中,不将所有帧用于新特征提取,而是只选出关键帧进行。“增量平滑”方法(Incremental smoothing techniques)[53, 86]作为革新技术,利用概率学中的因子图建模状态估计问题:图上的节点表示待求解变量,节点间的边表示测量约束。KAESS 等[53]在中还通过引入贝叶斯树,识别、估计并更新受新进测量影响的最小变量集合,进一步提升了全平滑器的效率。
对于基于平滑器的方法,将 IMU 每一帧的数据都添加为新的测量并不可行,因为这样会造成状态维数增加,增加问题的求解规模。为了解决这一问题,INDELMAN 等[87-88, 12]将多帧 IMU 数据进行积分,形成相对运动的约束,再参与计算。然而,在每次优化迭代后,由于初始状态(起始位姿、零偏)的改变,IMU 需要重新进行积分。LUPTON 和 SUKKARIEH 提出了“ IMU 预积分” (IMU preintegration)[89]的方案,利用重参数化相对运动约束(使得相对运动约束为起始状态的函数)避免执行重复的积分。然而,lUPTON 和 SUKKARIEH 的方法基于欧拉角完成的,不适合用于表达位姿及建模不确定性[90];并且,基于欧拉角的旋转表示方法存在“奇异性”(万向锁),具有局限性。近年来,FORSTER 等[6]基于 LUPTON 和 SUKKARIEH 的工作,首次推导了基于流形的预积分结论;ECKENHOFF 等[91]进一步推导预积分方程的分析闭式解,进一步提升了状态估计的精度。
可观性与一致性
由于在 EKF 中计算雅可比矩阵的方式,机器人的航向在线性化系统中可能是可观的,但是在实际的非线性系统中并不是。这种可观性的不匹配,导致滤波器产生的状态协方差矩阵的值太小,降低了滤波器的精度。进一步的,由于线性化误差的存在,系统状态的零空间发生了改变[77],增加不可观的方向,原系统不可观测的航向角(Yaw),也因此变得可观[81]。这样的行为,会导致里程计系统处于不稳定的状态,得到不准确的估计结果。因此,系统的可观性分析对提高状态估计的稳定性和准确性有着极为重要的作用。
标定
精准的参数标定是多传感器融合的关键步骤之一。VIO 系统需要进行“IMU 内参”、“相机内参”以及“IMU 与相机间的外参”三种参数的标定。相机畸变参数 d 是最基础的标定量。
相机的畸变本质是透视过程造成的失真,可分为发生在相机坐标系转图像坐标系过程中“径向畸变”,以及由于感光元件与透镜不平行的“切向畸变”,通常,可以使用“张氏标定法”,利用黑白相间的棋盘完成畸变的标定[103]。除此之外,相机还需要进行焦距 f 和光心 c 的标定,这两个参数是将相机像素坐标系与三维空间坐标系映射的关键。不同相机具有不同的相机模型进行畸变调整和投影,USENKO 等[104]在对多种模型进行了详细总结,包括 Unified camera model(UCM)、Kannala-Brandt(KB)model 等。
image
为了准确融合相机与 IMU 的测量,不仅需要考虑相机自身的建模,还应当获取高精度的相机与 IMU 之间的相对刚性变换 ( T_{BC} ) (Rigid-body transformation,( \in SE(3) ))。并且,由于数据传输、硬件延迟、时钟同步和计算延迟等原因,相机与 IMU 的测量值的时间基准往往存在差异,还需要对相机与 IMU 的时间偏移(Time offset)进行标定。假设 ( t_B ),( t_C ) 分别为同一测量在 IMU 和相机下的不同时间表示,相机与 IMU 的时间偏移 ( d_C ) 满足 ( t_B = t_C + d_C )。不准确的外参与时间偏移,会向 VIO 系统引入额外的噪声,致使系统产生不准确、不稳定和不一致的状态估计结果。
相机与 IMU 之间的参数标定通常离线进行。在一般的离线标定方法中,常见以特定的标记物辅助标定,如棋盘格[103],或者 AprilTag[107-108]。稳定的图案,可以提供高精度的位姿估计和像素平面与三维空间的映射关系,提升数据采集的质量,标定的稳定性和结果的精准度。此外,近年来不少工作[105, 110-111]使用连续时间基函数(Continuous-time basis function representation[112],例如 B 样条)表达传感器的位姿轨迹,进行内外参的标定。得益于连续的表示,离散的相机位姿可以拟合得到相机的连续运动轨迹,在曲线上每一处(每一时刻)都可以得到对应的角速度和线加速度值;利用这一性质,IMU 的测量值可以在轨迹上找到对应的相机“角速度”和“线加速度”值并构建误差,通过构建批量优化的方式求解。这样的做法,避免了对存在零偏和噪声的 IMU 的读数进行积分,提升了标定的精度。
不同于离线的标定方法,在线的标定方法通过将标定参数集成在系统状态向量中,与物理状态与环境模型一齐协同优化。LI 等[113]在基于 MSCKF 框架导航系统中同时进行相机与 IMU 间的时空标定,随后将其进行拓展[114],同时包含了相机与 IMU 的内参标定。KIM 等[115]修改 IMU 预积分过程[6],将惯性测量变换到另一个坐标系下进行外参估计,但是该工作不考虑时间偏移的标定。QIN 等[116]提出“恒定特征速度”的假设,通过小幅度修改重投影误差因子完成了相机与 IMU 间时间偏移的标定,并将该成果集成到 Vins-Mono[14]中。然而,LING 等[117]认为时延应是时变的变量,并把延迟等价为 IMU 的偏置 bias 耦合到误差项进行优化,并集成到 Vins-Mono 中,但该工作未开源。与文献[113]类似,HUANG 等在 OpenVINS[118]系统中,基于 MSCKF 框架完成了相机与 IMU 的时空标定,他们的另一项工作 MC-VINS[73]支持任意数量相机和单个 IMU 间的外参标定,而随后的 MIMC-VINS[74]甚至支持任意数量相机与任意数量的 IMU 间的外参标定。但是,它们都仍不支持 IMU 的内参标定。
总而言之,离线标定方法通常在人为控制的环境下采用特定的标定动作,利用批量计算大量的测量值完成标定。对于恒定的参数,离线方法相较于在线方法能给出更精准的结果。然而,如果相机与 IMU 间由于长时间使用,外参数发生了细微变化(例如为了进行传感器设备维护而不得不拆除并重新安装),忽略不计会导致 VIO 系统性能不佳。若此时系统具备在线标定,则可基于近似的参数,在每次运行时进行外参估计,极大提升了系统的灵活性。近年来,出现了大量针对标定的理论知识研究,研究人员的关注点从如何标定转变为如何标定得更好。MAYE 等[119]提出使用信息熵,进行新的测量数据是否可用来更新内外参数的判断;并使用截断的 QR 分解处理观测矩阵,减弱测量噪声对检测不可观测方向结果的影响;同时,提出在迭代中锁定不可观方向的更新,以提升标定的稳定性。LI 等[113]分析了 IMU 和相机间时间标定的必要条件,随后在文献[120]中识别出对导致时空标定参数不可解的轨迹,并将之去除。SCHNEIDER 等[121-122]旨在利用信息选择方法,识别出高信息量的运动片段,用于完成标定。YANG 等[123]分析了时空标定中存在的退化运动,但目前仍未提出如何建立更优的内参模型,优化外参的同时优化内参[106, 124-125]。
一些实用的离线标定方案已经开源:kalibr[110]是非常强大的开源标定工具箱,支持相机与 IMU 之间的时空标定。在最近的 VIO 系统 basalt[10]中,实现了一个基于连续时间估计的标定工具,支持多相机之间、相机与 IMU 之间的标定,以及多种相机模型。HENG 等[126]开发的 camodocal3 使用了多组里程计相对位姿测量值作为输入,计算多个传感器间的外参与内参,该开源工具的 C++工程实现具有一定的参考价值。
视觉惯性数据集
目前已经有许多适用于视觉惯性里程计研究的数据集被公布。不同数据集的采集环境、所使用的传感器型号、搭载数据采集平台的载体、标定方法 及真值获取方式都有差异。本节总结了部分用于视觉惯性里程计的数据集,归纳在表 4 中。
KITTI 等[127] 使用搭载了彩色和灰度立体摄像机、Velodyne 3D 激光扫描仪和 GPS/IMU 惯性导航系统车辆进行数据采集,场景从郊外的高速公路到市区的公路,时长达 6 h。位姿的真值通过 GPS 来获取。
EUROC 等[128] 通过搭载有全局快门式相机和军用级别的 IMU 的微型飞行器获取视觉和惯性数据。Euroc 采集的场景为两个房间,房间内配备有动作捕捉系统和激光跟踪器以获取微型飞行器的位姿真值。
ADVIO 等[131] 的数据通过智能手机手持采集,场景包含多楼层、多建筑的室内及室外环境。数据集中也包含在楼梯、电梯自动扶梯的运动,以及临时遮挡和缺少视觉特征的情况。该数据集的位姿真值通过智能手机上安装的惯导系统提供,并结合基于精确平面图的手工验证提升精度。
VI Canoe[133] 的数据采集平台搭载在独木舟上,配备有立体摄像机、IMU 以及 GPS。数据集记录了一次独木舟划行 44 min,共 2.7 km 的数据。位姿真值通过惯导航系统提供。
DATASET 等[136] 的工作主要在农业场景下进行。作者搭建的数据采集平台包括了双目彩色相机、GPS-RTK、IMU,由轮式机器人搭载进行数据采集,并由电机编码器记录转向和里程信息。数据集的真值由 GPS-RTK 提供。
AUTO MINE 等[166] 的数据采集平台搭载在多种不同类型的矿车上,包含一辆 SUV、一辆宽体矿车和一辆普通矿车。数据集主要场景包含了扬尘和雨雪、冰雹等多类极端气候条件下的矿山多障碍场景,并且场景中具有多类大尺寸差异(人与矿车等)的动态障碍物。
总结与展望
总结
随着技术发展愈发趋向于智能化,准确而鲁棒状态估计对机器人自主性而言至关重要,这也促使视觉-惯性里程计系统的出现,并在过去十年中取得了重大的研究成果和突破[156,157]。作为 SLAM 结合多传 感器融合问题的一个分支,视觉-惯性里程计由于其高性价比的特点,尤备受关注。在中文领域,一篇完整的技术型综述可以给尝试开发视觉-惯性里程计系统的技术人员,提供前沿的技术发展回顾。因此,本文的出现,致力于让读者在了解或构建初始化、数据关联与标定等视觉-惯性里程计系统的关键模块时,本文能成为有效的参考资料。
展望
尽管在过去几十年,视觉惯性里程计系统取得了重大的进展,但仍在许多方面存在挑战,有待研究以提升整体系统的稳定性、鲁棒性与准确性,下 面罗列出了一些视觉惯性里程计系统未来可能的发展方向。
拓展新型传感器
普通的相机和 IMU 是绝佳的传感器组合。然而,普通的 CMOS 相机存在着不少缺陷:每个像素需要统一时间曝光,快速运动时图像容易产生运动模糊;相机获取信息的频率受曝光时间的限制;在高动态范围(High dynamic range, HDR)的场景下容易出现图像部分过曝或部分欠曝的现象,导致场景细节丢失。这些缺陷的存在限制了视觉 SLAM 的使用场景。
ZHU 等[138-139] 认为,使用事件相机,可以在高速运动、具有挑战性的照明条件下提供稳健的状态估计。MUEGGLER 等[140] 引入连续时间模型,提升了里程计的精度。ZHOU 等[141] 开发的 ESVO 还考虑了双目事件相机的里程计系统。除了事件相机之外,CHEN 等[142-143] 还考虑利用热红外相机解决夜间环境下 VIO 无法工作的问题。
在高速、大尺度差异、极端恶劣的场景下[166],普通相机和 IMU 的组合很难提供充足的场景信息用于定位与建图。研究人员们也正致力于拓展新的传感器融合方法,将相机、雷达、IMU 等[158-163] 多传感器组合数据用于状态估计,并取得了可观的进展。
更鲁棒的优化模型
VIO(Visual-Inertial Odometry)系统在 IMU(Inertial Measurement Unit,惯性测量单元)的帮助下,具备了一定处理纯旋转运动奇异值的能力,但是并没有从算法源头解决这一问题。在 HARTLEY 等[144] 中进行了关于“转平均”(Rotation average)技术入门介绍,而后文献[145-146]的工作建议在运行光束平差法时,将旋转量独立于平移量和环境模型(三维点),使用“旋转平均”进行估计,能够有效地解决纯旋转运动下约束不足的问题,提高计算效率。“旋转平均”的出现,提升了平滑器(Smoother)对特定退化运动下状态估计的稳定性,因此最近受到研究人员的关注[147-150]。最近,DELLAERT 等[150] 提出的 Shonan rotation averaging 算法基于最大似然估计进行建模,引入半定规划(Semidefinite programs)寻找可证的全局最优解;并且,方法[150] 已集成到目前主流的平滑算法库 GTSAM[7]中。
加入深度学习与语义信息
当前,VIO 系统大部分基于例如点、线、面[44, 46, 151]等几何特征进行前后帧的数据关联完成状态估计,然而基于模型的解决方案天然易受到传感器测量误差、系统建模误差和复杂的环境条件影响。近年来深度学习取得了迅猛的发展,基于学习的方法在图像任务上取得了许多突破性的进展,出现了许多将深度学习应用于 SLAM 系统的工作[164-165, 167]。例如 SuperPoint、R2D2,SuperGlue等基于深度学习特征检测与匹配方法的出现,提升了里程计在传统方法无法适应的退化场景(弱纹理环境、动态动态场景等)的稳定性[152-154]。此外,最近有些工作尝试在VIO系统中加入高层次的语义信息[16, 109, 155],通过保证尺度与语义的一致性提升定位能力。无论是基于深度学习管道,或是在传统 VIO系统中加入语义信息,都处于起步阶段,具有很大的潜力。
本文仅做学术分享,如有侵权,请联系删文!
更多精彩内容,请关注公众号:智驾机器人技术前线