一种路径规划方法及装置与流程

文档序号:19302811发布日期:2019-12-03 18:32阅读:215来源:国知局
一种路径规划方法及装置与流程

本发明涉及导航技术领域,尤其涉及一种路径规划方法及装置。



背景技术:

导航领域通用的路径规划方法是a*算法,a*算法是一种在静态路网中求解最短路径最有效的方法。

a*算法公式表示为:f(n)=g(n)+h(n),其中,f(n)是从初始节点经由n节点到目标节点的估价函数,g(n)是在状态空间中从初始节点到n节点的实际代价,h(n)是从n节点到目标节点最佳路径的估计代价。保证找到最短路径(最优解)的条件,关键在于估价函数f(n)的选取,由于估价函数f(n)中的g(n)是固定的,实际上关键在于h(n)的选取:

如果距离估价值h(n)小于或等于n节点到目标节点的距离实际值,则路径规划过程中需要搜索的节点数多、搜索的地图范围大、搜索效率低,但能得到从初始节点到目标节点的最短路径(最优解);如果距离估价值h(n)等于n节点到目标节点的最短距离,则路径规划过程中会严格沿着最短路径进行路径搜索,此时的搜索效率是最高的,虽然能得到从初始节点到目标节点的最短路径(最优解),但搜索的节点数仍较多、搜索的地图范围仍较大;如果距离估价值h(n)大于距离实际值g(n),则路径规划过程中需要搜索的节点数少、搜索的地图范围小、搜索效率高,但不能保证得到最优解。

可见,采用a*算法进行最短路径规划时,需要搜索大量的地图数据以找到最短路径(最优解),这会导致路径规划效率较低。



技术实现要素:

有鉴于此,本发明实施例的主要目的在于提供一种路径规划方法及装置,以通过减少地图数据的搜索量来实现提高路径规划效率的目的。

为实现上述目的,本发明实施例提供了一种路径规划方法,包括:

从路径起点位置开始向路径终点位置探索路径,具体包括:

若当前探索位置与所述路径终点位置之间的距离大于或等于预设的第一距离阈值,则对当前地图图层进行升层,并根据升层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

若当前探索位置与所述路径终点位置之间的距离小于预设的第一距离阈值且大于或等于预设的第二距离阈值,则根据当前地图图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

若当前探索位置与所述路径终点位置之间的距离小于预设的第二距离阈值,则对当前地图图层进行降层,若降层后的图层为地图图层的最低层,则根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径,否则,根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

其中,所述当前探索位置为探索路径过程中除所述路径终点位置外的探索位置,所述当前地图图层为所述当前探索位置所在的图层;

其中,所述第一距离阈值为当前探索位置所在图层的网格宽度的第一设定倍数,所述第二距离阈值为当前探索位置所在图层的网格宽度的第二设定倍数,所述第一设定倍数大于所述第二设定倍数。

可选的,所述从当前探索位置向所述路径终点位置探索路径,具体包括:

若当前探索位置位于网格内,则根据所述网格内的导航数据,在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径;

若当前探索位置位于网格的边界上,则根据边界两侧网格的导航数据连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,所述根据所述网格内的导航数据,在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径具体包括:

根据所述网格内的导航数据,判断当前探索位置是否位于跨网格边界的路段上,如果是,则将该路段中属于当前探索位置所在网格的一段标记为实路段,将该路段中的另一段标记为虚路段;

通过所述跨网格边界的路段中的虚路段连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,当当前探索位置所在网格涉及至少两个不同地理区域时,若当前探索位置位于所述网格内的地理区域边界上,则在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径具体为:

根据所述网格内地理区域边界两侧的导航数据连接位于所述区域边界两侧的路径,并在连接后的路径上向所述路径终点位置方向探索路径。

可选的,若当前探索位置位于所述网格内的一个地理区域内时,所述方法进一步包括:

判断当前探索位置是否位于跨地理区域边界的路段上,如果是,则将该路段中属于当前探索位置所在区域中的一段标记为实路段,将该路段中的另一段标记为虚路段;

通过所述跨地理区域边界的路段中的虚路段连接位于所述边界两侧区域中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,

所述对当前地图图层进行升层,具体包括:

加载当前地图图层的上层图层的拓扑信息;

根据所述当前地图图层的拓扑信息与所述上层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述上层图层的对应位置,将映射后的对应位置作为新的当前探索位置;

所述对当前地图图层进行降层,具体包括:

加载当前地图图层的下层图层的拓扑信息;

根据所述当前地图图层的拓扑信息与所述下层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述下层图层的对应位置,将映射后的对应位置作为新的当前探索位置。

可选的,所述导航数据为由至少一个第一结点和/或至少一个第二结点组成的链表,所述第一结点包括第一数据域和第一指针域,所述第二结点包括第二数据域和第二指针域;

其中,

所述第一数据域至少包括:表示当前探索位置所在路段对应的数据类型,当前探索位置所在路段所属的网格的网格索引;

所述第一指针域包括:第一指针和第二指针,所述第一指针表示将与当前探索位置所在路段连接的所有路径按优先级排序的路径链表,所述第二指针表示与当前探索位置所在路段连接的所有路径中最优路径的路径链表;

所述第二数据域至少包括:表示当前探索位置所在路段端点对应的数据类型,当前探索位置所在路段端点所在网格的网格索引;

所述第二指针域包括:第三指针、第四指针、第五指针和第六指针,所述第三指针表示与当前探索位置所在路段端点连接的所有虚路段的路段链表,所述第四指针表示与当前探索位置所在路段端点连接的所有实路段的路段链表,所述第五指针表示将与当前探索位置所在路段端点连接的所有路径按优先级排序的路径链表,所述第六指针表示与当前探索位置所在路段端点连接的所有路径中最优路径的路径链表。

本发明实施例还提供了一种路径规划装置,包括:

探索装置,用于从路径起点位置开始向路径终点位置探索路径;

所述探索装置具体包括:

升层单元,用于若当前探索位置与所述路径终点位置之间的距离大于或等于预设的第一距离阈值,则对当前地图图层进行升层;

探索单元,用于根据所述升层单元升层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

所述探索单元,还用于若当前探索位置与所述路径终点位置之间的距离小于预设的第一距离阈值且大于或等于预设的第二距离阈值,则根据当前地图图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

降层单元,用于若当前探索位置与所述路径终点位置之间的距离小于预设的第二距离阈值,则对当前地图图层进行降层;

所述探索单元,还用于若所述降层单元降层后的图层为地图图层的最低层,则根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径,否则,根据所述降层单元降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

其中,所述当前探索位置为探索路径过程中除所述路径终点位置外的探索位置,所述当前地图图层为所述当前探索位置所在的图层;

其中,所述第一距离阈值为当前探索位置所在图层的网格宽度的第一设定倍数,所述第二距离阈值为当前探索位置所在图层的网格宽度的第二设定倍数,所述第一设定倍数大于所述第二设定倍数。

可选的,所述探索单元包括:

网格内探索模块,用于若当前探索位置位于网格内,则根据所述网格内的导航数据,在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径;

网格边界探索模块,用于若当前探索位置位于网格的边界上,则根据边界两侧网格的导航数据连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,所述网格内探索模块包括:

第一标记子模块,用于根据所述网格内的导航数据,判断当前探索位置是否位于跨网格边界的路段上,如果是,则将该路段中属于当前探索位置所在网格的一段标记为实路段,将该路段中的另一段标记为虚路段;

第一探索子模块,用于通过所述第一标记子模块标记的所述跨网格边界的路段中的虚路段连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,当当前探索位置所在网格涉及至少两个不同地理区域时,若当前探索位置位于所述网格内的地理区域边界上,则所述网格内探索模块包括:

路径连接子模块,用于根据所述网格内地理区域边界两侧的导航数据连接位于所述区域边界两侧的路径;

第二探索子模块,用于在所述路径连接子模块连接后的路径上向所述路径终点位置方向探索路径。

可选的,若当前探索位置位于所述网格内的一个地理区域内时,所述网格内探索模块进一步包括:

第二标记子模块,用于判断当前探索位置是否位于跨地理区域边界的路段上,如果是,则将该路段中属于当前探索位置所在区域中的一段标记为实路段,将该路段中的另一段标记为虚路段;

第三探索子模块,用于通过所述第二标记子模块标记的所述跨地理区域边界的路段中的虚路段连接位于所述边界两侧区域中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

可选的,

所述升层单元,具体包括:

上层信息加载模块,用于加载当前地图图层的上层图层的拓扑信息;

上层位置映射模块,用于根据所述当前地图图层的拓扑信息与所述上层信息加载模块加载的上层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述上层图层的对应位置,将映射后的对应位置作为新的当前探索位置;

所述降层单元,具体包括:

下层信息加载模块,用于加载当前地图图层的下层图层的拓扑信息;

下层位置映射模块,用于根据所述当前地图图层的拓扑信息与所述下层信息加载模块加载的下层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述下层图层的对应位置,将映射后的对应位置作为新的当前探索位置。

可选的,所述导航数据为由至少一个第一结点和/或至少一个第二结点组成的链表,所述第一结点包括第一数据域和第一指针域,所述第二结点包括第二数据域和第二指针域;

其中,

所述第一数据域至少包括:表示当前探索位置所在路段对应的数据类型,当前探索位置所在路段所属的网格的网格索引;

所述第一指针域包括:第一指针和第二指针,所述第一指针表示将与当前探索位置所在路段连接的所有路径按优先级排序的路径链表,所述第二指针表示与当前探索位置所在路段连接的所有路径中最优路径的路径链表;

所述第二数据域至少包括:表示当前探索位置所在路段端点对应的数据类型,当前探索位置所在路段端点所在网格的网格索引;

所述第二指针域包括:第三指针、第四指针、第五指针和第六指针,所述第三指针表示与当前探索位置所在路段端点连接的所有虚路段的路段链表,所述第四指针表示与当前探索位置所在路段端点连接的所有实路段的路段链表,所述第五指针表示将与当前探索位置所在路段端点连接的所有路径按优先级排序的路径链表,所述第六指针表示与当前探索位置所在路段端点连接的所有路径中最优路径的路径链表。

本发明实施例路径规划方法及装置,在由路径起点向路径终点的路径探索过程中,若当前探索位置距离路径终点较远时,则从当前图层向上升层,并根据升层后的图层上的导航数据,在升层后的图层上继续探索路径,若当前探索位置距离路径终点较近时,则从当前地图层级向下降层,并根据降层后的图层上的导航数据,在降层后的图层上继续探索路径,直到降到最低层后在最低层探索路径终点。可见,由于在地图图层中,随着层级的上升,图层上显示的路径越精简,对应的导航数据量越少,因此通过升层处理,可以减少路径规划过程中导航数据的加载量,提高了路径规划效率;反之,随着层级的下降,图层上显示的路径越详细,对应的导航数据量越大,因此通过降层处理,虽然需要加载的导航数据量增多,但是可以定位精确的终点位置,且相比较只在最低层探索路径,在一定程度上大大减少了导航数据量的加载。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例路径规划方法的流程示意图;

图2为本发明实施例网格边界示意图;

图3为本发明实施例网格内区域划分示意图;

图4为本发明实施例地图13层的网格示意图之一;

图5为本发明实施例地图10层的网格示意图之一;

图6为本发明实施例地图8层的网格示意图之一;

图7为本发明实施例地图8层的网格示意图之二;

图8为本发明实施例地图10层的网格示意图之二;

图9为本发明实施例地图13层的网格示意图之二;

图10为本发明实施例路径规划装置的组成示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了便于理解本发明实施例,在介绍本发明实施例前,首先对地图本身进行简单的介绍:地图是按照层级划分的,即一张地图可以由一个或多个图层组成,每个图层被划分为多个网格。其中,每一图层上显示的路径详细程度不同,具体地,地图层级中最低层显示的路径最详细,详细到各个路段及分叉口,随着地图层级的上升,路径显示程度就越精简,到地图层级最高层也许只显示一些主干道路径。

下面具体介绍本发明实施例。

参见图1,为本发明实施例提供的路径规划方法的流程示意图。该方法包括:

步骤101:从路径起点位置开始向路径终点位置探索路径。

在本发明实施例中,由于地图层级中最低层是路径绘制程度最详细的图层,因此为了定位路径起点和路径终点的精确位置,首先定位路径起点和路径终点在地图层级中最低层中的位置。基于每个地图图层被划分成多个网格,此处首先确定路径起点和路径终点所在的具体网格,然后加载路径起点和路径终点所在网格的导航数据,即,如果路径起点和路径终点所在的地图最低层网格为同一网格,则只需先加载所述同一网格内的导航数据,如果路径起点和路径终点所在的地图最低层网格为不同网格,则只加载路径起点所在网格的导航数据或加载这两个网格的导航数据,以便先在路径起点所在网格上探索路径。

需要说明的是,从路径起点向路径终点方向的路径探索过程中,当前探索位置是实时变化的,当前探索位置可能位于路径起点所在的网格、也可能位于路径终点所在的网格、亦可能位于路径起点所在网格与路径终点所在网格以外的某一新网格(该新网格可能与路径起点所在网格和路径终点所在网格处于同一地图层级也可能处于不同地图层级)、还可能位于某一地图层级上的网格边界线上。

在路径探索过程中,为了减少导航数据的加载量,本发明实施例根据当前探索位置与路径终点位置之间的距离,对当前探索位置进行升降层处理,为此需要设定两个阈值,包括第一距离阈值和第二距离阈值,所述第一距离阈值为当前探索位置所在图层的网格宽度的第一设定倍数,所述第二距离阈值为当前探索位置所在图层的网格宽度的第二设定倍数,所述第一设定倍数大于所述第二设定倍数。其中,所述当前探索位置为探索路径过程中除所述路径终点位置外的探索位置,当前地图图层为所述当前探索位置所在的图层。

则,步骤101具体包括以下步骤:

步骤102:若当前探索位置与所述路径终点位置之间的距离大于或等于预设的第一距离阈值,则对当前地图图层进行升层,并根据升层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径。

随着地图层级的上升,图层上的导航数据就越少,路径显示越精简,因此,若当前探索位置与路径终点之间的距离较长,则在路径探索过程中,做升层处理,以根据升层后的图层上的导航数据,在升层后的图层上继续探索路径。由于升层后图层上的导航数据比升层前图层上的导航数据少,所以升层处理可以减少导航数据的加载量,在大量导航数据下可以有效提高远程路径规划的效率。

例如:假设所述第一距离阈值为当前探索位置所在图层的网格宽度的两倍。当路径终点位置距离当前探索位置足够远时,比如二者之间的距离是当前探索位置所在当前地图图层的网格宽度的五倍(大于所述第距离一阈值),为了提升路径规划效率,应该进行升层处理,具体实现如下:

首先,加载升层后的上层图层(假设当前地图图层是13层,若12层有数据,则所述上层图层是12层,若11-12层没有数据,则所述上层图层是10层,当然,所述上层图层也可以是跳过几个图层后的某一图层)的拓扑信息,然后,根据当前地图图层和所述上层图层的拓扑信息,确定当前探索位置分别在当前地图图层和所述上层图层的位置,在确定的两个位置间添加一个线段,以将所述上层图层网格与当前地图图层网格联系在一起,最后,将当前探索位置从所述当前地图图层映射到所述上层图层的对应位置,并将映射后的对应位置作为新的当前探索位置。升层处理后,由于所述上层图层数据量小,在所述上层图层上探索路径只需要读取所述上层图层的导航数据,这样避免了对当前地图图层中大量导航数据的读取。基于上述内容,在步骤102中,所述对当前地图图层进行升层,具体为:

加载当前地图图层的上层图层的拓扑信息;根据所述当前地图图层的拓扑信息与所述上层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述上层图层的对应位置,将映射后的对应位置作为新的当前探索位置。

步骤103:若当前探索位置与所述路径终点位置之间的距离小于预设的第一距离阈值且大于或等于预设的第二距离阈值,则根据当前地图图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径。

例如:假设所述第一距离阈值为当前探索位置所在图层的网格宽度的两倍,所述第二距离阈值为当前探索位置所在图层的网格宽度的1/2。当路径终点位置与当前探索位置之间的距离是当前探索位置所在当前地图图层的网格宽度的1倍(小于第一距离阈值且大于第二距离阈值)时,在当前地图图层上继续探索路径,不必做升层或降层处理。

步骤104:若当前探索位置与所述路径终点位置之间的距离小于预设的第二距离阈值,则对当前地图图层进行降层,若降层后的图层为地图图层的最低层,则根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径,否则,根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径。

随着地图层级的下降,图层上的导航数据就越多,路径显示越详细,因此,若当前探索位置与路径终点位置之间的距离较短,则在路径探索过程中,做降层处理,以根据降层后的图层上的导航数据,在降层后的图层上继续探索路径。虽然降层后图层上的导航数据比降层前图层上的导航数据多,但是接近路径终点时,为了确定路径终点的精确体位置,降层处理可以精确路径规划的终端位置。

例如:假设所述第一距离阈值为当前探索位置所在图层的网格宽度的两倍,所述第二距离阈值为当前探索位置所在图层的网格宽度的1/2,当路径终点位置距离当前探索位置足够近时,比如二者之间的距离是当前探索位置所在当前地图图层的网格宽度的1/3(小于所述第一距离阈值),为了提高路径探索位置的精确度,应该进行降层处理,具体实现如下:

首先,加载降层后的下层图层(假设当前地图图层是10层,若11层有数据,则所述下层图层是11层,若11-12层没有数据,则所述下层图层是13层,当然,所述下层图层也可以是跳过几个图层后的某一图层)的拓扑信息,然后,根据当前地图图层和所述下层图层的拓扑信息,确定当前探索位置分别在当前地图图层和所述下层图层的位置,在确定的两个位置间添加一个线段,以将所述下层图层网格与当前地图图层网格联系在一起,最后,将当前探索位置从所述当前地图图层映射到所述下层图层的对应位置,并将映射后的对应位置作为新的当前探索位置。降层处理后,由于所述下层图层数据量大,在所述上层图层上探索路径会更准确,最后在降到地图最低层时,可以准确的定位路径终点位置。基于上述内容,在步骤104中,所述对当前地图图层进行降层,具体为:

加载当前地图图层的下层图层的拓扑信息;根据所述当前地图图层的拓扑信息与所述下层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述下层图层的对应位置,将映射后的对应位置作为新的当前探索位置。

在本发明实施例中,基于路径探索过程中探索位置的不同,以情况1和情况2两种情况介绍上述步骤102至104中“从当前探索位置向所述路径终点位置探索路径”的具体实现方法:

情况1:当前探索位置位于当前地图图层中的某网格内。

在进入某网格内探索路径前,需预先加载该网格内的所有导航数据或部分导航数据,以根据该网格内的导航数据,在该网格内从当前探索位置向路径终点位置方向探索路径。因此,若当前探索位置位于网格内,则根据所述网格内的导航数据,在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径。

进一步地,情况1又分别以下情况1a和1b两种情况。

情况1a,当前探索位置位于网格内的跨网格边界的路段上。

基于情况情况1a,本发明实施例根据所述网格内的导航数据,判断当前探索位置是否位于跨网格边界的路段上,如果是,则将该路段中属于当前探索位置所在网格的一段标记为实路段,将该路段中的另一段标记为虚路段;通过所述跨网格边界的路段中的虚路段连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。举例说明:参见图2所示的网格边界示意图,路段a是跨网格1和网格2的一个路段,假设当前探索位置位于网格1内的路段a上,则将路段a中位于网格1内的部分路段标记为实路段,将路段a中位于网格2内的部分路段标记为虚路段,同时对虚路段侧的路段端点进行标记,需要说明的是,网格1与网格2的网格边界上可能存在多个路段或不存在任何路段,如果存在,则对每个路段、路段端点作上述标记,以便在当前探索位置位于跨网格边界的路段上时,通过补齐网格2内的虚路段(即使虚路段变为实路段)使跨网格边界的路径衔接起来,以便在连接后的路径上继续向所述路径终点位置方向探索路径。其中,对所述路段端点进行标记,是为了确定虚路段的终端位置。

情况1b,当前探索位置所在网格内涉及不同地理区域。

对于当前探索位置所在网格内只涉及一个地理区域的情形,则根据网格内的所有导航数据从当前探索位置向路径终点位置方向探索路径;而对于当前探索位置所在网格内涉及两个或两个以上的不同地理区域的情形,则只需根据路径探索所历经的每个地理区域的导航数据(而并非根据网格内所有地理区域的导航数据),从当前探索位置向路径终点位置方向探索路径,举例说明,参见图3所示的网格内区域划分示意图,图3中为一个涉及三个地理区域的网格,这三个地理区域分别是区域1、区域2和区域3,当路径探索所历经的区域只包括区域1和区域3时,只需根据区域1和区域3的导航数据向路径终点位置方向探索路径即可,这样可以减少导航数据的加载。进一步地,当当前探索位置所在网格涉及至少两个不同地理区域时,若当前探索位置位于所述网格内的地理区域边界上,则为了在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径,具体可根据所述网格内地理区域边界两侧的导航数据连接位于所述区域边界两侧的路径,并在连接后的路径上向所述路径终点位置方向探索路径。

进一步地,若当前探索位置位于所述网格内的一个地理区域内时,对于当前探索位置位于网格内的跨区域边界的路段上的情形,本发明实施例还包括:

判断当前探索位置是否位于跨地理区域边界的路段上,如果是,则将该路段中属于当前探索位置所在区域中的一段标记为实路段,将该路段中的另一段标记为虚路段;通过所述跨地理区域边界的路段中的虚路段连接位于所述边界两侧区域中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。举例说明:参见图3,路段b是跨区域1和区域3的一个路段,假设当前探索位置位于区域1内的路段b上,则将路段b中位于区域1内的部分路段标记为实路段,将路段b中位于区域3内的部分路段标记为虚路段,同时对虚路段侧的路段端点进行标记,需要说明的是,区域1与区域3的区域边界上可能存在多个路段或不存在任何路段,如果存在,则对每个路段、路段端点作上述标记,以便在当前探索位置位于区域1与区域3的区域边界时,通过补齐区域3的虚路段(即使虚路段变为实路段)使跨区域边界的路径连接起来,以便在连接后的路径上继续向所述路径终点位置方向探索路径。其中,对所述路段端点进行标记,是为了确定虚路段的终端位置。

情况2:当前探索位置位于网格边界处。

若当前探索位置位于其所在网格的网格边界上,则可利用网格边界两侧的导航数据,将网格边界两侧的路径相互关联,进而使网格边界两侧的路径衔接起来,从而继续在衔接后路径上向路径终点方向探索路径。

基于上述情况2,若当前探索位置位于网格的边界上,则根据边界两侧网格的导航数据连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

在本发明实施例中,可以采用a*算法探索路径,为了满足算法需要,需预先创建内存拓扑结构,并将导航数据进行重新组织。具体地,所述重新组织后的导航数据为由至少一个第一结点和/或至少一个第二结点组成的第一链表,所述第一结点包括第一数据域和第一指针域,所述第二结点包括第二数据域和第二指针域。其中,每个第一结点唯一对应一条道路,每个第二结点唯一对应一个路口。

具体地,

所述第一数据域包括:表示当前探索位置所在路段对应的数据类型,当前探索位置所在路段所属的网格的网格索引,以及当前探索位置所在路段的相关信息。

所述第二数据域包括:表示当前探索位置所在路段端点对应的数据类型,当前探索位置所在路段端点所在网格的网格索引,以及当前探索位置所在路段端点的相关信息。

所述第一指针域包括:第一指针和第二指针,所述第一指针表示将与当前探索位置所在路段连接的所有路径按优先级排序的路径链表,所述第二指针表示与当前探索位置所在路段连接的所有路径中最优路径的路径链表;

所述第二指针域包括:第三指针、第四指针、第五指针和第六指针,所述第三指针表示与当前探索位置所在路段端点连接的所有虚路段的路段链表,所述第四指针表示与当前探索位置所在路段端点连接的所有实路段的路段链表,所述第五指针表示将与当前探索位置所在路段端点连接的所有路径按优先级排序的路径链表,所述第六指针表示与当前探索位置所在路段端点连接的所有路径中最优路径的路径链表。

在实际操作时,可对上述第一数据域和第二数据域中的内容作如下操作:

采用整型elementtype代表数据类型,用0表示路段端点,1表示实路段,2表示虚路段,以方便扩展用。其中,路段端点代表某一路口,路段代表某一道路。

采用整型tileidx表示路段或路段端点所在网格索引。所述网格索引就是计算每个图元所占据的网格或者所经过的网格单元集合,此处所述图元是路段或路段端点。

采用联合体data存储路段或路段端点的相关内容。所述路段的相关内容包括:路段编号,路段长度,路段所对应道路的限速、道路等级、权重(权重代表途径该道路的代价,所述代价可以包括驾驶时间、高速费用等),等等;所述路段端点的相关内容包括:路段端点编号,路段端点处是否还有其它路段端点,等等。

在实际操作时,可对上述第一指针域中的内容作如下操作:

采用指针next1(第一指针)表示将与当前探索位置所在路段连接的所有路径按优先级排序的路径链表。所述所有路径是指从当前探索位置所在路段到达所述路径终点的至少一条路径,通过权衡路径长短、花费时间等因素,将这些路径按照优先级进行排序,将其中的每条路径作为路径链表的一个结点。

采用指针parent1(第二指针)表示与当前探索位置所在路段连接的所有路径中最优路径的路径链表。所述最优路径的路径链表是指针next1中优先级最高的路径链表。

在实际操作时,可对上述第二指针域中的内容作如下操作:

采用指针left(第三指针)表示与当前探索位置所在路段端点连接的所有虚路段的路段链表,采用指针right(第四指针)表示与当前探索位置所在路段端点连接的所有实路段的路段链表。由于一个路段端点代表一个路口,则至少一条路段与该路口连接,所述至少一条路段包含虚路段和/或实路段,将其中的每个虚路段作为路段链表的一个结点(对应指针left),将其中的每个实路段作为路段链表的一个结点(对应指针right)。

采用指针next2(第五指针)表示将与路段端点连接的所有路径按优先级排序的路径链表。所述所有路径是指从当前探索位置所在路段段端点到达路径终点的至少一条路径,通过权衡路径长短、花费时间等因素,将这些路径按照优先级进行排序,将其中的每条路径作为路径链表的一个结点。

采用指针parent2(第六指针)表示与路段端点连接的所有路径中最优路径的路径链表。所述最优路径的路径链表是指针next2中优先级最高的路径链表。

为了更方便的了解本发明实施例,参见图4至图9,下面举例说明:

假设路径起点是北京的建筑物a(图4至图9中的①),路径终点是天津的建筑物b(图4至图9中的②)。假设所述第一距离阈值为当前探索位置所在图层的网格宽度的3倍,所述第二距离阈值为当前探索位置所在图层的网格宽度的1/2倍。

参见图4所示的地图13层的网格示意图之一,若地图13层是地图层级中最低层,则加载建筑物a所在网格a(13层)的导航数据,或同时加载建筑物a所在网格a(13层)及建筑物b所在网格b(13层)的导航数据,然后采用a*算法在13层从网格a向建筑物b方向探索路径。其中,网格a的网格编码为557467432。

由于建筑物a距离建筑物b较远,为了减少导航数据的加载量,有在地图层级中升层的机会便升层。即,若当前探索位置在网格a内且当前探索位置距离建筑物b的距离大于第一距离阈值(即13层中网格宽度的3倍),则由13层上升至10层(由于地图13层与10层之间的层级没有数据,所以直接上升至10层),并将当前探索位置对应到10层的相应位置(即当前探索位置的实际位置不变,只是改变其所在的地图层级)。

参见图5所示的地图10层的网格示意图之一,在上升到10层后,当前探索位置在10层网格c内,网格c的网格编码为67430684,在网格c内利用a*算法继续从当前探索位置向建筑物b探索路径。需要说明的是,在10层探索路径前,要提前加载网格c的导航数据。若当前探索位置在网格c内且当前探索位置距离建筑物b的距离仍大于第一距离阈值(即10层中网格宽度的3倍),则由10层上升至8层(由于地图10层与8层之间的层级没有数据,所以直接上升至8层),并将当前探索位置对应到8层的相应位置(即当前探索位置的实际位置不变,只是改变其所在的地图层级)。

参见图6所示的地图8层的网格示意图之一,在上升到8层后,当前探索位置在8层网格d内,网格d的网格编码为16797329,若当前探索位置在网格d内且当前探索位置距离建筑物b的距离小于第一距离阈值(即8层中网格宽度的3倍)且大于第二距离阈值(即8层中网格宽度的1/2倍),则不再升层,而是在网格d内利用a*算法继续从当前探索位置向建筑物b探索路径。需要说明的是,在8层探索路径前,要提前加载网格d的导航数据。

参见图7所示的地图8层的网格示意图之二,在8层上的路径探索过程中,需要从网格d(网格编码为16797329)进入网格e(网格编码为16797332),在历经网格d和网格e的网格边界时,要加载网格e的导航数据,但是,在网格e中,可以由北京进入另外一个区域13(河北),也可以由北京进入另外一个区域12(天津),由于网格e涉及三个不同区域且路径探索是由北京到天津,所以历经网格d和网格e的网格边界处时加载网格e中涉及北京区域的导航数据,并在网格e的北京区域探索路径,在历经网格e中北京与天津的区域边界时,再加载网格e中涉及天津区域的导航数据,进而继续在网格e的天津区域探索路径。

参见图8所示的地图10层的网格示意图之二,若当前探索位置距离建筑物b的距离小于第二距离阈值(即8层中网格宽度的1/2倍),则由8层下降至10层(由于地图10层与8层之间的层级没有数据,所以直接下降至10层),并将当前探索位置对应到10层的相应位置(即当前探索位置的实际位置不变,只是改变其所在的地图层级)。在下降到10层后,当前探索位置在10层网格f内,网格f的网格编码为67429358。

若当前探索位置距离建筑物b的距离小于第二距离阈值(即10层中网格宽度的1/2倍),则由10层下降至13层(由于地图13层与10层之间的层级没有数据,所以直接下降至13层),并将当前探索位置对应到13层的相应位置(即当前探索位置的实际位置不变,只是改变其所在的地图层级)。

参见图9所示的地图13层的网格示意图之二,在下降到13层后,因为13层是地图图层中的最低层,所以不再继续降层。当前探索位置在13层网格g内,网格g的网格编码为557382504,在网格g找到路径终点id=96后,则完成本次路径探索。

本发明实施例提供的路径规划方法,在由路径起点向路径终点的路径探索过程中,若当前探索位置距离路径终点较远时,则从当前图层向上升层,并根据升层后的图层上的导航数据,在升层后的图层上继续探索路径,若当前探索位置距离路径终点较近时,则从当前地图层级向下降层,并根据降层后的图层上的导航数据,在降层后的图层上继续探索路径,直到降到最低层后在最低层探索路径终点。可见,由于在地图图层中,随着层级的上升,图层上显示的路径越精简,对应的导航数据量越少,因此通过升层处理,可以减少路径规划过程中导航数据的加载量,提高了路径规划效率;反之,随着层级的下降,图层上显示的路径越详细,对应的导航数据量越大,因此通过降层处理,虽然需要加载的导航数据量增多,但是可以定位精确的终点位置,且相比较只在最低层探索路径,在一定程度上大大减少了导航数据量的加载。

参见图10,为本发明实施例提供的路径规划装置的组成示意图,该路径规划装置包括:

探索装置1000,用于从路径起点位置开始向路径终点位置探索路径;

所述探索装置1000具体包括:

升层单元1001,用于若当前探索位置与所述路径终点位置之间的距离大于或等于预设的第一距离阈值,则对当前地图图层进行升层;

探索单元1002,用于根据所述升层单元1001升层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

所述探索单元1002,还用于若当前探索位置与所述路径终点位置之间的距离小于预设的第一距离阈值且大于或等于预设的第二距离阈值,则根据当前地图图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

降层单元1003,用于若当前探索位置与所述路径终点位置之间的距离小于预设的第二距离阈值,则对当前地图图层进行降层;

所述探索单元1002,还用于若所述降层单元1003降层后的图层为地图图层的最低层,则根据降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径,否则,根据所述降层单元降层后的图层对应的导航数据,从当前探索位置向所述路径终点位置探索路径;

其中,所述当前探索位置为探索路径过程中除所述路径终点位置外的探索位置,所述当前地图图层为所述当前探索位置所在的图层;

其中,所述第一距离阈值为当前探索位置所在图层的网格宽度的第一设定倍数,所述第二距离阈值为当前探索位置所在图层的网格宽度的第二设定倍数,所述第一设定倍数大于所述第二设定倍数。

在本发明实施例中,所述探索单元1002包括:

网格内探索模块,用于若当前探索位置位于网格内,则根据所述网格内的导航数据,在所述网格内从所述当前探索位置向所述路径终点位置方向探索路径;

网格边界探索模块,用于若当前探索位置位于网格的边界上,则根据边界两侧网格的导航数据连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

在本发明实施例中,所述网格内探索模块包括:

第一标记子模块,用于根据所述网格内的导航数据,判断当前探索位置是否位于跨网格边界的路段上,如果是,则将该路段中属于当前探索位置所在网格的一段标记为实路段,将该路段中的另一段标记为虚路段;

第一探索子模块,用于通过所述第一标记子模块标记的所述跨网格边界的路段中的虚路段连接位于所述边界两侧网格中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

在本发明实施例中,当当前探索位置所在网格涉及至少两个不同地理区域时,若当前探索位置位于所述网格内的地理区域边界上,则所述网格内探索模块包括:

路径连接子模块,用于根据所述网格内地理区域边界两侧的导航数据连接位于所述区域边界两侧的路径;

第二探索子模块,用于在所述路径连接子模块连接后的路径上向所述路径终点位置方向探索路径。

在本发明实施例中,若当前探索位置位于所述网格内的一个地理区域内时,所述网格内探索模块进一步包括:

第二标记子模块,用于判断当前探索位置是否位于跨地理区域边界的路段上,如果是,则将该路段中属于当前探索位置所在区域中的一段标记为实路段,将该路段中的另一段标记为虚路段;

第三探索子模块,用于通过所述第二标记子模块标记的所述跨地理区域边界的路段中的虚路段连接位于所述边界两侧区域中的路径,在连接后的路径上从当前探索位置向所述路径终点位置方向探索路径。

在本发明实施例中,所述升层单元1001,具体包括:

上层信息加载模块,用于加载当前地图图层的上层图层的拓扑信息;

上层位置映射模块,用于根据所述当前地图图层的拓扑信息与所述上层信息加载模块加载的上层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述上层图层的对应位置,将映射后的对应位置作为新的当前探索位置;

所述降层单元1003,具体包括:

下层信息加载模块,用于加载当前地图图层的下层图层的拓扑信息;

下层位置映射模块,用于根据所述当前地图图层的拓扑信息与所述下层信息加载模块加载的下层图层的拓扑信息之间的关联关系,将当前探索位置从所述当前地图图层映射到所述下层图层的对应位置,将映射后的对应位置作为新的当前探索位置。

在本发明实施例中,所述导航数据为由至少一个第一结点和/或至少一个第二结点组成的链表,所述第一结点包括第一数据域和第一指针域,所述第二结点包括第二数据域和第二指针域;

其中,

所述第一数据域至少包括:表示当前探索位置所在路段对应的数据类型,当前探索位置所在路段所属的网格的网格索引;

所述第一指针域包括:第一指针和第二指针,所述第一指针表示将与当前探索位置所在路段连接的所有路径按优先级排序的路径链表,所述第二指针表示与当前探索位置所在路段连接的所有路径中最优路径的路径链表;

所述第二数据域至少包括:表示当前探索位置所在路段端点对应的数据类型,当前探索位置所在路段端点所在网格的网格索引;

所述第二指针域包括:第三指针、第四指针、第五指针和第六指针,所述第三指针表示与当前探索位置所在路段端点连接的所有虚路段的路段链表,所述第四指针表示与当前探索位置所在路段端点连接的所有实路段的路段链表,所述第五指针表示将与当前探索位置所在路段端点连接的所有路径按优先级排序的路径链表,所述第六指针表示与当前探索位置所在路段端点连接的所有路径中最优路径的路径链表。

本发明实施例提供的路径规划装置,在由路径起点向路径终点的路径探索过程中,若当前探索位置距离路径终点较远时,则从当前图层向上升层,并根据升层后的图层上的导航数据,在升层后的图层上继续探索路径,若当前探索位置距离路径终点较近时,则从当前地图层级向下降层,并根据降层后的图层上的导航数据,在降层后的图层上继续探索路径,直到降到最低层后在最低层探索路径终点。可见,由于在地图图层中,随着层级的上升,图层上显示的路径越精简,对应的导航数据量越少,因此通过升层处理,可以减少路径规划过程中导航数据的加载量,提高了路径规划效率;反之,随着层级的下降,图层上显示的路径越详细,对应的导航数据量越大,因此通过降层处理,虽然需要加载的导航数据量增多,但是可以定位精确的终点位置,且相比较只在最低层探索路径,在一定程度上大大减少了导航数据量的加载。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。

需要说明的是,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1