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

一种路径搜索和规划方法、装置及设备

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


一种路径搜索和规划方法、装置及设备

技术领域

本发明主要涉及路径规划技术领域,尤其涉及一种路径搜索和规划方法、装置及设备。

背景技术

工厂中为减少自动导引车(AGV,Automated Guided Vehicle)行走非固定路径引发碰撞、拥堵和管理困难等问题,通常基于工厂真实环境建立AGV可行走路径的拓扑地图,并基于拓扑地图进行路径规划。在同一个地图中,通常有多个AGV同时运行,如果一个AGV在规划路径的时候,能将其他AGV的路线考虑进来,规划出与其他AGV路线时空无碰的路径,那么就能解决多个AGV之间的碰撞和死锁问题。

在现有技术中,AGV在规划时空路径时,在搜索扩展节点的时,采用带时间维度的A*算法,通过判断其候选的扩展节点的位置和时刻是否与其他AGV的位置和时刻冲突,规划出待加入的AVG在时空地图中的时空路径,但在现有的搜索扩展节点的过程中,只是单纯考虑其他AGV的时空路径,会在一些场景下,如巷道场景,可能造成搜索过多无用扩展节点,其搜索可能会倾向于在巷道中间的点位之前的点位等待或者进行震荡以避免冲突,增加了搜索的耗时。

发明内容

本申请的目的是提供一种路径搜索和规划方法、装置及设备,减少了自动导引车AVG在巷道内的节点等待或者震荡的等情况下的无效的扩展,加速了搜索过程。

第一方面,本申请提供一种路径搜索方法,包括:

确定待规划的第一自动引导车AGV的起点,将所述起点作为搜索路径上的当前节点开始路径搜索;

在路径搜索过程中,基于完成规划的第二AGV的时空路径信息,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突;

若存在相向冲突时,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长;

基于各等待节点对应的所述等待时长,确定各等待节点的路径搜索代价,基于确定的路径搜索代价继续执行路径搜索过程。

在一些可能的实施例中,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突,包括:

检测到第一AGV进入第一路径的入口节点时,所述第一路径上存在正在相向行驶的第二AGV,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

检测到第一AGV从入口驶入第一路径,在驶出第一路径的出口节点前,有第二AGV驶入所述第一路径时,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

所述第一路径为包括多个依次连通的节点,除入口节点和出口节点外的各节点仅与第一路径上节点连通,且仅允许单个AGV通过的路径。

在一些可能的实施例中,所述路径搜索过程,包括:

每确定一个当前节点,将当前节点及与当前节点连通的节点,作为当前节点下一时刻的扩展节点;

基于完成规划的第二AGV的时空路径信息,若第一AGV下一时刻运动到任一扩展节点时与第二AGV存在冲突,删除该任一扩展节点;

若第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,删除该任一扩展节点;

基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点。

在一些可能的实施例中,所述路径搜索过程还包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除。

在一些可能的实施例中,若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除,包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,对第一路径上的所有节点增加任意时刻不能等的临时约束;

通过删除具有临时约束的扩展节点,将作为扩展节点的当前节点删除。

在一些可能的实施例中,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长,包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,执行从第一路径的入口节点运动至与第二AGV发生相向冲突后,折返到入口节点的第一路径搜索;

将折返到的入口节点作为当前节点,将当前节点下一时刻的扩展节点确定为等待节点,根据执行的所述第一路径搜索的时长确定等待时长。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,包括:

确定同一扩展节点属于搜索路径上不同时刻的当前节点的扩展节点时,确定该扩同一扩展节点的路径搜索代价,为属于不同时刻的当前节点的扩展节点时对应的路径搜索代价的较小值。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,包括:

基于当前未进行路径搜索的扩展节点的路径搜索代价,选择路径搜索代价最小的扩展节点作为下一个当前节点,并确定所述下一个当前节点作为搜索路径上的节点。

在一些可能的实施例中,确定第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,包括:

确定第一AGV下一时刻运动到的扩展节点A,为当前节点B在搜索路径上的上一个节点,若从上一个节点到达当前节点B的时刻开始至当前时刻中的任一时刻,假定第一AGV从当前节点B向上一节点运动时不存在与第二AGV的冲突,则确定下一时刻运动到所述扩展节点A属于无效折返路径;

确定第一AGV下一时刻运动到的扩展节点不属于当前节点,而且仅有任意时刻不能等待的临时约束,则确定下一时刻运动到所述扩展节点A属于无效折返路径。

第二方面,本申请还提供一种路径规划方法,所述方法包括:

确定待规划的第一自动引导车AGV的起点和终点;

基于上述第一方面提供的路径搜索方法,从所述第一AGV的起点开始进行路径搜索,至搜索到所述第一AGV的终点时结束;

根据路径搜索过程中的确定搜索路径及第一AGV在搜索路径上各节点的动作,得到所述第一AGV的路径规划。

第三方面,本申请提供一种路径搜索装置,包括:

第一搜索模块,确定待规划的第一自动引导车AGV的起点,将所述起点作为搜索路径上的当前节点开始路径搜索;

检测模块,在路径搜索过程中,基于完成规划的第二AGV的时空路径信息,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突;

冲突模块,若存在相向冲突时,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长;

第二搜索模块,基于各等待节点对应的所述等待时长,确定各等待节点的路径搜索代价,基于确定的路径搜索代价继续执行路径搜索过程。

第四方面,本申请还提供一种路径规划装置,包括:

确定模块,确定待规划的第一自动引导车AGV的起点和终点;

搜索模块,基于上述第一方面提供的路径搜索方法,从所述第一AGV的起点开始进行路径搜索,至搜索到所述第一AGV的终点时结束;

规划模块,根据路径搜索过程中的确定搜索路径及第一AGV在搜索路径上各节点的动作,得到所述第一AGV的路径规划。

第五方面,本申请提供一种电子设备,包括:

至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面或第二方面中任何一项所述的方法。

第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面或第二方面中任一项所述的方法步骤。

本发明实施例具有以下有益效果:

本申请实施例提供的路径搜索和规划方法、装置及设备,在路径搜索的过程中,通过检测搜索路径上与待规划的AGV冲突的其他完成规划的AGV,在检测到相向冲突时,基于避开冲突的等待时长更新路径搜索代价,重新进行路径搜索,减少了待规划的自动导引车AVG在搜索路径上的节点等待或者震荡的等情况下的无效的扩展,加速了搜索过程。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

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

图1为本申请实施例提供的一种巷道的拓扑地图示意图;

图2为本实施例提供的一种路径搜索方法流程图;

图3为本申请实施例提供的路径搜索方法整体流程图;

图4为本申请实施例提供的路径规划方法流程图;

图5为本申请实施例提供的路径搜索方法装置图;

图6为本申请实施例提供的路径规划方法装置图;

图7为本申请实施例提供的一种路径搜索方法设备图;

图8为本申请实施例提供的一种路径搜索方法的存储介质图。

具体实施方式

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

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者控制设备执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。

针对本申请实施例中的路径搜索相关的概念进行说明:

1)拓扑地图:自动引导车的运行地图,由节点和边两部分组成;

2)边:拓扑地图上任意两节点间的有向连线;

3)巷道:找到所有只有两个与其双向连通节点的节点作为集合A,将集合A中的每个节点按连通性方向往外扩展,直到找到不在集合A里的点停止,那么停止的节点就作为巷道的端点。以图1为例,一共存在三个巷道,A2、A3、A4、A5为第一个巷道,A2、A5为该巷道的两个端点;B2、B3、B4、B5为第二个巷道,B2、B5为该巷道的两个端点;C2、C3、C4、C5为第三个巷道,C2、C5为该巷道的两个端点。

4)约束:这里的约束用(N,T,Action),其中,N表示节点,T表示时刻,如果T=-1,那么表示任意时刻,Action表示所约束的动作,这里将动作分成运动和等待两种情况。Action=1表示约束的动作是运动,Action=2表示约束的动作是等待,Action=3表示约束的动作是运动和等待。

对本申请实施例的实施过程中的前提假设进行说明:

1.在路径规划时需要根据当前节点确定当前节点的扩展节点,假设待规划AGV可以运动到与当前节点具有拓扑连接关系(连通)的所有相邻节点,或者继续在当前节点等待,继续在当前节点等待时,时刻+1,则当前节点扩展节点包括与当前节点连通的相邻节点及当前节点。

2.当待规划AGV从当前节点运动到与当前节点具有拓扑连接关系的所有相邻节点,或者继续在当前节点等待时,将其称为一个基本动作,将一个基本动作所需的时间离散化,每个动作需要一个时间片,称为一个timestep。一般来说,路径规划从时刻0开始,也就是说,待规划AGV在起点的时刻是0。

现有技术中的AGV在规划时空路径时,在搜索扩展节点的过程中,通过判断扩展节点的位置和时刻是否与其他AGV的位置和时刻冲突,也就是说,其他AGV的时空路径作为一组(N,T)约束来限制待规划AGV的路径,其中,N表示地图中的某个节点,T表示具体的某一个时刻。该约束的限制较为单一,只能用于表示在规划路径时,在某个特定时刻不能经过特定的某个点,不能对同类约束进行合并,同时也没有对约束的运动形式做进一步的区分。

通过举例说明,在路径搜索的过程中,只是单纯考虑其他AGV的时空路径,在巷道场景下可能造成搜索过多无用扩展节点,如图1所示:

已知在一个拓扑地图中,第一个AGV的路径为A5

鉴于上述问题,本申请提出在检测到相向冲突时,基于避开冲突的等待时长更新路径搜索代价,重新进行路径搜索,实现对路径搜索过程的加速。

本申请实施例提供的一种路径搜索方法,如图2所示,包括:

步骤,201,确定待规划的第一自动引导车AGV的起点,将所述起点作为搜索路径上的当前节点开始路径搜索;

第一AGV为待规划的自动导引车,开始对第一AGV进行路径搜索时,首先需要获取第一AGV在拓扑地图上的起点和终点,并且将第一AGV在起点的时刻作为时刻0,以起点为初始的当前节点,开始进行路径搜索,路径搜索时根据当前节点确定下一时刻可能到达的当前节点,将下一时刻可能到达的当前节点作为搜索路径上的节点,实现搜索路径不断延伸至终点。

步骤202,在路径搜索过程中,基于完成规划的第二AGV的时空路径信息,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突;

第二AGV为已完成路径规划的AGV,在对第一AGV路径搜索的过程中,第一AGV在当前节点所在的搜索路径,包括当前时刻的当前节点及之前各时刻被确定为当前节点的节点形成的路径,进一步地,如果当前节点进入第一路径,则将当前时刻的当前节点及之前各时刻被确定为当前节点的节点形成路径、当前节点进入的第一路径,确定为搜索路径。所述第一路径为包括多个依次连通的节点,除入口节点和出口节点外的各节点仅与第一路径上节点连通,且仅允许单个AGV通过的路径,第一路径也称为上述定义的巷道。

若第一AGV进行路径搜索时进入了巷道,且检测到在巷道内行驶时有相向的第二AGV,则认为检测到第一AGV与第二AGV发生冲突。

步骤203,若存在相向冲突时,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长;

若第一AGV和第二AGV存在相向冲突,需要等待第二AGV走出巷道后,第一AGV才能从巷道中通过,确定需要等待的时长的确定方式可以但不限于两种方式,第一种方式是通过路径搜索过程将实现发生冲突发生时,在冲突发生时继续实现路径搜索过程至折回到巷道的入口节点,另一种可能的方式,可以根据检测到冲突时的时刻,确定第二AGV驶出巷道口的时刻,根据两个时刻确定第一AGV的等待时间。

步骤204,基于各等待节点对应的所述等待时长,确定各等待节点的路径搜索代价,基于确定的路径搜索代价继续执行路径搜索过程。

根据需要等待的冲突解除的时长,计算各个等待节点的路径搜索代价,并基于各个可能的等待节点的路径搜索代价,确定下一个时刻的当前节点,即重新进行路径搜索。本申请实施例在检测到相向冲突时,基于避开冲突的等待时长更新路径搜索代价,重新进行路径搜索,由于上述等待时长为固定值,基于上述等待时长直接更新等待节点路径搜索代价,减少了待规划的自动导引车AVG在搜索路径上的节点等待或者震荡的等情况下的无效的扩展,加速了搜索过程。

在一些可能的实施例中,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突,包括:

检测到第一AGV进入第一路径的入口节点时,所述第一路径上存在正在相向行驶的第二AGV,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

检测到第一AGV从入口驶入第一路径,在驶出第一路径的出口节点前,有第二AGV驶入所述第一路径时,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

所述第一路径为包括多个依次连通的节点,除入口节点和出口节点外的各节点仅与第一路径上节点连通,且仅允许单个AGV通过的路径。

为了更清晰的说明,此处的“第一路径”与说明书上述内容中提到的“巷道”的概念为同一概念,为方便理解,以下内容均使用“巷道”。巷道包括端点和中间节点,端点包括入口节点和出口节点,巷道仅能容纳一个AGV通过。在开始进行路径搜索之前,根据巷道定义提前找到地图中所有的巷道,同时根据其他已经完成规划的第二AGV的路径记录所有已被经过的巷道以及对应驶入驶出的巷道的端点。

具体的,待规划的AGV驶入巷道后与待规划的AGV发生冲突有两种情况:第一种为当待规划的AGV进入巷道后的,巷道中已经存在对向行驶的AGV,第二种为,待规划的AGV驶入巷道时,巷道中没有行驶的AGV,当待规划的AGV在巷道中行驶一段时间后,有其他AGV从巷道的另一端驶入巷道和第一AGV产生对相冲突。

需要说明的是,不是所有巷道中有两个AGV行驶的情况都会产生冲突,当待规划的第一AGV驶入巷道的时候,有同相行驶的其他AGV,则不会判断为产生冲突。

在一些可能的实施例中,所述路径搜索过程,包括:

1)每确定一个当前节点,将当前节点及与当前节点连通的节点,作为当前节点下一时刻的扩展节点;

2)基于完成规划的第二AGV的时空路径信息,若第一AGV下一时刻运动到任一扩展节点时与第二AGV存在冲突,删除该任一扩展节点;

第二AGV的时空路径信息构成对第一AGV路径搜索时的时空约束,将其他完成规划的第二AGV的时空路径信息转换成(N,T,Action)约束。具体过程如下:

对于其他完成路径规划的第二AGV,根据其路径(N,T)每个点的节点编号,在该节点的时刻以及对应的动作,转换成具体的约束,例如:{(N0,T0,3),(N1,T1,3),(N2,T2,3)…}

对于其他静止的第二AGV,根据其所在的节点编号,转换成在任意时刻都不能在该节点运动和等待的约束{(N0,-1,3),(N1,-1,3),(N2,-1,3)…}。

例如,(N0,T0,3),表示在时刻T0不能到达节点N0,若N0为当前节点的扩展节点,将N0从扩展节点中删除。

3)若第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,删除该任一扩展节点;

此处的无效折返路指的是在路径搜索过程中的两个点之间反复的震荡过程,且并不是由于躲避其他第二AGV而产生的震荡过程,若当前节点的扩展节点属于无效折返路上的节点,则此搜索路径确定为无效,删除属于无效搜索路径的扩展节点。

4)基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点。

在巷道场景外的路径搜索过程中,通过删除扩展节点中下一刻被其他第二AGV占据的扩展节点和属于无效折返路的扩展节点,确定下一时刻可能到达的扩展节点,并计算属于当前节点的扩展节点的路径搜索代价,并基于已经完成的路径搜索过程中还未进行路径搜索的扩展节点的路径搜索代价,重新确定下一时刻的当前节点。

在巷道内的搜索过程中,由于在巷道内的节点等待或者在两个节点反复运动都是无用的扩展路径,最终还需要待规划的AGV退出巷道为其他AGV进行让路,所以通过上述删除属于无效折返路径的扩展节点,将在巷道内的搜索路径限制为单向的搜索路径来减少其他无用的路径搜索。

具体的,如图1所示,说明删除巷道中属于无效折返路经上的扩展节点的情况:若待规划的AGV的起点为A1,终点为C6,在一种可能的路径搜索的过程中,可能的一种搜索路径为A1-B1-B2-B3-B4,即,第0时刻在A1,第1时刻在B1,第2时刻在B2,第3时刻在B3,第4时刻在B4;若第5时刻有其他AGV占据点B5,则在第4时刻确定下一时刻的扩展节点时检测到冲突,此种情况属于待规划的AGV未驶出巷道时,在巷道行驶途中检测到与其他AGV的冲突;在路径搜索过程的第3时刻,即B3为当前节点时,B3在下一时刻的扩展节点为B2、B3和B4,若待规划AGV选择从当前节点B3运动至B2时,由于下一时刻即第4时刻B3并未被其他AGV占据(第4时刻在B3没有冲突),则确定扩展节点B2为无效折返路径上的节点,因此将当前B3的扩展节点B2删除,因此下一时刻待规划的AGV可能的路径为在当前节点B3等待或者向与AGV发生冲突的B4方向运动。

在一些可能的实施例中,所述路径搜索过程还包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除。

对于整个在巷道进行搜索的过程,将搜索的路径限制为单向路径后,为了进一步减少振荡,在基于当前的节点进行搜索的过程中,通过将当前节点从扩展节点中删除,使得待规划AGV不会在当前节点停留等待,加速冲突发生从而减少搜索时间。

本申请实施例中若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除,包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,对第一路径上的所有节点增加任意时刻不能等的临时约束;

通过删除具有临时约束的扩展节点,将作为扩展节点的当前节点删除。

具体的,如图1所示,说明通过将当前节点从扩展节点删除,实现待规划AGV在当前节点不能等待的情况:若待规划的AGV的起点为A1,终点为B6时,可能的一种搜索的路径为第0时刻在A1,第1时刻在A2,第2时刻在A3,A2为巷道入口节点,若当前节点为A2时,与A2连通的A3属于当前节点的扩展节点,A2同样也属于当前节点的扩展节点,与A2连通的B2也属于扩展节点,若此时检测到有其他完成规划的AGV正在反向经过待规划的AGV所在的巷道A2,A3,A4,A5,例如,完成规划的AGV在第1时刻位于A5,第2时刻位于A4;则在第1时刻检测到冲突,此时对所在巷道上的所有节点A2,A3,A4,A5,添加任意时刻都不能等待的临时约束,临时约束具体为:{(A2,-1,2),(A3,-1,2),(A4,-1,2),(A5,-1,2)},其中T=-1代表任意时刻,此临时约束只对从第1时刻的当前节点A2搜索到第2时刻的扩展节点有效,所以基于该临时约束,待规划的AGV不能在A2点等待,所以作为扩展节点的当前节点A2被删除。

在一些可能的实施例中,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长,包括:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,执行从第一路径的入口节点运动至与第二AGV发生相向冲突后,折返到入口节点的第一路径搜索;

将折返到的入口节点作为当前节点,将当前节点下一时刻的扩展节点确定为等待节点,根据执行的所述第一路径搜索的时长确定等待时长。

在巷道内(第一路径)进行搜索时,采用本实施例提供上述方式删除无效折返路径上的扩展节点,将在巷道内的路径搜索限定为单向搜索,通过增加的临时约束不在当前节点停留,因此加速搜索过程,则第一路径搜索为第一AGV进入巷道后,单向搜索至与第二AGV发生冲突后,又折返回巷道入口节点的路径,若搜索至折返回的入口节点作为当前节点时,则为了避让第二AGV,第一AGV需要离开入口节点,即选择属于入口节点的扩展节点进行等待,所以将入口节点的扩展节点称为等待节点,待规划的第一AGV退回到等待节点时,第二AGV有两种可能的情况,第一种情况为,当待规划的AGV回退到等待节点的时刻,第二AGV行驶至入口节点,第二种情况为,当待规划的AGV回退到等待节点的时刻,第二AGV行驶至巷道内与上述入口节点相邻的节点。本申请实施例中基于等待时长更新第一AGV在等待节点的路径搜索代价时,指在第一种情况时,根据上述在第一路径搜索的行驶时长确定等待时长。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,包括:

确定同一扩展节点属于搜索路径上不同时刻的当前节点的扩展节点时,确定该扩同一扩展节点的路径搜索代价,为属于不同时刻的当前节点的扩展节点时对应的路径搜索代价的较小值。

当从扩展节点中删除了具有第二AGV的时空约束、临时约束以及判断属于无效折返路的扩展节点,剩余的扩展节点参与路径搜索,计算扩展节点的路径搜索代价f,路径搜索代价f为实际代价g与估计代价h之和,即f=g+h,其中,实际代价f为从起点搜索至当前节点实际走过的距离,需要说明的是,由于本申请的搜索过程计算时间参数,因此,在搜索路径中,在拓扑地图上同一个节点进行等待的时刻,实际代价同样根据等待时间相应增加,例如一种可能的情况为,若从起点搜索至某扩展节点用了3个时刻,则该扩展节点的实际代价为3,若该扩展节点作为当前节点时,搜索出来的路径为需要在当前节点等待4个时刻,则该扩展节点的路径代价为3+4=7;估计代价h为从当前节点到终点的距离,由于在计算估计代价时,无法预测其他已完成规划的第二AGV的行驶路径对待规划AGV的剩余路径搜索过程的影响,因此估计代价h仅为基于拓扑地图本身计算的到终点的距离,为估计值,实际的后续搜索路径大于或者等于估计代价。

上述同一扩展节点指的是在拓扑地图中属于同一位置的扩展节点,即当前节点的扩展节点可能与之前搜索路径过程中的未进行路径搜索的其他扩展节点为拓扑地图上的同一个节点,当确定了当前节点的扩展节点之后,若新计算的该节点的实际代价g更小,则将该节点的路径搜索代价更新为新计算的路径搜索代价。需要说明的是,由于比较的是同一位置不同时刻的扩展节点的路径代价,估计代价h相同,因此实际代价更小等同于路径搜索代价f更小。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,包括:

基于当前未进行路径搜索的扩展节点的路径搜索代价,选择路径搜索代价最小的扩展节点作为下一个当前节点,并确定所述下一个当前节点作为搜索路径上的节点。

需要说明的是,上述当前未进行路径搜索的扩展节点,不仅包括当前时刻当前节点的未进行路径搜索的扩展节点,对于上述折返到巷道入口节点的情况,即包括至少一个等待节点,还包括之前时刻当前节点的未进行路径搜索的扩展节点。根据当前时刻的当前节点的扩展节点的路径搜索代价和之前时刻的当前节点的扩展节点的路径搜索代价,选择路径搜索代价最小的扩展节点,作为下一时刻的当前节点,在选择一个扩展节点作为下一个当前节点时,将其确定为搜索路径上的节点。

在一种可能的实施例中,路径搜索代价最小的扩展节点可能有多个,若有多个路径搜索代价相同的扩展节点,则针对相同的路径搜索代价最小的扩展节点均进行确定下一时刻的当前节点的路径搜索。

具体的,对确定下一时刻的当前节点的详细过程进行说明,如图1所示:若待规划AGV的起点为B2,终点为B6,即第0时刻在B2,以起点B2作为当前节点确定下一时刻的扩展节点时,若下一时刻没有其他AGV占据B2或者与B2连通的节点A2、B1、B3和C2,则A2、B1、B3、C2和B2均为当前节点B2的扩展节点,经计算,A2的路径搜索代价为6、B1的路径搜索代价为8、B3的路径搜索代价为4、C2的路径搜索代价为6、B2的路径搜索代价为5,此时通过比较确定B3为路径搜索代价最小的节点,所以确定待规划的AGV下一时刻的当前节点为B3,且确定驶入巷道。

在一种可能的实施例中,在计算各个等待节点的路径搜索代价,并基于各个可能的等待节点的路径搜索代价,确定下一个时刻的当前节点,即重新进行路径搜索的过程中,一种可能的搜索路径为,待规划的AGV在巷道外的等待节点进行等待,等待巷道内发生冲突的AGV驶出巷道后,再次驶入巷道进行路径搜索,或者在另一种可能的情况中,若待规划的AGV走其他的路径比等待AGV通过巷道后从巷道走抵达终点更快,则待规划AGV在其他不是等待节点的扩展节点作为下一时刻的当前节点进行路径搜索。

当搜索出的路径为A-B-A时,确定为一个折返路径,当AGV离开A点到B点,再至返回A点时,可能是因为暂时躲避其他AGV进行让路,此时的躲避是有意义的,即折返是有实际意义的;当离开点A到点B又回到点A的过程中,不是因为与其他AGV的冲突而发生的,则判断此种折返路没有实际的意义,因此判断为无效折返路,放弃属于无效折返路上的扩展节点。

在一些可能的实施例中,确定第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,属于无效折返路上的扩展节点有两种情况:

1)确定第一AGV下一时刻运动到的扩展节点A,为当前节点B在搜索路径上的上一个节点,若从上一个节点到达当前节点B的时刻开始至当前时刻中的任一时刻,假定第一AGV从当前节点B向上一节点运动时不存在与第二AGV的冲突,则确定下一时刻运动到所述扩展节点A属于无效折返路径;

具体的,针对A-B-A的路径,一种可能的情况为,A-B-B-B-B-B-A,即从离开A后,在B点等待了5个时刻,即5个timestep后,又回到了A点,如果在B点停留这5个时刻,A点既不具有完成规划的AGV的时空约束也不具有临时约束,则说明本来没有必要离开A点到达B点进行等待,那么认为该折返路没有意义。

2)确定第一AGV下一时刻运动到的扩展节点不属于当前节点,而且仅有任意时刻不能等待的临时约束,则确定下一时刻运动到所述扩展节点A属于无效折返路径。

具体的,另一种可能的情况为,搜索路径为A-B-A时,针对此段搜索路径,即从离开A后,在B点停留的1个时刻中,B点有且仅有不能等待的约束,则认为是无效折返路,因此舍弃作为B点候选扩展节点的A点。

下面对路径搜索方法的整体流程进行说明,如图3所示:

需要说明的是,开集合中存放的是,所有被确定为参与路径搜索代价但未被确定为下一时刻的当前节点的扩展节点,也就是说,路径搜索代价计算后,当开集合中的扩展节点被确定为下一时刻的当前节点时,将该扩展节点从开集合中删除,当开集合中的扩展节点被确定为下一时刻的当前节点,且扩展节点为待规划的AGV的终点时,完成路径规划,其中f值为路径搜索代价,g值为实际代价,h值为估计代价,f=g+h;

步骤S301,输入待规划AGV规划的起点和终点,输入第一约束信息,记录其他AGV经过的所有巷道以及入口节点、出口节点;

步骤S302,将起点和对应时刻0放到开集合中;

需要说明的是,开集合中存放的是所有扩展节点,当某个扩展节点作为当前节点进行路径搜索时,该节点从开集合中删除。

步骤S303,判断开集合是否为空,若不为空,则执行步骤S304;

步骤S304,从开集合中取出f值最小的节点作为当前节点;

初始时开集合仅有起点,因此将起点作为当前节点。

步骤S305,确定当前节点下一时刻可能到达的节点,即当前节点的扩展节点包括当前节点及与其连通的相邻节点,意味着下一时刻待规划AGV从当前节点运动到相邻节点或者在当前节点等待,下一时刻采用时刻+1表示;

步骤S306,判断待规划AGV是否正在巷道且巷道中有对向行驶的其他AGV,若是,则执行步骤S307;若否,则执行步骤S308;

如果当前节点为巷道上的节点,且按照上述检测相向冲突的两种方式检测到相向冲突,则确定待规划AGV正在反向经过其他第二AGV通过的巷道。

步骤S307,对巷道的所有节点添加任意时刻都不能等待的临时约束,且此类约束只对下一时刻有效;

步骤S308,判断与当前节点连通的扩展节点是否满足基于第二AGV的时空路径信息生成的时空约束和临时约束,若是,则执行步骤S309;

需要说明的是,若扩展节点不满足临时约束,则将该扩展节点删除。

步骤S309,判断下一时刻可能到达的节点是否是无效折返路,若是,则执行步骤S303;若否,则执行步骤S310;

需要说明的是,若下一时刻可能到达的节点为无效折返路,则删除该扩展节点,从开集合中重新选择其他扩展节点确认下一时刻是否能到达。

步骤S310,计算扩展节点的f=g+h;

步骤S311,判断该扩展节点是否在开集合中,若是,则执行步骤S313;若否,则执行步骤S312;

步骤S312,将该节点放入到开集合中;

步骤S313,判断新计算出来的同一扩展节点的g值是否小于之前记录的g值,若是,则执行步骤S314;若否,则执行步骤S303;

步骤S314,对开集合中存储的该同一扩展节点的路径搜索代价更新为对应的g值较小的路径搜索代价。

本申请实施例还提供一种路径规划方法,如图4所示,包括:

步骤401,确定待规划的第一自动引导车AGV的起点和终点;

步骤402,利用本申请实施例任一路径搜索方法,从所述第一AGV的起点开始进行路径搜索,至搜索到所述第一AGV的终点时结束;

在路径搜索的过程中,根据输入的起点作为初始的当前节点进行路径搜索,当下一时刻的扩展节点包括终点所在的节点时,为搜索至第一AGV的终点,结束路径搜索过程。

步骤403,根据路径搜索过程中的确定搜索路径及第一AGV在搜索路径上各节点的动作,得到所述第一AGV的路径规划。

根据搜索的结果,待规划的第一AGV从终点至起点经过的所有节点和在各节点的运动方向和等待状态即为第一AGV的路径规划结果,需要说明的是,在各节点的动作为第一AGV到达每个节点在下一时刻的动作,包括向某个相邻节点运动或在当前节点等待。

本申请实施例中提供的路径搜索方法和路径规划方法,具有以下有益效果:

本申请通过将用于规划的约束进行了定义的扩充,可以表示该约束对任意时刻生效,并且对于约束的动作进行了细分,分成了运动和等待。通过添加不能在巷道节点中等待以及避免无效折返路的方式,减少了无用的节点扩展,对搜索经过巷道时的过程进行了加速。

基于相同的发明构思,本申请还提供一种路径搜索装置,如图5所示,包括:

第一搜索模块501,确定待规划的第一自动引导车AGV的起点,将所述起点作为搜索路径上的当前节点开始路径搜索;

检测模块502,在路径搜索过程中,基于完成规划的第二AGV的时空路径信息,检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突;

冲突模块503,若存在相向冲突时,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长;

第二搜索模块504,基于各等待节点对应的所述等待时长,确定各等待节点的路径搜索代价,基于确定的路径搜索代价继续执行路径搜索过程。

在一些可能的实施例中,检测模块502检测第一AGV在当前节点所在的搜索路径行驶是否与第二AGV存在相向冲突,包括:

检测到第一AGV进入第一路径的入口节点时,所述第一路径上存在正在相向行驶的第二AGV,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

检测到第一AGV从入口驶入第一路径,在驶出第一路径的出口节点前,有第二AGV驶入所述第一路径时,确定第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突;

所述第一路径为包括多个依次连通的节点,除入口节点和出口节点外的各节点仅与第一路径上节点连通,且仅允许单个AGV通过的路径。

在一些可能的实施例中,检测模块502具体执行:

每确定一个当前节点,将当前节点及与当前节点连通的节点,作为当前节点下一时刻的扩展节点;

基于完成规划的第二AGV的时空路径信息,若第一AGV下一时刻运动到任一扩展节点时与第二AGV存在冲突,删除该任一扩展节点;

若第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,删除该任一扩展节点;

基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点。

在一些可能的实施例中,检测模块502还执行:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除。

在一些可能的实施例中,若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,将当前节点从扩展节点中删除,检测模块502具体执行:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,对第一路径上的所有节点增加任意时刻不能等的临时约束;

通过删除具有临时约束的扩展节点,将作为扩展节点的当前节点删除。

在一些可能的实施例中,确定第一AGV在所述搜索路径避开所述相向冲突可到达的至少一个等待节点,及在各等待节点对应的等待时长,检测模块502具体执行:

若检测到第一AGV在当前节点所在的搜索路径行驶与第二AGV存在相向冲突,且所述当前节点所在的搜索路径为第一路径时,执行从第一路径的入口节点运动至与第二AGV发生相向冲突后,折返到入口节点的第一路径搜索;

将折返到的入口节点作为当前节点,将当前节点下一时刻的扩展节点确定为等待节点,根据执行的所述第一路径搜索的时长确定等待时长。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,检测模块502具体执行:

确定同一扩展节点属于搜索路径上不同时刻的当前节点的扩展节点时,确定该扩同一扩展节点的路径代价,为属于不同时刻的当前节点的扩展节点时对应的路径搜索代价的较小值。

在一些可能的实施例中,基于当前未进行路径搜索的扩展节点的路径搜索代价,选择下一个当前节点作为搜索路径上的节点,检测模块502具体执行:

基于当前未进行路径搜索的扩展节点的路径搜索代价,选择路径搜索代价最小的扩展节点作为下一个当前节点,并确定所述下一个当前节点作为搜索路径上的节点。

在一些可能的实施例中,确定第一AGV下一时刻运动到任一扩展节点时,属于未发生冲突的无效折返路径,检测模块502具体执行:

确定第一AGV下一时刻运动到的扩展节点A,为当前节点B在搜索路径上的上一个节点,若从上一个节点到达当前节点B的时刻开始至当前时刻中的任一时刻,假定第一AGV从当前节点B向上一节点运动时不存在与第二AGV的冲突,则确定下一时刻运动到所述扩展节点A属于无效折返路径;

确定第一AGV下一时刻运动到的扩展节点不属于当前节点,而且仅有任意时刻不能等待的临时约束,则确定下一时刻运动到所述扩展节点A属于无效折返路径。

基于相同的发明构思,本申请还提供一种路径规划装置,如图6所示,包括:

确定模块601,确定待规划的第一自动引导车AGV的起点和终点;

搜索模块602,利用本申请实施例任一路径搜索方法,从所述第一AGV的起点开始进行路径搜索,至搜索到所述第一AGV的终点时结束;

规划模块603,基于各等待节点对应的所述等待时长,确定各等待节点的路径搜索代价,基于确定的路径搜索代价继续执行路径搜索过程。

基于相同的发明构思,本申请还提供了一种电子设备,包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的实施例中一种路径搜索方法或路径规划方法。

如图7所示,设备包括处理器701、存储器702、通信接口703和总线704。其中,处理器701、存储器702和通信接口703通过总线704相互连接。

处理器701,用于读取存储器702中的指令并执行,以使至少一个处理器能够执行上述实施例提供的路径搜索方法或路径规划方法。

存储器702,用于存储上述实施例提供的路径搜索方法或路径规划方法的各种指令以及程序。

总线704可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器701可以是中央处理器(central processing unit,简称CPU),网络处理器(network processor,简称NP),图像处理器(Graphic Processing Unit,简称GPU)或者CPU、NP、GPU的任一组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。

基于相同的发明构思,本申请还提供一种计算机存储介质,如图8所示,计算机存储介质存储有计算机程序,计算机程序用于使计算机执行上述实施例中任何一项方法。

存储器可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)821和/或高速缓存存储器822,还可以进一步包括只读存储器(ROM)823。

存储器还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120116581634