基于锚点的单目VSLAM方法、装置、介质、设备及车辆与流程

文档序号:33127684发布日期:2023-02-01 06:01阅读:28来源:国知局
基于锚点的单目VSLAM方法、装置、介质、设备及车辆与流程
基于锚点的单目vslam方法、装置、介质、设备及车辆
技术领域
1.本公开涉及计算机视觉技术领域,尤其涉及一种基于锚点的单目 vslam方法、装置、介质、设备及车辆。


背景技术:

2.计算机视觉应用于无人驾驶场景或辅助驾驶场景中时,可应用到定位技术中。目前主流的定位技术通常是多传感器融合的技术,参与融合的定位源主要包括全球定位系统(global positioning system,gps) 定位、基于激光雷达的lslam定位、基于纯视觉的vslam以及视觉配合惯性测量单元(inertial measurement unit,imu)的视觉惯性里程计(visual-inertial odometry,vio)等。其中,vslam经过多年的发展,已经形成了较为成熟的框架,如图1所示。
3.相关技术中,应用于vslam的传感器主要分为单目相机、双目相机以及rgb-d相机。rgb-d相机可以获得深度信息,但是由于相关的硬件能力限制,rgb-d相机能感知的深度范围有限,很少用在无人驾驶和辅助驾驶场景中。单目相机和双目相机目前是无人驾驶领域 vslam技术的常用传感器,其对应的定位技术分别称为单目vslam 和双目vslam。相比于双目vslam,单目vslam采集数据量更小,建图效率更高,但由于无法直接获得深度信息和场景的真实尺度,其需要一个初始化的过程,但现有的单目vslam初始化过程的成功率和精度都较低。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于锚点的单目vslam方法、装置、介质、设备及车辆。
5.本公开提供了一种基于锚点的单目vslam方法,包括:
6.获取多个对齐锚点和单目相机采集的多个图像帧,所述多个对齐锚点的时间戳与所述多个图像帧的时间戳一一对应;所述对齐锚点为采用其他定位源生成的位姿数据;
7.基于所述对齐锚点和所述图像帧,进行vslam初始化;
8.初始化成功后,进行vslam建图。
9.可选地,所述进行vslam建图,包括:
10.基于对齐锚点,计算真实尺度,并将所有图像帧都转换成真实尺度下的图像帧;
11.基于转换后的图像帧,计算初始化距离;所述初始化距离为初始化成功的位置与初始化起点的位置之间的路程对应的累计距离;
12.在所述初始化距离大于设定距离阈值时,进行反向建图;
13.在所述初始化距离不大于所述设定距离阈值,或反向建图不成功时,从初始化成功的位置开始进行正向建图;
14.若反向建图成功,则基于对齐锚点,合并正向建图和反向建图的地图。
15.可选地,所述进行vslam初始化,包括:
16.在所述图像帧中选取两个图像帧进行初始化;
17.所述进行vslam建图之前,所述方法还包括:
18.若初始化失败,则在所述图像帧中,按照时间先后顺序重新选取后面的两个图像帧重新进行初始化,直至初始化成功为止。
19.可选地,所述进行vslam建图之后,所述方法还包括:
20.在距离所述初始化成功的位置经过的一个预设距离后,计算所有关键帧与相对应的对齐锚点之间的误差;
21.在所述误差等于或小于预设误差阈值时,继续进行正向建图或反向建图;
22.若所述误差大于所述预设误差阈值,则返回重新执行所述在所述图像帧中选取两个图像帧进行初始化。
23.可选地,所述计算真实尺度,包括:
24.采用下式计算真实尺度:
[0025][0026]
其中,tr代表真实尺度,对应真实尺度下的平移矩阵,(x1,y1,z1) 和(x2,y2,z2)分别代表两个图像帧对应的相机坐标系的原点的三维坐标, t代表初始化成功的两个图像帧之间的归一化的平移矩阵。
[0027]
可选地,所述计算初始化距离,包括:
[0028]
采用下式计算初始化距离:
[0029][0030]
其中,length代表初始化距离,m代表初始化成功的两个图像帧中在前的一图像帧,(x,y,z)为转换后的图像帧所对应的对齐锚点的位置坐标。
[0031]
可选地,所述进行反向建图,包括:
[0032]
基于初始化成功的两个图像帧中在前的一图像帧,形成反向图像序列;所述反向图像序列为(k,k-1,
……
,0),其中,k代表初始化成功的两个图像帧中在前的一图像帧;
[0033]
基于所述反向图像序列,进行建图。
[0034]
可选地,所述计算所有关键帧与相对应的对齐锚点之间的误差,包括:
[0035]
确定所述预设距离内创建的关键帧中的预设数量的连续关键帧;
[0036]
基于所述预设数量的连续关键帧的位姿数据和相对应的对齐锚点的位姿数据,采用如下公式,计算所述误差;
[0037][0038][0039]
[0040][0041]
其中,p代表关键帧的数量,(xi,yi,zi,yawi,pitchi,rolli)代表关键帧的位姿,(x
ai
,y
ai
,z
ai
,yaw
ai
,pitch
ai
,roll
ai
)代表对齐锚点的位姿。epos 代表所有关键帧与相对应的对齐锚点之间的平均位置误差,eyaw代表所有关键帧与相对应的对齐锚点之间的平均偏航角误差,epitch代表所有关键帧与相对应的对齐锚点之间的平均俯仰角误差,eroll代表所有关键帧跟对齐锚点之间的平均横滚角误差;所述误差包括平均位置误差、平均偏航角误差、平均俯仰角误差以及平均横滚角误差中的至少一个。
[0042]
可选地,所述合并正向建图和反向建图的地图,包括:
[0043]
基于所述对齐锚点,确定全局坐标;
[0044]
基于所述全局坐标,将正向建图得到的地图与反向建图得到的地图进行位置对齐以合并。
[0045]
本公开还提供了一种基于锚点的单目vslam装置,包括:
[0046]
获取模块,用于获取多个对齐锚点和单目相机采集的多个图像帧,所述多个对齐锚点的时间戳与所述多个图像帧的时间戳一一对应;所述对齐锚点为采用其他定位源生成的位姿数据;
[0047]
初始化模块,用于基于所述对齐锚点和所述图像帧,进行vslam 初始化;
[0048]
建图模块,用于初始化成功后,进行vslam建图。
[0049]
本公开还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述任一种方法的步骤。
[0050]
本公开还提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述任一种方法的步骤。
[0051]
本公开还提供了一种车辆,包括上述任一种电子设备。
[0052]
本公开提供的技术方案与现有技术相比具有如下优点:
[0053]
本公开提供的基于锚点的单目vslam方法包括:获取多个对齐锚点和单目相机采集的多个图像帧,所述多个对齐锚点的时间戳与所述多个图像帧的时间戳一一对应;所述对齐锚点为采用其他定位源生成的位姿数据;基于所述对齐锚点和所述图像帧,进行vslam初始化;初始化成功后,进行vslam建图。其中,对齐锚点为基于其他定位源生成的位姿数据,能够给对应时间戳的图像帧赋予较为准确的位姿数据;由此,通过结合对齐锚点进行单目vslam初始化并建图,能够基于对齐锚点提供较准确的尺度信息和全局坐标,从而有利于实现真实尺度的还原,同时提高成功率和效率。
附图说明
[0054]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0055]
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0056]
图1为本公开实施例提供的一种vslam的流程框架示意图;
[0057]
图2为本公开实施例提供的一种单目vslam初始化过程的原理示意图;
[0058]
图3为本公开实施例提供的一种基于锚点的单目vslam方法的流程示意图;
[0059]
图4为本公开实施例提供的基于锚点的单目vslam方法中,进行vslam建图的细化流程示意图;
[0060]
图5为本公开实施例提供的另一种基于锚点的单目vslam方法的流程示意图;
[0061]
图6为本公开实施例提供的一种基于锚点的单目vslam装置的结构示意图;
[0062]
图7为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
[0063]
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
[0064]
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
[0065]
本公开实施例主要涉及到无人驾驶定位技术。具体地,随着计算机视觉技术的发展,无人驾驶作为典型应用场景之一获得了广泛关注。在无人驾驶关键技术中,定位技术占据着极其重要的地位。其中,vslam的框架如图1所示,其通常包括获取传感器数据、前端视觉里程计、后端非线性优化、回环检测以及建图等步骤。
[0066]
按照vslam的传感器类型进行划分,应用于无人驾驶场景中的 vslam技术主要包括单目vslam和双目vslam。
[0067]
其中,双目vslam中,双目相机可以通过其左目和右目的视差计算深度信息和场景的真实尺度。在基于特征点法前端的vslam中,相比于单目vslam,双目vslam具备更好特征点匹配效果,具备更丰富的地图点,能够生成更加稠密的地图。
[0068]
但是,相比与单目vslam,双目vslam需要采集2倍数据量的图像数据,在建图过程中的计算量更大,建图效率更低。
[0069]
相对于此,单目vslam采集数据量更小,建图效率更高;但是,单目vslam无法直接获得深度信息和场景的真实尺度。相比于双目 vslam,单目vslam需要一个初始化过程,以获得相机的初始姿态并生成初始地图,为后续的跟踪阶段提供支撑。由此,初始化过程对于单目vslam尤为重要,初始化过程的效果会极大的影响后续的建图成功率和精度。因此,单目vslam对自身初始化的要求较高,受初始化位置环境的影响较大,导致现有单目vslam的成功率和精度较低。
[0070]
针对此,本公开实施例提出了一种基于锚点的单目vslam方法。本公开实施例中的锚点,是指采用其他定位源,例如gps、lslam或者融合定位等,生成的轨迹数据(即位姿数据),其可离线生成,也可在线生成,在此不限定。能够理解的是,本公开实施例中,锚点的特点是具有很高的位姿精度,通过将锚点与图像帧进行时间戳对齐,赋予对应的图像帧锚点的位姿数据,能够为对应的图像帧赋予较高精度且较准确的位姿数据,由此通过将锚点引入到单目vslam方法中,能够为单目vslam方法的初始化过程提供尺度信息和全局坐标,从
而能够在单目vslam方法的初始化过程提供更强的约束,进而提高初始化的成功率和精度。由此,本公开实施例提供的基于锚点的单目 vslam方法能够解决如何提升单目vslam初始化成功率和精度的问题,进而解决单目vslam方法成功率和精度低的问题。
[0071]
示例性地,单目vslam方法中,初始化过程可以由图2示出,其中:单目vslam初始化需要两帧图像,图2中以i1和i2示出;在基于特征点法的vslam中,单目初始化首先在两帧图像中提取特征点并进行匹配,通过多组匹配点对(图2中以p1和p2示出一组匹配点对,以e1和e2示出另一组匹配点对),就可以根据对极几何关系获得两帧图像i1和i2之间的相对位姿的旋转变换矩阵r和平移变换矩阵t。在确定了变换矩阵(即rt)之后,通过三角化方法生成匹配点对对应的地图点(图2中以p点示出p1和p2对应的地图点),完成单目初始化过程。
[0072]
其中,由于单目尺度不可知,这里的平移变换矩阵t的取值无法确定。传统纯视觉单目vslam方案一般只是将平移变换矩阵t进行归一化为无量纲的值,如何赋予其真实尺度是本公开实施例提供的技术方案所要解决的问题之一。针对性地,本公开实施例提供的基于锚点的 vslam方法中,通过引入锚点,相当于引入了真实尺度,从而使得平移变换矩阵t具有真实的尺度,解决了该问题。
[0073]
同时,变换矩阵r和t表述了单目相机运动的初值,会影响后续建图过程的关键帧位姿,所以如果变换矩阵r和t准确性较低的话,会导致后面的关键帧轨迹偏离相机真实轨迹较大。如何识别出这种错误的初始化姿态也是本公开实施例提供的技术方案所要解决的一个问题。针对此,本公开实施例提供的基于锚点的vslam方法中,通过引入锚点,可以锚点为参考(即基准,真值)对相机姿态进行校正,从而能够尽早发现错误姿态,由此解决了该问题。
[0074]
此外,为了使单目初始化的变换矩阵和地图点精度较高,对匹配点对数目的要求也比较高,在一些场景简单、光线条件差的位置,由于匹配点对数目无法达到要求会导致初始化失败,会舍弃i1和i2这两帧,选择后面的两帧重新初始化,再失败则重复这个过程直到初始化成功。如何缩减这个过程并提供补救手段,本公开实施例提供的技术方案所要解决的另一个问题。针对此,本公开实施例提供的基于锚点的vslam方法中,通过引入锚点,能够降低对匹配点对数目的要求,且提高成功率和精度,从而有利于缩短不断尝试进行初始化的过程,即有利于缩短上述过程,包括缩短初始化时间以及缩短初始化距离;进一步地,通过利用反向建图,能够针对未初始化成功的在前图像帧进行建图,从而提高数据利用率。
[0075]
下面结合附图,对本公开实施例提供的基于锚点的单目vslam 方法、装置、介质、设备及车辆进行示例性说明。
[0076]
示例性地,图3为本公开实施例提供的一种基于锚点的单目 vslam方法的流程示意图。参照图3,该方法包括如下步骤:
[0077]
s110、获取多个对齐锚点和单目相机采集的多个图像帧。
[0078]
其中,多个对齐锚点的时间戳与多个图像帧的时间戳一一对应;为采用其他定位源生成的位姿数据。示例性地,其他定位源可包括gps、 lslam或者融合定位等。能够理解的是,对齐锚点相对于图像帧具有较高的位姿精度,从而能赋予对应时间下的图像帧准确度较高的真实尺度下的位姿数据。
[0079]
在一些实施方式中,其他定位源与单目相机的采用率和采样时间中的至少一个可能存在差异,进而,其他定位源产生的初始锚点的时间戳与图像帧的时间戳并不对应,因
此,在该步骤之前,还可包括基于时间戳对初始锚点进行插值,以获得时间戳与图像帧一一对应的锚点,即对齐锚点。本公开实施例中,以单目相机采集到的图像帧的时间戳为参考,对齐他定位源的位姿数据进行插值(例如线性插值),得到对应于图像帧的对齐锚点,从而得到每个图像帧对应的较为准确的位姿数据,为后续进行vslam初始化和vslam建图作准备。
[0080]
s120、基于对齐锚点和图像帧,进行vslam初始化。
[0081]
其中,进行vslam初始化即确定不同图像帧之间的旋转平移关系,即确定变换矩阵r和t。
[0082]
本公开实施例中,将对齐锚点引入vslam初始化过程中,将对齐锚点的位姿数据赋予对应时间戳下的图像帧,使得图像帧具有较为准确且真实尺度下的位姿数据;在此基础上进行vslam初始化,所确定的变换矩阵r和t的准确性较高,且均为真实尺度下的变换矩阵。
[0083]
在一些实施例中,该步骤具体包括:在图像帧中选取两个图像帧进行初始化。
[0084]
具体地,在上述获取的多个图像帧中,选取两个图像帧,并结合这两个图像帧对应的对齐锚点,进行vslam初始化。
[0085]
s130、初始化成功后,进行vslam建图。
[0086]
其中,在执行s120之后,若初始化成功,则进行vslam建图,具体可包括正向建图,还可包括反向建图,以及地图合并,后文中详述。
[0087]
在一些实施例中,在进行vslam建图之前,该方法还可包括:
[0088]
若初始化失败,则在图像帧中,按照时间先后顺序重新选取后面的两个图像帧重新进行初始化,直至初始化成功为止。
[0089]
具体地,在初始化得到转换矩阵r和t之后,可利用三角化的方法生成地图点;地图点包括内点和外点,要剔除掉不好的点(即外点);针对剔除之后剩下的点的总数量,采用一个阈值来衡量,若其大于或等于该阈值,则表明剩下的点较多,初始化成功;若其小于该阈值,则表明剩下的点较少,初始化失败。示例性地,若两个图像帧之间的共视程度(存在共视关系的点对数量)比较好,场景比较丰富,匹配点对比较多,误差比较小,对应的,剩下的点的数量通常较多,例如剩下的点的数量大于或等于上述阈值,则表明初始化成功;若场景比较空旷,则匹配点对比较少,误差比较大,对应的,剩下的点的数量通常较少,例如剩下的点的数量小于上述阈值,则表明初始化失败。
[0090]
在其他实施方式中,还可采用本领域技术人员可知的其他方式判断初始化是否成功,在此不赘述也不限定。
[0091]
本公开实施例中,若初始化失败,则重新进行初始化。具体的,选取另外两个图像帧重新进行初始化,所选取的另外两个图像帧在时间上位于初始化失败对应的两个图像帧的后面;若初始化仍失败,则继续选择在后的两个图像帧进行初始化,直至初始化成功为止。
[0092]
示例性的,单目相机采集的多个图像帧按照时间先后顺序编号,例如可为第1帧、第2帧、第3帧、第4帧、第5帧、
……
。基于此,首先选取第1帧和第2帧进行初始化,若初始化成功,则进行vslam 建图;若初始化失败,则选取第3帧和第4帧重新进行初始化;若初始化成功,则进行vslam建图;若初始化失败,则继续选取后面的两个图像帧重新进行初始化,直至
初始化成功;并在初始化成功之后进行vslam建图。在一些实施例中,用于初始化的两个图像帧并不一定是连续的,例如,可以选取第1帧和第3帧进行初始化,失败后,选取第8帧和第12帧进行初始化。
[0093]
在其他实施方式中,还可按照其它的图像帧选取方式进行vslam 初始化,在此不赘述也不限定。
[0094]
在一些实施例中,图4为本公开实施例提供的基于锚点的单目 vslam方法中,进行vslam建图的细化流程示意图。在图3的基础上,参照图4,s130中的进行vslam建图,具体可包括如下步骤:
[0095]
s131、基于对齐锚点,计算真实尺度,并将所有图像帧都转换成真实尺度下的图像帧。
[0096]
利用该步骤,以对齐锚点为参考,将图像帧对应的尺度还原为真实尺度,以便后续步骤中构造真实尺度下的地图。
[0097]
在一些实施例中,计算真实尺度,具体可包括:
[0098]
采用下式计算真实尺度:
[0099][0100]
其中,tr代表真实尺度,对应真实尺度下的平移矩阵,(x1,y1,z1) 和(x2,y2,z2)分别代表两个图像帧对应的相机坐标系的原点(参见图2 中的o1和o2)的三维坐标,t代表初始化成功的两个图像帧之间的归一化的平移矩阵。本段中的“平移矩阵”与上文中的“平移变换矩阵”做相同理解。
[0101]
示例性的,其中一个图像帧对应的相机的光心(即相机坐标系的原点)的位置为o1,其坐标为(x1,y1,z1);另一个图像帧对应的相机的光心的位置为o2,其坐标为(x2,y2,z2);则通过基于两个图像帧对应的相机的光心之间的距离与归一化的平移矩阵的乘积,对应得到真实尺度下的平移矩阵;计算出来之后,将所有的图像帧都还原成真实尺度下的图像帧。
[0102]
s132、基于转换后的图像帧,计算初始化距离。
[0103]
其中,转换后的图像帧为真实尺度下的图像帧;初始化距离为初始化成功的位置与初始化起点的位置之间的路程对应的累计距离,即该初始化距离为初始化成功的位置距离初始化起点的位置的距离,用于衡量截至初始化成功为止所历经的真实距离,为后续判断是否需要反向建图提供数据基础。
[0104]
在一些实施例中,计算初始化距离,包括:
[0105]
采用下式计算初始化距离:
[0106][0107]
其中,length代表初始化距离,m代表初始化成功的两个图像帧中在前的一图像帧,(x,y,z)为转换后的图像帧所对应的对齐锚点的位置坐标。
[0108]
能够理解的是,由于在图像帧与对齐锚点的时间戳是一一对应对齐的,则利用图像帧计算初始化距离,也可对等为利用对齐锚点计算初始化距离。
[0109]
本公开实施例中,初始化的过程从第0帧开始,且第m帧和第m+g 帧对应的两个图像帧成功初始化,则初始化距离length采用上式计算。
[0110]
s133、在初始化距离大于设定距离阈值时,进行反向建图。
[0111]
其中,设定距离阈值为用于衡量最大能容许多长距离没有建成图的阈值,若初始化距离小于或等于该设定距离阈值,则表明该初始化距离在容许距离范围内,可直接正向建图;若初始化距离大于该设定距离阈值,则表明该初始化距离超出了容许距离范围,需进行反向建图,以减少地图缺失。
[0112]
示例性的,总距离为0-1000米,对应设定距离阈值可为5米。由此,若初始化距离大于5米,例如初始化距离为10米,则表明从10 米开始才建成图,此时需要反向建图;若初始化距离等于或小于5米,则在容许距离范围内,则可无需反向建图,直接正向建图即可。
[0113]
在一些实施例中,如果初始化距离大于上述设定距离阈值,为了建立完整的地图,则可将初始化成功对应的图像帧的位置保存下来,然后从该图像帧开始反向建图,以补全地图,提升vslam建图的整体完整性。
[0114]
在一些实施例中,进行反向建图,具体可包括如下步骤:
[0115]
基于初始化成功的两个图像帧中在前的一图像帧,形成反向图像序列;反向图像序列为(k,k-1,
……
,0),其中,k代表初始化成功的两个图像帧中在前的一图像帧;
[0116]
基于反向图像序列,进行建图。
[0117]
具体地,反向图像序列为反向建图时输入的图像序列,具体为第k 帧到第0帧的图像序列,即从初始化成功的图像帧开始向前建图;正向建图对应的图像序列为(k,k+1,k+2,
……
,),即从初始化成功的帧开始向后建图。
[0118]
本公开实施例中,由于第0帧到第k帧之前的图像帧无法完成初始化,则从可以完成初始化的位置(即第k帧对应的位置)开始反向的建立地图。如果反向建图成功,则保存地图,为后续合并地图作准备。
[0119]
s134、在初始化距离不大于设定距离阈值,或反向建图不成功时,从初始化成功的位置开始进行正向建图。
[0120]
其中,如果初始化距离不大于设定距离阈值,或者反向建图不成功,则回到保存的成功初始化的位置,即第k帧的位置,并开始正向建图。
[0121]
s135、若反向建图成功,则基于对齐锚点,合并正向建图和反向建图的地图。
[0122]
具体地,在反向建图成功时,存在反向建图得到的地图;此时,基于对齐锚点得到全局坐标,并利用全局坐标将反向建图得到的地图与正向建图得到的地图合并,以得到整体完整度较高的地图。
[0123]
在一些实施例中,合并正向建图和反向建图的地图,具体可包括如下步骤:
[0124]
基于对齐锚点,确定全局坐标;
[0125]
基于全局坐标,将正向建图得到的地图与反向建图得到的地图进行位置对齐以合并。
[0126]
具体地,完成正向建图后,如果存在反向建立的地图,即存在反向建图得到的地图,则将正反向建立的地图进行合并。其中,地图合并需要利用到对齐锚点,地图中保存了由对齐锚点计算而来的全局坐标,通过全局坐标,可以将分段建立的地图,即正向建立的地图和反向建立的地图在全局坐标系进行位置对齐,进而完成合并,得到合并后的较为完整的地图。
[0127]
需要说明的是,若反向建图不成功,则只存在正向建图得到的地图,以该地图作为
vslam建图对应得到的地图。
[0128]
在一些实施例中,进行vslam建图之后,该方法还可包括对初始化的效果进行验证的过程,该验证的过程具体可包括如下步骤:
[0129]
在距离初始化成功的位置经过的一个预设距离后,计算所有关键帧与相对应的对齐锚点之间的误差;
[0130]
在误差等于或小于预设误差阈值时,继续进行正向建图或反向建图;
[0131]
若误差大于预设误差阈值,则返回重新执行在图像帧中选取两个图像帧进行初始化。
[0132]
具体地,初始化成功的位置也可称为初始化位置,即开始建图的位置,在初始化距离大于设定距离阈值时,进行正向建图和反向建图;在初始化距离不大于设定距离阈值时,可只进行正向建图。
[0133]
本公开实施例中,当距离初始化位置经过了一个预设距离后,即开始建图后经过一个预设距离后,计算所有的关键帧与相对应的对齐锚点之间的误差,即结合关键帧计算累计误差;并进一步地基于计算得到的该误差,结合预设误差阈值,判断累计误差是否过大。
[0134]
其中,预设误差阈值用于衡量上述计算得到的累计误差是否过大;若上述累计误差不大于该预设误差阈值,则表明该累计误差在容许范围内,可继续建图;若上述累计误差大于该预设误差阈值,则表明该累计误差超出了误差容许范围,对应的偏差超出了容许范围,此时需要重新选择图像帧进行初始化。
[0135]
由此,通过结合对齐锚点对累计误差进行计算,并结合预设误差阈值进行判断,能够较及时且准确地识别出错误姿态。
[0136]
在一些实施例中,计算所有关键帧与相对应的对齐锚点之间的误差,包括:
[0137]
确定预设距离内创建的关键帧中的预设数量的连续关键帧;
[0138]
基于预设数量的连续关键帧的位姿数据和相对应的对齐锚点的位姿数据,采用如下公式,计算误差;
[0139][0140][0141][0142][0143]
其中,p代表关键帧的数量,即预设数量;(xi,yi,zi,yawi,pitchi, rolli)代表关键帧的位姿,(x
ai
,y
ai
,z
ai
,yaw
ai
,pitch
ai
,roll
ai
)代表对齐锚点的位姿。epos代表所有关键帧与相对应的对齐锚点之间的平均位置误差,eyaw代表所有关键帧与相对应的对齐锚点之间的平均偏航角误差,epitch代表所有关键帧与相对应的对齐锚点之间的平均俯仰角误差, eroll代表所有关键帧跟对齐锚点之间的平均横滚角误差;;误差包括平均位置误差、平均
偏航角误差、平均俯仰角误差以及平均横滚角误差中的至少一个。
[0144]
具体地,计算累计误差所采用的连续关键帧的数量为p个,则可采用上述公式分别计算位置、偏航角、俯仰角和横滚角对应的平均误差;并利用上述平均误差中的至少一个作为累计误差,以判断累计误差是否过大。
[0145]
示例性的,可每累计p个关键帧,计算一次对应的平均误差。
[0146]
示例性的,p的数值可为100、120、80或其他可选任意数值,在此不限定。
[0147]
上述用于计算误差的公式中,对齐锚点为对应关键帧的位姿理论参考值,即以对齐锚点对应的位姿数据为参考,计算关键帧对应的位姿数据的偏离程度,以得到对应误差。
[0148]
在此基础上,通过对比各个自由度的误差跟对应的预设误差阈值,判断初始化后的位姿是否满足要求;若误差大于预设误差阈值,则表明不满足要求,则强制重新初始化,即将数据清空重置、重新选择两个图像帧以及重新做初始化并重新建图,直至遍历了所有的图像帧为止;否则可以继续建图。
[0149]
在一些实施例中,图5为本公开实施例提供的另一种基于锚点的单目vslam方法的流程示意图。参照图5,该方法可包括:
[0150]
s201、单目vslam初始化。
[0151]
结合上文,在获取多个对齐锚点以及单目相机采集的多个图像帧之后,基于时间戳一一对应对齐的对齐锚点和图像帧进行初始化。
[0152]
s202、初始化成功?
[0153]
即判断是否初始化成功。若初始化成功(即y),则执行s203;若初始化失败(即n),则返回执行s201。
[0154]
s203、基丁对齐锚点计算真实尺度。
[0155]
结合上文,该步骤中:基于对齐锚点,计算真实尺度,并将所有图像帧都转换成真实尺度下的图像帧。
[0156]
s204、基于对齐锚点计算初始化距离。
[0157]
即基于转换后的图像帧,计算初始化距离。
[0158]
s205、始化距离大于设定距离阈值?
[0159]
即判断初始化距离是否大于设定距离阈值。若判断结果为是(y),则表明未初始化成功前的距离较长,需要反向建图,执行s206;若判断结果为否(即n),则表明未初始化成功前的距离在容许距离范围内,可直接正向建图,即执行s209。
[0160]
s206、保存初始化位置信息,反向建图。
[0161]
即保存初始化成功对应的两个图像帧中在前一个图像帧对应的位置,并进行反向建图。
[0162]
s207、反向建图成功?
[0163]
即判断反向建图是否成功。若成功(即y),则执行s208;若不成功(即n),则执行s209。
[0164]
s208、保存反向建立的地图。
[0165]
即若反向建图成功,则保存反向建立的地图,为后续步骤中的地图合并做准备。
[0166]
s209、回到保存的初始化位置,开始正向建图。
[0167]
在初始化距离不大于设定距离阈值,或反向建图不成功时,自初始化成功的位置
开始,进行正向建图。
[0168]
s210、计算初始化后一定距离内的关键帧与对应对齐锚点之间的误差。
[0169]
即计算建图过程中预设数量的连续关键帧与对应的对齐锚点之间的累计误差,以便后续步骤中判断误差是否过大。
[0170]
s211、误差大于预设误差阈值?
[0171]
即判断误差是否过大。若误差大于预设误差阈值(即y),则表明误差过大,需强制重新开始初始化,即返回执行s201;若误差不大于预设误差阈值(即n),则表明误差在容许范围内,可继续完成建图,例如执行s212。
[0172]
s212、继续完成正向建图。
[0173]
在一些实施例中,继续参照图5,该方法还可包括:
[0174]
在反向建图成功时,基于对齐锚点,将反向建立的地图与正向建立的地图合并。
[0175]
即在反向建图成功时,基于对齐锚点进行地图合并,从而得到较为完整的地图,提高vslam建图的地图完整性。
[0176]
在一些实施例中,当反向建图不成功时,以正向建图的地图作为 vslam建图得到的地图。
[0177]
本公开实施例提出的基于锚点的单目vslam方法,通过引入对齐锚点,能够直接还原真实尺度,从而解决单目vslam建图尺度不确定性的问题,提高精度;进一步地,通过反向建图并进行地图合并的过程,能够建立更完整的地图,从而提高单目vslam建图整体的完整度;此外,通过初始化后轨迹误差的计算流程,可以校验初始化效果,并针对性的进行重新初始化,实现对错误姿态的有效识别和及时纠正,进而通过重新初始化来提高建图精度。
[0178]
基于同一发明构思,本公开实施例还提供了一种基于锚点的单目 vslam装置,该装置用于执行上述实施方式提供的任一种方法,能够实现对应的有益效果。
[0179]
示例性地,图6为本公开实施例提供的一种基于锚点的单目 vslam装置的结构示意图。参照图6,该装置300可包括:获取模块 310,用于获取多个对齐锚点和单目相机采集的多个图像帧,多个对齐锚点的时间戳与多个图像帧的时间戳一一对应;对齐锚点为采用其他定位源生成的位姿数据;初始化模块320,用于基于对齐锚点和图像帧,进行vslam初始化;建图模块330,用于初始化成功后,进行vslam 建图。
[0180]
本公开实施例提供的基于锚点的单目vslam装置,通过上述各功能模块之间的协同作用,能够引入对齐锚点至该单目vslam装置中;其中,对齐锚点为基于其他定位源生成的位姿数据,能够给对应时间戳的图像帧赋予较为准确的位姿数据;由此,该装置通过结合对齐锚点进行单目vslam初始化并建图,能够基于对齐锚点提供较准确的尺度信息和全局坐标,从而有利于实现真实尺度的还原,同时提高成功率和效率。
[0181]
在一些实施例中,建图模块330用于进行vslam建图,具体可包括:建图模块330用于:
[0182]
基于对齐锚点,计算真实尺度,并将所有图像帧都转换成真实尺度下的图像帧;
[0183]
基于转换后的图像帧,计算初始化距离;初始化距离为初始化成功的位置与初始化起点的位置之间的路程对应的累计距离;
[0184]
在初始化距离大于设定距离阈值时,进行反向建图;
[0185]
在初始化距离不大于设定距离阈值,或反向建图不成功时,从初始化成功的位置
开始进行正向建图;
[0186]
若反向建图成功,则基于对齐锚点,合并正向建图和反向建图的地图。
[0187]
在一些实施例中,初始化模块320用于进行vslam初始化,具体可包括:初始化模块320用于:
[0188]
在图像帧中选取两个图像帧进行初始化;
[0189]
进行vslam建图之前,方法还包括:
[0190]
若初始化失败,则在图像帧中,按照时间先后顺序重新选取后面的两个图像帧重新进行初始化,直至初始化成功为止。
[0191]
在一些实施例中,该装置还可包括:
[0192]
误差计算模块,用于进行vslam建图之后,在距离初始化成功的位置经过的一个预设距离后,计算所有关键帧与相对应的对齐锚点之间的误差;
[0193]
返回建图模块,用于在误差等于或小于预设误差阈值时,继续进行正向建图或反向建图;
[0194]
返回初始化模块,用于若误差大于预设误差阈值,则返回重新执行在图像帧中选取两个图像帧进行初始化。
[0195]
在一些实施例中,建图模块330用于计算真实尺度,,包括:建图模块330用于采用下式计算真实尺度:
[0196][0197]
其中,tr代表真实尺度,对应真实尺度下的平移矩阵,(x1,y1,z1) 和(x2,y2,z2)分别代表两个图像帧对应的相机坐标系的原点的三维坐标, t代表初始化成功的两个图像帧之间的归一化的平移矩阵;
[0198]
在一些实施例中,建图模块330用于计算初始化距离,包括:建图模块330用于采用下式计算初始化距离:
[0199][0200]
其中,length代表初始化距离,m代表初始化成功的两个图像帧中在前的一图像帧,(x,y,z)为转换后的图像帧所对应的对齐锚点的位置坐标。
[0201]
在一些实施例中,建图模块330用于进行反向建图,,包括:建图模块330用于:
[0202]
基于初始化成功的两个图像帧中在前的一图像帧,形成反向图像序列;反向图像序列为(k,k-1,
……
,0),其中,k代表初始化成功的两个图像帧中在前的一图像帧;
[0203]
基于反向图像序列,进行建图。
[0204]
在一些实施例中,误差计算模块用于计算所有关键帧与相对应的对齐锚点之间的误差,包括:误差计算模块用于:
[0205]
确定预设距离内创建的关键帧;
[0206]
基于关键帧的位姿数据和相对应的对齐锚点的位姿数据,采用如下公式,计算误差;
[0207]
[0208][0209][0210][0211]
其中,p代表关键帧的数量,(xi,yi,zi,yawi,pitchi,rolli)代表关键帧的位姿,(x
ai
,y
ai
,z
ai
,yaw
ai
,pitch
ai
,roll
ai
)代表对齐锚点的位姿。epos 代表所有关键帧与相对应的对齐锚点之间的平均位置误差,eyaw代表所有关键帧与相对应的对齐锚点之间的平均偏航角误差,epitch代表所有关键帧与相对应的对齐锚点之间的平均俯仰角误差,eroll代表所有关键帧跟对齐锚点之间的平均横滚角误差;误差包括平均位置误差、平均偏航角误差、平均俯仰角误差以及平均横滚角误差中的至少一个。
[0212]
在一些实施例中,建图模块330用于合并正向建图和反向建图的地图,包括:建图模块330用于:
[0213]
基于对齐锚点,确定全局坐标;
[0214]
基于全局坐标,将正向建图得到的地图与反向建图得到的地图进行位置对齐以合并。
[0215]
能够理解的是,图6示出的装置能够执行上述实施方式提供的任一种方法,实现对应的有益效果。具体可参见上文理解,在此不赘述。
[0216]
在上述实施方式的基础上,如图7所示,为本公开实施例提供的一种电子设备的结构示意图。参照图7,该电子设备400包括:处理器420;用于存储处理器420可执行指令的存储器410;处理器420,用于从存储器410中读取可执行指令,并执行可执行指令以实现上述实施方式提供的任一种的方法的步骤,具有对应的有益效果,为避免重复描述,在此不再赘述。
[0217]
其中,处理器420可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制计算机中的其他组件以执行期望的功能。
[0218]
存储器410可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器 (ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器420可以运行所述程序指令,以实现上文所述的本技术的各个实施例的方法步骤以及/或者其他期望的功能。
[0219]
除了上述方法和电子设备以外,本技术的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本技术各种实施例的方法步骤。
[0220]
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程
序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0221]
此外,本公开实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器420运行时使得所述处理器420执行本技术各种实施例的方法步骤。
[0222]
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0223]
在上述实施方式的基础上,本公开实施例还提供了一种车辆,包括上述电子设备,具有对应的有益效果,为避免重复描述,在此不再赘述。
[0224]
在其他实施方式中,该车辆还包括无人驾驶系统,无人驾驶系统包括感知模块、决策模块和底盘执行模块等,在此不限定。
[0225]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0226]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1