机器人路径规划方法、装置及电子设备与流程

    专利查询2022-07-06  218



    1.本技术涉及路径规划技术领域,特别是涉及机器人路径规划方法、装置及电子设备。


    背景技术:

    2.a*寻路算法要解决的问题就是,在有障碍物的情况下,如何快速找到一条到达目的节点的最短路径,其在很多场景中都可以应用。例如,在机器人全局路径规划场景中,可以根据给定的目标位置以及全局地图,使用a*算法计算出机器人从起点位置到目标位置的最优路线,作为机器人的全局路线。
    3.a*寻路算法的基本原理是,首先将全局地图虚拟化,将其进行网格划分,划分出一个一个的小方块,每个小方块可以作为地图中的一个节点,以此可以使用二维数组来表示地图。在进行寻路的过程中,就是从起始节点开始,通过对周围可到达的节点(可以简称为周围节点,例如,与起点相邻的4个或者8个方块)进行探索,从中选出一个节点,再以该节点作为新的起点进行循环探索,直到找到终点。
    4.其中,在从周围节点中进行节点探索时,需要对各周围节点进行代价计算,并从中选择出代价最小者。其中,在基础的a*寻路算法中,周围节点n的代价f由g和h两部分组成,g表示从起点s移动到节点n的移动代价,h表示从节点n移动到终点e的预计移动代价(计算该预计移动代价时,忽略障碍物)。
    5.但是,在多机器人场景中,会存在不同机器人之间相互竞争路径资源的情况,因此,如何协调路径冲突是多机器人路径规划的难点。为此,现有技术中提出了一种增强a*算法,在该算法中,在f代价与g代价基础上,增加了交通代价t。具体的,可以用一张预约表保存环境中其他机器人的路径涉及到的节点,预约表实时更新并有时间窗限制。对于出现在预约表中的节点,会额外产生交通代价t,对于同一个节点而言,预约量越高(也即,需要途经该节点的机器人越多),则交通代价t越大,该节点的总代价也就越大。
    6.上述增强a*算法虽然考虑了节点的交通代价,但是,这种算法依赖单行道规则,以避免发生相向碰撞。这就使得该算法不够灵活,难以在一些更复杂的场景中应用。


    技术实现要素:

    7.本技术提供了机器人路径规划方法、装置及电子设备,能够在复杂的环境中进行多机器人的路径规划,具有更强的适用性。
    8.本技术提供了如下方案:
    9.一种机器人路径规划方法,包括:
    10.在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,获取环境中其他机器人的路径信息;其中,所述路径信息包括节点序列,和/或在节点上的停留情况信息;
    11.针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,根据所
    述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型;
    12.根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。
    13.其中,所述获取环境中其他机器人的路径信息,包括:
    14.获取环境中其他机器人的未完成路径信息,以便根据所述未完成路径信息,确定所述至少一个冲突机器人对应的冲突类型。
    15.其中,所述根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型,包括:
    16.对于不需要在所述周围节点n上停留的冲突机器人,确定所述冲突机器人的路径中,从上一节点f到所述周围节点n的第一方向角度信息;
    17.确定所述当前机器人从所述当前起始节点s到所述周围节点n的第二方向角度信息;
    18.根据所述第一方向角度信息以及所述第二方向角度信息,确定所述冲突类型是否为相向、交叉或跟随类型的冲突。
    19.其中,所述根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人产生的交通代价,包括:
    20.确定所述相向、交叉或跟随类型的冲突分别对应的基础交通代价;
    21.对所述冲突机器人在所述周围节点n处与所述当前机器人发生冲突的概率进行预测;
    22.根据所述基础交通代价以及所述发生冲突的概率,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人产生的交通代价。
    23.其中,所述对所述冲突机器人在所述周围节点n处与所述当前机器人发生冲突的概率进行预测,包括:
    24.针对冲突机器人i,根据所述冲突机器人i的未完成路径,确定所述冲突机器人i当前所在节点c,以及按照所述未完成路径,从所述当前所在节点c到所述周围节点n的第一距离;
    25.确定当前机器人从所述当前起始节点s到所述周围节点n的第二距离;
    26.根据所述第一距离以及所述第二距离预测所述当前机器人与所述冲突机器人i发生冲突的概率。
    27.其中,所述根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,包括:
    28.对于需要在所述周围节点n上停留的冲突机器人,根据所述未完成路径信息,确定所述冲突机器人在所述周围节点n上停留的起始时间t1,以及结束时间t2;
    29.对所述当前当前机器人从所述当前起始节点s到所述周围节点n的预计时间t;
    30.如果所述预计时间t位于[t1,t2]区间内,则根据从时间t到t2的时间长度,机器人的运动速度,以及单位距离移动代价,确定所述停留的冲突机器人在所述周围节点n为所述当前机器人造成的交通代价。
    [0031]
    其中,还包括:
    [0032]
    如果所述预计时间t位于[t1,t2]区间之外,则确定所述停留的冲突机器人在所述
    周围节点n为所述当前机器人造成的交通代价为0。
    [0033]
    一种机器人路径规划装置,包括:
    [0034]
    路径信息获取单元,用于在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,获取环境中其他机器人的路径信息;其中,所述路径信息包括节点序列,和/或在节点上的停留情况信息;
    [0035]
    冲突类型确定单元,用于针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型;
    [0036]
    交通代价确定单元,用于根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。
    [0037]
    一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一项所述的方法的步骤。
    [0038]
    一种电子设备,包括:
    [0039]
    一个或多个处理器;以及
    [0040]
    与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述任一项所述的方法的步骤。
    [0041]
    根据本技术提供的具体实施例,本技术公开了以下技术效果:
    [0042]
    通过本技术实施例,在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,可以首先获取环境中其他机器人的路径信息,其中,所述路径信息可以包括节点序列,和/或在节点上的停留情况信息。这样,针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,可以首先根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型。然后,可以根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。也就是说,通过本技术实施例提供的方案,可以将同一节点上冲突机器人的冲突类型细分为多种,从而可以根据具体的冲突类型确定各个冲突机器人在具体节点上产生的交通冲突。因此,可以在更复杂的环境中进行多机器人的路径规划,并且不需要限定单行道规则,可以在双行道等更多的场景中使用。
    [0043]
    当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。
    附图说明
    [0044]
    为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    [0045]
    图1是a*算法示意图;
    [0046]
    图2是本技术实施例提供的系统架构的示意图;
    [0047]
    图3是本技术实施例提供的方法的流程图;
    [0048]
    图4是本技术实施例提供的多种冲突类型的示意图;
    [0049]
    图5是本技术实施例提供的算法流程的示意图;
    [0050]
    图6是本技术实施例提供的装置的示意图;
    [0051]
    图7是本技术实施例提供的电子设备的示意图。
    具体实施方式
    [0052]
    下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本技术保护的范围。
    [0053]
    为便于本技术实施例中涉及到的a*寻路算法,下面首先结合图1,对a*寻路算法的流程进行简单介绍。如图1所示,假设s为寻路的起始节点,e为目的节点,o为障碍物所在的位置。则在a*算法中,首先从s点开始,对其周围节点进行探索,分别计算出各周围节点的代价。其中,在本技术实施例中,假设机器人只能在前、后、左、右四个方向上行驶,因此,只需要将起始节点的前、后、左、右这四个周围节点进行探索。其中,在分别计算各个周围节点的代价时,在基础的a*算法中,就可以分别计算出起始节点s到各个周围节点的移动代价g,以及分别从各周围节点到目的节点e的预计移动代价h,将两部分代价进行相加,得到每个周围节点的代价。例如,如图1所示,对于起始节点s,其四个周围节点的代价分别为60,60,60,40。然后,可以将其中代价最小者确定为下一个起始节点,例如,可以是图中代价为40的节点,作为新的起始节点s1。之后,对该起始节点s1的周围节点进行探索,分别计算各个周围节点的代价。当然,如果周围节点中包括障碍点,则不需要计算其代价,可以默认为不能到达的节点。以此类推,可以逐个节点地确定出行驶路径。
    [0054]
    在背景技术部分所述的增强a*算法中,除了考虑各个周围节点的g代价和h代价,还考虑节点的交通代价t。也即,在对当前机器人进行路径规划时,可以首先获取到已经进行了路径规划、且存在未完成路径的其他机器人的未完成路径信息,这样,可以获知这些其他机器人分别需要途径哪些节点。从节点角度而言,可以确定出每个节点上分别有多少机器人经过。例如,对于图1中所示的s1节点,另外有三个其他机器人a、b、c都需要经过该s1节点节点,则其他机器人a、b、c都会对该s1节点产生交通代价。另外,在现有技术中,是在假设各个机器人只能单向行驶的前提下进行交通代价的计算,因此,各个其他机器人只要会经过某节点,则对该节点产生的交通代价都是相同的。例如,假设单个机器人对一个节点产生的交通代价为t,则三个机器人都需要经过某节点时,该节点上产生的交通代价就是3t。
    [0055]
    但是,在仓储等环境中,机器人(例如,执行“货架到人”或者“货箱到人”任务的搬运机器人等)行驶以及作业行为比较复杂。例如,机器人需要双向通行,使得当前机器人与其他机器人在某节点产生冲突时,可能会存在多种不同的冲突类型,例如,可能是相向冲突,或者,交叉冲突,或者,跟随冲突,等等。对于不同的冲突类型而言,产生的交通代价可能会是不同的,例如,跟随冲突产生的代价可能相对比较大,相向或者交叉冲突产生的交通代价则相对较大。另外,由于机器人可能需要停在某个节点处执行装卸货等操作,因此,会持续一段时间占用该节点进行作业,如果当前机器人与其他机器人在某节点产生这种类型的冲突,则交通代价会比较大,等等。
    [0056]
    因此,在本技术实施例中,针对上述仓储等复杂的机器人路径规划环境,对现有的
    增强a*算法进行了进一步的改进。在该方案中,在为当前机器人进行路径规划的过程中,可以获取到环境中其他机器人的路径信息;其中,所述路径信息可以具体的节点序列,和/或机器人在节点上的停留情况信息。这样,不仅可以获知其他机器人会途径哪些节点,还可以确定出其他机器人分别从什么方向到达具体的节点,以及是否会在某个节点上停留,需要停留多长时间,等等。通过这种信息,不仅可以确定出其他机器人在是否在某节点上可能与当前机器人发生冲突,还可以确定出具体的冲突类型,从而可以根据不同的冲突类型,分别确定各其他机器人在某些具体节点上造成的交通代价,然后再计算出具体节点的总代价。通过这种方式,可以在更复杂的环境中进行多机器人的路径规划,并且不需要限定单行道规则,可以在双行道等更多的场景中使用。
    [0057]
    从系统架构角度而言,如图2所示,本技术实施例可以在路径规划系统中部署本技术实施例提供的算法,其中,具体的路径规划系统可以应用在仓库等环境中。另外,还可以预先在系统中保存仓库中的地图数据,包括各个节点的标识以及在仓库中的坐标等信息。路径规划系统可以为各个具体的机器人规划出路径,在每次为一个机器人完成路径规划之后,都可以对机器人与已经规划完成的路径规划信息之间的对应关系进行保存。其中,具体的路径规划信息可以包括起始节点、目的节点,以及多个中间节点,各个节点之间按照一定的顺序组成序列。机器人则可以按照该节点序列行驶,其中,在目的节点或者某个中间节点的位置,可能需要机器人停留,完成装卸货等作业之后再继续行驶,等等。再者,还可以存在另一个存储系统,用于记录并更新各个机器人的实时位置信息。这样,在需要为某个当前机器人进行路径规划时(可以是任务系统中产生新的任务并分配给某个机器人执行,等等),可以获取到该当前机器人所在的起始节点信息,另外,可以获取到当前有哪些其他机器人还存在未完成路径(也即,已经规划了某路径,但是机器人尚未行驶到终点,例如,某路径一共需要走过10个节点,但是某机器人刚走到其中第5个节点,则剩余的五个节点组成的路径就是未完成路径),具体的未完成路径可以是根据各个其他机器人对应的路径规划结果以及其他机器人当前所在的位置确定出来,可以包括多个节点组成的节点序列,是否需要在某节点停留,需要停留的时间长度,等等。进而可以根据其他机器人的路径信息,确定出是否可能在某节点与当前机器人发生冲突,以及具体的冲突类型,再计算出具体节点上的交通代价,进而可以未当前机器人完成路径规划。路径规划结果可以提供给当前机器人,另外也可以保存该当前机器人与路径规划信息之间的对应关系。
    [0058]
    下面对本技术实施例提供的具体实现方案进行详细介绍。
    [0059]
    首先,本技术实施例从前述图2中的路径规划系统的角度,提供了一种机器人路径规划方法,参见图3,该方法可以包括:
    [0060]
    s301:在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,获取环境中其他机器人的路径信息;其中,所述路径信息包括节点序列,和/或在节点上的停留情况信息。
    [0061]
    当前机器人就是需要进行路径规划的机器人,可能是任务系统中产生了某个新任务,并分配给某个机器人执行,此时,该机器人就是当前需要执行路径规划的机器人。或者,在机器人行驶过程中,如果与另一机器人发生死锁冲突,则需要为其中一个机器人重新规划路径,此时,该机器人也成为本技术实施例中的当前机器人,等等。
    [0062]
    在进行路径规划的过程中,可以在a*算法的基础上进行,也即,首先将当前机器人
    所在的当前节点确定为起始节点,从该起始节点开始,对其周围节点进行探索,将其中代价最小者确定为新的起始节点,继续进行周围节点的探索,等等。也就是说,对起始节点的周围节点进行探索的过程是循环进行的,随着每一次循环的完成,可以找到新的起始节点,再开始下一轮的循环。因此,本技术实施例中的当前起始节点,可以包括当前机器人所在位置对应的起始节点,也可以包括具体针对某个节点的周围节点完成探索之后,确定出的新的起始节点。
    [0063]
    其中,在本技术实施例中,计算各个节点的代价时,需要考虑到各个节点的交通代价,也即,需要考虑其他机器人与当前机器人在具体节点上的冲突情况,并且,还需要确定出具体的其他机器人可能与当前机器人产生何种类型的冲突。
    [0064]
    为了达到上述目的,在具体针对当前起始节点的周围节点进行探索时,可以首先确定出环境中其他机器人的路径信息,每条具体的路径信息中,可以包括具体的节点序列(也即,多个节点按照一定的顺序进行排列组成的序列),以及在具体节点上的停留情况信息(包括是否需要在某节点停留,以及预计所需停留的时间长度,等等)。具体实现时,由于其他机器人可能是已经按照规划路径行驶过了一些节点,这些节点不再对当前机器人的路径规划产生影响,因此,在优选的实施方式下,也可以仅获取其他机器人的未完成路径信息。具体的,可以获取到其他机器人对应的完整的路径规划结果,然后根据其他机器人当前所在的位置信息,即可确定出其他机器人的未完成路径信息。其中,关于是否需要在某节点停留等信息,也可以包含在路径规划信息中,例如,如果某节点为某机器人的路径终点,则可以确定为需要停留的节点,根据具体在该终点处的作业类型等信息,可以确定所需停留的时间,根据当前与终点的距离,可以确定出预计停留的起始时间与结束之间,等等。
    [0065]
    这里需要说明的是,具体在获取到其他机器人的路径信息后,可以通过“预约表”的方式进行保存。也就是说,如果某个机器人需要经过节点a,则代表该机器人对该节点a进行了预约。这样,在确定出当前状态下其他机器人的路径之后,就可以确定出有哪些节点已经被这些其他机器人预约,以及,每个节点分别被其他机器人预约的次数。另外,在本技术实施例中,还可以在预约表中保存以下信息:对于预约了某个节点的机器人而言,该机器人将会从什么方向到达该节点,以及是否需要在该节点停留。其中,关于方向信息,可以是根据具体路径中的上一个节点与该节点之间的相对位置关系来确定的。例如,假设将沿某个方向(例如,图4所示的x轴方向)向前行驶设为0度,向左为90度,向后为180度,向右为270度,等等。这样,只要知道一个机器人是从哪个节点到达当前节点,并且以及上一节点相对于当前节点的位置,即可确定出该机器人从什么方向到达该节点。例如,如图4所示的例子中,假设机器人a、b、c都会经过节点n,其中,虚线所示为各个机器人对应的未完成路径,则可以看出,机器人a会从180度方向到达节点n,机器人b会从270度方向到达节点n,机器人c会从0度方向到达节点n,等等。
    [0066]
    另外需要说明的是,虽然具体在按照a*算法进行寻路时,需要逐个节点的确定路径,而其他机器人也处于运动过程中,但是,对于一次a*寻路过程,使用的预约表(其他机器人的未完成路径)可以是固定的。这是因为,一次a*寻路过程会在很短时间内完成,只需要花费毫秒级甚至更短的时间,就能获得一条从起点到终点的完整路径,而其他机器人得位置通常不会在如此短的时间内更新。或者说,预约表是一次a*搜索即将开始时的其他机器人未完成路径的一次“快照”,搜索过程中不会改变、无需重新获取其他机器人未完成路径。
    当然,如果执行另一次a*寻路需要持续几秒甚至更久,则可以在寻路的过程中更新其他机器人位置和预约表。
    [0067]
    s302:针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型。
    [0068]
    其中,在针对当前起始节点的周围节点进行探索时,可以分别计算各个周围节点n分别对应的代价信息。其中,计算代价信息时就可以包括对各个节点的交通代价的计算。而关于某个具体周围节点的交通代价,在本技术实施例中,首先可以针对该具体的周围节点,确定出有哪些其他机器人也需要从该周围节点经过,以及,其他机器人是从什么方向到达该周围节点,是否需要在该节点停留,等等。其中,对于同样需要从某个周围节点经过的其他机器人,就属于可能在该周围节点与当前机器人产生冲突的冲突机器人,之后,可以这种冲突机器人对应的未完成路径信息,确定对应的冲突类型。其中,如果同一个周围节点上与当前机器人冲突的冲突机器人为多个,则可以分别根据各冲突机器人对应的未完成路径信息,确定出分别对应的冲突类型。
    [0069]
    其中,为了确定出具体的冲突类型,可以预先对各种冲突类型进行定义。具体的,在本技术实施例中,可以将冲突类型细分为相向、跟随、交叉、停留四种。其中,相向冲突指两机器人以180度方向经过同一个节点,或跨过同一条边;跟随、交叉冲突分别指两机器人以相同方向、90度方向经过同一个节点;停留冲突指机器人路径的某节点是其他机器人的终点等需要停留作业的节点。
    [0070]
    这样,具体在确定冲突类型时,可以首先确定出各个冲突机器人是否需要在某周围节点n停留,对于不需要在该周围节点n上停留的冲突机器人,首先可以确定出冲突机器人的未完成路径中,从上一节点f到该周围节点n的第一方向角度信息;同时,还可以确定当前机器人从当前起始节点s到该周围节点n的第二方向角度信息。然后,可以根据所述第一方向角度信息以及所述第二方向角度信息,确定所述冲突类型是否为相向、交叉或跟随类型的冲突。
    [0071]
    例如,在图4所示的例子中,当前机器人的当前起始节点是节点s,对其周围节点n进行代价计算时,发现机器人a、b、c都会经过该节点n,其中,机器人a会从180度方向到达节点n,机器人b会从270度方向到达节点n,机器人c会从0度方向到达节点n。而当前机器人从当前起始节点s到周围节点n的方向是0度,因此,可以根据这种方向信息确定出与各个冲突节点的冲突类型。例如,机器人a到达该周围节点n时可能与当前机器人发生相向冲突,机器人b到达该周围节点n时可能与当前机器人发生交叉冲突,机器人c到达该周围节点n时可能与当前机器人发生跟随冲突,等等。另外,如果某冲突机器人需要在周围节点n停留,则该冲突机器人可能会与当前机器人发生停留冲突。
    [0072]
    s303:根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。
    [0073]
    在确定出具体冲突机器人对应的冲突类型之后,就可以分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价。具体的,根据具体冲突类型的不同,具体产生的交通代价也可以不同。其中,对于相向、交叉或跟随类型的冲突,可以与停留类型的冲突有不同的交通代价计算方式。
    [0074]
    其中,对于相向、交叉或跟随类型的冲突,在一种优选的实施方式下,可以分别为
    所述相向、交叉或跟随类型的冲突配置不同的基础交通代价,并对冲突机器人在周围节点n处与当前机器人发生冲突的概率进行预测。这样,可以根据所述基础交通代价以及所述发生冲突的概率,分别确定至少一个冲突机器人在周围节点n为所述当前机器人产生的交通代价,再将各个冲突机器人在该周围节点n为当前机器人产生的交通代价进行相加,即可得到该周围节点n的交通代价(如果还存在需要在该周围节点n停留的冲突机器人,则还需要再加上这种停留冲突带来的交通代价)。
    [0075]
    具体的,在为相向、交叉或跟随类型的冲突配置基础交通代价时,可以结合具体仓储环境中的地图特征和/或机器人业务行为,对各种冲突造成的基础交通代价进行配置。例如,由轻到重可以分别为:(1)跟随冲突可能会减慢后边机器人的行走速度,但是通常不会造成死锁等,因此,基础交通代价最低;(2)交叉冲突一般发生在十字路口,机器人需要减速、停车避让、加速等,会影响行走速度,其基础交通代价可以高于跟随冲突;(3)相向冲突可能会造成死锁,例如,在一些比较狭窄的巷道区域时,如果发生相向冲突,则可能需要一方调头并重新规划路径,因此,造成的代价会比较大,等等。另外,对于停留冲突而言,由于其他机器人在到达终点时,一般要接着原地作业,比如顶升或放下货架、叉取货箱、托盘等,因此,可能造成被阻塞机器人长时间等待。
    [0076]
    另外,虽然冲突机器人会途径周围节点n,但是,由于其他机器人到达该周围节点n的距离,与当前机器人到达该周围节点n的距离可能不同,因此,实际上这种冲突也不一定会发生。因此,在具体计算交通代价时,还可以确定出具体冲突机器人与当前机器人在周围节点n发生冲突的概率。然后,结合具体冲突类型,以及对应的基础交通代价,可以计算出具体某个冲突机器人在节点n产生的交通代价。
    [0077]
    其中,在计算具体发生冲突的概率时,可以分别针对各个冲突机器人分别进行预测。其中,针对冲突机器人i,可以根据所述冲突机器人i的未完成路径,确定所述冲突机器人i当前所在节点c,以及按照所述未完成路径,从所述当前所在节点c到所述周围节点n的第一距离。同时,还可以确定当前机器人从所述当前起始节点s到所述周围节点n的第二距离,之后,可以根据所述第一距离以及所述第二距离预测所述当前机器人与所述冲突机器人i发生冲突的概率。
    [0078]
    具体在计算上述概率时,可以采用类正态分布曲线描述两机器人发生冲突的概率,例如,计算方式可以为:
    [0079][0080]
    其中,a、b表示发生冲突的两机器人,la、lb表示a、b当前位置与冲突节点n的距离。σ是正态分布标准差,控制冲突概率随距离差衰减的快慢。其中,两机器人与冲突节点的距离差|l
    a-lb|越小,冲突概率越大;距离差越大,冲突概率会从1衰减至无限接近于0。
    [0081]
    在计算出上述发生冲突的概率之后,每个冲突机器人造成的交通代价,就可以等于对应冲突类型的基础交通代价与冲突概率的乘积。例如,对于前述图4中所示的例子,机器人a、b、c均为在周围节点n与当前机器人冲突的冲突机器人。其中,机器人a对应的冲突类型为相向,假设对应的冲突概率是p1;机器人b对应的冲突类型为交叉,假设对应的冲突概率是p2;机器人c对应的冲突类型为跟随,假设对应的冲突概率是p3,另外,假设相向类型对应的基础交通代价为t1,交叉类型对应的基础交通代价为t2,跟随类型对应的基础交通代
    价为t3。则该周围节点n的交通代价可以为(假设该节点上不存在停留类型的冲突机器人):
    [0082]
    t=t1*p1 t2*p2 t3*p3
    [0083]
    当然,在实际应用中,对于上述相向、交叉、跟随等类型的冲突,也可以直接使用各种冲突类型对应的基础交通代价进行计算,而不考虑冲突的发生概率。也即,在前述例子中,可以将上述公式简化为t=t1 t2 t3,等等。
    [0084]
    另外,对于需要在所述周围节点n上停留的冲突机器人,则可以根据所述未完成路径信息,确定所述冲突机器人在所述周围节点n上停留的起始时间t1,以及结束时间t2;同时,可以对所述当前当前机器人从所述当前起始节点s到所述周围节点n的预计时间t。之后,如果所述预计时间t位于[t1,t2]区间内,则可以根据从时间t到t2的时间长度,机器人的运动速度,以及单位距离移动代价,确定所述停留的冲突机器人在所述周围节点n为所述当前机器人造成的交通代价。否则,如果t不在上述区间内,则停留冲突带来的交通代价为0。
    [0085]
    其中,关于停留类型的冲突机器人,其当前可能正在前往周围节点n的途中,也可能已经到达周围节点n并作业了一段时间。在估算t1,t2时,如果冲突机器人正在前往周围节点n的途中,则可以根据冲突机器人当前与该周围节点n的距离,估算出该冲突机器人到达该周围节点n的时间,从而确定出t1,然后,再根据该冲突机器人在该周围节点的作业类型等信息,估算出该冲突机器人需要在该节点的停留时长,进而可以确定出结束作业的时间点t2。如果冲突机器人已经到达周围节点n并作业了一段时间,则可以将当前时刻确定为t1,并根据该冲突机器人在该周围节点的作业类型等信息,估算出该冲突机器人需要在该节点的停留时长,再根据该冲突机器人已经在该周围节点停留的时间长度,确定出结束作业的时间点t2。当然,在这种情况下,t一定会位于[t1,t2]区间内。其中,具体在计算这种停留冲突造成的交通代价时,可以利用以下方式来进行计算:
    [0086]
    staycost=(t2-t)*v*g
    [0087]
    其中,v表示机器人的平均行走速度,g表示相邻两个节点之间的移动代价。这里需要说明的是,如果地图中网格的大小是均匀的,则g可以为常量。但是,在实际应用中,可能存在不同网格之间大小不等的情况,此时,g的取值可以根据具体网格的大小进行确定。例如,g=网格大小*单位距离的移动代价,等等。其中,具体网格的大小可以在地图数据中进行保存。
    [0088]
    在确定出某个周围节点n处可能出现各种类型的冲突,以及分别对应的交通代价之后,可以将冲突机器人分别对应的交通代价相加,得到当前机器人选择周围节点n点行走时可能产生的交通代价。
    [0089]
    在得到周围节点n点对应的交通代价t之后,再根据周围节点n对应的前述代价g以及代价h,即可得到周围节点n的总代价。也即:
    [0090]f*
    (n)=g(n) h
    *
    (n) t(n)
    [0091]
    其中,
    [0092]
    g(n)=distance(n,s)*g
    [0093]h*
    (n)=distance(n,e)*g
    [0094]
    distance(n,s)表示当前周围节点n与当前起点s的实际最短距离,g表示单位距离移动代价。distande(n,e)表示当前周围节点n与终点e的曼哈顿距离乘。
    [0095]
    通过上述方式,可以得到当前起始节点的各个周围节点的总代价,之后,可以将其中总代价最小者作为新的起始节点,并继续对新的起始节点的周围节点进行新一轮探索。
    [0096]
    总之,在本技术的一个优选实施方式中,具体的处理流程可以如图5所示:
    [0097]
    (1)确定出需要执行路径规划的当前机器人;
    [0098]
    (2)将其他机器人的未完成路径信息保存到预约表中(可以包括其他机器人的节点序列以用于确定到达各节点的方向信息,是否停留,作业类型等信息)。
    [0099]
    (3)从当前机器人所在的当前节点开始,执行a*算法进行路径搜索,并选择总代价值最小者作为新的起始节点,并发起新一轮的探索。
    [0100]
    (4)在每一轮的探索中,可以首先判断是否已经找到终点,如果是,则结束流程,否则进入下一步;
    [0101]
    (5)从当前起始节点扩展出周围节点n;
    [0102]
    (6)计算节点n的g(n)代价以及h(n)代价;
    [0103]
    (7)确定出所有与节点n冲突的冲突机器人;
    [0104]
    (8)确定出各冲突机器人的冲突类型,并根据具体的冲突类型计算各冲突机器人在节点n产生的交通代价,将多个冲突机器人对应在节点n产生的交通代价相加,得到节点n的交通代价t(n);
    [0105]
    (9)令f
    *
    (n)=g(n) h
    *
    (n) t(n),并返回步骤(3)。
    [0106]
    总之,通过本技术实施例,在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,可以首先获取环境中其他机器人的路径信息,其中,所述路径信息可以包括节点序列,和/或在节点上的停留情况信息。这样,针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,可以首先根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型。然后,可以根据所述冲突类型,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。也就是说,通过本技术实施例提供的方案,可以将同一节点上冲突机器人的冲突类型细分为多种,从而可以根据具体的冲突类型确定各个冲突机器人在具体节点上产生的交通冲突。因此,可以在更复杂的环境中进行多机器人的路径规划,并且不需要限定单行道规则,可以在双行道等更多的场景中使用。
    [0107]
    需要说明的是,本技术实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如,用户明确同意,对用户切实通知,等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
    [0108]
    与前述方法实施例相对应,本技术实施例还提供了一种机器人路径规划装置,参见图6,该装置可以包括:
    [0109]
    路径信息获取单元601,用于在为当前机器人进行路径规划的过程中,针对当前起始节点s的多个周围节点进行探索时,获取环境中其他机器人的路径信息;其中,所述路径信息包括节点序列,和/或在节点上的停留情况信息;
    [0110]
    冲突类型确定单元602,用于针对在周围节点n上可能与所述当前机器人冲突的至少一个冲突机器人,根据所述至少一个冲突机器人分别对应的路径信息,确定对应的冲突类型;
    [0111]
    交通代价确定单元603,用于根据所述冲突类型,分别确定所述至少一个冲突机器
    人在所述周围节点n为所述当前机器人造成的交通代价,以用于确定所述周围节点n的总代价。
    [0112]
    其中,路径信息获取单元具体可以用于:
    [0113]
    获取环境中其他机器人的未完成路径信息,以便根据所述未完成路径信息,确定所述至少一个冲突机器人对应的冲突类型。
    [0114]
    具体的,所述冲突类型确定单元具体可以包括:
    [0115]
    第一方向信息确定子单元,用于对于不需要在所述周围节点n上停留的冲突机器人,确定所述冲突机器人的路径中,从上一节点f到所述周围节点n的第一方向角度信息;
    [0116]
    第二方向信息确定子单元,用于确定所述当前机器人从所述当前起始节点s到所述周围节点n的第二方向角度信息;
    [0117]
    冲突类型确定子单元,用于根据所述第一方向角度信息以及所述第二方向角度信息,确定所述冲突类型是否为相向、交叉或跟随类型的冲突。
    [0118]
    此时,具体的交通代价确定单元可以包括:
    [0119]
    基础交通代价确定子单元,用于确定所述相向、交叉或跟随类型的冲突分别对应的基础交通代价;
    [0120]
    冲突概率预测子单元,用于对所述冲突机器人在所述周围节点n处与所述当前机器人发生冲突的概率进行预测;
    [0121]
    交通代价确定子单元,用于根据所述基础交通代价以及所述发生冲突的概率,分别确定所述至少一个冲突机器人在所述周围节点n为所述当前机器人产生的交通代价。
    [0122]
    在一种具体实现方式下,所述冲突概率预测子单元具体可以包括:
    [0123]
    第一距离确定子单元,用于针对冲突机器人i,根据所述冲突机器人i的未完成路径,确定所述冲突机器人i当前所在节点c,以及按照所述未完成路径,从所述当前所在节点c到所述周围节点n的第一距离;
    [0124]
    第二距离确定子单元,用于确定当前机器人从所述当前起始节点s到所述周围节点n的第二距离;
    [0125]
    概率确定子单元,用于根据所述第一距离以及所述第二距离预测所述当前机器人与所述冲突机器人i发生冲突的概率。
    [0126]
    另外,对于停留类型的冲突,所述交通代价确定单元可以用于:
    [0127]
    对于需要在所述周围节点n上停留的冲突机器人,根据所述路径信息,确定所述冲突机器人在所述周围节点n上停留的起始时间t1,以及结束时间t2;
    [0128]
    对所述当前当前机器人从所述当前起始节点s到所述周围节点n的预计时间t;
    [0129]
    如果所述预计时间t位于[t1,t2]区间内,则根据从时间t到t2的时间长度,机器人的运动速度,以及单位距离移动代价,确定所述停留的冲突机器人在所述周围节点n为所述当前机器人造成的交通代价。
    [0130]
    另外,所述交通代价确定单元还可以用于:
    [0131]
    如果所述预计时间t位于[t1,t2]区间之外,则确定所述停留的冲突机器人在所述周围节点n为所述当前机器人造成的交通代价为0。
    [0132]
    另外,本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
    [0133]
    以及一种电子设备,包括:
    [0134]
    一个或多个处理器;以及
    [0135]
    与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述方法实施例中任一项所述的方法的步骤。
    [0136]
    其中,图7示例性的展示出了电子设备的架构,具体可以包括处理器710,视频显示适配器711,磁盘驱动器712,输入/输出接口713,网络接口714,以及存储器720。上述处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,与存储器720之间可以通过通信总线730进行通信连接。
    [0137]
    其中,处理器710可以采用通用的cpu(central processing unit,处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术所提供的技术方案。
    [0138]
    存储器720可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器720可以存储用于控制电子设备700运行的操作系统721,用于控制电子设备700的低级别操作的基本输入输出系统(bios)。另外,还可以存储网页浏览器723,数据存储管理系统724,以及路径规划处理系统725等等。上述路径规划处理系统725就可以是本技术实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本技术所提供的技术方案时,相关的程序代码保存在存储器720中,并由处理器710来调用执行。
    [0139]
    输入/输出接口713用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
    [0140]
    网络接口714用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
    [0141]
    总线730包括一通路,在设备的各个组件(例如处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,与存储器720)之间传输信息。
    [0142]
    需要说明的是,尽管上述设备仅示出了处理器710、视频显示适配器711、磁盘驱动器712、输入/输出接口713、网络接口714,存储器720,总线730等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本技术方案所必需的组件,而不必包含图中所示的全部组件。
    [0143]
    通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
    [0144]
    本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
    [0145]
    以上对本技术所提供的机器人路径规划方法、装置及电子设备,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本技术的限制。
    转载请注明原文地址:https://tc.8miu.com/read-303.html

    最新回复(0)