一种用于跳点搜索最短路径算法的矢量地图预处理方法与流程

文档序号:20277263发布日期:2020-04-07 14:40阅读:744来源:国知局
一种用于跳点搜索最短路径算法的矢量地图预处理方法与流程

本发明涉及地图搜索技术领域,更具体地说,涉及一种用于跳点搜索最短路径算法的矢量地图预处理方法。



背景技术:

最短路径问题是一个经典算法问题,旨在寻找基于网格地图(每个网格存储有或无障碍的信息)的两结点之间的最短路径。例如dijkstra、a*、跳点搜索(jumppointsearch)算法等经典算法,都是用来解决这类问题。其中,jps已经被证明是基于无权重格子、没有预处理情况下寻路最快的算法,该算法及其变种在连续三届基于网格寻径的比赛(thegrid-basedpathplanningcompetition)中都高居榜首,目前该方法已被广泛应用于游戏开发、道路网最短路径规划等多个寻径领域。

根据jump_point_search(简称jps算法)中的论文论述(harabor,d.,andgrastien,al.2011.onlinegraphpruningforpathfindingongridmaps.inaaai.),其中的重要的一步是搜索地图中的“强迫邻居”结点。

搜寻“强迫邻居”结点中的一个重要过程就是沿网格地图中的一定方向及规则,搜寻路径旁网格为障碍物的结点。而开放区域的矢量地图中,往往存在大块的可通行区域和不可通行区域,以海图为例,以下为我国某区域海岸线的矢量海图。如图2所示,其中黑色代表陆地区域,白色代表海面可通行区域。因此,我们针对跳点搜索算法需要沿一定方向搜索障碍物位置及地图通常有大片相同属性(有或无障碍)的区域的这两个特点,提出了针对矢量地图的预处理方法。举例说明:类似无人船寻径导航所需要的矢量海图,中国东海及南海海岸线附近约1500公里*1500公里的区域,要求其精度为30米,则网格地图为50000*50000大小,按计算机中的最小单位字节存储,则需要近2.5gb的存储空间,这使得寻径算法无论是地图载入和网格搜索上效率都很低,使用本专利中的方法,在最大层数p为3,合成单元k*k大小为4*4的条件下,仅需数十兆左右空间即可存储上述网格地图,可大幅加快jps算法的地图载入速度、寻径效率,同时在不损失寻径精度的前提下减少了网格地图的存储空间。

随着科技发展,开放式地图区域的最短路径规划(如海上无人艇、无人机)在机器人导航领域对该类算法提出了更高的需求。开放式地图区域为保证精度及地图数据大小通常是矢量地图,而上述算法只能针对网格地图进行最短路径搜索。在兼顾算法计算量及地图精度的前提下,如何将矢量地图预处理为合适算法使用的网格地图,是一个亟待解决的问题:对某一区域的矢量地图,若划分网格较细,则网格地图精度高、寻径路径精度高,但算法需要遍历更多的网格,耗时较长,且需要存储的网格地图数据量巨大。若划分网格较粗,则网格地图精度低、寻径路径精度低,但算法需要遍历的网格减少,算法执行效率快,网格地图存储量也可控制在一定范围内。



技术实现要素:

针对现有技术的不足,本发明的目的在于提供一种用于跳点搜索最短路径算法的矢量地图预处理方法,该方法针对跳点搜索最短路径算法特点,可兼顾优化算法效率、地图精度、网格地图存储量。

本发明的目的可以通过以下技术方案实现:

一种用于跳点搜索最短路径算法的矢量地图预处理方法,包括以下步骤:

s1:选取应用需求的精度,将一定范围内的矢量地图转为m*n的网格地图,定义每一个格子为一个基础单元e0,所述基础单元e0存储该网格有障碍或者无障碍的信息;

s2:遍历m*n的网格地图,将每k*k个基础单元e0合成为一个单元e1,获得第一层压缩地图,则第一层压缩地图的基础单元e1按下述规则存储了以下内容:

若k*k个基础单元e0全为障碍,则由其组成的e1定义为有障碍,抛弃原k*k个基础单元e0;

若k*k个基础单元e0全无障碍,则由其组成的e1定义为无障碍,抛弃原k*k个基础单元e0;

若k*k个基础单元既存在有障碍的网格点,也存在无障碍的网格点,则记录下该e1对应的k*k个基础单元e0,记为不确定状态。

s3:遍历第一层压缩地图,将每k*k个基础单元e1合成为一个单元e2,获得第二层的压缩地图,则第二层压缩地图的基础单元e2按下述规则存储了以下内容:

若k*k个基础单元e1全为障碍,则由其组成的e2定义为有障碍,抛弃原k*k个基础单元e1;

若k*k个基础单元e2全无障碍,则由其组成的e2定义为无障碍,抛弃原k*k个基础单元e1;

若k*k个基础单元e1包含有、无障碍两种网格、或包含不确定状态的网格,则记录下该e2对应的k*k个基础单元e1,记为不确定状态。

s4:重复步骤s3直至将上一层压缩地图的基础单元合成为一个新单元直至达到满足要求的最大层数。

本发明的有益效果:

本发明提供一种对某一区域的矢量地图进行压缩的方法,根据需求的精度,划分网格,使得跳点搜索最短路径算法需要遍历的网格减少,算法执行效率快,网格地图存储量也可控制在一定范围内。

附图说明

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

图1为本发明的矢量地图预处理方法的流程图;

图2为海岸线的矢量海图;

图3为本实施例中步骤2中压缩规则的示意图;

图4为本实施例中步骤3中压缩规则的示意图。

具体实施方式

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

如图1所示,一种用于跳点搜索最短路径算法的矢量地图预处理方法,包括以下步骤:

s1:选取应用需求的精度,将一定范围内的矢量地图转为m*n的网格地图,定义每一个格子为一个基础单元e0,所述基础单元e0存储该网格有障碍或者无障碍的信息;

s2:遍历m*n的网格地图,将每k*k个基础单元e0合成为一个单元e1,获得第一层压缩地图,压缩规则方法如图3所示,则第一层压缩地图的基础单元e1按下述规则存储了以下内容:

若k*k个基础单元e0全为障碍,则由其组成的e1定义为有障碍,抛弃原k*k个基础单元e0;

若k*k个基础单元e0全无障碍,则由其组成的e1定义为无障碍,抛弃原k*k个基础单元e0;

若k*k个基础单元既存在有障碍的网格点,也存在无障碍的网格点,则记录下该e1对应的k*k个基础单元e0,记为不确定状态。

s3:遍历第一层压缩地图,将每k*k个基础单元e1合成为一个单元e2,获得第二层的压缩地图,压缩规则方法如图4所示,,则第二层压缩地图的基础单元e2按下述规则存储了以下内容:

若k*k个基础单元e1全为障碍,则由其组成的e2定义为有障碍,抛弃原k*k个基础单元e1;

若k*k个基础单元e2全无障碍,则由其组成的e2定义为无障碍,抛弃原k*k个基础单元e1;

若k*k个基础单元e1包含有、无障碍两种网格、或包含不确定状态的网格,则记录下该e2对应的k*k个基础单元e1,记为不确定状态。

s4:重复步骤s3直至将上一层压缩地图的基础单元合成为一个新单元直至达到满足要求的最大层数。

本发明提供一种对某一区域的矢量地图进行压缩的方法,根据需求的精度,划分网格,使得跳点搜索最短路径算法需要遍历的网格减少,算法执行效率快,网格地图存储量也可控制在一定范围内。

上述方法能够在不降低寻径精度的前提下,最大程度的压缩网格地图,其本质是只存储有无障碍网格的交界处的信息。在使用jps寻径时,首先在最大层地图上进行网格搜索,可大幅减少需要搜索的网格数量,提高了网格搜索效率,如遇到不确定状态的基础单元,可直接读取对应其所对应的上一层压缩地图格式,直到能够确定为有、无障碍为止,从而保证无精度损失。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

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