具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请针对鱼骨形区域的AGV管制方法一实施方式的流程示意图,该管制方法包括:
S101:根据当前AGV所在起点和任务终点规划当前AGV的运行路径。
具体地,在本实施例中可以通过A星规划的方式,在当前AGV所在起点和任务终点之间规划出一条最短路径作为当前AGV的运行路径,以提高AGV的运行效率。
另外,请参阅图2,图2为图1中步骤S101之前本申请针对鱼骨形区域的AGV管制方法另一实施方式的流程示意图。在上述步骤S101之前,本申请所提供的管制方法还包括:
S201:获取AGV调度系统对应的拓扑地图。
具体地,拓扑地图是指地图学中一种统计地图,一种保持点与线相对位置关系正确而不一定保持图形形状与面积、距离、方向正确的抽象地图。
S202:对拓扑地图进行识别,以获得拓扑地图上的所有鱼骨形区域,并对每个鱼骨形区域设置唯一的编号。
具体地,如图3a所示,图3a为拓扑地图一实施方式的局部示意图。该拓扑地图可以包含鱼骨形区域10,也可包含非鱼骨形区域12。其中,鱼骨形区域10需满足只有一条唯一通道(即主干100)与外部区域14连通,该外部区域14可以是鱼骨形区域10,也可以是非鱼骨形区域12。整个鱼骨形区域10由一条主干100以及主干100上的延伸出去的各条枝干102组成,且整个鱼骨形区域10仅有一个位于主干100上的出入点104,AGV通过该出入点104进入或者离开鱼骨形区域10。
上述步骤S202的实现过程可以为:识别出拓扑地图中的其中一个枝干102;识别出与枝干102连接的主干100;识别出与主干100连接的其余所有枝干102,进而获得与主干100对应的鱼骨形区域10以及鱼骨形区域10的出入点104。通过上述方式,可以自动识别出拓扑地图中的鱼骨形区域10,且无需人工手动划出,其效率和准确率较高。
另外,在识别出一个鱼骨形区域10后,可以对该鱼骨形区域10设置唯一的编号,后续识别过程中可对已经识别出的鱼骨形区域10不再进行识别。同样地,当拓扑地图中的某个节点被识别后,也可对该节点进行编号,当所有节点均被编号后,则表示可以停止对该拓扑地图识别的过程。
S203:根据AGV调度系统内的最大AGV的尺寸和每个鱼骨形区域的尺寸设置每个鱼骨形区域的设备容量。
具体地,在本实施例中,AGV调度系统内可能存在多个不同尺寸的AGV,上述确定设备容量时以最大AGV为衡量标准,以提高获得的设备容量的准确性。此外,上述确定每个鱼骨形区域的设备容量可以避免后续鱼骨形区域超负荷容纳的情况,降低AGV堵塞的概率。
在一个实施方式中,上述步骤S203具体包括:获得鱼骨形区域中同侧的相邻两个枝干不能同时停留最大AGV的组数,将鱼骨形区域的设备容量设置为鱼骨形区域的枝干数量与组数的差值。例如,如图3a所示,位于同侧的且相邻的两个枝干A和枝干B若同时停留最大AGV,则出现两个AGV相互碰撞的情况,因此,在核算设备容量时需要将枝干数量减去不能同时停留的组数。上述确定设备容量的方式较为简单、准确。
优选地,上述获得鱼骨形区域中同侧的相邻两个枝干不能同时停留最大AGV的组数的过程可以为,获得鱼骨形区域中同侧的相邻两个枝干之间的距离小于最大AGV的对角线尺寸的组数。上述利用最大AGV的对角线的尺寸来衡量的方式,可以使得后续AGV运行过程中无论处于何种摆放角度,其均不会受到周围AGV的碰撞。
S102:判断当前AGV所在起点或者任务终点是否处于鱼骨形区域。
具体地,本申请对于当前AGV所在起点和任务终点的判断顺序并无限定。
S103:若是,则通过与运行路径相关的鱼骨形区域的标志位和/或任务终点的标志位判断是否允许当前AGV通行,其中,鱼骨形区域的标志位与运行方向相关。
具体地,在本实施例中,鱼骨形区域的标志位包括进入标志位和离开标志位,该进入标志位和离开标志位都会根据当前AGV调度系统内的设备状态进行实时更新。若当前鱼骨形区域有AGV进入,则其对应的进入标志位为第一进入标志(例如,true),否则其对应的进入标志位为第二进入标志(例如,false)。同样地,若当前鱼骨形区域有AGV离开,则其对应的离开标志位为第一离开标志(例如,true),否则其对应的离开标志位为第二离开标志(例如,false)。
进一步,考虑到AGV的尺寸,对于距离相近会相互影响的两个鱼骨形区域其进入标志位和离开标志位可以设置为相同。如图3b所示,图3b为拓扑地图另一实施方式的局部示意图。若AGV20目前允许离开第一鱼骨形区域22,且由于第一鱼骨形区域22与相邻的第二鱼骨形区域24之间的距离小于AGV20的尺寸,则此时可以将第二鱼骨形区域24的标志位设置为与第一鱼骨形区域22的标志位相同,例如,离开标志位均为第一离开标志,进入标志位均为第二进入标志。其中,上述距离可以是相邻的第一鱼骨形区域22与第二鱼骨形区域24之间的最小距离,AGV20的尺寸可以是AGV20的宽度、长度或对角线等。
此外,鱼骨形区域内的每个节点都会设置一个标志位,当有AGV将某个节点作为任务终点,且同时该AGV在该鱼骨形区内或已被允许进入该鱼骨形区域时,其标志位会被置为第一节点标志(例如,true);否则该节点的标志位会被设置为第二节点标志(例如,false)。
进一步,当AGV尺寸会影响该节点附近的其他节点时,附近的其他节点的标志位也会被置为与该节点的标志位相同。例如,请再次参阅图3a,若节点A被其中一个AGV停留或作为任务终点,此时由于节点A与相邻的节点B之间的距离小于当前AGV的尺寸,该尺寸可以是AGV的宽度、长度或对角线等,则此时节点B与节点A的标志位均设置为第一节点标志。
具体上述步骤S103的实现过程在后续分多种情况进行详细说明。
S104:若允许,则将与运行路径相关的鱼骨形区域的标志位和任务终点的标志位进行更新,下发运行路径至当前AGV。
S105:否则,下发原地等待通知至当前AGV。
在一个实施方式中,上述步骤S103之前,还包括:获得当前AGV所在起点、任务终点与运行路径相关的鱼骨形区域的相对关系;其中,该相对关系可以是AGV所在起点位于鱼骨形区域内还是鱼骨形区域外,AGV的任务终点位于鱼骨形区域内还是鱼骨形区域外,AGV是准备进入鱼骨形区域还是离开鱼骨形区域。通过获得不同的相对关系可以选择不同的判断准则进行判断。
情形一:如图3c所示,图3c为拓扑地图另一实施方式的局部示意图。上述步骤S103包括:若当前AGV30所在起点32位于鱼骨形区域34外,并准备进入鱼骨形区域34,且任务终点36位于鱼骨形区域34内,则判断鱼骨形区域34的设备容量是否未达到上限、鱼骨形区域34的离开标志位是否为第二离开标志、以及任务终点36的标志位是否第二节点标志。具体鱼骨形区域34的设备容量、离开标志位、任务终点36的标志位的判断顺序不作限定。
对应地,上述步骤S104包括:若鱼骨形区域34的设备容量未达到上限(即还可容纳新的AGV进入)、鱼骨形区域34的离开标志位为第二离开标志(即当前没有AGV离开鱼骨形区域34,若当前AGV进入鱼骨形区域34不会出现相向而行的情况)、任务终点36的标志位第二节点标志(即任务终点36没有被其他AGV占用或者没有被其他AGV影响),则将与运行路径相关的鱼骨形区域34的进入标志位更新为第一进入标志、任务终点36的标志位更新为第一节点标志,并下发运行路径至当前AGV30。
上述步骤S105为:若鱼骨形区域34的设备容量达到上限(即不能再容纳当前AGV30进入)、或者鱼骨形区域34的离开标志位为第一离开标志(即目前有AGV正离开鱼骨形区域34,若当前AGV30进入鱼骨形区域34则会出现相向而行的情况)、或者任务终点36的标志位为第一节点标志(即任务终点36被其他AGV占用或者被其他AGV影响),则下发原地等待通知至当前AGV,与运行路径相关的鱼骨形区域34的标志位、任务终点36的标志位不作更改。
以图3c中结构为例说明,AGV38正在离开鱼骨形区域34,此时鱼骨形区域34的离开标志位为第一离开标志;AGV30的任务终点36在鱼骨形区域34内,此时AGV30需要原地等待,待AGV38离开后才可进入。
情形二:如图3d所示,图3d为拓扑地图一实施方式的局部示意图。上述步骤S103包括:若当前AGV40所在起点42位于鱼骨形区域44内,并准备离开鱼骨形区域44,则判断鱼骨形区域44的进入标志位是否为第二进入标志。
对应地,步骤S104为:若鱼骨形区域44的进入标志位为第二进入标志(即目前没有AGV进入鱼骨形区域44,若当前AGV40离开鱼骨形区域44不会出现相向而行的情况),则将鱼骨形区域44的离开标志位设置为第一离开标志,并下发运行路径至当前AGV40。
步骤S105为:若鱼骨形区域44的进入标志位第一进入标志(即目前有AGV进入鱼骨形区域44,若当前AGV40离开鱼骨形区域44则会出现相向而行的情况),则下发原地等待通知至当前AGV40,与运行路径相关的鱼骨形区域44的标志位不变,所在起点42的标志位不变。
情形三:如图3e所示,图3e为拓扑地图另一实施方式的局部示意图。上述步骤S103包括:若当前AGV(图未示)所在起点50位于鱼骨形区域52内,准备到达位于当前鱼骨形区域52内的任务终点54,则判断AGV所在起点50与当前鱼骨形区域52的出入点56之间的距离是否大于任务终点54与出入点56之间的距离。需要说明的是,此处的距离并不是指两点之间的直线距离,而是通过A星规划,AGV从一个节点运行至另一个节点的实际路径。例如,上述AGV所在起点50与出入点56之间的距离为AGV所在起点50经过节点C、节点D后到达出入点56的距离。上述任务终点54与出入点56之间的距离为任务终点54经过节点D后到达出入点56的距离。
(1)若AGV所在起点50与当前鱼骨形区域52的出入点56之间的距离大于任务终点54与出入点56之间的距离,则可以将AGV归类为需要离开鱼骨形区域52,则此时可以判断鱼骨形区域52的进入标志位是否为第二进入标志、以及任务终点54的标志位是否为第二节点标志,具体判断顺序不作限定。
对应地,步骤S104为:若鱼骨形区域52的进入标志位为第二进入标志(即目前没有AGV进入鱼骨形区域52)、以及任务终点54的标志位为第二节点标志(即任务终点54没有被其他AGV占用,或者未被其他AGV影响),则将鱼骨形区域52的离开标志位更新为第一离开标志以及任务终点54的标志位更新为第一节点标志,并下发运行路径至当前AGV。
对应地,步骤S105为:若鱼骨形区域52的进入标志位为第一进入标志(即目前有AGV进入鱼骨形区域52)、或者任务终点54的标志位为第一节点标志(即任务终点54被其他AGV占用,或者被其他AGV影响),则下发原地等待通知至当前AGV,与运行路径相关的鱼骨形区域52的标志位不变,任务终点54的标志位不变。
(2)若AGV所在起点50a与当前鱼骨形区域52的出入点56之间的距离小于等于任务终点54a与出入点56之间的距离,则可以将AGV归类为需要进入鱼骨形区域52,则此时可以判断鱼骨形区域52的离开标志位是否为第二离开标志、以及任务终点54a的标志位是否为第二节点标志,具体判断顺序不作限定。
对应地,步骤S104为:若鱼骨形区域52的离开标志位为第二离开标志(即目前没有AGV离开鱼骨形区域52)、以及任务终点54a的标志位为第二节点标志(即任务终点54a没有被其他AGV占用,或者未被其他AGV影响),则将鱼骨形区域52的进入标志位设置为第一进入标志以及任务终点54a的标志位更新为第一节点标志,并下发运行路径至当前AGV。
对应地,步骤S105为:若鱼骨形区域52的离开标志位为第一离开标志(即目前有AGV离开鱼骨形区域52)、或者任务终点54a的标志位为第一节点标志(即任务终点54a被其他AGV占用,或者被其他AGV影响),则下发原地等待通知至当前AGV,与运行路径相关的鱼骨形区域52的标志位不变,任务终点54a的标志位不变。
此外,在另一个实施范式中,在上述步骤S104中下发运行路径至当前AGV之前或之后,还包括:判断与运行路径相关的鱼骨形区域与相邻的其他鱼骨形区域之间的距离是否小于当前AGV的尺寸,若是,则将相邻的其他鱼骨形区域的离开标志位和进入标志位设置为与当前鱼骨形区域相同;和/或,判断当前任务终点与相邻的其他节点之间的距离是否小于当前AGV的尺寸,若是,则将相邻的其他节点的标志位设置为与当前任务终点相同。该方式可以确保AGV能够到达任务终点,不会停在半路,阻挡后方AGV。
下面以一个具体地应用场景对本申请所提供的针对鱼骨形区域的AGV管制方法作进一步说明。具体请参阅图4,图4为本申请针对鱼骨形区域的AGV管制方法另一实施方式的流程示意图。
S301:初始化AGV调度系统的拓扑地图,并识别出拓扑地图中的所有鱼骨形区域。
S302:设定每个鱼骨形区域的唯一编号,并计算各个鱼骨形区域的设备容量。
S303:通过A星规划根据当前AGV所在起点和任务终点规划当前AGV的运行路径。
S304:判断当前AGV所在起点是否在鱼骨形区域内。若是,则进入步骤S305,否则进入步骤S306(见下方)。
S305:判断当前AGV的任务终点是否和所在起点位于同一个鱼骨形区域内;若是,则进入步骤S307,否则进入步骤S308。
S307:计算当前AGV所在起点与鱼骨形区域的入口点之间的距离d1,以及任务终点与入口点之间的距离d2。
S309:判断d1是否大于d2;若是,则进入步骤S310,否则进入步骤S311。
S310:判断任务终点的标志位是否为true。若是,则下发原地等待通知,并返回至步骤S303,若否,则进入步骤S308。
S308:判断当前鱼骨形区域的进入标志位是否为true。若是,则下发原地等待通知,并返回至步骤S303,若否,则进入步骤S312。
S312:将当前鱼骨形区域离开标志位更新为true。
S313:正常下发路径。
承接上方S306:判断任务终点是否在鱼骨形区域内;若否,则进入步骤S313;若是则进入步骤S314。
S314:判断鱼骨形区域的设备容量是否已满。若是,则下发原地等待通知,并返回至步骤S303。否则,进入步骤S311。
S311:判断鱼骨形区域的离开标志位是否为true。若是,则下发原地等待通知,并返回至步骤S303。否则,进入步骤S315。
S315:判断任务终点的标志位是否为true。若是,则下发原地等待通知,并返回至步骤S303。否则,进入步骤S316。
S316:将当前鱼骨形区域进入标志位更新为true,并进入步骤S313。
总而言之,一方面,本申请通过运行方向、任务终点情况来管制AGV,使得在鱼骨形区域不会存在两辆AGV相向而行的情况,确保不需要额外避让,出现死锁的情况;且通过运行方向来管制,可以使得同一个运行方向上可以有多辆AGV通行,提高通行效率。且若AGV静止停在枝干处,则不会对鱼骨形区域的两个标志位产生影响,从而保证AGV到达任务点停留后,原先鱼骨形区域内的AGV可以及时离开,不需要过长时间等待,此外鱼骨形区域的标志位的状态每帧都会实时更新。另一方面,本方案中在管制时会考虑AGV的实际尺寸,会将相邻的距离小于AGV的实际尺寸的两个鱼骨形区域共同管制,以及会将与任务终点相邻的距离小于AGV的实际尺寸的节点共同管制,以确保AGV能够到达任务终点,不会停在半路,阻挡后方AGV。再一方面,本方案中会自动识别出拓扑地图上的鱼骨形区域,无需人工手动划出,效率和准确率较高。
请参阅图5,图5为本申请针对鱼骨形区域的AGV管制装置一实施方式的框架示意图。该管制装置包括:规划模块600、第一判断模块602、第二判断模块604、第一执行模块606、第二执行模块608。
其中,规划模块600用于根据当前AGV所在起点和任务终点规划当前AGV的运行路径。第一判断模块602用于判断当前AGV所在起点或者任务终点是否处于鱼骨形区域。第二判断模块604用于在第一判断模块602判断为是时,通过与运行路径相关的鱼骨形区域的标志位和/或任务终点的标志位判断是否允许当前AGV通行,其中,鱼骨形区域的标志位与运行方向相关。第一执行模块606用于在第二判断模块604判断为允许时,将与运行路径相关的鱼骨形区域的标志位和任务终点的标志位进行更新,下发运行路径至当前AGV。第二执行模块608用于在第二判断模块604判断为不允许时,下发原地等待通知至当前AGV。
在一个实施方式中,上述第一执行模块606包括更新子模块,用于当AGV允许进入鱼骨形区域时,鱼骨形区域的进入标志位设置为第一进入标志;否则,设置为第二进入标志;当AGV允许离开鱼骨形区域时,鱼骨形区域的离开标志位设置为第一离开标志;否则,设置为第二离开标志;当AGV所在起点位于鱼骨形区域内或AGV允许进入鱼骨形区域时,位于鱼骨形区域内的与AGV对应的任务终点的标志位设置为第一节点标志,否则,设置为第二节点标志。
进一步,上述管制装置还包括第三判断模块和第三执行模块,其中,第三判断模块用于在第一执行模块606下发运行路径至当前AGV之前或之后,判断与运行路径相关的鱼骨形区域与相邻的其他鱼骨形区域之间的距离是否小于当前AGV的尺寸。第三执行模块用于在第三判断模块判断为是时,将相邻的其他鱼骨形区域的离开标志位和进入标志位设置为与当前鱼骨形区域相同。和/或,第三判断模块用于在第一执行模块606下发运行路径至当前AGV之前或之后,判断当前任务终点与相邻的其他节点之间的距离是否小于当前AGV的尺寸。第三执行模块用于在第三判断模块判断为是时,将相邻的其他节点的标志位设置为与当前任务终点相同。
在又一个实施方式中,本申请所提供的管制装置还包括第一获取模块,用于在第二判断模块604工作之前获得当前AGV所在起点、任务终点与运行路径相关的鱼骨形区域的相对关系。
进一步,第二判断模块604具体用于若AGV所在起点位于鱼骨形区域外,并准备进入鱼骨形区域,则判断鱼骨形区域的设备容量是否未达到上限、鱼骨形区域的离开标志位是否为第二离开标志、任务终点的标志位是否第二节点标志;若AGV所在起点位于鱼骨形区域内,并准备离开鱼骨形区域,则判断鱼骨形区域的进入标志位是否为第二进入标志;若AGV所在起点位于鱼骨形区域内,准备到达位于当前鱼骨形区域内的任务终点,则判断AGV所在起点与当前鱼骨形区域的出入点之间的距离是否大于任务终点与出入点之间的距离;若是,则判断鱼骨形区域的进入标志位是否为第二进入标志、以及任务终点的标志位是否为第二节点标志;否则,判断鱼骨形区域的离开标志位是否为第二离开标志、以及任务终点的标志位是否为第二节点标志。
在又一个实施方式中,本申请所提供的管制装置还包括第二获取模块、第一识别模块、第一计算模块;其中,第二获取模块用于获取AGV调度系统对应的拓扑地图。第一识别模块用于对拓扑地图进行识别,以获得拓扑地图上的所有鱼骨形区域,并对每个鱼骨形区域设置唯一的编号。第一计算模块用于根据AGV调度系统内的最大AGV的尺寸和每个鱼骨形区域的尺寸设置每个鱼骨形区域的设备容量。
在一个应用场景中,第一识别模块的工作过程包括:识别出拓扑地图中的其中一个枝干;识别出与枝干连接的主干;识别出与主干连接的其余所有枝干,进而获得与主干对应的鱼骨形区域以及鱼骨形区域的出入点。
第一计算模块的工作过程包括:获得鱼骨形区域中同侧的相邻两个枝干不能同时停留最大AGV的组数;将鱼骨形区域的设备容量设置为鱼骨形区域的枝干数量与组数的差值。
请参阅图6,图6为本申请针对鱼骨形区域的AGV管制装置一实施方式的结构示意图。该管制装置70包括相互耦接的存储器700和处理器702,存储器700内存储有程序指令,处理器702用于执行程序指令以实现上述任一实施例中的管制方法。
具体而言,处理器702用于控制其自身以及存储器700以实现上述任一数据质量检测方法实施例中的步骤。处理器702还可以称为CPU(Central Processing Unit,中央处理单元)。处理器702可能是一种集成电路芯片,具有信号的处理能力。处理器702还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器702可以由多个集成电路芯片共同实现。
请参阅图7,图7为本申请存储装置一实施方式的结构示意图。存储装置80存储有能够被处理器运行的程序指令800,程序指令800用于实现上述任一管制方法实施例中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。