掌桥专利:专业的专利平台
掌桥专利
首页

一种地图更新方法、装置、车辆及存储介质

文献发布时间:2024-04-18 20:02:18


一种地图更新方法、装置、车辆及存储介质

技术领域

本公开涉及同步定位与建图SLAM技术领域,具体而言,涉及一种地图更新方法、装置、车辆及存储介质。

背景技术

同步定位与建图(Simultaneous localization and mapping,SLAM)是一种在未知的环境中完成定位、建图、和路径规划的一种技术,广泛应用于机器人、无人机、无人驾驶等领域。

随着时间推移,SLAM地图中的一部分要素会出现变化,长此以往会出现地图环境跟现实环境差异较大,导致在地图中定位出现失败,错误等现象,因此需要对地图进行更新。

发明内容

本公开实施例至少提供一种地图更新方法、装置、车辆及存储介质。

第一方面,本公开实施例提供了一种地图更新方法,包括:

在进行视觉定位时获取待插入关键帧数据,并从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据;

为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,并基于所述新的三维位置点、和所述待插入关键帧数据,生成目标关键帧数据;

从所述共视关键帧数据中确定待删除的候选关键帧数据,并根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据;

从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,并对所述待过滤SLAM地图中的三维位置点进行过滤处理,得到目标SLAM地图。

这样,在进行视觉定位时获取待插入关键帧数据,并进行地图更新时,利用候选关键帧数据中各个三维位置点的被观测次数,删除一部分关键帧数据,并对SLAM地图的三维位置点进行过滤处理,得到目标SLAM地图,可以实现将定位过程中得到的待插入关键帧数据应用在地图更新中,通过各关键帧数据中的三维位置点被观测的次数,删除与实际情况不符,或者与实际情况差异较大的关键帧数据,实现删除冗余信息,减少地图容量的目的,进而避免因地图更新而产生的大量的冗余信息使得地图加载慢,卡顿,地图变形等问题。

另外,为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,可以增加待插入关键帧数据的三维位置点与目标特征点匹配成功率,提升地图更新效率。

一种可选的实施方式中,所述在进行视觉定位时获取待插入关键帧数据,包括:

响应于满足预设定位状态,基于目标场景的当前帧图像,构建所述当前帧图像对应的当前帧SLAM数据;所述当前帧SLAM数据包括:所述当前帧图像的特征点、与所述特征点匹配的第一三维位置点、以及第一位姿;

从所述当前SLAM地图中确定能够观测到所述第一三维位置点的多帧第一关键帧数据,并基于多帧所述第一关键帧数据构成第一局部地图;

基于所述第一位姿,对所述第一局部地图中包括的三维位置点以及所述当前帧SLAM数据进行第一投影匹配,得到匹配成功的第二三维位置点,并基于第一投影匹配的结果,对所述第一位姿进行调整,得到第二位姿;

响应于基于所述第二位姿满足和所述第二位姿,确定满足目标插入条件,基于所述第二位姿、所述第一三维位置点、所述第二三维位置点、以及所述特征点,生成所述待插入关键帧数据。

这样,在在进行视觉定位时获取待插入关键帧数据时,通过构建第一局部地图,根据第一局部地图中的三维位置点与当前帧SLAM数据进行投影匹配,并且调整位姿,由于第一局部地图是由多个能够观测到当前帧SLAM数据的第一三维位置点的关键帧数据组成,在进行投影匹配以及调整位姿时,可以更加准确的得到当前帧SLAM数据的位姿信息,进而根据这些信息生成的待插入关键帧数据也更加准确。

一种可选的实施方式中,所述从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据之前,所述方法还包括:

响应于所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据,确定为所述第一已插入关键帧数据生成的新的三维位置点;

基于为所述第一已插入关键帧数据生成的新的三维位置点的被观测次数,对为所述第一已插入关键帧数据生成的新的三维位置点进行过滤处理。

这样,在插入待插入关键帧数据之前,对SLAM地图中的,在本次更新周期插入的第一已插入关键帧数据生成的新的三维位置点进行过滤处理,可以降低冗余信息。

一种可选的实施方式中,所述为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,包括:

将所述待插入关键帧数据和所述共视关键帧数据进行特征点匹配,从所述待插入关键帧数据的多个特征点中,确定目标特征点;

对所述目标特征点进行三角化处理,生成与所述目标特征点对应的新的三维位置点。

这样,可以增加待插入关键帧数据的三维位置点与目标特征点匹配成功率,使得待插入关键帧数据可以更多的参与地图更新,提升地图更新效率。

一种可选的实施方式中,所述方法还包括:

将所述待插入关键帧数据的三维位置点、和所述共视关键帧数据中的共视特征点进行投影匹配,得到投影匹配结果;

针对任一三维位置点,响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,但该共视特征点并未匹配其他三维位置点,则建立该任一三维位置点和所述共视特征点之间的匹配关系;

响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,该共视特征点关联有其他三维位置点,且该任一三维位置点和该其他三维位置点之间的距离小于预设距离阈值,则将该任一三维位置点和该其他三维位置点进行融合处理。

一种可选的实施方式中,所述方法还包括:

基于所述目标关键帧数据、以及所述共视关键帧数据,构建第二局部地图;

以最小化匹配误差为目标,基于所述已插入关键帧数据的位姿信息,调整所述第二局部地图中的三维位置点的坐标信息、以及目标关键帧数据的位姿信息;或者,基于所述三维位置点的坐标信息,调整所述第二局部地图中的已插入关键帧数据和目标关键帧数据的位姿信息。

一种可选的实施方式中,所述从所述共视关键帧数据中确定待删除的候选关键帧数据,包括:

基于所述共视关键帧数据中的多帧关键帧数据的生成顺序,得到生成顺序编号;

基于所述多帧关键帧数据的生成顺序编号与所述目标关键帧数据的生成顺序编号,将编号间隔大于预设间隔阈值的共视关键帧数据确定为待删除的候选关键帧数据。

这样,通过生成顺序编号标记旧的关键帧数据,有利于后续删除这些关键帧数据,降低冗余信息。

一种可选的实施方式中,所述根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据,包括:

针对所述候选关键帧数据中每个三维位置点,将该三维位置点的被观测次数和预设观测次数阈值进行比对;响应于该三维位置点的被观测次数大于所述预设观测次数阈值,将该三维位置点确定为标记三维位置点;

响应于所述标记三维位置点的数量与该候选关键帧数据中的三维位置点总量之间的比值大于预设阈值,将所述候选关键帧数据确定为待删除关键帧数据。

这样,通过被观测次数,或者点的数量占总量的比例,标记一些利用率较低的旧的关键帧数据,有利于后续删除这些关键帧数据,进而降低冗余信息。

一种可选的实施方式中,所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据、和历史更新周期插入的第二已插入关键帧数据;

所述从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,包括:

响应于所述待删除关键帧数据为第一已插入关键帧数据,对所述待删除关键帧数据进行删除处理,得到待过滤SLAM地图;

响应于所述待删除关键帧数据为第二已插入关键帧数据,对所述待删除关键帧数据进行待删除标记;

响应于触发SLAM地图保存事件,删除具有待删除标记的所述待删除关键帧数据。

这样,通过对先前确定的待删除关键帧数据进行删除处理,可以降低地图的冗余信息。

一种可选的实施方式中,所述对所述待过滤SLAM地图中的三维位置点进行过滤处理,包括:

遍历SLAM地图中的所有三维位置点,确定各个三维位置点被观测到的次数;响应于任一三维位置点的被观测到的次数目标观测次数,则删除该任一三维位置点;和/或,

遍历所述SLAM地图中当前更新周期新插入的第一已插入关键帧数据,并构成该遍历到的第一已插入关键帧数据对应的第三局部地图;遍历所述第三局部地图中各个三维位置点,若遍历到的三维位置点未被观测到的次数大于预设次数阈值,则删除该遍历到的三维位置点。

这样,在删除了待删除的关键帧数据后得到待过滤SLAM地图,此时的待过滤SLAM地图因为删除了关键帧数据后,其三维位置点的关系次数也发生了变化,因此,根据三维位置点的观测次数,对三维位置点进行过滤,过滤掉利用率较低的三维位置点,进而降低地图的冗余信息。

第二方面,本公开实施例还提供一种地图更新装置,包括:

获取模块,用于在进行视觉定位时获取待插入关键帧数据,并从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据;

第一生成模块,用于为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,并基于所述新的三维位置点、和所述待插入关键帧数据,生成目标关键帧数据;

删除模块,用于从所述共视关键帧数据中确定待删除的候选关键帧数据,并根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据;

输出模块,用于从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,并对所述待过滤SLAM地图中的三维位置点进行过滤处理,得到目标SLAM地图。

一种可选的实施方式中,所述装置还包括第二生成模块,用于:

响应于满足预设定位状态,基于目标场景的当前帧图像,构建所述当前帧图像对应的当前帧SLAM数据;所述当前帧SLAM数据包括:所述当前帧图像的特征点、与所述特征点匹配的第一三维位置点、以及第一位姿;

从所述当前SLAM地图中确定能够观测到所述第一三维位置点的多帧第一关键帧数据,并基于多帧所述第一关键帧数据构成第一局部地图;

基于所述第一位姿,对所述第一局部地图中包括的三维位置点以及所述当前帧SLAM数据进行第一投影匹配,得到匹配成功的第二三维位置点,并基于第一投影匹配的结果,对所述第一位姿进行调整,得到第二位姿;

响应于基于所述第二位姿满足和所述第二位姿,确定满足目标插入条件,基于所述第二位姿、所述第一三维位置点、所述第二三维位置点、以及所述特征点,生成所述待插入关键帧数据。

一种可选的实施方式中,所述装置还包括过滤模块,所述过滤模块在所述从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据之前,用于:

响应于所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据,确定为所述第一已插入关键帧数据生成的新的三维位置点;

基于为所述第一已插入关键帧数据生成的新的三维位置点的被观测次数,对为所述第一已插入关键帧数据生成的新的三维位置点进行过滤处理。

一种可选的实施方式中,所述第一生成模块在所述为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点时,用于:

将所述待插入关键帧数据和所述共视关键帧数据进行特征点匹配,从所述待插入关键帧数据的多个特征点中,确定目标特征点;

对所述目标特征点进行三角化处理,生成与所述目标特征点对应的新的三维位置点。

一种可选的实施方式中,所述装置还包括融合模块,用于:

将所述待插入关键帧数据的三维位置点、和所述共视关键帧数据中的共视特征点进行投影匹配,得到投影匹配结果;

针对任一三维位置点,响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,但该共视特征点并未匹配其他三维位置点,则建立该任一三维位置点和所述共视特征点之间的匹配关系;

响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,该共视特征点关联有其他三维位置点,且该任一三维位置点和该其他三维位置点之间的距离小于预设距离阈值,则将该任一三维位置点和该其他三维位置点进行融合处理。

一种可选的实施方式中,所述装置还包括优化模块,用于:

基于所述目标关键帧数据、以及所述共视关键帧数据,构建第二局部地图;

以最小化匹配误差为目标,基于所述已插入关键帧数据的位姿信息,调整所述第二局部地图中的三维位置点的坐标信息、以及目标关键帧数据的位姿信息;或者,基于所述三维位置点的坐标信息,调整所述第二局部地图中的已插入关键帧数据和目标关键帧数据的位姿信息。

一种可选的实施方式中,所述删除模块在所述从所述共视关键帧数据中确定待删除的候选关键帧数据时,用于:

基于所述共视关键帧数据中的多帧关键帧数据的生成顺序,得到生成顺序编号;

基于所述多帧关键帧数据的生成顺序编号与所述目标关键帧数据的生成顺序编号,将编号间隔大于预设间隔阈值的共视关键帧数据确定为待删除的候选关键帧数据。

一种可选的实施方式中,所述删除模块在所述根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据时,用于:

针对所述候选关键帧数据中每个三维位置点,将该三维位置点的被观测次数和预设观测次数阈值进行比对;响应于该三维位置点的被观测次数大于所述预设观测次数阈值,将该三维位置点确定为标记三维位置点;

响应于所述标记三维位置点的数量与该候选关键帧数据中的三维位置点总量之间的比值大于预设阈值,将所述候选关键帧数据确定为待删除关键帧数据。

一种可选的实施方式中,所述输出模块在所述从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图时,用于:

响应于所述待删除关键帧数据为第一已插入关键帧数据,对所述待删除关键帧数据进行删除处理,得到待过滤SLAM地图;

响应于所述待删除关键帧数据为第二已插入关键帧数据,对所述待删除关键帧数据进行待删除标记;

响应于触发SLAM地图保存事件,删除具有待删除标记的所述待删除关键帧数据。

一种可选的实施方式中,所述输出模块在所述对所述待过滤SLAM地图中的三维位置点进行过滤处理时,用于:

遍历SLAM地图中的所有三维位置点,确定各个三维位置点被观测到的次数;响应于任一三维位置点的被观测到的次数目标观测次数,则删除该任一三维位置点;和/或,

遍历所述SLAM地图中当前更新周期新插入的第一已插入关键帧数据,并构成该遍历到的第一已插入关键帧数据对应的第三局部地图;遍历所述第三局部地图中各个三维位置点,若遍历到的三维位置点未被观测到的次数大于预设次数阈值,则删除该遍历到的三维位置点。

第三方面,本公开可选实现方式还提供一种车辆,包括电子控制单元,所述电子控制单元执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的地图更新方法的步骤。

第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的地图更新方法的步骤。

关于上述地图更新装置、车辆、及计算机可读存储介质的效果描述参见上述地图更新方法的说明,这里不再赘述。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开一些实施例所提供的地图更新方法的流程图;

图2示出了本公开一些实施例所提供的获取待插入关键帧数据的流程图;

图3示出了本公开一些实施例所提供的地图更新装置的示意图;

图4示出了本公开一些实施例所提供的计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

本说明书及实施例中所述方案,如涉及个人信息处理,则均会在具备合法性基础(例如征得个人信息主体同意,或者为履行合同所必需等)的前提下进行处理,且仅会在规定或者约定的范围内进行处理。用户拒绝处理基本功能所需必要信息以外的个人信息,不会影响用户使用基本功能。

经研究发现,在相对封闭场景下的自动驾驶或者移动机器人可以利用SLAM方法构建地图并进行定位,特别的对于室内环境下没有全球定位系统(Global PositioningSystem,GPS)/(Real-time kinematic RTK)信号,在定位时必须要依靠场景下的先验地图。但是随着时间的推移,地图中的某些场景会有较大变化,就需要更新地图。

更新地图的方式有很多,大体上可以分为主动与被动。主动更新一般是需要特意的去采集一些数据去做更新,例如,可以周期性的对目标区域进行扫描,并根据扫描的结果,重新生成SLAM地图。而被动更新的成本很小,使用者可以在定位时自动更新,属于无感更新,类似于一个学习过程,不断地学习新的地图,目前多采用被动更新地图的方式对地图进行更新。

然而随着地图的更新伴随而来的是地图容量越来越大,存在大量冗余信息,这些冗余信息会导致地图加载慢,卡顿,以及变形等问题。

基于上述研究,本公开提供了一种地图更新方法,可以实现将定位过程中得到的待插入关键帧数据应用在地图更新中,通过各关键帧数据中的三维位置点被观测的次数,删除与实际情况不符,或者与实际情况差异较大的关键帧数据,实现删除冗余信息,减少地图容量的目的,进而避免因地图更新而产生的大量的冗余信息使得地图加载慢,卡顿,地图变形等问题。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

下面对本公开实施例提供的地图更新方法加以说明。

参见图1所示,为本公开实施例提供的地图更新方法的流程图,所述方法包括步骤S101~S104,其中:

S101:在进行视觉定位时获取待插入关键帧数据,并从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据。

此处,在进行视觉定位时,是在前端进行的,前端也可以称为视觉里程计,其作用是接收相机的数据,通过计算得到图像的位姿信息。

待插入关键帧数据是前端在相机采集的多帧图像中确定待插入关键帧图像包括的数据,待插入关键帧数据用于对SLAM地图进行更新。

参见图2所述,为本公开提供的一种获取待插入关键帧数据的流程图,包括下述S1011~1014,其中,

S1011:响应于满足预设定位状态,基于目标场景的当前帧图像,构建所述当前帧图像对应的当前帧SLAM数据;所述当前帧SLAM数据包括:所述当前帧图像的特征点、与所述特征点匹配的第一三维位置点、以及第一位姿。

此处,预设定位状态包括重定位成功后,且上一帧图像的位姿已知的定位状态。目标场景表示为相机拍摄的场景,若将本公开应用于车辆,目标场景可以是停车场等场景,若将本公开应用于机器人,目标场景可以是室内等场景。

在满足预设定位状态后,相机获取当前帧图像,根据当前帧图像得到当前帧SLAM数据,当前帧图像的特征点表示为当前帧图像所包括的目标场景中的一些物体描述特征,例如,若目标场景为停车场,当前帧图像的特征点包括地面标识、指示牌、墙壁、柱子、其他车辆等特征。与特征点匹配的第一三维位置点表示这些特征点的位置坐标,第一位姿表示拍摄当前帧图像的设备的位姿。

示例性的,当前帧图像的第一位姿由当前帧图像的前一帧图像的位姿进行投影匹配得到的。具体的,利用惯性测量单元(Inertial Measurement Unit,IMU)和轮速预测,或者利用匀速模型预测当前帧图像的初始位姿。将上一帧图像的三维点,根据当前帧图像的初始位姿,投影到当前帧图像上,进行描述子匹配,匹配成功的三维位置点为第一三维位置点,然后进行位姿优化得到当前帧SLAM数据的第一位姿。

S1012:从所述当前SLAM地图中确定能够观测到所述第一三维位置点的多帧第一关键帧数据,并基于多帧所述第一关键帧数据构成第一局部地图。

此处,第一关键帧数据表示能够观测到第一三维位置点的关键帧数据,由多帧第一关键帧数据构成第一局部地图。

S1013:基于所述第一位姿,对所述第一局部地图中包括的三维位置点以及所述当前帧SLAM数据进行第一投影匹配,得到匹配成功的第二三维位置点,并基于第一投影匹配的结果,对所述第一位姿进行调整,得到第二位姿;

此处,第一投影匹配是当前帧SLAM数据与第一局部地图中包括的三维位置点进行投影匹配,第一投影匹配过程与上述S1011的投影匹配过程类似,得到匹配成功的第二三维位置点,然后对第一位姿进行优化,得到第二位姿。

S1014:响应于基于所述第二位姿满足目标插入条件,基于所述第二位姿、所述第一三维位置点、所述第二三维位置点、以及所述特征点,生成所述待插入关键帧数据。

此处,目标插入条件用于确定当前帧SLAM数据是否为待插入关键帧数据。

目标插入条件包括下述至少一种:

a1,第二三维位置点的数量大于第一数量阈值,且当前帧SLAM数据所对应的当前帧图像距离上一帧图像的距离大于预设距离阈值。

a2,第二三维位置点的数量小于第二数量阈值。

a3,第二三维位置点的数量占第一局部地图所有三维位置点的数量的比值小于预设比值。

此处,第一数量阈值大于第二数量阈值,预设距离阈值可以选择5米,预设比值可以选择11%,具体的,这些数值的选择根据实际的应用场景而设定,本公开并不做任何限制。

示例性的,在上述S1013步骤后,得到当前帧SLAM数据的第二三维位置点,以及第二位姿,统计第二三维位置点的数量,将第二三维位置点的数量与第一数量阈值进行比较,若第二三维点的数量大于第一数量阈值,则根据第二位姿确定当前帧SLAM数据所对应的当前帧图像的位置信息,并与上一帧图像的位置信息进行比较,得到当前帧图像距离上一帧图像的距离,若该距离大于预设距离阈值,则将当前帧SLAM数据确定为待插入关键帧数据。在实际应用中,若车辆处于地下车库时,当车辆径直行驶时,由于场景变化不大,第二三维位置点的数量较多,此时通过判断上一帧图像与当前帧图像的距离来确定是否将当前帧SLAM数据确定为待插入关键帧数据。

若第二三维位置点的数量较少小于第一数量阈值时,则将第二三维位置点的数量与第二数量阈值进行比较,如第二三维点的数量小于第二数量阈值,或者,若第二三维点的数量与所述第一局部地图的三维位置点的总量的比值小于预设比值,则将当前帧SLAM数据确定为待插入关键帧数据。在实际应用中,若车辆行驶到地图边缘时,能够匹配成功的三维位置点较少,此时通过判断其数量是否小于第二数量阈值,或者数量占总量的比值是否小于预设比值来确定是否将当前帧SLAM数据确定为待插入关键帧数据。

在本公开提供的一些可能的实施例中,所述从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据之前,所述方法还包括:响应于所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据,确定为所述第一已插入关键帧数据生成的新的三维位置点;基于为所述第一已插入关键帧数据生成的新的三维位置点的被观测次数,对为所述第一已插入关键帧数据生成的新的三维位置点进行过滤处理。

此处,在一个地图更新周期中,可以插入多个关键帧数据,这些关键帧数据为第一已插入关键帧数据,随着第一已插入关键帧数据,在SLAM地图中会生成新的三维位置点。新的三维位置点也可以称为不成熟点,其由于仅是在本次地图更新周期插入的,因此对该三维位置点的置信度相对于在本次地图更新周期前就已经插入的旧的三维位置点来说是较低的。在本次地图更新周期前就已经插入的旧的三维位置点也可以称为成熟点。

接收待插入关键帧数据是在后端进行的,在接收到待插入关键帧数据时,对SLAM地图进行判断,确定在先是否存在第一已插入关键帧数据,若存在则确定新的三维位置点经过n个关键帧数据时被观测到的观测次数,若该观测次数大于m次,则保留,对于观测次数小于m次的新的三维位置点进行删除处理。在实际应用中,经过n个关键帧数据确定被观测次数是连续的,若经过n个关键帧数据时被观测到的关键次数大于m次,则表示该三维位置点置信度相对较高,若小于m次则表示置信度相对较低。

示例性的,上述n和m的取值可以根据相机是单目或者多目设置不同的数值,具体本公开不做限制。

接着,从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据。

此处,目标共视关系可以是待插入关键帧数据与第一已插入关键帧数据之间的共视关系,也可以是待插入关键帧数据与第二已插入关键帧数据之间的共视关系,其中,第二已插入关键帧数据表示的是在历史更新周期中插入的关键帧数据。

目标共视关系在确定时,需要确定待插入关键帧数据与已插入关键帧数据共有三维位置点的数量,当共有三维位置点的数量高于预设阈值时,则认为两个关键帧数据存在目标共视关系。

承接上述S101,在得到待插入关键帧数据、以及共视关键帧数据后,本公开提供的方法还包括下述步骤。

S102:为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,并基于所述新的三维位置点、和所述待插入关键帧数据,生成目标关键帧数据。

其中,将所述待插入关键帧数据和所述共视关键帧数据进行特征点匹配,从所述待插入关键帧数据的多个特征点中,确定目标特征点;对所述目标特征点进行三角化处理,生成与所述目标特征点对应的新的三维位置点。

示例性的,在得到共视关键帧数据后,将待插入关键帧数据和共视关键帧数据进行特征点匹配,若待插入关键帧数据中的特征点没有在共视关键帧数据匹配到对应的特征点,则将待插入关键帧数中的特征点确定为目标特征点,对待插入关键帧数据和共视关键帧数据中的所有特征点进行特征点匹配,得到待插入关键帧数据中与共视关键帧数据匹配失败的目标特征点。在实际应用中,由于待插入关键帧是由相机采集到的当前最新的关键帧图像生成的,若出现与共视关键帧数据中的特征点匹配失败,则有可能是车辆识别到了新的特征,例如,在待插入关键帧数据中的特征点a1描述的是在车辆前方存在一个锥筒,在共视关键帧数据中并未匹配到与特征点a1对应的特征点,则这个锥筒可能是新放置的,因此需要保留该特征点a1。在得到目标特征点后,对目标特征点进行三角化处理,识别目标特征点的深度信息,生成新的三维位置点。

在本公开提供的一些可能的实施例中,在新加入待插入关键帧数据后,将所述待插入关键帧数据的三维位置点、和所述共视关键帧数据中的共视特征点进行投影匹配,得到投影匹配结果;针对任一三维位置点,响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,但该共视特征点并未匹配其他三维位置点,则建立该任一三维位置点和所述共视特征点之间的匹配关系;响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,该共视特征点关联有其他三维位置点,且该任一三维位置点和该其他三维位置点之间的距离小于预设距离阈值,则将该任一三维位置点和该其他三维位置点进行融合处理。

示例性的,根据待插入关键帧数据的第二位姿,将待插入关键帧的三维位置点投影到共视关键帧数据中,与共视关键帧数据中的特征点进行投影匹配,在进行投影匹配时,以描述子距离以及点的平均观测方向为约束,得到投影匹配结果。

此处,描述子距离表示为三维位置点的特征差值,描述子用一串数值表示特征,两串数值相减其差值越小表示特征越接近。

若投影匹配结果指示任一三维位置点具有匹配成功的共视特征点,但该共视特征点并未匹配其他三维位置点,则建立该任一三维位置点和所述共视特征点之间的匹配关系。

示例性的,对未匹配其他三维位置点的共视特征点进行标记确定其未匹配其他三维位置点,在和任一三维位置点匹配成功后,删除该标记表示该共视特征点与三维位置点存在匹配关系,后续有其他三维位置点在于该共视特征点匹配前确定其没有标记则不再与该共视特征点进行匹配。

若所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,该共视特征点关联有其他三维位置点,且该任一三维位置点和该其他三维位置点之间的距离小于预设距离阈值,则将该任一三维位置点和该其他三维位置点进行融合处理。

示例性的,若未建立匹配关系的三维位置点与建立匹配关系的三维位置点在空间上的距离小于预设距离阈值时,对两个三维位置点进行融合处理。预设距离阈值可以是3米,融合处理可以是删除其中的一个三维位置点,或者是取两个三维位置点在空间上的距离中间值将俩个三维位置点合并为一个三维位置点。

在本公开提供的一些可能的实施例中,基于所述目标关键帧数据、以及所述共视关键帧数据,构建第二局部地图;以最小化匹配误差为目标,基于所述已插入关键帧数据的位姿信息,调整所述第二局部地图中的三维位置点的坐标信息、以及目标关键帧数据的位姿信息;或者,基于所述三维位置点的坐标信息,调整所述第二局部地图中的已插入关键帧数据和目标关键帧数据的位姿信息。

此处,第二局部地图与第一局部地图的不同在于,第二局部地图是由目标关键帧数据和共视关键帧数据构成的,共视关键帧数据要求具有一定的共视程度,也即上述实施例提到的共有三维位置点的数量满足一定的数量阈值要求。而第一局部地图是观测到当前帧SLAM数据中的三维位置点即可。

示例性的,固定已插入关键帧数据的位姿,调整第二局部地图中的三维位置点的坐标信息,以及目标关键帧数据的位姿信息,在调整目标关键帧数据的位姿信息时,可以通过旋转、平移等刚性调整目标关键帧数据的位姿信息,保持其中的三维位置点之间的相对关系不发生变化。

又一示例中,固定第二局部地图中未被目标关键帧数据观测到的三维位置点的坐标信息,调整已插入关键帧数据的位姿和目标关键帧数据的位姿,此处同样可以采用刚性调整方式,避免各关键帧数据中的三维位置点之间的相对关系发生变化。

上述两种方法可以任选其一进行调整,另外,调整依据最小化匹配误差为目标,最小化匹配误差可以表示第二局部地图的整体平均误差,调整后,若存在一些误差较大的特征点和三维位置点,则可以去除两者之间的匹配关系。

承接上述S102,在生成目标关键帧数据后,本公开提供的方法还包括下述步骤。

S103:从所述共视关键帧数据中确定待删除的候选关键帧数据,并根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据。

针对从所述共视关键帧数据中确定待删除的候选关键帧数据,在本公开提供的一些可能的实施例中,基于所述共视关键帧数据中的多帧关键帧数据的生成顺序,得到生成顺序编号;基于所述多帧关键帧数据的生成顺序编号与所述目标关键帧数据的生成顺序编号,将编号间隔大于预设间隔阈值的共视关键帧数据确定为待删除的候选关键帧数据。

示例性的,首先根据生成顺序编号确定待删除的候选关键帧数据,例如,共视关键帧数据包括20个关键帧数据,则20个关键帧数据分别对应有生成顺序编号,根据目标关键帧的生成顺序编号,以及预设间隔阈值,在共视关键帧数据中,确定与目标关键帧的生成顺序编号大于预设间隔阈值的待删除的候选关键帧数据。例如,若目标关键帧的生成顺序编号为20,预设间隔阈值为10,则待删除的候选关键帧数据包括生成顺序编号1至9的关键帧数据。

针对根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据,在本公开提供的一些可能的实施例中,针对所述候选关键帧数据中每个三维位置点,将该三维位置点的被观测次数和预设观测次数阈值进行比对;响应于该三维位置点的被观测次数大于所述预设观测次数阈值,将该三维位置点确定为标记三维位置点;响应于所述标记三维位置点的数量与该候选关键帧数据中的三维位置点总量之间的比值大于预设阈值,将所述候选关键帧数据确定为待删除关键帧数据。

示例性的,根据所述待删除的候选关键帧数据的更新ID对待删除的候选关键帧数据进行排序,所述更新ID记录的是SLAM地图的更新次数,SLAM地图每更新一次记录一次更新ID,在第n次更新时加入的关键帧数据,其更新ID为n。

在对待删除的候选关键帧数据进行排序后,根据更新ID从小到大的顺序,依次取出对一个的三维位置点,确定该三维位置点被观测的次数,三维位置点每被观测一次观测次数加1,若被观测次数大于预设观测次数阈值时,则对该三维位置点进行标记,确定为标记三维位置点,遍历该待删除的候选关键帧数据中的所有三维位置点后,统计标记三维位置点占三维位置点总量的比值,若该比值大于预设阈值,则将该候选关键帧数据确定为待删除关键帧数据,或者直接删除该候选关键帧数据。

示例性的,当该候选关键帧数据为非本次更新周期的已插入关键帧数据时,对该候选关键帧数据确定为待删除关键帧数据;当该候选关键帧数据为本次更新周期插入的关键帧数据时,则直接删除。

此处,标记为待删除关键帧数据不参与后续对其他候选关键帧数据中的三维位置点的统计,例如,第n个候选关键帧数据中的三维位置点d1被7个关键帧数据观测到,但是其中有3个关键帧数据被标记为待删除关键帧数据,则统计三维位置点d1的被观测次数为4。

承接上述S103,在确定待删除关键帧数后,本公开所提供的方法还包括下述步骤。

S104:从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,并对所述待过滤SLAM地图中的三维位置点进行过滤处理,得到目标SLAM地图。

其中,所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据、和历史更新周期插入的第二已插入关键帧数据。

针对所述从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,在本公开提供的一些可能的实施例中,响应于所述待删除关键帧数据为第一已插入关键帧数据,对所述待删除关键帧数据进行删除处理,得到待过滤SLAM地图;响应于所述待删除关键帧数据为第二已插入关键帧数据,对所述待删除关键帧数据进行待删除标记;响应于触发SLAM地图保存事件,删除具有待删除标记的所述待删除关键帧数据。

此处,是后端的地图更新流程,首先若待删除关键帧数据为第一已插入关键帧数据,则直接对待删除关键帧数据进行删除,得到待过滤的SLAM地图。

示例性的,触发SLAM地图保存事件可以是人为触发也可以是在前端完成所有的采集和位姿确定的工作,且后端对前端确定的关键帧数据进行删除、优化后自动触发地图保存事件。

在触发了地图保存事件后,删除带有待删除标记的关键帧数据。

针对所述对所述待过滤SLAM地图中的三维位置点进行过滤处理,在本公开提供的一些可能的实施例中,遍历SLAM地图中的所有三维位置点,确定各个三维位置点被观测到的次数;响应于任一三维位置点的被观测到的次数目标观测次数,则删除该任一三维位置点;和/或,遍历所述SLAM地图中当前更新周期新插入的第一已插入关键帧数据,并构成该遍历到的第一已插入关键帧数据对应的第三局部地图;遍历所述第三局部地图中各个三维位置点,若遍历到的三维位置点未被观测到的次数大于预设次数阈值,则删除该遍历到的三维位置点。

此处,三维位置点包括更新ID和可见性更新ID,更新ID记录的是SLAM地图在第几次更新时观测到的三维位置点,可见性更新ID记录的是该三维位置点更新失败的标记,例如在第n个更新周期更新失败时,可见性更新ID为n加1。

示例性的,遍历所有三维位置点,根据三维位置点的被观测次数,删除被观测次数小于目标观测次数的三维位置点。

另外,根据第一已插入关键帧数据,得到对应的第三局部地图,第三局部地图与第一已插入关键帧数据一一对应,每一个第一已插入关键帧数据都会生成一个,能够观测到第一已插入关键帧数据中的三维位置点的多帧关键帧数据组成的第三局部地图。遍历第三局部地图,确定其三维位置点的更新ID与第一已插入关键帧的更新ID的差值,若该差值大于预设差值阈值,则继续判断其可见性更新ID是否包含了从第一已插入关键帧数据的更新ID与其自身的更新ID差值的所有数,若是则删除该三维位置点。

示例性的,三维位置点d2的更新ID与第一已插入关键帧的更新ID的差值大于预设差值阈值,例如,若预设差值阈值为3,三维位置点d2的更新ID为15,第一已插入关键帧的更新ID为19,则差值为4大于预设差值阈值,此时,该三维位置点的可见性更新ID为17、18、19,则认为其可见性更新ID包含了从第一已插入关键帧数据的更新ID与其自身的更新ID差值的所有数,删除该三维位置点。在实际应用中,根据可见性更新ID和更新ID可以确定多次更新未被观测的三维位置点,这些三维位置点可能已经不存在与场景中,将这些三维位置点进行删除处理,降低地图冗余信息。

另外,本公开还提供一个具体的地图更新示例,所述示例包括:前端和后端以及地图保存流程,所述更新示例是在前端定位时启用后端实时进行地图更新。

针对前端流程:

S3011:当前帧和前一帧的投影匹配。

获取当前帧图像,并对当前帧图像进行特征点检测,得到当前帧图像中包括的多个特征点H,对前一帧图像所对应的定位成功的三维位置点L_(F-1),使用当前帧F对应的初始位姿,投影到当前帧F所在的图像坐标系;将得到的投影点K_1、和当前帧F中的各个特征点进行匹配,确定多个匹配成功的三维位置点L_1,并确定当前帧F的第一位姿P_1。(其中,第一位姿P_1可以是以最小化前一帧和当前帧之间的投影误差为目标,对F对应的初始位姿进行优化得到)

S3012:当前帧和局部地图的投影匹配。

12-1、基于匹配成功的三维位置点L_1,从SLAM地图的多个关键帧KF中,确定能够观测到这些三维位置点L_1的关键帧SLAM数据KF_1,并基于确定的关键帧SLAM数据KF_1,构成局部地图M1。

12-2、基于第一位姿P_1,将局部地图中的多个三维位置点L_2(包括了上述三维位置点L_1和其他的三维位置点),转换至当前帧F对应的图像坐标系下,得到L_2在图像坐标系下的投影点K_2,并对投影点K_2、和当前帧中的各个特征点进行投影匹配,对第一位姿P1进行优化,得到第二位姿P_2。(优化方式和上述方式类似)

12-3、从局部地图M1中,查找第一关键帧KF_2,其中第一关键帧KF_2的更新ID小于(当前更新ID-2)。若第一关键帧KF_2的数量n=0,或者和当前位置最近的第一关键帧KF_2和当前位置之间的距离超过10米,返回定位丢失。重新定位。

12-4、SLAM地图中的各个三维位置点L3包括:成熟点L3_1和不成熟点L3_2。其中,不成熟点是本次地图更新过程中,根据新插入的关键帧确定的新的三维位置点。在上述步骤12-2中,在将三维位置点L_2投影到当前帧F对应的图像坐标系下进行投影匹配时,若存在当前帧F中的特征点H,匹配到了三维位置点L_S(L_S∈L_2),且该三维位置点L_S属于不成熟点,那么再次使用局部地图中的成熟点和该特征点H进行匹配。

基于上述过程,可以得到的投影匹配结果是:当前帧F中的至少部分特征点H、和匹配成功的三维位置点L3之间的对应关系。

12-5、在进行投影匹配过程中,从三维位置点L_2中,筛选匹配失败的成熟点,并记录该成熟点的可见性更新ID,表示这个成熟点在历史更新过程中被观测到,但随着时间流逝,目标区域发生了变化,该点不再被观测到。

S3013:确定新的关键帧数据。

13-1、根据投影匹配结果,确定当前帧F和局部地图能够匹配成功的三维位置点L_2的数量N,若数量N大于第一数量阈值,且当前帧F和SLAM中的上一关键帧之间的距离超过5米,则将当前帧F作为新的关键帧KF_N。

13-2、若数量N小于第二数量阈值,如少于55个,则将当前帧F作为新的关键帧KF_N。

13-3、确定匹配成功的三维位置点L_3,占据局部地图中所有三维位置点L_2的比例,若比例少于11%,则将当前帧F作为新的关键帧KF_N。也即,当前更新周期内第N个被确定为新的关键帧的图像。

针对后端流程:

S3021、三维位置点剔除。

在接收到前端发送的新的关键帧KF_N后,从SLAM地图数据中,确定新的不成熟三维位置点L_4。其中,不成熟三维位置点,包括当前更新周期,根据新的关键帧KF_(N-1)确定的新的三维位置点(如下述步骤S3023生成的新的不成熟三维位置点)。确定各个新的不成熟三维位置点L_4被观测到的次数,若被观测到次数大于m,则保留,否则,将不成熟三维位置点删除。SLAM地图会记录:每个三维位置点都被哪些关键帧KF观测到。每个新的不成熟三维位置点L_4,都是通过两个关键帧进行三角化得到的,利用局部地图,此时,其被观测次数为2。将新观测到的点投影到其他的关键帧中进行投影匹配。如果匹配成功,则观测次数+1。

S3022、三维位置点融合。

获取与新的关键帧KF_N共视程度较高的多帧共视关键帧KF_G,将新的关键帧数据KF_N中的各个三维位置点L_5(也即前端两次投影匹配,确定的和关键帧KF_N匹配成功的所有三维位置点),根据各帧共视关键帧KF_G的位姿,投影到各共视关键帧KF_G所在的图像坐标系下,得到投影点K_5,将投影点K_5与各帧共视关键帧KF_G分别做投影匹配,在投影匹配过程中,若某个三维位置点L_5在共视关键帧KF_G中,存在匹配成功的特征点D,但该特征点D没有关联的其他三维位置点,则将该三维位置点L_5和该特征点D进行关联。若某个三维位置点L_5在共视关键帧KF_G中,存在匹配成功的特征点,且该匹配成功的特征点还关联有其他的三维位置点L_6,且三维位置点L_5和三维位置点L_6在空间距离上小于3m,则将该三维位置点L_5和三维位置点L_6进行点的融合。融合后的点被确定为成熟三维位置点。将其更新ID,确定为当前更新ID。

S3023、三维位置点三角化。

将新的关键帧KF_N和共视关键帧KF_G进行特征点匹配。针对新的关键帧KF_N中,未匹配成功的特征点进做三角化处理,生成新的不成熟三维位置点。

S3024、三维位置点优化。

基于新的关键帧KF_N和共视关键帧KF_G,构成局部地图M2。以最小化匹配误差为目标,保持旧的关键帧位姿不变,调整局部地图中各个三维位置点的坐标、以及新的关键帧KF_N的位姿,或者,固定未被新的关键帧观测到的成熟点的位置,以及固定旧KF的位姿,优化其他关键帧的位姿,根据优化结果,去除各个关键帧中,误差较大的匹配观测:也即特征点、和三维位置点之间的对应关系。

S3025、关键帧标记。

针对新的关键帧KF_N和共视关键帧KF_G,从共视关键帧KF_G中,确定生成顺序ID,和新的关键帧KF_N的生成顺序ID之间的差值大于或者等于10的共视关键帧KF_G_Q,将共视关键帧KF_G_Q作为待剔除目标,针对每个待剔除目标,确定该待剔除目标中各个三维位置点L_6被观测到的次数,其中,若某个三维位置点L_6被一个待删除(做了待删除标记)的关键帧观测到,则不作为该三维位置点L_6被观测到的次数。若该待剔除目标中,超出95%以上的三维位置点,被其他KF观测到的次数大于4,则认为该待剔除目标为冗余关键帧。若冗余关键帧,为本次更新时的新的关键帧KF_1~KF_(N-1)中任一帧,则将其删除。若冗余关键帧为旧关键帧,做“待删除标记”。

针对地图更新流程:

S3031、全局优化。

固定SLAM地图中所有关键帧(包括旧关键帧、和新关键帧)的位姿,对SLAM地图中的三维点坐标进行全局优化。

S3032、删除带有“待删除标记”的冗余关键帧。

S3033、删除冗余三维位置点。

33-1、遍历所有SLAM地图中的地图点,确定各个地图点为观测到的次数;若被观测到的次数小于4,则删除该地图点。

33-2、遍历当前地图中的所有新关键帧,根据遍历到的新关键帧中所有地图点是否被其他关键帧观测到,构成该新关键帧对应的局部地图M3。遍历局部地图M3中每一个三维点,若三维点的更新ID<新KF的更新ID-3,且其可见性更新ID包括了新KF的更新ID-3~新KF的更新ID所有书,则认为该地图点多次更新都未被观测到,删除。

S3034、保存剩余的KF和三维位置点。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与地图更新方法对应的地图更新装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述地图更新方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图3所示,为本公开实施例提供的一种地图更新方法的示意图,所述装置包括:获取模块31、第一生成模块32、删除模块33、输出模块34;其中,

获取模块31,用于在进行视觉定位时获取待插入关键帧数据,并从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据;

第一生成模块32,用于为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,并基于所述新的三维位置点、和所述待插入关键帧数据,生成目标关键帧数据;

删除模块33,用于从所述共视关键帧数据中确定待删除的候选关键帧数据,并根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据;

输出模块34,用于从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,并对所述待过滤SLAM地图中的三维位置点进行过滤处理,得到目标SLAM地图。

一种可选的实施方式中,所述装置还包括第二生成模块35,用于:

响应于满足预设定位状态,基于目标场景的当前帧图像,构建所述当前帧图像对应的当前帧SLAM数据;所述当前帧SLAM数据包括:所述当前帧图像的特征点、与所述特征点匹配的第一三维位置点、以及第一位姿;

从所述当前SLAM地图中确定能够观测到所述第一三维位置点的多帧第一关键帧数据,并基于多帧所述第一关键帧数据构成第一局部地图;

基于所述第一位姿,对所述第一局部地图中包括的三维位置点以及所述当前帧SLAM数据进行第一投影匹配,得到匹配成功的第二三维位置点,并基于第一投影匹配的结果,对所述第一位姿进行调整,得到第二位姿;

响应于基于所述第二位姿满足和所述第二位姿,确定满足目标插入条件,基于所述第二位姿、所述第一三维位置点、所述第二三维位置点、以及所述特征点,生成所述待插入关键帧数据。

一种可选的实施方式中,所述装置还包括过滤模块36,所述过滤模块36在所述从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据之前,用于:

响应于所述SLAM地图中的已插入关键帧数据中,包括当前更新周期插入的第一已插入关键帧数据,确定为所述第一已插入关键帧数据生成的新的三维位置点;

基于为所述第一已插入关键帧数据生成的新的三维位置点的被观测次数,对为所述第一已插入关键帧数据生成的新的三维位置点进行过滤处理。

一种可选的实施方式中,所述第一生成模块32在所述为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点时,用于:

将所述待插入关键帧数据和所述共视关键帧数据进行特征点匹配,从所述待插入关键帧数据的多个特征点中,确定目标特征点;

对所述目标特征点进行三角化处理,生成与所述目标特征点对应的新的三维位置点。

一种可选的实施方式中,所述装置还包括融合模块37,用于:

将所述待插入关键帧数据的三维位置点、和所述共视关键帧数据中的共视特征点进行投影匹配,得到投影匹配结果;

针对任一三维位置点,响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,但该共视特征点并未匹配其他三维位置点,则建立该任一三维位置点和所述共视特征点之间的匹配关系;

响应于所述投影匹配结果指示该任一三维位置点具有匹配成功的共视特征点,该共视特征点关联有其他三维位置点,且该任一三维位置点和该其他三维位置点之间的距离小于预设距离阈值,则将该任一三维位置点和该其他三维位置点进行融合处理。

一种可选的实施方式中,所述装置还包括优化模块38,用于:

基于所述目标关键帧数据、以及所述共视关键帧数据,构建第二局部地图;

以最小化匹配误差为目标,基于所述已插入关键帧数据的位姿信息,调整所述第二局部地图中的三维位置点的坐标信息、以及目标关键帧数据的位姿信息;或者,基于所述三维位置点的坐标信息,调整所述第二局部地图中的已插入关键帧数据和目标关键帧数据的位姿信息。

一种可选的实施方式中,所述删除模块33在所述从所述共视关键帧数据中确定待删除的候选关键帧数据时,用于:

基于所述共视关键帧数据中的多帧关键帧数据的生成顺序,得到生成顺序编号;

基于所述多帧关键帧数据的生成顺序编号与所述目标关键帧数据的生成顺序编号,将编号间隔大于预设间隔阈值的共视关键帧数据确定为待删除的候选关键帧数据。

一种可选的实施方式中,所述删除模块33在所述根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据时,用于:

针对所述候选关键帧数据中每个三维位置点,将该三维位置点的被观测次数和预设观测次数阈值进行比对;响应于该三维位置点的被观测次数大于所述预设观测次数阈值,将该三维位置点确定为标记三维位置点;

响应于所述标记三维位置点的数量与该候选关键帧数据中的三维位置点总量之间的比值大于预设阈值,将所述候选关键帧数据确定为待删除关键帧数据。

一种可选的实施方式中,所述输出模块34在所述从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图时,用于:

响应于所述待删除关键帧数据为第一已插入关键帧数据,对所述待删除关键帧数据进行删除处理,得到待过滤SLAM地图;

响应于所述待删除关键帧数据为第二已插入关键帧数据,对所述待删除关键帧数据进行待删除标记;

响应于触发SLAM地图保存事件,删除具有待删除标记的所述待删除关键帧数据。

一种可选的实施方式中,所述输出模块34在所述对所述待过滤SLAM地图中的三维位置点进行过滤处理时,用于:

遍历SLAM地图中的所有三维位置点,确定各个三维位置点被观测到的次数;响应于任一三维位置点的被观测到的次数目标观测次数,则删除该任一三维位置点;和/或,

遍历所述SLAM地图中当前更新周期新插入的第一已插入关键帧数据,并构成该遍历到的第一已插入关键帧数据对应的第三局部地图;遍历所述第三局部地图中各个三维位置点,若遍历到的三维位置点未被观测到的次数大于预设次数阈值,则删除该遍历到的三维位置点。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

本公开实施例还提供了一种车辆,所述车辆包括电子控制单元,所述电子控制单元在车辆启动地图更新功能时,执行上述本公开实施例所提供的地图更新方法。

本公开实施例还提供了一种计算机设备,如图4所示,为本公开实施例提供的计算机设备结构示意图,包括:

处理器41和存储器42;所述存储器42存储有处理器41可执行的机器可读指令,处理器41用于执行存储器42中存储的机器可读指令,所述机器可读指令被处理器41执行时,处理器41执行下述步骤:

在进行视觉定位时获取待插入关键帧数据,并从当前同步定位与建图SLAM地图中的已插入关键帧数据中,确定和所述待插入关键帧数据存在目标共视关系的共视关键帧数据;

为位于所述待插入关键帧数据、但未包含在所述共视关键帧数据中的目标特征点,生成新的三维位置点,并基于所述新的三维位置点、和所述待插入关键帧数据,生成目标关键帧数据;

从所述共视关键帧数据中确定待删除的候选关键帧数据,并根据所述候选关键帧数据中各个三维位置点的被观测次数,从所述候选关键帧数据中确定待删除关键帧数据;

从所述当前SLAM地图中删除所述待删除关键帧数据、并将所述目标关键帧数据插入所述当前SLAM地图,得到待过滤SLAM地图,并对所述待过滤SLAM地图中的三维位置点进行过滤处理,得到目标SLAM地图。

上述存储器42包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换。

上述指令的具体执行过程可以参考本公开实施例中所述的地图更新方法的步骤,此处不再赘述。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的地图更新方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

技术分类

06120116581679