视觉惯性里程计初始化方法、装置、设备和存储介质

文档序号:1859066 发布日期:2021-11-19 浏览:22次 >En<

阅读说明:本技术 视觉惯性里程计初始化方法、装置、设备和存储介质 (Visual inertial odometer initialization method, device, equipment and storage medium ) 是由 赖东东 谭明朗 谢亮 付伟 于 2021-08-11 设计创作,主要内容包括:本申请涉及一种视觉惯性里程计初始化方法、装置、计算机设备和存储介质。本申请的方法在进行视觉惯性里程计初始化的过程中,先进行动态初始化,并在动态初始化的过程中获取视觉惯性里程计对应图像采集设备的静止检测参数,来确定是否满足静态初始化的条件,当静止检测参数表征图像采集设备为静止状态,即满足静态初始化条件时,终止动态初始化,从而对所述视觉惯性里程计进行初始化速度更快的静态初始化,本申请的方案通过动态初始化与静态初始化的结合,可以有效提高视觉惯性里程计初始化过程的速度。(The application relates to a visual inertial odometer initialization method, a device, computer equipment and a storage medium. The method comprises the steps of firstly carrying out dynamic initialization in the process of initializing the visual inertia odometer, obtaining static detection parameters of the visual inertia odometer corresponding to the image acquisition equipment in the dynamic initialization process to determine whether the static initialization conditions are met, and terminating the dynamic initialization when the static detection parameters represent that the image acquisition equipment is in a static state, namely the static initialization conditions are met, so as to carry out static initialization with higher initialization speed on the visual inertia odometer.)

视觉惯性里程计初始化方法、装置、设备和存储介质

技术领域

本申请涉及计算机领域,特别是涉及一种视觉惯性里程计初始化方法、装置、计算机设备和存储介质。

背景技术

视觉惯性里程计(visual-inertial odometry,VIO),有时也叫视觉惯性系统,用于融合图像采集设备和IMU数据来实现即时定位与地图构建,视觉里程计中加入惯性测量单元后,在相邻的两关键帧解算的相机位姿之间,加入了惯性测量单元的测量信息作为约束,并且由于惯性导航能够输出多种导航参数,所以也可以为相机在每一帧是提供更加详细的运动信息。目前视觉惯导里程计基本上分成了两大类:松耦合和紧耦合。松耦合是指相机进行运动估计,同时惯性测量单元也进行运动解算,然后将两个对运动的估计和解算结果进行融合;紧耦合是指将相机和惯性测量单元的状态合并在一起构建运动方程和观测方程,然后统一进行运动估计。视觉惯性里程计的紧耦合是一个高度非线性系统,因为单目视觉里程计的尺度,图像采集设备相对重力方向的旋转在基于视觉的即时定位与地图构建的系统中是不可观量的,这导致视觉和IMU融合时需要对单目的尺度、重力向量估计一个比较好的初始值。

在实际运用中,视觉惯性里程计经常需要在运动时进行初始化,例如,视觉惯性里程计跟踪失败,需要在图像采集设备运动过程中进行重启。

同时,在实际应用中对于视觉惯性里程计的初始化,一般是持续通过动态初始化的方式来进行处理,但是动态初始化的初始化速度较慢且计算量大,影响视觉惯性里程计系统的初始化效率。

发明内容

基于此,有必要针对上述技术问题,提供一种能够有效提高视觉惯性里程计初始化效率的视觉惯性里程计初始化方法、装置、计算机设备和存储介质。

一种视觉惯性里程计初始化方法,所述方法包括:

获取视觉惯性里程计对应的初始化请求,所述视觉惯性里程计加载于图像采集设备;

根据所述初始化请求对所述视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取所述图像采集设备的静止检测参数;

当所述静止检测参数表征所述图像采集设备的状态为静止状态时,终止所述动态初始化,并对所述视觉惯性里程计进行静态初始化。

在其中一个实施例中,所述静止检测参数包括图像采集设备所采集图像帧中特征点的像素数据;

所述方法还包括:

在动态初始化的过程中,识别所述图像采集设备所采集的最新图像帧与相邻图像帧的匹配特征点对,所述相邻图像帧为所述最新图像帧的上一图像帧;

若匹配特征点对的特征点之间的像素差小于预设像素差阈值,则识别所述像素匹配特征点对为相似匹配特征点对,并获取所述相似匹配特征点对的数量;

根据所述相似匹配特征点对的数量以及所述匹配特征点对的数量,确定所述相似匹配特征点对在所述匹配特征点对中的数量占比;

当所述数量占比大于预设比例阈值时,确定所述静止检测参数表征所述图像采集设备为静止状态。

在其中一个实施例中,所述静止检测参数包括图像采集设备所采集图像帧对应的加速度计测量值与陀螺仪测量值;

所述方法还包括:

在动态初始化的过程中,识别所述图像采集设备所采集的最新图像帧以及相邻图像帧中加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据,所述相邻图像帧为所述最新图像帧的上一图像帧;

当所述第一方差数据小于预设第一测量值方差阈值、且所述第二方差数据小于预设第二测量值方差阈值时,确定所述静止检测参数表征所述图像采集设备为静止状态。

在其中一个实施例中,所述对所述视觉惯性里程计进行静态初始化包括:

获取所述图像采集设备对应的重力加速度数据;

根据所述重力加速度数据获取姿态数据以及重力向量方向数据,获取陀螺仪测量得到的陀螺仪测量值数据;

根据所述陀螺仪测量值数据获取陀螺仪偏置数据,将所述视觉惯性里程计对应的位置数据以及速度数据置零;

根据所述重力向量方向数据、所述陀螺仪偏置数据、所述姿态数据、所述位置数据以及所述速度数据对所述视觉惯性里程计进行静态初始化。

在其中一个实施例中,所述根据所述初始化请求对所述视觉惯性里程计进行动态初始化包括:

获取最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对所述最新图像帧与所述相邻图像帧间的IMU数据进行预积分处理,获取预积分结果;

基于所述相对旋转量以及所述预积分结果,通过旋转约束获取所述视觉惯性里程计对应的陀螺仪偏置数据;

根据所述相对旋转量、所述相对平移量以及所述预积分结果,对视觉数据与IMU数据进行对齐处理,获取所述视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据;

根据所述陀螺仪偏置数据、所述重力方向数据、所述速度数据、所述位置数据、所述姿态数据以及尺度数据对所述视觉惯性里程计进行动态初始化。

在其中一个实施例中,所述根据所述相对旋转量、所述相对平移量以及所述预积分结果,对视觉数据与IMU数据进行对齐处理,获取所述视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据包括:

根据所述相对旋转量、所述相对平移量以及所述预积分结果,基于线性优化对视觉数据与IMU数据进行对齐处理,获取所述视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

在其中一个实施例中,所述根据所述相对旋转量、所述相对平移量以及所述预积分结果,对视觉数据与IMU数据进行对齐处理,获取所述视觉惯性里程计对应的重力方向数据、速度数据、位姿数据以及尺度数据包括:

根据所述相对旋转量、所述相对平移量以及所述预积分结果,基于非线性优化对视觉数据与IMU数据进行对齐处理,获取所述视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

一种视觉惯性里程计初始化装置,所述装置包括:

请求获取模块,用于获取视觉惯性里程计对应的初始化请求,所述视觉惯性里程计加载于图像采集设备;

静态初始化模块,用于根据所述初始化请求对所述视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取所述图像采集设备的静止检测参数;

动态初始化模块,用于当所述静止检测参数表征所述图像采集设备的状态为静止状态时,终止所述动态初始化,并对所述视觉惯性里程计进行静态初始化。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取视觉惯性里程计对应的初始化请求,所述视觉惯性里程计加载于图像采集设备;

根据所述初始化请求对所述视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取所述图像采集设备的静止检测参数;

当所述静止检测参数表征所述图像采集设备的状态为静止状态时,终止所述动态初始化,并对所述视觉惯性里程计进行静态初始化。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取视觉惯性里程计对应的初始化请求,所述视觉惯性里程计加载于图像采集设备;

根据所述初始化请求对所述视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取所述图像采集设备的静止检测参数;

当所述静止检测参数表征所述图像采集设备的状态为静止状态时,终止所述动态初始化,并对所述视觉惯性里程计进行静态初始化。

上述视觉惯性里程计初始化方法、装置、计算机设备和存储介质,方法通过获取视觉惯性里程计对应的初始化请求;根据所述初始化请求对所述视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取所述图像采集设备的静止检测参数;当所述静止检测参数表征所述图像采集设备的状态为静止状态时,终止所述动态初始化,并对所述视觉惯性里程计进行静态初始化。本申请在进行视觉惯性里程计初始化的过程中,先进行动态初始化,并在动态初始化的过程中获取视觉惯性里程计对应图像采集设备的静止检测参数,来确定是否满足静态初始化的条件,当静止检测参数表征图像采集设备为静止状态,即满足静态初始化条件时,终止动态初始化,从而对所述视觉惯性里程计进行初始化速度更快的静态初始化,本申请的方案通过动态初始化与静态初始化的结合,可以有效提高视觉惯性里程计初始化过程的速度。

附图说明

图1为一个实施例中视觉惯性里程计初始化方法的流程示意图;

图2为一个实施例中识别图像采集设备是否为静止状态步骤的流程示意图;

图3为一个实施例中静态初始化步骤的流程示意图;

图4为一个实施例中动态初始化步骤的流程示意图;

图5为一个实施例中视觉惯性里程计初始化装置的结构框图;

图6为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种视觉惯性里程计初始化方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该终端具体可以为图像采集设备上的处理器,该方法包括以下步骤:

步骤102,获取视觉惯性里程计对应的初始化请求,视觉惯性里程计加载于图像采集设备。

其中,视觉惯性里程计又称VIO,用于融合图像采集设备和IMU的数据来实现即时定位与地图构建。而初始化请求用于请求终端的处理器来实现视觉惯性里程计的初始化。初始化过程需要估计的量包括:尺度、重力向量方向、陀螺仪偏置、每一帧的位姿、速度。

具体地,本申请主要是解决视觉惯性里程计初始化的问题,并实现静态和动态初始化自动检测和切换。在进行视觉惯性里程计的初始化之前,需要确定是否接收到了视觉惯性里程计对应的初始化请求,该初始化请求具体可以在视觉惯性里程计跟踪失败时被发送至处理器,而后处理器即可基于该视觉惯性里程计对应的初始化请求来进行视觉惯性里程计的初始化进程。

步骤104,根据初始化请求对视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取图像采集设备的静止检测参数。

其中,动态初始化是指在图像采集设备运动的过程中完成对视觉惯性里程计的初始化。而静止检测参数则用于确定图像采集设备当前的状态是处于静止状态还是运动状态。动态初始化可以在图像采集设备运动过程中进行初始化,但初始化速度较慢,一般需要两三秒。

具体地,在进行视觉惯性里程计的初始化时,可以先默认按照动态初始化的方式来执行初始化操作,在这个过程中,可以同步获取图像采集设备对应的静止检测参数,来确定图像采集设备当前的状态是处于静止状态还是运动状态。

步骤106,当静止检测参数表征图像采集设备的状态为静止状态时,终止动态初始化,并对视觉惯性里程计进行静态初始化。

在动态初始化的过程中,如果检测到静止检测参数表征图像采集设备的状态为静止状态时,则表明当前图像采集设备可以进行静态初始化,此时,为了提高视觉惯性里程计初始化的效率,可以直接终止动态初始化,并对视觉惯性里程计进行静态初始化。静态初始化的优点是初始化速度快,仅需一帧就可完成初始化,但初始化过程中必须保证图像采集设备处于静止状态,因此在动态初始化的过程中通过静止检测参数来进行图像采集设备的静止检测,当图像采集设备进入静止状态后,终止动态初始化,并对视觉惯性里程计进行静态初始化。从而可以在极短的时间内完成对视觉惯性里程计的初始化,提高初始化过程的效率。

上述视觉惯性里程计初始化方法,方法通过获取视觉惯性里程计对应的初始化请求;根据初始化请求对视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取图像采集设备的静止检测参数;当静止检测参数表征图像采集设备的状态为静止状态时,终止动态初始化,并对视觉惯性里程计进行静态初始化。本申请在进行视觉惯性里程计初始化的过程中,先进行动态初始化,并在动态初始化的过程中获取视觉惯性里程计对应图像采集设备的静止检测参数,来确定是否满足静态初始化的条件,当静止检测参数表征图像采集设备为静止状态,即满足静态初始化条件时,终止动态初始化,从而对视觉惯性里程计进行初始化速度更快的静态初始化,本申请的方案通过动态初始化与静态初始化的结合,可以有效提高视觉惯性里程计初始化过程的速度。

在一个实施例中,静止检测参数包括图像采集设备所采集图像帧中特征点的像素数据。

如图2所示,方法还包括:

步骤201,在动态初始化的过程中,识别图像采集设备所采集的最新图像帧与相邻图像帧的匹配特征点对,相邻图像帧为最新图像帧的上一图像帧。

步骤203,若匹配特征点对的特征点之间的像素差小于预设像素差阈值,则识别像素匹配特征点对为相似匹配特征点对,并获取相似匹配特征点对的数量。

步骤205,根据相似匹配特征点对的数量以及匹配特征点对的数量,确定相似匹配特征点对在匹配特征点对中的数量占比。

步骤207,当数量占比大于预设比例阈值时,确定静止检测参数表征图像采集设备为静止状态。

其中,像素差具体用于表征像素位置是否发生变化。具体地,对于图像采集设备是否处于静止状态,可以通过图像采集设备所采集的两帧图像是否能够匹配来确定。首先在动态初始化的过程中,可以识别图像采集设备所采集的最新图像帧以及相邻图像帧中的匹配特征点对,从而获取匹配特征点对的特征点之间的像素差小于预设像素差阈值的相似匹配特征点对,识别相似匹配特征点对的数量;根据相似匹配特征点对的数量以及匹配特征点对的数量,确定相似匹配特征点对在匹配特征点对中的数量占比;当数量占比大于预设比例阈值时,确定静止检测参数表征图像采集设备为静止状态。即通过判断相邻的图像帧内,能够匹配的特征点的像素位置是否发生变化,相邻两帧间匹配上的特征点中,大部分的像素位置基本不变时,即可判定当前的图像采集设备处于静止状态。在一个具体的实施例中,当匹配上的特征点中,90%的像素差小于预设像素差阈值时,可以确定当前的图像采集设备处于静止状态。本实施例中,通过前后帧特征点像素数据的对比来识别确定图像采集设备是否处于静止状态,可以有效保证静止检测的准确性。从而保证视觉惯性里程计初始化的准确性。

在一个实施例中,方法还包括:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧以及相邻图像帧中加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据,相邻图像帧为最新图像帧的上一图像帧;当第一方差数据小于预设第一测量值方差阈值、且第二方差数据小于预设第二测量值方差阈值时,确定静止检测参数表征图像采集设备为静止状态。

其中,图像采集设备上包含了加速度计以及陀螺仪,分别用于采集图像采集设备的加速度传感数据以及角速度传感数据。

具体地,当需要进行静止检测时,还可以通过图像采集设备所采集的最新图像帧以及相邻图像帧对应的加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据来确定前后两帧间是否处于静止状态,当两帧间的第一方差数据小于预设第一测量值方差阈值、且第二方差数据小于预设第二测量值方差阈值时,说明前后两帧间并未发生位移,此时,可以确定静止检测参数表征图像采集设备为静止状态。本实施例中,通过前后帧对应的传感数据的对比,来识别确定图像采集设备是否处于静止状态,可以有效保证静止检测的准确性。从而保证视觉惯性里程计初始化的准确性。

在其中一个实施例中,如图3所示,对视觉惯性里程计进行静态初始化包括:

步骤302,获取图像采集设备对应的重力加速度数据。

步骤304,根据重力加速度数据获取姿态数据以及重力向量方向数据,获取陀螺仪测量得到的陀螺仪测量值数据。

步骤306,根据陀螺仪测量值数据获取陀螺仪偏置数据,将视觉惯性里程计对应的位置数据以及速度数据置零。

步骤308,根据重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据对视觉惯性里程计进行静态初始化。

具体地,完成视觉惯性里程计的初始化需要尺度、重力向量方向、陀螺仪偏置、每一帧的位姿以及速度等数据。而对于静态初始化,静态初始化时只有一帧图像,所以就只需要一帧图像的位置和速度,重力向量方向就是图像采集设备在静止时加速度计的测量值,通过这个算出图像采集设备的姿态即直接通过加速度计解算俯仰角pitch和翻滚角roll,而偏航角yaw角可以给0。因为静止时加速度计测到的是重力加速度,在世界坐标系下是竖直向上的,相当于通过加速度计的测量可以知道世界坐标系的z轴在IMU坐标系下的表达。假设静止时加速度计的测量值经过归一化后是则有:

roll=atan2(ax,az),pitch=-arcsin(ax),yaw=0

根据欧拉角的定义,即可得到旋转矩阵,进而求得姿态对应的四元数。而位置:速度:同时尺度是两帧间的相对位置,以及3D点的坐标的尺度,只有一帧就没有这些了,也就没有尺度了。而对于陀螺仪偏置bg0,则可以根据陀螺仪测量值数据获取,具体可以通过静止时一段时间内的陀螺仪读数的平均值来求得。而后即可根据上述确定的重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据对视觉惯性里程计进行静态初始化。本实施例中,通过先计算重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据等初始化相关数据,而后通过这些数据来实现对视觉惯性里程计进行静态初始化,可以有效保证静态初始化的准确率。

在其中一个实施例中,如图4所示,根据初始化请求对视觉惯性里程计进行动态初始化包括:

步骤401,获取最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对最新图像帧与相邻图像帧间的IMU数据进行预积分处理,获取预积分结果。

步骤403,基于相对旋转量以及预积分结果,通过旋转约束获取视觉惯性里程计对应的陀螺仪偏置数据。

步骤405,根据相对旋转量、相对平移量以及预积分结果,对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

步骤407,根据陀螺仪偏置数据、重力方向数据、速度数据、位置数据、姿态数据以及尺度数据对视觉惯性里程计进行动态初始化。

首先,在进行动态初始化时,需要先进行预处理,包括生成最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对最新图像帧与相邻图像帧间的IMU数据进行预积分处理,获取预积分结果,其中,对于,计算图像帧间相对旋转量qc0_ci+1和相对平移量tc0_ci+1。可以根据图像采集设备所采集的视频运行一个视觉里程计或SLAM(即时定位与地图构建),生成所有图像帧对应的相对旋转量qc0_ci+1和相对平移量tc0_ci+1,并生成对应的三维地图,用于和IMU数据对齐。而后对IMU数据进行预积分处理,获取预积分结果。IMU预积分的主要目的是将两帧图像间的多个IMU测量值通过积分的方式整合成一个测量值,将状态量及其协方差从第i帧图像递推到i+1帧图像,这样就可以跟视觉SLAM的位姿构建约束方程或残差方程。IMU测量的是线性加速度和角速度。状态量中速度是关于加速度的积分,位置是关于加速度的二次积分,姿态是关于角速度的积分。因此,可以在当前坐标系(IMU坐标系)下先把IMU测量值积分好,当需要的是,只需要根据情况进行坐标系转换和加减,从而将积分运算简化,节省后续计算过程的计算量。

所以预积分的主要任务是:

将状态量pvq从第i帧图像时刻递推到第i+1帧图像时刻,即可求出相邻两图像帧间相对的位置、速度、旋转;

完成状态量pvq的测量噪声及其协方差从图像第i帧到i+1帧的递推;

完成状态量pvq对IMU偏置ba,bg的雅可比矩阵从图像第i帧到i+1帧的递推:该雅可比矩阵可将状态量积分公式在测量值处线性化,优化时偏置ba,bg改变,使用雅可比矩阵更新状态量,不用再次积分,其中ba为IMU中加速度计的零飘/偏置/零偏,bg为IMU中陀螺仪的零飘/偏置/零偏;

残差方程以及残差对状态量的雅可比矩阵公式:在基于优化的初始化中,构建残差项,并使用雅可比矩阵更新状态量。

在预处理完成后,即可进行动态初始化,首先可以根据旋转约束估计陀螺仪偏置bg,SLAM相邻图像帧在相机坐标系(图像采集设备为相机)下的旋转四元数qc0_ci,qc0_ci+1,预积分计算出的IMU坐标系(body坐标系)间的旋转qbi_bi+1,相机和IMU之间的外参qb_c,来得出校正陀螺仪偏置的目标函数为:

其中,[q]vec表示取四元数q的虚部, qbi_bi+1由估计值和陀螺仪偏置δbg构成,δbg一般为一较小量,泰勒展开并在附近一阶近似为:

B表示滑窗中的所有图像帧,为旋转角相对δbg的雅可比矩阵,由于在上述的IMU数据预积分时已计算出相邻图像帧间相对的旋转,因此可以直接确定旋转角相对δbg的雅可比矩阵。

上述目标函数的最小值为单位四元数(表示没有相对旋转),则目标函数可改写为:

只考虑虚部,则有:

(q)vec表示取四元数q的虚部。

将上式转为正定矩阵有:

求解上述方程组,即可获取目标函数达到最小的解bg,从而完成对陀螺仪偏置的估计。而后根据相对旋转量、相对平移量以及预积分结果,对视觉与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。视觉与IMU数据对齐处理的方案有两种,基于线性方程组的视觉与IMU数据对齐方案;以及基于非线性优化的视觉与IMU数据对齐方案。IMU数据能够为视觉惯性里程计提供尺度信息和快速运动时的位姿估计,而视觉惯性里程计可以有效地解决IMU的静态漂移问题,两者对齐之后能够提高SLAM系统的精度以及鲁棒性。

在其中一个实施例中,基于线性方程组的视觉与IMU对齐方案,该方案共两步:第一步,a)利用平移约束估计重力方向,速度,以及尺度初始值。

待估计变量为:

其中,表示i时刻IMU坐标系的速度在i时刻IMU坐标系下的表示。gc0为重力向量在第0帧相机坐标系下的表示。s表示视觉SLAM相对绝对尺度的比例因子。注:单目视觉计算出的帧间平移和路标点没有尺度,所以要估计比例因子s。

利用IMU预积分与视觉SLAM的相对关系可构建位置、速度和旋转约束三个方程,在上面求解陀螺仪偏置时,相当于使用了旋转的约束方程,将位置和速度的约束方程中世界坐标系w换为c0系(第0帧相机坐标系),因为视觉SLAM的平移量没有尺度信息,将所有视觉SLAM求出的平移量乘以尺度因子s,将含有上述待估计量的项都移到一边,不含待估计量的项移到方程另一边,这样就得到了形如Hx=b的方程组,转换成线性最小二乘问题对状态量求解:

即求出待估计量χI,待估计量χi包括滑动窗口B中所有关键帧的速度、重力向量在c0坐标系中的分量和单目尺度因子s。为滑动窗口B中所有约束方程所组成的系数矩阵。

而后进行第二步,b)重力加速度方向的精调。

上面求解时,把重力向量gc0当作三个自由度的三维向量来求解,实际上重力的模长是固定的,即9.81。这样重力向量只有两个自由度,可以格拉姆-施密特正交化,在半径为9.81的球面上对重力向量进行重新参数化,重新参数化后重力向量为:

其中,w1,w2为待优化变量,||g||为重力向量的模长,通常为9.81:

将重新参数化的重力向量重新代入第一步中Hx=b方程组,然后用第一步中同样的方法,解一个最小二乘问题,从而实现重力加速度方向的精调。本实施例中,通过基于线性优化的视觉与IMU对齐方案,可以有效实现视觉与IMU对齐,从而保证视觉惯性里程计动态初始化的初始化准确率。

而在另一个实施例中,还可以通过使用基于非线性优化的视觉与IMU对齐方案,来获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

这种方法就是IMU的最大后验估计,目的是获得IMU参数最优估计。

利用上述预处理过程中,视觉SLAM稳定运行后的数据,包含多个关键帧的旋转qc0_ci+1和平移tc0_ci+1,以及对应的三维地图,以及这些关键帧之间IMU测量的预积分信息。可以基于上述信息来构成对应的状态向量,从而构建对应的优化问题来进行IMU参数最优估计问题的求解。这里的优化变量为:

δgc0=[δα,δβ,δγ]

这一步的Inertial residual(IMU残差)方程为IMU预积分中构建的pvq的残差,下面分别为旋转速度和位置约束构建的残差项:

其中,s表示视觉SLAM相对绝对尺度的比例因子,表示SLAM中不带尺度的量。

上述残差方程跟上述IMU预积分中的残差区别在于将位置和速度项乘一个尺度s,将尺度作为一个优化变量来优化,将尺度作为显式的优化变量时,收敛的速度会比将尺度作为隐含量进行优化时快的多。同时,还需要估计重力向量在c0坐标系下的值gc0,对滑窗中所有重力向量测量值求平均,估计一个初始值ginit,优化中估计相对初始值的误差δgc0。根据上面残差方程,残差相对优化变量的雅可比公式也很容易求得。使用ceres或g2o等优化库构建优化问题即可求解,得到视觉惯性里程计初始化的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。本实施例中,通过基于非线性优化的视觉与IMU对齐方案,可以有效实现视觉与IMU对齐,从而保证视觉惯性里程计动态初始化的初始化准确率。

应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图5所示,提供了一种视觉惯性里程计初始化装置,包括:

请求获取模块502,用于获取视觉惯性里程计对应的初始化请求,视觉惯性里程计加载于图像采集设备。

静态初始化模块504,用于根据初始化请求对视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取图像采集设备的静止检测参数。

动态初始化模块506,用于当静止检测参数表征图像采集设备的状态为静止状态时,终止动态初始化,并对视觉惯性里程计进行静态初始化。

在其中一个实施例中,静止检测参数包括图像采集设备所采集图像帧中特征点的像素数据;装置还包括静止识别模块,用于:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧与相邻图像帧的匹配特征点对,相邻图像帧为最新图像帧的上一图像帧;若匹配特征点对的特征点之间的像素差小于预设像素差阈值,则识别像素匹配特征点对为相似匹配特征点对,并获取相似匹配特征点对的数量;根据相似匹配特征点对的数量以及匹配特征点对的数量,确定相似匹配特征点对在匹配特征点对中的数量占比;当数量占比大于预设比例阈值时,确定静止检测参数表征图像采集设备为静止状态。

在其中一个实施例中,静止识别模块还用于:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧以及相邻图像帧中加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据,相邻图像帧为最新图像帧的上一图像帧;当第一方差数据小于预设第一测量值方差阈值、且第二方差数据小于预设第二测量值方差阈值时,确定静止检测参数表征图像采集设备为静止状态。

在其中一个实施例中,静态初始化模块506具体用于:获取图像采集设备对应的重力加速度数据;根据重力加速度数据获取姿态数据以及重力向量方向数据,获取陀螺仪测量得到的陀螺仪测量值数据;根据陀螺仪测量值数据获取陀螺仪偏置数据,将视觉惯性里程计对应的位置数据以及速度数据置零;根据重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据对视觉惯性里程计进行静态初始化。

在其中一个实施例中,动态初始化模块504具体用于:获取最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对最新图像帧与相邻图像帧间的IMU数据进行预积分处理,获取预积分结果;基于相对旋转量以及预积分结果,通过旋转约束获取视觉惯性里程计对应的陀螺仪偏置数据;根据相对旋转量、相对平移量以及预积分结果,对视觉与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据;根据陀螺仪偏置数据、重力方向数据、速度数据、位置数据、姿态数据以及尺度数据对视觉惯性里程计进行动态初始化。

在其中一个实施例中,动态初始化模块504还用于:根据相对旋转量、相对平移量以及预积分结果,基于线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

在其中一个实施例中,动态初始化模块504还用于:根据相对旋转量、相对平移量以及预积分结果,基于非线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

关于视觉惯性里程计初始化装置的具体限定可以参见上文中对于视觉惯性里程计初始化方法的限定,在此不再赘述。上述视觉惯性里程计初始化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种视觉惯性里程计方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取视觉惯性里程计对应的初始化请求,视觉惯性里程计加载于图像采集设备;

根据初始化请求对视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取图像采集设备的静止检测参数;

当静止检测参数表征图像采集设备的状态为静止状态时,终止动态初始化,并对视觉惯性里程计进行静态初始化。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧与相邻图像帧的匹配特征点对,相邻图像帧为最新图像帧的上一图像帧;若匹配特征点对的特征点之间的像素差小于预设像素差阈值,则识别像素匹配特征点对为相似匹配特征点对,并获取相似匹配特征点对的数量;根据相似匹配特征点对的数量以及匹配特征点对的数量,确定相似匹配特征点对在匹配特征点对中的数量占比;当数量占比大于预设比例阈值时,确定静止检测参数表征图像采集设备为静止状态。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧以及相邻图像帧中加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据,相邻图像帧为最新图像帧的上一图像帧;当第一方差数据小于预设第一测量值方差阈值、且第二方差数据小于预设第二测量值方差阈值时,确定静止检测参数表征图像采集设备为静止状态。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取图像采集设备对应的重力加速度数据;根据重力加速度数据获取姿态数据以及重力向量方向数据,获取陀螺仪测量得到的陀螺仪测量值数据;根据陀螺仪测量值数据获取陀螺仪偏置数据,将视觉惯性里程计对应的位置数据以及速度数据置零;根据重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据对视觉惯性里程计进行静态初始化。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对最新图像帧与相邻图像帧间的IMU数据进行预积分处理,获取预积分结果;基于相对旋转量以及预积分结果,通过旋转约束获取视觉惯性里程计对应的陀螺仪偏置数据;根据相对旋转量、相对平移量以及预积分结果,对视觉与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据;根据陀螺仪偏置数据、重力方向数据、速度数据、位置数据、姿态数据以及尺度数据在一个实施例中,处理器执行计算机程序时还实现以下步骤:视觉惯性里程计进行动态初始化。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据相对旋转量、相对平移量以及预积分结果,基于线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据相对旋转量、相对平移量以及预积分结果,基于非线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取视觉惯性里程计对应的初始化请求,视觉惯性里程计加载于图像采集设备;

根据初始化请求对视觉惯性里程计进行动态初始化,并在动态初始化过程中,获取图像采集设备的静止检测参数;

当静止检测参数表征图像采集设备的状态为静止状态时,终止动态初始化,并对视觉惯性里程计进行静态初始化。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧与相邻图像帧的匹配特征点对,相邻图像帧为最新图像帧的上一图像帧;若匹配特征点对的特征点之间的像素差小于预设像素差阈值,则识别像素匹配特征点对为相似匹配特征点对,并获取相似匹配特征点对的数量;根据相似匹配特征点对的数量以及匹配特征点对的数量,确定相似匹配特征点对在匹配特征点对中的数量占比;当数量占比大于预设比例阈值时,确定静止检测参数表征图像采集设备为静止状态。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在动态初始化的过程中,识别图像采集设备所采集的最新图像帧以及相邻图像帧中加速度计测量值对应的第一方差数据,以及陀螺仪测量值对应的第二方差数据,相邻图像帧为最新图像帧的上一图像帧;当第一方差数据小于预设第一测量值方差阈值、且第二方差数据小于预设第二测量值方差阈值时,确定静止检测参数表征图像采集设备为静止状态。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取图像采集设备对应的重力加速度数据;根据重力加速度数据获取姿态数据以及重力向量方向数据,获取陀螺仪测量得到的陀螺仪测量值数据;根据陀螺仪测量值数据获取陀螺仪偏置数据,将视觉惯性里程计对应的位置数据以及速度数据置零;根据重力向量方向数据、陀螺仪偏置数据、姿态数据、位置数据以及速度数据对视觉惯性里程计进行静态初始化。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取最新图像帧与相邻图像帧对应的相对旋转量以及相对平移量,并对最新图像帧与相邻图像帧间的IMU数据进行预积分处理,获取预积分结果;基于相对旋转量以及预积分结果,通过旋转约束获取视觉惯性里程计对应的陀螺仪偏置数据;根据相对旋转量、相对平移量以及预积分结果,对视觉与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据;根据陀螺仪偏置数据、重力方向数据、速度数据、位置数据、姿态数据以及尺度数据在一个实施例中,处理器执行计算机程序时还实现以下步骤:视觉惯性里程计进行动态初始化。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据相对旋转量、相对平移量以及预积分结果,基于线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据相对旋转量、相对平移量以及预积分结果,基于非线性优化对视觉数据与IMU数据进行对齐处理,获取视觉惯性里程计对应的重力方向数据、速度数据、位置数据、姿态数据以及尺度数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(RandomAccessMemory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandomAccessMemory,SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于离线状态的网约车数据采集系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!