一种多地图对齐的方法、装置、终端及存储介质
技术领域
本申请涉及计算机视觉领域,尤其涉及一种多地图对齐的方法、装置、终端及存储介质。
背景技术
当前的视觉即时定位和建图(visual simultaneous localization andmapping,vSLAM)技术,使用视觉传感器采集图像数据,并根据采集的图像数据建立地图。
发明人在研究现有技术过程中发现,通过vSLAM技术建立的地图存在相对性。对于同一条路径,正向运动采集的图像数据与反向运动采集的图像数据存在差异,导致定位过程中对同一位置的输出结果有所差异,即直接使用采集的图像数据建立的地图进行定位时,会得到两个不同的结果。同理,对于两个存在共同路径的地图,建图及定位过程中也存在以上情况。
可见,如何减少各地图对同一位置的定位结果的偏差,是需要解决的问题。
发明内容
本申请部分实施例所要解决的一个技术问题在于如何减少各地图对同一位置的定位结果的偏差。
本申请的一个实施例提供了一种多地图对齐的方法,包括:获取包括第一路径的地图点的描述信息的N幅地图;其中,N幅地图中的描述信息不同,N为大于1的整数;从N幅地图中选择一副地图作为基准地图,其余地图作为修正地图;根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息。
本申请的一个实施例还提供了一种多地图对齐的装置,包括:获取模块,用于获取包括第一路径的地图点的描述信息的N幅地图;其中,N幅地图中的描述信息不同,N为大于1的整数;调整模块,用于从N幅地图中选择一副地图作为基准地图,其余地图作为修正地图;根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息。
本申请的一个实施例还提供了一种终端,包括至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例提及的多地图对齐的方法。
本申请的一个实施例还提供了一种计算机可读存储介质,存储有计算机程序,其中,计算机程序被处理器执行时实现上述实施例提及的多地图对齐的方法。
本申请的实施例相对于现有技术而言,根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息,使得基准地图和修正地图对第一路径的地图点的描述信息一致。由于多幅地图中的第一路径的地图点的描述信息一致,使得终端在定位过程中,无论加载哪幅地图,都能得到相同的定位结果,减少各地图对同一位置的定位结果的偏差。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请第一实施例的多地图对齐的方法的流程图;
图2是本申请第二实施例的多地图对齐的方法的流程图;
图3a是本申请第二实施例的正向地图的第一路径的示意图;
图3b是本申请第二实施例的反向地图的第一路径的示意图;
图3c是本申请第二实施例中将A-B划分为6段后的路径示意图;
图4是本申请第三实施例的多地图对齐的装置的结构示意图;
图5是本申请第四实施例的终端的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请的第一实施例涉及一种多地图对齐的方法,应用于终端或云端。终端可以是盲人导航装置、智能机器人等。云端与终端通信连接,为终端提供用于定位的地图或直接为终端提供定位结果。本实施例以终端为例说明多地图对齐的方法的执行过程,云端执行该多对图对齐的方法的过程可以参考本申请实施例的内容。如图1所示,该多地图对齐的方法包括以下步骤:
步骤101:获取包括第一路径的地图点的描述信息的N幅地图。
具体地说,N幅地图中的描述信息不同,N为大于1的整数。例如,终端获取第一路径的正向地图和第一路径的反向地图。终端从一点出发,朝第一方向运动,采集第一路径的第一图像数据,并根据第一路径的第一图像数据建立第一路径的正向地图。终端从同一点出发,朝第二方向运动,采集第一路径的第二图像数据,并根据第一路径的第二图像数据建立第一路径的反向地图。其中,第一方向和第二方向的方向相反。
步骤102:从N幅地图中选择一副地图作为基准地图,其余地图作为修正地图。
例如,选择第一路径的正向地图作为基准地图,第一路径的反向地图作为修正地图。
步骤103:根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息。
具体地说,第一路径的地图点的描述信息包括第一路径的地图点的方向信息和地图点的位置信息。终端根据基准地图中的第一路径的地图点的方向信息,调整修正地图中的第一路径的地图点的方向信息,根据基准地图中的第一路径的地图点的位置信息,调整修正地图的地图点的位置信息。
与现有技术相比,本实施例中提供的多地图对齐的方法,根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息,使得基准地图和修正地图对第一路径的地图点的描述信息一致。由于多幅地图中的第一路径的地图点的描述信息一致,使得终端在定位过程中,无论加载哪幅地图,都能得到相同的定位结果,减少各地图对同一位置的定位结果的偏差。
本申请的第二实施例涉及一种多地图对齐的方法,本实施例是对第一实施例的进一步细化,具体说明了步骤103。
如图2所示,本实施例包括步骤201至步骤204。其中,步骤201、步骤202分别与第一实施例中的步骤101、步骤102大致相同,此处不再详述,下面主要介绍不同之处:
执行步骤201和步骤202。
步骤203:分别将N幅地图中的每幅地图中的第一路径分为M段第二路径。M为正整数。
具体实现中,终端确定N幅地图中的每幅地图的第一路径的关键点信息,根据N幅地图中的每幅地图的第一路径的关键点信息,分别将N幅地图中的每幅地图中的第一路径分为M段第二路径。其中,关键点是指第一路径中的特殊位置点,如拐点,终端可以根据这些特殊位置点,将第一路径分为不同的路段。
其中,终端确定N幅地图中的每幅地图的第一路径的关键点信息的方法如下:对N幅地图中的每幅地图分别进行以下操作:获取地图建立过程中采集的地图点的方向信息;根据地图点的方向信息,确定地图中的第一路径的关键点信息。
以下对终端获取地图建立过程中采集的地图点的方向信息的方法进行说明。
方法1:终端根据设置在终端上的视觉传感器采集的第一路径的图像数据,使用vSLAM技术建图,输出每帧图像对应的位置信息及方向信息,并将每帧图像对应的位置信息作为地图点的位置信息,将每帧图像对应的方向信息作为地图点的方向信息。
方法2:终端根据里程计或惯性单元测量装置(Inertial Measurement Unit,IMU)等其他传感器采集的数据确定地图点的方向信息。以里程计为例,终端携带视觉传感器和里程计,沿第一路径运动。终端运动过程中,视觉传感器采集第一路径的图像数据,确定每帧图像对应的时间戳信息,里程计采集终端的方向信息和位置信息。终端将视觉传感器的时间戳和里程计的时间戳对齐,根据每帧图像对应的时间戳信息,确定地图点的方向信息和位置信息。终端根据每帧图像信息、每帧图像对应的方向信息和位置信息,确定地图点的描述信息。
值得一提的是,加入其他传感器辅助确定地图点的位置信息和方向信息,可以避免使用vSLAM技术对未回环路径建图时,由于终端没有检测到回环,不会对终端的位姿进行优化,从而造成的累积误差。
以下对根据地图点的方向信息,确定地图中的第一路径的关键点信息的方法进行说明。
例如,关键点为第一路径中的拐点。在直线路径中,相邻的两个地图点的方向信息相近,在拐弯处,相邻的两个地图点的方向信息会出现较大的变化。终端按照第一路径的地图点的方向信息的获取顺序排列第一路径的地图点的方向信息,针对每个第一路径的地图点的方向信息,分别进行以下操作:计算地图点的方向信息与下一地图点的方向信息的第一差值,判断第一差值是否大于第一阈值,若确定是,将地图点的方向信息对应的地图点的位置信息作为第一路径的候选的关键点信息。终端根据所有的第一路径的候选的关键点信息,确定第一路径的关键点信息。其中,第一阈值可以根据实际需要设置。
具体实现中,终端可设置一定的移动距离dt,分别记录终端每移动dt对应的地图点的方向信息。设置一定的方向阈值,即第一阈值,若相邻的两个地图点的方向信息的差值大于方向阈值,则认为是这两个地图点之间的路径中存在关键点,将该路径起点对应的地图点和/或该路径终点对应的地图点作为关键点。在实际运行过程中,在一处拐弯位置,可以检测到多个连续的运动方向变化较大的点。因此,可根据连续的运动方向变化较大的点的位置信息,确定关键点的位置信息,如公式1所示:
公式1:
其中,tj表示关键点的位置信息,ki表示运动方向变化较大的地图点的位置信息,n表示运动方向变化较大的地图点的个数。
步骤204:针对每幅修正地图中的每段第二路径,分别进行以下操作:确定与修正地图的第二路径相对应的基准地图的第二路径;根据相对应的基准地图的第二路径的地图点的描述信息,调整修正地图的第二路径的地图点的描述信息。
以下对终端确定与修正地图的第二路径相对应的基准地图的第二路径的方法进行说明。
例如,终端获取第一路径的正向地图和反向地图,并将第一路径的正向地图作为基准地图,第一路径的反向地图作为修正地图。第一路径的正向地图中的关键点为{tP|(tP0,tP1,tP2……tPn-2,tPn-1)},第一路径的反向地图中的关键点为{tN|(tN0,tN1,tN2……tNn-2,tNn-1)}。由于第一路径的正向地图和反向地图的起点相同,仅方向相反,第一路径的正向地图的关键点的顺序和第一路径的反向地图的关键点的顺序相反,即{tP-tN|tP0-tN0,tP1-tN1,tP2-tN2,……tPn-2-tNn-2,tPn-1-tNn-1}。由于第二路径是根据第一路径的正向地图中的关键点和第一路径的反向地图中的关键点划分的,所以,根据第一路径的正向地图的关键点和第一路径的反向地图的关键点的对应关系,即可确定正向地图中的第二路径与反向地图中的第二路径的对应关系。
以下对根据与修正地图的第二路径相对应的基准地图的第二路径(以下简称为修正地图的第二路径的对应路径),调整修正地图的第二路径的地图点的描述信息的方法进行说明。
终端确定修正地图的第二路径的对应路径的方向信息,以及修正地图的第二路径的方向信息,根据修正地图的第二路径的对应路径的方向信息,以及修正地图的第二路径的方向信息,调整修正地图的第二路径的地图点的方向信息。终端根据基准地图的第二路径的地图点的位置信息,以及修正地图的第二路径调整后的地图点的方向信息,调整修正地图的第二路径的地图点的位置信息。
其中,终端根据N幅地图中每幅地图建立过程中采集的地图点的方向信息,确定N幅地图中每幅地图的第二路径的方向信息。具体地说,终端针对N幅地图中每幅地图的第二路径,分别进行以下操作:获取第二路径的地图点的所有方向信息,并针对每个第二路径的地图点的方向信息,分别进行以下操作:确定第二路径的地图点的方向信息与其他第二路径的地图点的方向信息的第二差值;判断第二路径的地图点的方向信息对应的所有第二差值中,是否存在大于第二阈值的第二差值,若确定不存在,将第二路径的地图点的方向信息作为第二路径的方向信息。
以下对不同情况下,终端根据基准地图的描述信息更新修正地地图的描述信息的过程进行说明。
情况1:修正地图的第二路径的对应路径的方向信息的个数为1,且修正地图的第二路径的方向信息的个数为1。该情况下,终端根据修正地图的第二路径的对应路径的方向信息,以及修正地图的第二路径的方向信息,调整修正地图的第二路径的地图点的方向信息;用基准地图的第二路径中,与修正地图的第二路径起始的地图点相对应的地图点的位置信息,替换修正地图的第二路径起始的地图点的位置信息;从替换后的修正地图的第二路径起始的地图点的位置信息开始,根据修正地图的比例、当前的地图点的位置信息、当前的地图点的调整后的方向信息,以及当前的地图点与下一地图点的距离信息,计算用于替换下一个地图点的位置信息的替换信息,用替换信息替换下一个地图点的位置信息,直至替换完修正地图的第二路径上的所有地图点的位置信息。
情况2:修正地图的第二路径的对应路径的方向信息的个数大于1,或,修正地图的第二路径的方向信息的个数大于1。该情况下,终端针对每个修正地图的第二路径的对应路径的方向信息,分别进行以下操作:从修正地图的第二路径的方向信息中,依次选择一个方向信息,进行以下操作:根据修正地图的第二路径的对应路径的方向信息,以及选择的修正地图的第二路径的方向信息,调整修正地图的第二路径的地图点的方向信息;用基准地图的第二路径中,与修正地图的第二路径起始的地图点相对应的地图点的位置信息,替换修正地图的第二路径起始的地图点的位置信息;从替换后的修正地图的第二路径起始的地图点的位置信息开始,根据修正地图的比例、当前的地图点的位置信息、当前的地图点的调整后的方向信息,以及当前的地图点与下一地图点的距离信息,计算用于替换下一个地图点的位置信息的替换信息,用替换信息替换下一个地图点的位置信息,直至替换完修正地图的第二路径上的所有地图点的位置信息。终端确定基准地图的第二路径中与修正地图的第二路径结束的地图点相对应的地图点的位置信息。终端计算与修正地图的第二路径结束的地图点相对应的地图点的位置信息和替换后的修正地图的第二路径结束的地图点的位置信息的第三差值。终端在针对所有的修正地图的第二路径的对应路径的方向信息和修正地图的第二路径的方向信息完成上述操作后,确定最小的第三差值,将最小的第三差值对应的操作结果,作为最终的修正地图中的第一路径的地图点的描述信息的调整结果。
例如,正向地图的第一路径如图3a所示,反向地图的第一路径如图3b所示,以正向地图为基准地图,反向地图为修正地图。终端确定正向地图的第一路径的关键点为A、B、C、D、E和F,根据上述关键点将正向地图的第一路径分为6段第二路径,分别为:A-B、B-C、C-D、D-E、E-F和F-A。终端确定反向地图的第一路径的关键点为a、b、c、d、e和f,根据上述关键点将反向地图的第一路径分为6段第二路径,分别为a-b、b-c、c-d、d-e、e-f和f-a。其中,A-B与a-b相对应,B-C与b-c相对应,C-D与c-d相对应,D-E与d-e相对应,E-F与e-f相对应,F-A与f-a相对应。由于单个地图点的方向不足以代表一条直线的整体方向,使用vSLAM技术建立地图后,一条路径上能获取很多点,直接使用其中一点的方向会造成较大的差异。因此,终端将第二路径划分为多个第三路径,例如,将A-B划分为6段后的路径示意图如图3c所示。确定地图点h的方向信息与其他地图点(i、j、k、l、m和n)的方向信息的差值,若地图点h与其他地图点的方向信息的差值都不大于第二阈值,将地图点h的方向信息作为第二路径的方向信息。以此类推,对A-B的其他地图点的方向信息判断。最终,若每个地图点的方向信息都符合要求,则A-B的方向信息可能是地图点h的方向信息、地图点i的方向信息、地图点j的方向信息、地图点k的方向信息、地图点l的方向信息、地图点m的方向信息和地图点n的方向信息中的任意一个方向信息。参考上述方法确定正向地图的其他第二路径的方向信息,以及反向地图的第二路径的方向信息。由于基准地图的每段第二路径和反向地图的每段第二路径可能存在多个可能的方向信息,每种方向信息对应的调整结果不同,因此,需要根据每种可能的方向信息对修正地图进行调整。以下以正向地图中的A-B和反向地图中的a-b为例说明调整过程。假设反向地图中a-b中只有一个地图点u的方向信息符合要求,将地图点u的方向信息作为a-b的方向信息,A-B中的地图点h、地图点j的方向信息均符合要求,则先将地图点h的方向信息作为A-B的方向信息,计算地图点h的方向信息和地图点u的方向信息的差值θd。根据该差值θd,按照公式2调整a-b中每个地图点的方向信息。
公式2:θcor=θorg+θd
其中,θcor表示修正地图的第二路径中的地图点调整后的方向信息,θorg表示修正地图的第二路径中的地图点调整前的方向信息,θd表示修正地图的第二路径的方向信息和基准地图的第二路径的方向信息的差值。
用A-B的起点A的位置信息替换a-b的起点a的位置信息,按照公式3和公式4计算用于替换下一个地图点的位置信息的替换信息,直至替换完修正地图的第二路径上的所有地图点的位置信息。
公式3:x'=x+s*d*cos(θcor)
公式4:y'=y+s*d*sin(θcor)
其中,(x,y)表示修正地图中当前的地图点的位置信息,s代表修正地图的比例尺;d代表当前的地图点与下一个地图点的距离,θcor表示当前的地图点调整后的方向信息,(x',y')代表用于替换下一个地图点的方向信息的替换信息。
在替换完a-b中的每个地图点的位置信息后,按照公式5计算a-b的终点(地图点b)的位置信息和A-B的终点(地图点B)的位置信息的差值q1。
公式5:
其中,q表示修正地图的第二路径结束的地图点调整后的位置信息和基准地图的第二路径结束的地图点的位置信息的差值,(xp-e,yp-e)表示基准地图中每段路径的终点的位置信息,(xn-e,yn-e)表示修正地图中每段路径的终点调整后的位置信息。
然后,将地图点j的方向信息作为正向地图的A-B的方向信息,参考将地图点h的方向信息作为正向地图的A-B的方向信息,调整反向地图的a-b的地图点的位置信息,确定该调整结果对应的反向地图的a-b的终点(地图点b)的位置信息和正向地图的A-B的终点(地图点B)的位置信息的差值q2。终端判断q1和q2的大小,确定q1小于q2,则将地图点h的方向信息作为正向地图的A-B的方向信息,对反向地图的a-b的地图点的方向信息和位置信息的调整结果作为最终的调整结果。
与现有技术相比,本实施例中提供的多地图对齐的方法,根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息,使得基准地图和修正地图对第一路径的地图点的描述信息一致。由于多幅地图中的第一路径的地图点的描述信息一致,使得终端在定位过程中,无论加载哪幅地图,都能得到相同的定位结果,减少各地图对同一位置的定位结果的偏差。
本申请的第三实施例涉及一种多地图对齐的装置,如图4所示,包括获取模块301和调整模块302。其中,获取模块301用于获取包括第一路径的地图点的描述信息的N幅地图;其中,N幅地图中的描述信息不同,N为大于1的整数;调整模块302用于从N幅地图中选择一副地图作为基准地图,其余地图作为修正地图;根据基准地图中的第一路径的地图点的描述信息,调整修正地图中的第一路径的地图点的描述信息。
不难发现,本实施例为与第一实施例相对应的系统实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
本申请的第四实施例涉及一种终端,如图5所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402。其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述多地图对齐的方法。
本实施例中,处理器401以中央处理器(Central Processing Unit,CPU)为例,存储器402以可读写存储器(Random Access Memory,RAM)为例。处理器401、存储器402可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中基准地图和修正地图就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述多地图对齐的方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的多地图对齐的方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请的第五实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现以上任意方法实施例所描述的多地图对齐的方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。