CN110967015B - 一种路径规划方法及*** - Google Patents
一种路径规划方法及*** Download PDFInfo
- Publication number
- CN110967015B CN110967015B CN201911138928.5A CN201911138928A CN110967015B CN 110967015 B CN110967015 B CN 110967015B CN 201911138928 A CN201911138928 A CN 201911138928A CN 110967015 B CN110967015 B CN 110967015B
- Authority
- CN
- China
- Prior art keywords
- point
- jumping
- path
- jump
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/20—Instruments for performing navigational calculations
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种路径规划方法及***,该方法包括以均匀网格地图中塌缩跳点的网格点所在位置进行预处理;获取起点和终点位置;在起点与终点之间需要寻找最优复合主序路径时,采用connect‑search搜索最优路径,在连接过程生成起始子节点时和/或在搜索过程扩展跳点时进行剪枝;经过将上述剪枝过程与A*算法的最佳优先搜索结合,构建起点与终点之间的最优路径并存储。解决现有技术中信息丢失及速度受限等问题,实现提高搜索速度。
Description
技术领域
本发明涉及人工智能路径规划技术领域,具体是一种基于几何容器的路径规划方法及***。
背景技术
在人工智能领域,机器人技术和计算机游戏智能被视为建模人类在复杂环境下的感知、规划、决策和行动能力的综合领域。近年来,各类型机器人在生产生活中广泛使用,以及学界与工业界对计算机游戏智能的重视程度逐渐提高,典型的例子包括DeepMind团队开发的StarCraft游戏AI和OpenAI公司开发的Dota游戏AI等。作为机器人和游戏非玩家角色(NPC,Non-Player Characters)各方面技术的基础,基于均匀网格(uniform grids)地图的最短路径规划技术随着GPPC(Grid-based Path Planning Competitions)竞赛的举行和工业界对典型地图测试集的开放,在近十年也取得了显著的进步。作为一个基础服务,在人工智能中经典的启发式搜索问题求解技术、地图空间拓扑结构提取技术领域中,很多场景中有限的计算资源需要同时应答大量智能体的路径规划请求,因此规划技术的快速响应能力最受关注。
其中最为著名的一类算法称为跳点搜索(JPS,Jump Point Search),主要由澳大利亚莫纳什大学的Daniel Harabor博士提出(Harabor D,Grastien A.Online GraphPruning for Pathfinding on Grid Maps[C]//National Conference on ArtificialIntelligence.2011:1114–1119.Harabor D,Grastien A.Improving Jump Point Search[C]//International Conference on Automated Planning and Scheduling.2014.)。当智能体在网格地图上移动时,JPS在相同起点和终点、相等长度的对称路径中,将对角方向移动优先路径确定为主要偏序(diagonal-first canonical ordering),将不满足该原则的其他所有路径剔除在搜索空间之外。理论证明,任何可通行的两个位置之间都存在至少一条满足该规则的最短路径。如图1所示,被该偏序规则剔除的子节点(灰色所示)通常可以由当前节点的父节点从更短的路径或长度相同但对角移动出现更早的路径到达。通常,这样的剪枝递归使用可以使某一节点的子节点仅剩1个或0个,不仅降低了正在被扩展节点的分支因子,也减小了子节点的分支因子。
另外,JPS应用A*算法时并不将中间节点加入Open表中,除非遇到图1(c)中需要将前进方向向其他分支扩展的节点时,才将这样的节点加入Open表中以待扩展。中间节点都将被跳过,因此图1(c)中的特殊节点称为“跳点”。
JPS算法仅需在线处理,不涉及地图预处理,相较单纯的A*算法速度提高了一个数量级。但它的一个主要缺点是扩展节点时需要进行大量的逐行逐列的中间节点扫描和判断。基于此,JPS+在离线阶段为每一可通行节点的每一可通行方向计算和存储与通过该方向可到达的第一个跳点或障碍物的距离。这一预存信息进一步提高了搜索速度。进一步地,JPS+(P)在搜索时采用中转剪枝(intermediate pruning)技术,将对角跳点视为过渡节点不加入Open表进行处理,相比JPS+一定程度降低了Open表操作次数。
通过与几何容器(Geometric Containers)剪枝技术的结合,JPS的性能得到了进一步大幅度的提升。几何容器技术是一类目标引导的加速技术,用来在搜索阶段剪除不可能是当前节点通过最短路径到达目标位置的边,其中最简单有效的版本成为包围盒(Bounding Boxes)。结合了该技术的方法因此简称JPS+BB(Rabin S,Sturtevant NR.Combining Bounding Boxes and JPS to Prune Grid Pathfinding[C]//AAAIConference on Artificial Intelligence.2016:746–752.)。
大体来说,离线阶段JPS+BB首先为图中每一条边初始化一个空白矩形盒,然后从每一可通行节点运行采用了diagonal-first偏序的Dijkstra算法覆盖其他所有与其通行的节点。当Dijkstra算法扩展到某一节点时,就将其加入到源节点对应边的矩形盒中。当所有节点的预处理进行完毕后,就为每一条边形成了一个包围所有可通过最优的diagonal-first路径到达的矩形范围,尽管因为形状原因其中可能含有多余节点。
JPS+BB的路径搜索过程如图2所示。该示例以A0和B5分别为起点和终点。当扩展节点B0时,有三条边符合偏序规则,因为仅有右下方向的边对应矩形包围盒中包含目标位置,因此其他两边被安全剪枝。需要注意的是,右下方向的矩形包围盒中除阴影部分的节点是可从B0由右下方向的移动最优到达以外,还包含了部分多余节点。类似地,下一步扩展节点D2时仅需探索向下的边。基于离线预先计算的剪枝技术为JPS+算法提升了一个数量级左右的性能提升,使其能够在经典测试集下取得平均数十微秒的搜索速度。然而,这一显著进步的代价则是必须在预处理阶段投入大量的CPU时间和存储空间。若要降低这一代价,则仅需对跳点位置进行预处理即可。
这一处理将造成算法预处理信息一定程度上的丢失,主要在于若起点是普通节点而非跳点,则算法无法从起点开始就进行剪枝,使得初始加入Open表的节点数量增加,从而若按照原搜索思路则将使搜索速度受到影响。另一点,JPS+BB在进行A*算法最佳优先搜索时,在类似于图2(b)中D2节点这样的对角跳点(下文有定义)上也进行了加入Open表和从其中取出的操作。由于Open表一般采用二叉堆优先队列的数据结构进行表示,这些操作都将引起堆结构的重排序,一定程度限制了搜索速度的提升。
发明内容
本发明提供一种路径规划方法及***,用于克服现有技术中预处理后信息丢失或搜索速度慢等缺陷,预处理后保证信息大幅压缩的情况下实现搜索速度大幅提升。
为实现上述目的,本发明提供一种路径规划方法,包括以下步骤:
以均匀网格地图中塌缩跳点的网格点所在位置进行预处理;
获取起点和终点位置;
在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式搜索最优路径,在连接过程生成起始子节点时和/或在搜索过程扩展跳点时进行剪枝;
通过将上述剪枝过程运用到A*算法的最佳优先搜索框架中寻找起点与终点之间的最优路径并存储。
为实现上述目的,本发明还提供一种路径规划***,包括存储器和处理器,所述存储器中存储有路径规划程序,在所述处理器运行所述路径规划程序时执行所述路径规划方法的步骤。
本发明提供的路径规划方法及***,采用connect-search在塌缩跳点的网格点搜索最优路径时,在起点与终点之间没有简单主序路径连接时需要寻找最优复合主序路径,在连接过程中寻找与起点符合对角优先原则的所有轴向跳点并生成起始子节点,所述轴向跳点通常数量较多,通过对不可能到达的终点的轴向跳点进行剪枝,以缩减初始加入Open表的节点的数量,从而若按照原搜索思路则将使搜索速度得到提升;或者在搜索过程中,对某一跳点进行扩展时在对角方向寻找中间跳点,中间跳点并不作为子节点放入Open表,例如:而仅在中间跳点主序扩展方向包围盒中包含目标位置的轴向方向上寻找子节点,进行生成并加入Open表中;若对角方向的包围盒中包含目标位置,则递归地进行上述过程。不符合条件的轴向子节点以及所有的对角跳点都不会被加入Open表中。在将搜索过程中生成的子节点加入Open表和从其中取出的操作过程中,Open表一般采用二叉堆优先队列的数据结构进行表示,这些操作避免引起堆结构的重排序,从而实现加速搜索的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1(a)为现有JPS技术中非跳点情景下对角移动时的剪枝示意图;
图1(b)为现有JPS技术中非跳点情景下轴向移动时的剪枝示意图;
图1(c)为现有JPS技术中在跳点位置处的剪枝示意图;
图2(a)为现有技术中JPS+BB运行过程中节点B0包围盒示意图;
图2(b)为现有技术中JPS+BB运行过程中节点D2包围盒示意图;
图3(a)为本发明实施例一提供的路径规划方法中轴向跳点的示意图;
图3(b)为本发明实施例一提供的路径规划方法中对角跳点的示意图;
图4为实施例一中主序路径分类示意图;
图5为实施例一中JPS+BB+进行路径规划的主要算法流程图;
图6为实施例一中利用已有的包围盒信息进行延后的剪枝算法流程图;
图7为实施例一中对当前处于搜索前沿的节点进行扩展的算法流程图;
图8为实施例一中connect示例图;
图9为实施例一中serch扩展过程示例图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是物理连接或无线通信连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
如附图1-9所示,本发明实施例提供一种路径规划方法,其特征在于,包括以下步骤:
S1,以均匀网格地图中塌缩跳点的网格点所在位置进行预处理;
轴向跳点为:均匀网格地图中障碍物对角方向的可通行点;至少能在水平方向和垂直方向上移动;一个轴向跳点(straight jump point)可视为一个三元组其中包含一个网格位置n和两个轴向的移动方向。它们满足:(1)和是两个可通行的移动;(2)(3)不可通行。
直观来说,定义1中的网格位置n即为障碍物的拐角,而方向称为该跳点的父方向,为搜索的来向。以图3(a)为例,由实心圆和箭头分别表示位置和来向,图中标出了所有的轴向跳点和对应的父方向,可以看到符合条件的n一般附着有两个以上的轴向跳点。另外,将和称为该跳点的主序扩展方向。
图3(b)展示了对角跳点与轴向跳点的位置关系。空心圆圈和灰色箭头分别表示位置和来向,需要注意,同一轴向跳点可同时被多个对角跳点到达,甚至同一位置可能同时使到达某一轴向跳点的不同对角跳点的位置,如(D1/D2/D3,SW/SE)。
这里塌缩跳点的网格点的含义指的是:位于同一网格点位置至少具有来自于两个方向的父节点,该两个方向来自于:上、下、左、右、右上、右下、左上、左下中任意两个,这里的跳点可以是轴向跳点,也可以是对角跳点,也可以同时即是轴向跳点也是对角跳点;如果同一网格点塌缩多方向跳点,则仅就该位置搜索计算一次,不做重复计算;
如上所述,轴向跳点的位置可简单地根据其与障碍物的相对位置关系通过对所有格点的一次扫描而全部快速识别。然而,我们并不需要将所有的对角跳点都识别出来并对其进行包围盒计算。这里,对两类对角跳点进行区分。
一个有源对角跳点(active diagonal jump point)是具有一个轴向跳点作为其父节点,其中是该轴向跳点的对角主序扩展方向,n可以有s经过无障碍的移动到达。不满足该条件的其余位置为无源对角跳点。举例来说,图3(b)中的(H5,SE)因为有(D3,E,S)作为父节点,为一个有源对角跳点,可以通过向东运动到达另一轴向跳点(I5,E,N)。而(E5,SE)则为无源对角跳点。
所有符合diagonal-first规则的路径可以归为两类,如图4所示。第一类,我们称其为简单主序路径(Simple Canonical Paths),它们不涉及在跳点位置的搜索方向转换,这里的转换指至少在父节点方向的一个分解方向上与反方向上移动,如图中<s1,t1>所示,寻路时可以通过一次深度优先搜索判断。第二类称为复合主序路径(Compound CanonicalPaths),可表示为<s,(ds),s1,(d1)x1,s2,(d2)x2,s3,…,sn,(dt),t>,如图中<s2,t2>所示。这类路径可划分为三个部分:(1)起始部分:从起点s到第一个轴向跳点s1,其中可能包含一个无源对角跳点ds;(2)中间部分:从第一个轴向跳点s1到最后一个轴向跳点sn,相邻两个之间有xi个有源对角跳点;(3)结尾部分:从sn到终点t,可能包含一个无源跳点。
需要说明的是,有些网格点既附着有轴向跳点,同时也有对角跳点;
获取轴向跳点和对角条件的方法可以根据上面的定义由程序来实现,具体方法不限。在本发明一实施例中,例如:通过识别障碍物的拐点来获取轴向跳点,即通过识别与障碍物的位置关系获得;对角跳点可通过识别与轴向跳点的位置关系获得;
若要降低预处理阶段背景技术中存在投入大量的CPU时间和存储空间这一代价,则仅需对跳点位置进行预处理即可,参见步骤S1。这一处理将造成算法预处理信息一定程度上的丢失,主要在于若起点是普通节点而非跳点,则算法无法从起点开始就进行剪枝,使得初始加入Open表的节点数量增加,从而若按照原搜索思路则将使搜索速度受到影响。另一点,JPS+BB(几何容器与剪枝融合的算法)在进行A*算法最佳优先搜索时,参见图2(a),对于起点s和终点t,s的起始子节点B0存在两个轴向方向以及对角方向共三个主序扩展方向的包围盒,轴向两个方向包围盒分别由虚线矩形框表示,对角方向包围盒用135度剖面线覆盖的区域表示;在类似于图2(b)中D2节点这样的对角跳点(下文有定义)上也进行了加入Open表和从其中取出的操作。由于Open表一般采用二叉堆优先队列的数据结构进行表示,这些操作都将引起堆结构的重排序,一定程度限制了搜索速度的提升。鉴于此,本发明采用以下方案进行剪枝以优化搜索速度。
S2,获取起点和终点位置;
在本发明一实施例中,智能机器人所在网格点位置或智能游戏中可移动对象所在网格点位置形成这里的起点,由操作者或玩家输入的指定网格点位置形成终点。
优选地,S2之后还包括:
S21,判断起点和终点是否为障碍物;
S22,在起点和终点均非障碍物时,判断两者位置是否重合;
S23,在起点和终点位置不重合时,判断是否存在一条简单主序路径连接起点与终点;
S24,存在简单主序路径时,将所述简单主序路径作为最优路径并存储;不存在简单主序路径时,利用connect-search方式搜索复合主序路径。
基于上述观察,在本发明一优选实施例中给出本发明JPS+BB+进行路径规划的主要流程。如Algorithm 1所示。以起点s和目标点t为输入,算法首先判断起点终点是否为障碍物,或两者是否位置重合(第2-3行)。若非,再判断是否可通过一条简单主序路径连接两点,若可则直接返回该路径(第4-5行)。若非,则需要寻找到连接两点的最优复合主序路径,采用connect-search的寻路过程,其中connect是指生成起点的所有合法轴向跳点子节点(对应复合主序路径定义中的s1),并将它们加入Open表中以待扩展(第6行)。然后按照A*算法最佳优先搜索的流程运行算法(第7-12行),参见图5。
S3,在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式搜索最优路径,在连接过程生成起始子节点时和/或在搜索过程扩展跳点时进行剪枝;
在本发明一实施例中通过检测几何容器在搜索过程对不可能通过最优主序路径到达目标的分支进行剪枝。
在本发明另一实施例中通过读取压缩模式数据库对不可能达到终点的路径进行剪枝。在连接过程中生成起始子节点时通过与模式数据库中存储的最优方向对比,方向不存在交集的轴向跳点剪枝,在搜索过程扩展跳点时通过局部扩展进行剪枝。
这里生成起始子节点的过程是connect程序,建立给定起点与塌缩跳点之间的连接关系,这里的起始子节点的含义指的是根据跳跃距离表寻找起点所有符合对角优先原则的轴向跳点并生成起始子节点,扩展跳点的含义对某一跳点进行扩展时在对角方向寻找中间跳点,中间跳点并不作为子节点放入Open表;在生成起始子节点的过程中同时存在不止一个轴向上节点满足起始子节点要求,在扩展跳点的过程中,也存在多个中间跳点;如果都放入open表进行搜索计算,将会导致Open表的节点数量增加,从而若按照原搜索思路则将使搜索速度受到影响,剪枝就是缩减Open表的节点数量的过程;因此在上述两个过程中至少一个过程进行剪枝;在本发明一优选实施例中,最后只保留可能到达目标节点(终点)的起始子节点,其余不可能到达目标节点的起始子节点均删除,完成起始子节点的剪枝;最后只保留一个能够直接到达目标节点或通过一简单路径到达目标节点的扩展节点,完成扩展子节点的剪枝;最后保留的起始子节点和扩展子节点放入open表进行搜索计算,将会大大提升搜索速度。
S4,经过将上述剪枝过程与A*算法的最佳优先搜索结合,构建起点与终点之间的最优路径并存储;
可以根据上述起始子节点和/或扩展子节点在其主序扩展方向上依次扩展获得;也可在步骤S3中寻路过程中即搜索扩展子节点的过程中,进行过路径计算,并保存了路径,可直接从存储的数据库中提取获得。
本发明将从充分利用稀疏的预处理数据的角度解决现有技术中预处理信息一定程度上的丢失和Open表将引起堆结构的重排序限制了搜索速度提升两个问题,进行搜索速度的提升。
优选地,步骤S1述以均匀网格地图中塌缩跳点的网格位置进行预处理的步骤中采用的是几何容器算法,包括:
S01,对均匀网格地图进行结构分析,根据可通行点与障碍点的位置关系识别出所有轴向跳点;
S02,为均匀网格地图上所有可通行节点的所有可通行方向计算跳跃距离表;
S03,根据所述轴向跳点在对角方向上的跳跃距离表识别出所有对角跳点;
S04,以每个跳点塌缩位置为源节点进行面向全地图的经过对角优先修正后的Dijkstra搜索,对应每个可通行方向获取能将通过该方向最优到达的所有节点包围其中的矩形包围盒;
S05,搜索过程中每生成一个节点,都记录下源跳点到达该节点的路径的初始边,并将该节点压入Open表中;
S06,当源跳点到目标节点的最优路径找到时,则从Open表中取出目标节点进行扩展,将该目标节点加入源跳点对应边的包围盒中;
S07,当Open表为空时结束对当前跳点的搜索,进入下一跳点的搜索。重复所有跳点搜索,完成预处理。
优选地,步骤S3所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在塌缩网格点中搜索最优路径,在连接过程中生成起始子节点时进行剪枝的步骤包括:
S301,通过读取跳跃距离表获得与起点符合对角优先原则的所有合法轴向跳点子节点;
S302,在所述合法轴向跳点子节点的所有主序扩展方向的包围盒中均未包含终点位置时,删除该合法轴向跳点子节点;
S303,遍历所有所述合法轴向跳点子节点,获得起始子节点。
需要说明的是:连接过程中,根据指定的起点,建立与塌缩网格点之间的连接关系,通过预处理后形成每个跳点所在网格位置的跳跃距离表,获得起点对角方向上的轴向跳点,作为合法轴向跳点子节点;通过读取合法轴向跳点所有主序扩展方向的包围盒,然后判断各包围盒与终点的位置关系,如果有一个主序扩展方向的包围盒包含该位置关系,则将该合法轴向跳点作为起始子节点加入open表中,如果所有主序扩展方向的包围盒均不包含终点,则将该合法轴向跳点删除,不作为起始子节点生成,这个过程中可以生成一个或多个起始子节点,均放入open表中,以待后续搜索过程中扩展利用。
虽然稀疏的预处理意味着很难从起点就开始利用包围盒进行剪枝,从而减少起点的子节点数量,但是当所有合法子节点找到之后,由于它们都是轴向跳点,可利用它们已有的包围盒信息进行延后的剪枝。算法流程如Algorithm2所示,参见图6。
算法输入为起点s、终点t和跳跃距离表T,符号表示节点n在方向上的距离值。算法遍历所有八个方向,通过距离值快速获得所有可能的子节点(第3、13行),其中对角方向需要一个迭代的过程(第9行)。对于这些没有通过起点的包围盒进行剪枝的节点,可以一定程度通过自身的包围盒和主序扩展方向进行剪枝(第4-6、14-16行)。若节点的所有主序方向的包围盒中都没有包含目标位置,则可安全地将其剔除搜素空间而不加入Open表中;反之,任一包围盒中含有目标位置都应考虑该节点。经过这一剪枝过程,能够留下的子节点一般只有1-2个,极大地减轻了搜索负担,从而与信息完备的JPS+BB更为接近。
优选地,步骤S3所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式搜索最优路径,在搜索过程中扩展跳点时进行剪枝的步骤包括:
S30,以所有所述起始子节点作为待扩展轴向跳点分别进行部分扩展;
S31,对所述待扩展轴向跳点沿对角方向进行扩展生成中转跳点;
S32,在所述对角方向的包围盒中包含终点位置时,根据跳跃距离与当前、终点之间的坐标差的比较结果,确定在到达该中转跳点是否能立即到达终点;
S33,在到达该中转跳点前能立即到达终点时将终点直接作为子节点加入open表,结束剪枝流程。
这里不能立即到达目标节点(即终点)指的是不能按照主序方向直接到达,具体例如遇到障碍物而不能直接到达;
优选地,S32之后还包括:在所述中转跳点不能立即到达终点时,获取所述中转跳点包围盒中包含终点的所有主序扩展方向;S32a,在所述主序扩展方向包含的轴向方向时,根据跳跃距离获取该方向上的轴向跳点,作为子节点进行生成并加入Open表中。
S32b,在所述主序扩展方向包含对角方向时,获取该方向上的下一对角跳点,递归重复中转跳点的扩展步骤。
S32b与S32a是上述在所述中转跳点不能立即到达终点时的两种具体情况,属于并列关系。
需要注意的是,在此过程中并不将任一个对角跳点作为子节点加入Open表中,仅将其作为可以利用检测包围盒进行剪枝的位置。原方法JPS+BB并无上述沿对角方向递归的过程,它在未被剪枝的每一个对角跳点处都会停留将其加入Open表中以待之后取出扩展。与之相比,本发明采用上述部分扩展策略,既最大化地利用了包围盒的剪枝效用,又尽可能减少了对Open表的操作。Open表一般由二叉堆的数据结构表示,每一次节点的加入和取出都将引发优先级的重排序,是搜索过程中较为耗时的操作。
节点的扩展过程,本发明借鉴JPS+(P)的中转剪枝(intermediate pruning)思路,将对角跳点仅作为可用于剪枝的中转位置,而无需将其加入Open表中而引发更多的操作。本发明JPS+BB+仅生成和扩展轴向跳点,而递归地剪除对角跳点。对当前处于搜索前沿的节点进行扩展的流程如Algorithm 3所示,对应Algorithm 1中的第12行。无论是轴向的还是对角的分支,算法首先通过canPruneEdge函数查询分支对应的包围盒标识(第3、9和13行)。若无法剪除,再检查目标点是否就在该分支的覆盖范围内,若是则可直接将其加入Open表中并返回。需要注意,在扩展轴向分支时,通过包围盒检测的子节点即加入Open表中(第6行);而在扩展对角方向时,并不处理对角跳点,而直到遇到轴向延伸方向的跳点时才将其加入(第15行),而并不没有将第11行中的节点n过多考虑。参见图7。
参见图8,给出了一个本发明实施连接过程剪枝的示例。起点和终点分别为F2和J1。通过对有效距离值(加粗表示)的提取,快速找到了所有未经剪枝的子节点B0、F5和H5。图中将它们各自的主序扩展方向和对应的包围盒标出。可以看到,仅H5向右边的包围盒中含有目标节点,因此B0和F5都被剔除,仅向Open表中加入一个节点,即H5。
图9给出了一个扩展过程的示例,其中起点和终点分别为A0和J1。通过连接过程,生成了唯一的起点子节点B0。对其进行扩展时,首先读取到第一个对角跳点D2,并发现终点也在对应方向。但通过坐标差和跳跃距离值的对比可知,该分支并不能立即到达目标(因为会触碰到障碍物)。算法没有将D2加入Open表,而是直接检测它对应的轴向跳点。然而由于D2仅有对角方向的包围盒中才包含目标点,因此对角的移动继续推进,而向下的子节点D5不被考虑。依此过程,B0找到唯一的子节点I5,并在扩展I5时通过目标检测到达终点。
一般网格地图中两类跳点塌缩位置的数量远小于所有可通行节点的总量。因此本发明将大大地节省所需的预处理时间和空间。这里以取自https://movingai.com的通用测试集为地图,其基本信息如表1所示。其中既包含典型的游戏地图,也有人工合成的房间和迷宫。每张地图中还包含大量的路径规划测试问题。
实验结果如表2所示。其中,JPS+BB为原算法,JPS+BB+为本发明,JPS+BB+WSSP/WPE为既无起点子节点剪枝又无部分扩展的变形,JPS+BB+WPE为有起点子节点剪枝无部分扩展的变形,JPS+BB+WSSP则相反。展示几个变形的实验结果可以清楚地看到本发明的两个技术分别对搜索速度起到的提升的作用。结果表明,在预处理信息相对稀疏的情况下,通过本发明提出的起点子节点剪枝和部分扩展技术,JPS+BB+算法的搜索速度相较原算法提升了数倍。例如,在最复杂的StarCraft地图上,JPS+BB+相对JPS+BB将搜索时间的耗费降低了一半左右,即达到了两倍的提速。
表1实验所用地图
地图类别 | 地图数量 | 最小规模 | 最大规模 | 问题数量 |
StarCraft游戏 | 75 | 384*384 | 1024*1024 | 198230 |
Dragon Age:Origins游戏(DAO) | 156 | 30*21 | 1104*1260 | 159465 |
Baldur’s Gate II游戏(BG) | 75 | 512*512 | 512*512 | 93160 |
Warcraft III游戏 | 36 | 512*512 | 512*512 | 45101 |
房间地图(Rooms) | 4 | 512*512 | 512*512 | 8430 |
迷宫地图(Mazes) | 5 | 512*512 | 512*512 | 57020 |
表2路径搜索耗时结果对比。
StarCraft | DAO | BG | Warcraft | Rooms | Mazes | |
JPS+BB | 23.5 | 10.4 | 2.8 | 4.8 | 82.6 | 92.7 |
JPS+BB+WSSP/WPE | 37.8 | 16.5 | 4.6 | 8.5 | 68.0 | 113.2 |
JPS+BB+WPE | 25.9 | 12.1 | 3.4 | 5.7 | 62.4 | 91.7 |
JPS+BB+WSSP | 17.7 | 7.5 | 2.7 | 4.7 | 38.0 | 73.8 |
JPS+BB+ | 12.5 | 5.7 | 2.2 | 3.1 | 35.0 | 73.5 |
指标为平均搜索时间,单位为微秒,结果数目越小表明速度越快。纵轴为算法名称,横轴为地图集。
实施例二
在上述实施例一的基础上,本发明实施例还提供一种路径规划***,包括存储器和处理器,所述存储器中存储有路径规划程序,在所述处理器运行所述路径规划程序时执行上述任意路径优化方法的步骤。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (7)
1.一种路径规划方法,其特征在于,包括以下步骤:
以均匀网格地图中塌缩跳点的网格点所在位置进行预处理;
获取起点和终点位置;
在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在搜索最优路径,在连接过程生成起始子节点时和/或在搜索过程扩展跳点时进行剪枝;
经过将上述剪枝过程与A*算法的最佳优先搜索结合,构建起点与终点之间的最优路径并存储;
所述以均匀网格地图中塌缩跳点的网格位置进行预处理的步骤中采用的是几何容器算法,包括:
对均匀网格地图进行结构分析,根据可通行点与障碍点的位置关系识别出所有轴向跳点;
为均匀网格地图上所有可通行节点的所有可通行方向计算跳跃距离表;
根据所述轴向跳点在对角方向上的跳跃距离识别出所有对角跳点;
以每个跳点塌缩位置为源节点进行面向全地图的经过对角优先修正后的Dijkstra搜索,对应每个可通行方向获取能将通过该方向最优到达的所有节点包围其中的矩形包围盒;
搜索过程中每生成一个节点,都记录下源跳点到达该节点的路径的初始边,并将该节点压入Open表中;
当源跳点到目标节点的最优路径找到时,则从Open表中取出目标节点进行扩展,将该目标节点加入源跳点对应边的包围盒中;
当Open表为空时结束对当前跳点的搜索,进入下一跳点的搜索;
所述对角跳点包括:有源对角跳点和无源对角跳点,所述有源对角跳点具有一个轴向跳点作为父节点,并且对角方向是轴向跳点的对角主序扩展方向;不满足有源对角跳点的是无源对角跳点;
以每个跳点塌缩位置为源节点进行面向全地图的经过对角优先修正后的Dijkstra搜索,包括:
以每个跳点塌缩位置为源节点进行面向全地图的经过对角优先修正后的Dijkstra搜索,得到简单主序路径或复合主序路径;
其中,简单主序路径不涉及跳点位置的搜索方向转换,转换指的是至少在一个父节点方向的一个分解方向上与反方向上移动;复合主序路径包括:起始部分、中间部分和结尾部分;起始部分表示起点到一个轴向跳点,起始部分可以包含一个无源对角跳点,中间部分表示一个轴向跳点到另一个轴向跳点,一个轴向跳点到另一个轴向跳点之间包括多个无源对角跳点,结尾部分表示另一个轴向跳点到终点,另一个轴向跳点到终点之间包括一个无源节点;
所述获取起点和终点位置的步骤之后还包括:
判断起点和终点是否为障碍物;
在起点和终点均非障碍物时,判断两者位置是否重合;
在起点和终点位置不重合时,判断是否存在一条简单主序路径连接起点与终点;
存在简单主序路径时,将所述简单主序路径作为最优路径并存储;不存在简单主序路径时,则利用connect-search方式搜索复合主序路径。
2.如权利要求1所述的路径规划方法,其特征在于,所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式搜索最优路径,在连接过程生成起始子节点时和/或在搜索过程扩展跳点时进行剪枝的步骤中:
通过检测几何容器在搜索过程对不可能通过最优主序路径到达目标的分支进行剪枝。
3.如权利要求2所述的路径规划方法,其特征在于,所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在连接过程中生成起始子节点时进行剪枝的步骤包括:
通过读取跳跃距离表获得与起点符合对角优先原则的所有合法轴向跳点子节点;
在所述合法轴向跳点子节点的所有主序扩展方向的包围盒中均未包含终点位置时,删除该合法轴向跳点子节点;
遍历所有所述合法轴向跳点子节点,获得起始子节点。
4.如权利要求2所述的路径规划方法,其特征在于,所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在搜索过程中扩展跳点时进行剪枝的步骤包括:
以所有所述起始子节点作为待扩展轴向跳点分别进行部分扩展;
对所述待扩展轴向跳点沿对角方向进行扩展生成中转跳点;
在所述中转跳点的主序扩展方向的包围盒中包含终点位置时,根据跳跃距离与该中转跳点、终点之间的坐标差的比较结果,确定该中转跳点是否能立即到达终点;
在所述中转跳点能立即到达终点时将所述中转跳点作为扩展子节点加入open表,结束剪枝流程。
5.如权利要求4所述的路径规划方法,其特征在于,所述在所述中转跳点的主序扩展方向的包围盒中包含终点位置时,根据跳跃距离与该中转跳点、终点之间的坐标差的比较结果,确定该中转跳点是否能立即到达终点的步骤之后还包括:
在所述中转跳点不能立即到达终点时,获取所述中转跳点包围盒中包含终点的所有主序扩展方向;
在所述主序扩展方向包含轴向方向时,根据跳跃距离获取该方向上的轴向跳点,作为子节点进行生成并加入Open表中。
6.如权利要求5所述的路径规划方法,其特征在于,所述获取所述中转跳点包围盒中包含终点的所有主序扩展方向的步骤之后还包括:
在所述主序扩展方向包含对角方向时,获取该方向上的下一对角跳点,递归重复中转跳点的扩展步骤;
在所述主序扩展方向同时包含轴向方向和对角方向时,按照上述步骤分别执行。
7.一种路径规划***,其特征在于,包括存储器和处理器,所述存储器中存储有路径规划程序,在所述处理器运行所述路径规划程序时执行所述权利要求1~6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138928.5A CN110967015B (zh) | 2019-11-20 | 2019-11-20 | 一种路径规划方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138928.5A CN110967015B (zh) | 2019-11-20 | 2019-11-20 | 一种路径规划方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110967015A CN110967015A (zh) | 2020-04-07 |
CN110967015B true CN110967015B (zh) | 2021-11-12 |
Family
ID=70030896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911138928.5A Active CN110967015B (zh) | 2019-11-20 | 2019-11-20 | 一种路径规划方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110967015B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723981B (zh) * | 2020-06-09 | 2024-06-07 | 安歌智慧科技(上海)有限公司 | 一种基于多条件约束的叉车式agv最优路径规划方法 |
CN111829526B (zh) * | 2020-07-23 | 2022-05-10 | 中国人民解放军国防科技大学 | 一种基于防撞半径的距离地图重构与跳点路径规划方法 |
CN114239192A (zh) * | 2020-09-09 | 2022-03-25 | 中兴通讯股份有限公司 | 路径搜索的方法、电子设备及存储介质 |
CN113607181A (zh) * | 2021-08-05 | 2021-11-05 | 国网上海市电力公司 | 一种跳点搜索算法的优化方法 |
CN115223389B (zh) * | 2022-07-15 | 2023-11-21 | 西南交通大学 | 一种基于动态路段代价的停车引导路径规划方法 |
CN115845381B (zh) * | 2023-02-07 | 2023-06-16 | 广州三七极耀网络科技有限公司 | 一种基于包围盒的快速寻路方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107065865A (zh) * | 2017-03-21 | 2017-08-18 | 北京航空航天大学 | 一种基于剪枝快速随机搜索树算法的路径规划方法 |
CN108268971A (zh) * | 2017-12-06 | 2018-07-10 | 腾讯科技(深圳)有限公司 | 路径的搜索方法、装置、处理器和电子装置 |
CN110006429A (zh) * | 2019-03-20 | 2019-07-12 | 智慧航海(青岛)科技有限公司 | 一种基于深度优化的无人船航迹规划方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7280481B2 (en) * | 2002-10-10 | 2007-10-09 | Guangyi David Rong | Shortest path search method “Midway” |
KR101633889B1 (ko) * | 2009-02-18 | 2016-06-28 | 삼성전자주식회사 | 격자지도를 이용한 경로 생성 장치 및 방법 |
CN105955280A (zh) * | 2016-07-19 | 2016-09-21 | Tcl集团股份有限公司 | 移动机器人路径规划和避障方法及*** |
US10809078B2 (en) * | 2018-04-05 | 2020-10-20 | Symbol Technologies, Llc | Method, system and apparatus for dynamic path generation |
CN109115226B (zh) * | 2018-09-01 | 2021-11-19 | 哈尔滨工程大学 | 基于跳点搜索的多机器人冲突避免的路径规划方法 |
CN110319837A (zh) * | 2019-07-09 | 2019-10-11 | 北方工业大学 | 一种服务机器人室内复杂状况路径规划方法 |
-
2019
- 2019-11-20 CN CN201911138928.5A patent/CN110967015B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107065865A (zh) * | 2017-03-21 | 2017-08-18 | 北京航空航天大学 | 一种基于剪枝快速随机搜索树算法的路径规划方法 |
CN108268971A (zh) * | 2017-12-06 | 2018-07-10 | 腾讯科技(深圳)有限公司 | 路径的搜索方法、装置、处理器和电子装置 |
CN110006429A (zh) * | 2019-03-20 | 2019-07-12 | 智慧航海(青岛)科技有限公司 | 一种基于深度优化的无人船航迹规划方法 |
Non-Patent Citations (1)
Title |
---|
Improving the Combination of JPS and Geometric Containers;Yue Hu等;《Proceedings of the International Conference on Automated Planning and Scheduling》;20190705;第29卷;介绍部分的第1段,预处理网格部分,在线搜索部分的第1段,实验设置部分的第1段,图2(a)、(b) * |
Also Published As
Publication number | Publication date |
---|---|
CN110967015A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110967015B (zh) | 一种路径规划方法及*** | |
CN110975290B (zh) | 一种基于模式数据库的路径规划方法及*** | |
CN111504325B (zh) | 一种基于扩大搜索邻域的加权a*算法的全局路径规划方法 | |
CN109115226B (zh) | 基于跳点搜索的多机器人冲突避免的路径规划方法 | |
CN109947120B (zh) | 仓储***中的路径规划方法 | |
US20170219353A1 (en) | Method and system for determining a path of an object for moving from a starting state to an end state set avoiding one or more obstacles | |
US20030223373A1 (en) | Dual Dijkstra search for planning multipe paths | |
JP6711949B2 (ja) | 1個以上の障害物を回避して始状態から終状態集合まで移動する物体の経路を決定する方法およびシステム | |
CN111104471B (zh) | 基于跳点路径搜索的模式数据库信息压缩方法及*** | |
CN109341698B (zh) | 一种移动机器人的路径选择方法及装置 | |
CN110975291B (zh) | 一种路径提取方法及*** | |
CN115167474A (zh) | 一种移动机器人路径规划优化方法 | |
US11461656B2 (en) | Genetic programming for partial layers of a deep learning model | |
CN114859909A (zh) | 一种针对叉车式agv的路径规划方法及装置 | |
CN110975288B (zh) | 基于跳点路径搜索的几何容器数据压缩方法及*** | |
CN111829526B (zh) | 一种基于防撞半径的距离地图重构与跳点路径规划方法 | |
CN113375686A (zh) | 路径规划的方法、装置以及智能输送*** | |
CN114577217B (zh) | 基于冯洛诺伊图的路径规划方法、装置、设备及存储介质 | |
CN116449826A (zh) | 基于路径平滑和双向跳点搜索的移动机器人路径规划方法 | |
CN114386138B (zh) | 建筑物分间方法、电子设备及计算机存储介质 | |
CN114564023B (zh) | 一种动态场景下的跳点搜索路径规划方法 | |
CN114777785A (zh) | 一种基于凸角点搜索机制的改进Astar算法 | |
CN115456249B (zh) | 一种分拣行走路径优化方法及*** | |
CN117451057B (zh) | 基于改进a*算法无人机三维路径规划方法、设备和介质 | |
CN115371685B (zh) | 工控场景下无人设备优势路径规划方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |