发明内容
本申请提供了实体餐饮店内的运输车调度方法、装置及计算机系统,能够在降低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算路失败,则阻塞针对队列中后续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在同一调度周期内可以获得多次连续算路的机会,在仅需等待较少的时间便能算出路的情况下,这种方式可以使得AGV更快地被算出路,以此降低单车道对AGV效能的损失。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中,为了能够在降低AGV车道对餐厅面积占用的同时,保证AGV送餐效能,首先可以实体餐饮店内铺设有供AGV行驶的单车道,这种单车道为:在车道的宽度方向上仅容纳单量AGV行驶,以减少车道对餐品面积的占用。同时,在对AGV的调度上,可以采用“强排队”的策略,以提高AGV的效能,避免出现多辆AGV相互阻挡,或者单量AGV等待时间过长等情况发生。其中,所谓的强排队策略是指,在具体的调度周期内,首先可以按照优先级对AGV进行排序,然后按照AGV在队列中的先后顺序,依次进行算路(为AGV计算行驶路径);并且,如果某个AGV1算路失败,则并不是直接进行下一个AGV2的算路,而是将下一个AGV2的算路程序阻塞住,仍然为该AGV1进行重新算路,直到为该AGV1算出路,或者超时时间到,再为队列中的下一个AGV2进行算路。之所以这样进行强排队,是因为,在为具体的AGV进行算路的过程中,之前已经被算出路的AGV通常都处于运动状态,对于某个未能算出路的AGV1而言,可能是由于途中某个节点处刚好有其他AGV3对路径造成了阻挡,但是,该造成阻挡的AGV3是在运动中,因此,在经过一段时间后,可能就不再成为阻挡因素,使得AGV1能够被成功算出路,等等。因此,本申请实施例中采用的方式是,如果AGV1算路失败,则会阻塞一段时间,在该时间内重算几次,可能就会使得该AGV1算路成功,之后再进入下一个AGV2的算路。否则,如果不采用该强排队策略,则AGV1算路失败后,直接对下一个AGV2进行算路,则该AGV1可能需要等到下一个调度周期才能够被重新算路,会使得AGV1等待时间过长,降低其能效。
具体实现时,从技术框架角度而言,参见图1,可以为餐饮店部署AGV调度系统,该AGV调度系统可以部署在餐饮店内部的服务器中,或者也可以位于云端服务器中,可以为多家餐饮店提供服务。另外,服务器中还可以部署任务分配系统,出餐口产生新的任务后,可以由该任务分配系统为该任务分配AGV。当然,任务分配结果可以提供给AGV调度系统,包括任务对应的目的地信息,等等。AGV还可以将自己所在的位置信息上报给AGV调度系统,使得AGV调度系统可以实时获知具体AGV所在的位置信息,这种位置信息可以用于确定AGV的调度优先级。另外,AGV在执行送餐任务的过程中,还可以在任务状态发生更新时,将这种任务状态信息提供给任务分配系统以及AGV调度系统。例如,某AGV已经将餐品送至目的地,并且顾客已经将餐品从AGV上取下,则任务状态可以更新为已完成,该信息可以提供给任务分配系统以及AGV调度系统。任务分配系统可以为该AGV分配新的任务,AGV调度系统则可以根据具体的任务状态情况来确定AGV的调度优先级。
下面对本申请实施例提供的具体实现方案进行详细介绍。
实施例一
该实施例一是从AGV调度系统的角度,提供了一种实体餐饮店内的运输车调度方法,在该方法中,如图2所示,所述实体餐饮店内铺设有供AGV行驶的车道,所述车道为单车道,所述单车道为:在车道的宽度方向上仅容纳单量AGV行驶。
具体的,参见图3,该方法可以包括:
S301:确定当前调度周期内待算路的AGV集合;其中,所述算路包括:为AGV计算行驶路径;
其中,具体的调度周期可以按照实际的需求而定,例如,可以为5S,等等。具体的待算路的AGV集合是指,等待进行算路的AGV组成的集合。这些待算路的AGV在被算出路之前,在其所在的位置上处于静止状态。具体可以包括上一个调度周期中未能成功算出路的AGV,在停车区等待的AGV,已经完成一次送餐任务,等待执行下一次任务的AGV,等等。当然,在具体为AGV进行算路的过程中,餐厅中还会存在一些其他的AGV处于行驶状态,这些AGV通常是在之前的调度周期中被成功算出路的AGV。
对于调度系统而言,一方面可以保存餐饮店内与车道铺设情况相关的地图数据,另一方面,可以维护餐饮店内AGV的任务状态以及位置信息表。当然,由于一个AGV如果在一个调度周期内未能成功算出路,则可以到下一调度周期中进行算路,但是,这会造成AGV的等待。而一个AGV的等待时间信息也可以作为确定调度优先级的影响因素,因此,在信息表中还可以记录AGV的等待时间信息。这样,根据该信息表,可以确定出具体需要进行算路的AGV,后续还可以根据这些信息确定出各个AGV的调度优先级,等等。
具体实现时,具体的信息表可以如表1所示:
表1
AGV标识 |
任务状态 |
当前所在位置 |
等待时间 |
10001 |
待执行 |
(x1,y1) |
t1 |
10002 |
已完成 |
(x2,y2) |
t2 |
…… |
…… |
…… |
…… |
S302:根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息,确定AGV的优先级;
在确定出待算路的AGV集合后,可以根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息,确定AGV的优先级。具体的,可以将位于车道入口处或交叉路口处易对其他AGV造成阻挡的AGV,以及等待时间达到阈值的AGV,确定为第一优先级;将需要进入车道执行送餐任务的AGV确定为第二优先级;将已完成送餐任务且所在的位置靠近车道末端、不易对其他AGV造成阻挡的AGV确定为第三优先级。
也就是说,对于位于车道入口处或者交叉口处的AGV,其所在的位置可能会成为阻挡多个AGV的关键节点,因此,可以具有最高的优先级,优先为其算出路,以使其尽快驶离这种关键节点位置,这样,后续AGV被成功算出路的概率也将会得到提高。另外,对于等待时间已经超过阈值的AGV,无论其当前所在的位置在何处,都可以优先为其进行算路,避免等待时间过长对顾客的体验等造成影响。
对于需要进入车道执行送餐任务的AGV,可以在将挡路的以及超时的AGV调度完成后,再进行算路,这样可以提高算路成功率,尽快将餐品送达目的地。而对于已经完成送餐任务并且其所在的位置又不是车道入口或者交叉口等容易造成阻挡的关键位置,则在调度时间上的紧迫程度可以相对较低,因此,可以具有最低的优先级。
S303:根据所述优先级对所述集合中的AGV进行排序,并按照所述排序结果为所述AGV进行算路,其中,如果针对当前AGV算路失败,则阻塞针对队列中后续AGV的算路程序,并对该当前AGV进行多次重新算路。
在获得具体AGV的调度优先级信息后,可以按照该优先级信息对待算路的AGV进行排序,生成AGV序列。其中,对于不同优先级的AGV,可以按照优先级的高低进行排序。而对于同一优先级的AGV,还可以具体的位置、时间等信息,进行进一步的排序。
例如,如果第一优先级的AGV为多个,则可以根据AGV相对于所述车道入口处或交叉路口的接近程度,或等待时间的长度,对第一优先级内的AGV进行排序。具体的,越接近车道入口处或交叉路口的AGV,由于更容易对其他AGV进出车道造成阻挡,因此,排序可以越靠前。另外,等待时间越长的AGV,其排序越靠前。
如果第二优先级的AGV为多个,则可以根据AGV关联的任务中目标桌位与车道末端的靠近程度,对第二优先级内的AGV进行排序。也就是说,对于需要进入车道的AGV1而言,如果其目的位置位于车道末端,则在其去往目的地的途中,如果后续算路的另一AGV2关联的目的位置位于同一车道上比较远离末端的位置,则该AGV1通常不会对该AGV2造成阻挡,因此,能够成功为AGV2算出路。并且,AGV1的目的位置越接近车道末端,对其他进入同一车道的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会在下一个调度周期重新算路。
另外,具体实现时,为了更好的提高效能,如图2所示,还可以在所述车道上设置排队等待区域,对于无法直接到达目的位置的AGV,也可以调度该AGV到排队区域等待。另外,由于还可能存在AGV无法到达目的位置,也无法到达排队区域的情况,此时,为了避免该AGV对其他AGV造成阻挡,还可以在所述实体餐饮店设置公共停车区,将AGV调度到公共停车区。其中,无论是直接计算出到目的位置的路,还是到排队区域的路,或者到公共停车区的路,都属于成功算出路。
其中,在上述存在排队等待区域以及公共停车区域的情况下,具体在对当前AGV进行多次重新算路时,如果所述当前AGV为需要进入车道执行送餐任务的AGV,则在每次为该当前AGV进行算路时,可以首先先以该当前AGV的送餐目的地为终点进行算路,如果失败,则以距离送餐目的地最近的排队等待区域为终点进行算路,如果仍失败,则在预置的时间间隔后开始针对该当前AGV的下一次算路。之后,如果阻塞时间达到第二阈值时间后,以所述送餐目的地或排队等待区域为终点的算路仍失败,则以所述公共停车区为终点,为所述当前AGV进行算路;其中,所述第二阈值时间小于第一阈值时间。
也就是说,对于需要进入到车道向某目的位置进行送餐的AGV,在进行算路时,可以优先计算去往目的位置的路或者排队等待区域的路,而暂时不计算去公共停车区的路。只有在经过多次计算之后,无法算出去往目的位置的路或者排队等待区域的路的情况下,再考虑为该AGV计算去往公共停车区的路。这是因为,排队等待区域通常是位于具体的车道上,甚至如图2所示,由于具体送餐的目的位置通常是具体桌位所在的位置处,因此,可以分别为每个桌位都设置排队等待区域。而公共停车区通车并不位于某条具体的车道上,距离具体的桌位通常会比较远。因此,具体以某个桌位为目的位置的AGV,如果无法直接到达该目的位置,则可以优先调度到该桌位对应的排队等待区域进行等待,这样,可以便于AGV更快速的到达目的位置。
具体实现时,如果对所述当前AGV算路成功,则在该当前AGV去往该算路终点的途中,就可以开始对队列中的下一AGV进行算路,这样可以提高算路的效率,便于队列中的AGV尽快进入算路程序。
另外,在实际应用中,在具体进行AGV算路的过程中,餐饮店中的出餐口可能随时会产生新的送餐任务。而为了避免出餐口位置造成拥挤,这种新产生的送餐任务对应的AGV应该尽快驶离出餐口。为此,在本申请实施例中,如果在当前调度内所述餐饮店的出餐口产生新的送餐任务,则可以优先为该新的送餐任务对应的AGV进行算路。
其中,具体在优先为所述新的送餐任务对应的AGV进行算路时,还可以根据该AGV对应的目的地在车道中的位置情况,来确定直接将AGV调度到目的地/排队等待区域,或者公共停车区。具体的,如果该AGV对应的目的地靠近车道末端,则可以以该目的地或排队等待区域为终点进行算路;否则,可以以公共停车区为目的地进行算路。
另外,如果在优先为所述新的送餐任务对应的AGV进行算路时,原队列中某个AGV的算路进程被打断,则在新的调度周期中,可以调整该被打断AGV的超时时间。具体实现时,在一种方式下,在具体调整该超时时间时,可以通过以下方式确定:Max(二次计算任务超时时间阈值,连续计算任务超时时间阈值-已经计算时间)。
需要说明的是,在具体实现时,如果所述AGV关联的任务为向目标桌位进行送餐的任务,则具体在确定调度优先级时,还可以与所述任务关联的餐品类别和/或用户属性信息相关。例如,某餐品的最佳口感期比较短,则可以优先配送,或者,某用户属于高级会员用户,也可以优先为其配送,等等。
另外,在实际应用中,为了进一步提升餐饮店的智能性,AGV还可以提供餐具回收服务。在这种情况下,AGV关联的任务还可以包括:从目标桌位处回收餐具的任务。具体实现时,可以通过多种方式来生成具体的餐具回收任务,例如,可以为具体的桌位关联回收区,在回收区还可以通过重力感知等装置,对餐具放置情况进行感知,并且可以实时提交到服务端,这样服务端可以获知具体桌位回收区的餐具放置情况。或者,还可以为具体的桌位配备用于发起回收指令的操作按键或语音交互装置,这样,用户在用餐完毕或者用餐过程中需要进行餐具回收时,可以通过该操作按键或者语音的方式发起回收请求。相应的,服务器可以接收到具体的回收请求,并且可以生成具体的回收任务,并向AGV进行分配。其中,具体实现时,餐饮店内可以配备分别具备送餐以及回收功能的两类不同的AGV,分别用于执行送餐或者回收任务。或者,在另一种方式下,为了避免过多的AGV等待进入或者离开车道,而导致的调度困难或单个AGV等待时间过长,还可以通过同一AGV同时提供送餐以及回收功能。例如,同一AGV可以关联有第一放置区以及第二放置区,其中,所述第一放置区用于放置待送餐的餐具/餐品,所述第二放置区用于放置待回收的餐具。这样,具体的AGV被分配了送餐任务后,在返回的途中,还可能会被分配回收任务,从而提升任务分配以及调度效率。
另外,在具体实现时,如图2所示,同一餐饮店中通常会部署多条车道,形成多条“T台”,每个“T台”可以对应一条车道,且为单车道。在这种情况下,具体的桌位通常可以分布在车道的两侧,或者,也可以存在单侧分布的情况。而在用户进入到餐厅用餐的过程中,通常情况下,是可以任选桌位的。但是,这样可能会造成一种情况出现:可能有大量的用户聚集在某车道关联的桌位上,而其他车道关联的桌位可能会由于距离入口处比较远等原因,桌位占用率并不高。如果发生这种情况,会使得需要进入同一车道的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算路失败,则阻塞针对队列中后续AGV的算路程序,并对该当前AGV进行多次重新算路。这样可以使得每个AGV在同一调度周期内可以获得多次连续算路的机会,在仅需等待较少的时间便能算出路的情况下,这种方式可以使得AGV更快地被算出路,以此降低单车道对AGV效能的损失。
实施例二
该实施例二是从具体AGV控制器的角度,提供了一种实体餐饮店内的运输车行驶控制方法,其中,所述实体餐饮店内铺设有供运输车AGV行驶的车道,所述车道为单车道,所述单车道为:在车道的宽度方向上仅容纳单量AGV行驶;
参见图4,所述方法具体可以包括:
S401:接收调度系统提供的算路结果信息,其中,所述算路结果是根据当前调度周期内待算路的AGV集合中AGV的调度优先级进行排序后,按顺序进行的算路,其中,所述调度优先级是根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息确定的,如果针对当前AGV算路失败,则阻塞针对队列中后续AGV的算路程序,并对该当前AGV进行多次重新算路;
S402:按照所述算路结果中的行驶路径信息对所述AGV进行行驶控制。
关于该实施例二中的未详述部分可以参见前述实施例一中的记载,这里不再赘述。
与实施例一相对应,本申请实施例还提供了一种实体餐饮店内的运输车调度装置,所述实体餐饮店内铺设有供运输车AGV行驶的车道,所述车道为单车道,所述单车道为:在车道的宽度方向上仅容纳单量AGV行驶;
参见图5,所述装置可以包括:
AGV集合确定单元501,用于确定当前调度周期内待算路的AGV集合;其中,所述算路包括:为AGV计算行驶路径;
优先级确定单元502,用于根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息,确定AGV的优先级;
算路单元503,用于根据所述优先级对所述集合中的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进行算路。
再者,所述算路单元具体还可以用于:
如果在当前调度内所述餐饮店的出餐口产生新的送餐任务,则优先为该新的送餐任务对应的AGV进行算路。
具体的,所述算路单元具体可以用于:
在优先为所述新的送餐任务对应的AGV进行算路时,如果该AGV对应的目的地靠近车道末端,则以该目的地为终点进行算路;否则以公共停车区为目的地进行算路。
另外,该装置还可以包括:
超时时间调整单元,用于如果在优先为所述新的送餐任务对应的AGV进行算路时,原队列中某个AGV的算路进程被打断,则在新的调度周期中,调整该被打断AGV的超时时间。
其中,所述AGV关联的任务包括:向目标桌位进行送餐的任务;所述优先级还与所述任务关联的餐品类别和/或用户属性信息相关。
或者,所述AGV关联的任务包括:从目标桌位处回收餐具的任务;所述取回餐具的任务是通过感知到桌位关联的回收区的餐具放置情况,或者接收到通过桌位关联的操作按键或语音交互装置发出的回收请求后生成,并向AGV进行分配。
此时,同一AGV关联有第一放置区以及第二放置区,所述第一放置区用于放置待送餐的餐具/餐品,所述第二放置区用于放置待回收的餐具。
或者,所述实体餐饮店内配备有用于执行送餐任务的AGV以及用于执行回收任务的AGV。
具体的,所述实体餐饮店内的所述车道包括多条,所述车道的一侧或两侧分布有多个桌位;此时,该装置还可以包括:
第一统计单元,用于对所述车道关联的桌位的占用情况进行统计;
目标AGV确定单元,用于在检测到有用户即将落座在其中一车道关联的某座位,且该车道的桌位占用率高于阈值,且存在占用率低于阈值的其他车道时,则根据所述AGV当前所在的位置信息确定距离该座位最近的目标AGV;
第一引导消息发送单元,用于向所述目标AGV发送用于将所述用户引导至其他车道的消息,以便所述目标AGV通过语音播报的方式输出所述消息。
或者,所述装置还可以包括:
第二统计单元,用于对所述车道关联的桌位的占用情况进行统计;
用户标识确定单元,用于在检测到有用户即将落座在其中一车道关联的某座位,且该车道的桌位占用率高于阈值,且存在占用率低于阈值的其他车道时,则确定所述用户的标识信息,所述标识信息为所述用户预先在关联的网络系统中注册的用户标识;
第二引导消息发送单元,用于向所述标识信息关联的客户端发送用于将所述用户引导至其他车道的消息。
具体实现时,所述AGV还可以用于:在行驶到目标桌位所在的区域范围内的状态下,接收所述目标桌位关联的用户通过语音方式发出的餐品状态查询信息,并提交查询请求,所述查询请求中携带有所述目标桌位标识信息以及餐品标识信息;
所述装置还可以包括:
餐品状态信息提供单元,用于接收到所述AGV的查询请求后,获得所述目标桌位关联的所述餐品标识的状态信息,并返回给所述AGV,以便通过语音的方式播报所述状态信息。
与实施例二相对应,本申请实施例还提供了一种实体餐饮店内的运输车行驶控制装置,所述实体餐饮店内铺设有供运输车AGV行驶的车道,所述车道为单车道,所述单车道为:在车道的宽度方向上仅容纳单量AGV行驶;
参见图6,所述装置可以包括:
算路结果接收单元601,用于接收调度系统提供的算路结果信息,其中,所述算路结果是根据当前调度周期内待算路的AGV集合中AGV的调度优先级进行排序后,按顺序进行的算路,其中,所述调度优先级是根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息确定的,如果针对当前AGV算路失败,则阻塞针对队列中后续AGV的算路程序,并对该当前AGV进行多次重新算路;
行驶控制单元602,用于按照所述算路结果中的行驶路径信息对所述AGV进行行驶控制。
另外,本申请实施例还提供了一种计算机系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
确定当前调度周期内待算路的AGV集合;其中,所述算路包括:为AGV计算行驶路径;
根据所述集合中AGV关联的任务状态、所在的位置和/或等待时间信息,确定AGV的优先级;
根据所述优先级对所述集合中的AGV进行排序,并按照所述排序结果为所述AGV进行算路,其中,如果针对当前AGV算路失败,则阻塞针对队列中后续AGV的算路程序,并对该当前AGV进行多次重新算路。
其中,图7示例性的展示出了计算机系统的架构,具体可以包括处理器710,视频显示适配器711,磁盘驱动器712,输入/输出接口713,网络接口714,以及存储器720。上述处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,与存储器720之间可以通过通信总线730进行通信连接。
其中,处理器710可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器720可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器720可以存储用于控制计算机系统700运行的操作系统721,用于控制电子设备700的低级别操作的基本输入输出系统(BIOS)。另外,还可以存储网页浏览器723,数据存储管理系统724,以及运输车调度处理系统725等等。上述运输车调度处理系统725就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器720中,并由处理器710来调用执行。
输入/输出接口713用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口714用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线730包括一通路,在设备的各个组件(例如处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,与存储器720)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,存储器720,总线730等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的实体餐饮店内的运输车调度方法、装置及计算机系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。