多机器人控制方法及装置转让专利

申请号 : CN201710551566.7

文献号 : CN107234616B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋化冰倪程云罗承雄张海建谭舟王振超梁兰徐志强严婷郦莉

申请人 : 广州木木机器人技术有限公司

摘要 :

本发明提供一种多机器人控制方法及装置。其中,方法的部分包括以下步骤:将总任务划分为至少一个子任务;从至少一个子任务中,获取任务状态为非完成状态的待执行子任务;从多机器人中,确定可执行待执行子任务的执行机器人;将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。本发明提供的多机器人控制方法可以提高多机器人的任务执行效率。

权利要求 :

1.一种多机器人控制方法,其特征在于,包括:

将总任务划分为至少一个子任务;

从所述至少一个子任务中,获取任务状态为非完成状态的待执行子任务;

从多机器人中,确定可执行所述待执行子任务的执行机器人;

将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;

所述从多机器人中,确定可执行所述待执行子任务的执行机器人,包括:若指定机器人列表中存在所述待执行子任务对应的指定机器人,获取所述待执行子任务对应的指定机器人,作为所述待执行子任务的执行机器人;

若所述指定机器人列表中不存在所述待执行子任务对应的指定机器人,从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人。

2.根据权利要求1所述的方法,其特征在于,所述待执行子任务为多个;

所述将所述待执行子任务发送至所述执行机器人,包括:按照所述多个待执行子任务之间的优先级,依次将所述多个待执行子任务发送至各自对应的执行机器人。

3.根据权利要求1所述的方法,其特征在于,所述从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人,包括:从预先建立的子任务与子任务对机器人的功能要求的对应关系中,获取所述待执行子任务对机器人的功能要求;

从预先建立的机器人与机器人的能力信息之间的对应关系中,获取能力信息满足所述待执行子任务对机器人的功能要求的机器人,作为所述执行机器人。

4.根据权利要求1所述的方法,其特征在于,所述将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务,包括:若所述执行机器人的状态为空闲状态,直接将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;

若所述执行机器人的状态为非空闲状态,且所述执行机器人正在执行的子任务的优先级低于所述待执行子任务的优先级,中断所述执行机器人正在执行的子任务,并将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;

若所述执行机器人的状态为非空闲状态,且所述执行机器人正在执行的子任务的优先级高于所述待执行子任务的优先级,在所述执行机器人结束正在执行的子任务后,将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务。

5.根据权利要求4所述的方法,其特征在于,还包括:获取中断所述执行机器人正在执行的子任务时,所述执行机器人已执行的任务信息、所述执行机器人的物理信息和初始子任务信息;

将所述执行机器人已执行的任务信息、所述执行机器人的物理信息和所述初始子任务信息发送至所述多机器人中可执行所述被中断子任务的机器人,以供所述可执行所述被中断子任务的机器人继续执行所述被中断子任务。

6.根据权利要求1-5任一项所述的方法,其特征在于,将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务之后,所述方法还包括:获取所述执行机器人已执行的任务信息;

根据所述执行机器人已执行的任务信息和所述总任务,确定剩余任务;

将所述剩余任务划分为至少一个剩余子任务;

将所述至少一个剩余子任务发送至可执行所述至少一个剩余子任务的执行机器人,以供所述执行机器人执行所述至少一个剩余子任务。

7.一种多机器人控制装置,其特征在于,包括:

划分模块,用于将总任务划分为至少一个子任务;

获取模块,用于从所述至少一个子任务中,获取任务状态为非完成状态的待执行子任务;

确定模块,用于从多机器人中,确定可执行所述待执行子任务的执行机器人;

发送模块,用于将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;

所述确定模块包括:

第一确定单元,用于若指定机器人列表中存在所述待执行子任务对应的指定机器人,获取所述待执行子任务对应的指定机器人,作为所述待执行子任务的执行机器人;

第二确定单元,用于若所述指定机器人列表中不存在所述待执行子任务对应的指定机器人,从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人。

8.根据权利要求7所述的装置,其特征在于,所述待执行子任务为多个;

所述发送模块具体用于:

按照所述多个待执行子任务之间的优先级,依次将所述多个待执行子任务发送至各自对应的执行机器人。

说明书 :

多机器人控制方法及装置

技术领域

[0001] 本申请涉及机器人技术领域,尤其涉及一种多机器人控制方法及装置。

背景技术

[0002] 机器人是可以自动执行任务的机器装置,可以运行预先编排的程序,进而协助或取代人类的任务。当任务量比较大时,需要多个机器人协同完成任务。
[0003] 在现有技术中,一般由开发人员将多个机器人中每台机器人要执行的任务等信息输入至每台机器人中。进而,每台机器人可以分别按照开发人员输入的信息来执行任务。这种多机器人控制方法需要手动为每台机器人输入对应的任务,操作繁琐,任务执行效率低。

发明内容

[0004] 本申请的多个方面提供一种多机器人控制方法及装置,用以提高多机器人执行任务的效率。
[0005] 本申请实施例提供一种多机器人控制方法,包括:
[0006] 将总任务划分为至少一个子任务;
[0007] 从所述至少一个子任务中,获取任务状态为非完成状态的待执行子任务;
[0008] 从多机器人中,确定可执行所述待执行子任务的执行机器人;
[0009] 将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务。
[0010] 可选地,所述待执行子任务为多个;
[0011] 所述将所述待执行子任务发送至所述执行机器人,包括:
[0012] 按照所述多个待执行子任务之间的优先级,依次将所述多个待执行子任务发送至各自对应的执行机器人。
[0013] 可选地,所述从多机器人中,确定可执行所述待执行子任务的执行机器人,包括:
[0014] 若指定机器人列表中存在所述待执行子任务对应的指定机器人,获取所述待执行子任务对应的指定机器人,作为所述待执行子任务的执行机器人;
[0015] 若所述指定机器人列表中不存在所述待执行子任务对应的指定机器人,从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人。
[0016] 可选地,所述从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人,包括:
[0017] 从预先建立的子任务与子任务对机器人的功能要求的对应关系中,获取所述待执行子任务对机器人的功能要求;
[0018] 从预先建立的机器人与机器人的能力信息之间的对应关系中,获取能力信息满足所述待执行子任务对机器人的功能要求的机器人,作为所述执行机器人。
[0019] 可选地,所述将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务,包括:
[0020] 若所述执行机器人的状态为空闲状态,直接将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;
[0021] 若所述执行机器人的状态为非空闲状态,且所述执行机器人正在执行的子任务的优先级低于所述待执行子任务的优先级,中断所述执行机器人正在执行的子任务,并将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务;
[0022] 若所述执行机器人的状态为非空闲状态,且所述执行机器人正在执行的子任务的优先级高于所述待执行子任务的优先级,在所述执行机器人结束正在执行的子任务后,将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务。
[0023] 可选地,所述方法还包括:
[0024] 获取中断所述执行机器人正在执行的子任务时,所述执行机器人已执行的任务信息、所述执行机器人的物理信息和初始子任务信息;
[0025] 将所述执行机器人已执行的任务信息、所述执行机器人的物理信息和所述初始子任务信息发送至所述多机器人中可执行所述被中断子任务的机器人,以供所述可执行所述被中断子任务的机器人继续执行所述被中断子任务。
[0026] 可选地,将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务之后,所述方法还包括:
[0027] 获取所述执行机器人已执行的任务信息;
[0028] 根据所述执行机器人已执行的任务信息和所述总任务,确定剩余任务;
[0029] 将所述剩余任务划分为至少一个剩余子任务;
[0030] 将所述至少一个剩余子任务发送至可执行所述至少一个剩余子任务的执行机器人,以供所述执行机器人执行所述至少一个剩余子任务。
[0031] 本申请实施例提供一种多机器人控制装置,包括:
[0032] 划分模块,用于将总任务划分为至少一个子任务;
[0033] 获取模块,用于从所述至少一个子任务中,获取任务状态为非完成状态的待执行子任务;
[0034] 确定模块,用于从多机器人中,确定可执行所述待执行子任务的执行机器人;
[0035] 发送模块,用于将所述待执行子任务发送至所述执行机器人,以供所述执行机器人执行所述待执行子任务。
[0036] 可选地,所述待执行子任务为多个;
[0037] 所述发送模块具体用于:
[0038] 按照所述多个待执行子任务之间的优先级,依次将所述多个待执行子任务发送至各自对应的执行机器人。
[0039] 可选地,所述确定模块包括:
[0040] 第一确定单元,用于若指定机器人列表中存在所述待执行子任务对应的指定机器人,获取所述待执行子任务对应的指定机器人,作为所述待执行子任务的执行机器人;
[0041] 第二确定单元,用于若所述指定机器人列表中不存在所述待执行子任务对应的指定机器人,从所述多机器人中,获取满足所述待执行子任务对机器人的功能要求的机器人,作为所述待执行子任务的执行机器人。
[0042] 在本申请实施例中,通过将总任务划分为至少一个子任务,以及获取任务状态为非完成状态的待执行子任务,进而确定可执行待执行子任务的执行机器人,使得可以按照子任务的状态,确定待执行子任务,并自动将待执行子任务发送至可执行待执行子任务的机器人,无需人工选取执行机器人,也无需人工向机器人输入任务,提高了多机器人任务执行的效率。

附图说明

[0043] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0044] 图1为本申请一实施例提供的一种多机器人控制方法的流程示意图;
[0045] 图2为本申请又一实施例提供的一种多机器人控制方法的流程示意图;
[0046] 图3为本申请又一实施例提供的一种多机器人控制装置的模块结构图;
[0047] 图4为本申请又一实施例提供的一种多机器人控制装置的模块结构图。

具体实施方式

[0048] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0049] 以下结合附图,详细说明本申请各实施例提供的技术方案。
[0050] 图1为本申请一实施例提供的一种多机器人控制方法的流程示意图。如图1所示,该方法包括以下步骤。
[0051] S101:将总任务划分为至少一个子任务。
[0052] S102:从至少一个子任务中,获取任务状态为非完成状态的待执行子任务。
[0053] S103:从多机器人中,确定可执行待执行子任务的执行机器人。
[0054] S104:将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0055] 多机器人可以为多机器人协同组,包括至少一个机器人。多机器人可以协同完成一项复杂的任务。对于多机器人中的每台机器人,可分别执行复杂任务中的一部分任务。基于此,首先,将总任务划分为至少一个子任务。
[0056] 可选地,可以将总任务上传至服务端,服务端可以具体实现为内网云或者公网云,再在内网云或者公网云将总任务划分为至少一个子任务;也可以将总任务划分为至少一个子任务之后,将至少一个子任务上传至内网云或者公网云。
[0057] 可选地,可以由用户将总任务划分为至少一个子任务,也可以根据预设规则将总任务划分为至少一个子任务。例如,预设规则为按照任务量,将总任务划分为任务量大致相等的子任务;或者,按照任务性质,将总任务划分为任务性质不同的子任务。
[0058] 然后,从至少一个子任务中,获取任务状态为非完成状态的待执行子任务。
[0059] 可选地,预先建立子任务与子任务的任务状态的对应关系。
[0060] 任务状态可以包括但不限于未下发状态、已下发状态、正在执行状态、被中断状态、执行完成状态。其中,非完成状态包括未下发状态和被中断状态。基于此,可以获取未下发状态和被中断状态的子任务作为待执行子任务。可选地,待执行子任务可以为一个或多个。
[0061] 可选地,子任务的任务状态可以随着机器人对任务的执行而更新。
[0062] 接着,从多机器人中,确定可执行待执行子任务的执行机器人。
[0063] 多机器人包括可执行待执行子任务的机器人和不可执行待执行子任务的机器人。例如,有的机器人处于故障状态,属于不可执行待执行子任务的机器人。又例如,有的机器人根据自身条件能够执行待执行子任务,属于可执行待执行子任务的执行机器人。将可执行待执行子任务的机器人作为执行机器人。
[0064] 随后,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0065] 可选地,可以从内网云或者公网云,将待执行子任务发送至执行机器人。
[0066] 本实施例中,通过将总任务划分为至少一个子任务,以及获取任务状态为非完成状态的待执行子任务,进而确定可执行待执行子任务的执行机器人,使得可以按照子任务的状态,确定待执行子任务,并自动将待执行子任务发送至可执行待执行子任务的机器人,无需人工选取执行机器人,也无需人工向机器人输入任务,提高了多机器人任务执行的效率。
[0067] 在上述实施例或下述实施例中,待执行子任务为多个。基于此,将多个待执行子任务发送至执行机器人,包括:按照多个待执行子任务之间的优先级,依次将多个待执行子任务发送至各自对应的执行机器人。
[0068] 可选地,在将总任务划分至少一个子任务之后,可以建立总任务列表。总任务列表包括每个子任务与子任务优先级的对应关系。基于此,在获取多个待执行子任务后,可以在总任务列表中查询每个待执行子任务对应的优先级。按照每个待执行子任务对应的优先级,从高到低依次将多个待执行子任务发送至各自对应的执行机器人。
[0069] 其中,将多个待执行子任务发送至各自对应的执行机器人为将多个待执行子任务发送至可执行待执行子任务的执行机器人。可选地,执行机器人可以包括一个或多个。基于此,可将多个待执行子任务发送至一个执行机器人,也可以将每个待执行子任务分别发送至不同的执行机器人。可选地,一个待执行子任务由一个机器人执行。
[0070] 在上述实施例或下述实施例中,可以通过查询指定机器人列表或者根据待执行子任务对机器人的功能要求,确定可执行待执行子任务的执行机器人。基于此,从多机器人中,确定可执行待执行子任务的执行机器人,包括以下两种实施方式:
[0071] 第一种实施方式:若指定机器人列表中存在待执行子任务对应的指定机器人,获取待执行子任务对应的指定机器人,作为待执行子任务的执行机器人。
[0072] 可选地,可以预先建立指定机器人列表。指定机器人列表包括每个子任务以及每个子任务对应的指定机器人的识别码。其中,识别码用于唯一标识机器人。每个子任务对应的指定机器人即执行子任务所规定的机器人。
[0073] 基于此,若指定机器人列表中存在待执行子任务对应的指定机器人的识别码,获取识别码所标识的指定机器人,并将指定机器人作为待执行子任务的执行机器人。
[0074] 例如,指定机器人列表包括第一子任务对应机器人A,第二子任务对应机器人B,第三子任务不对应任何机器人。若待执行子任务为第一子任务,则第一子任务的执行机器人为机器人A所标识的机器人。若待执行子任务为第三子任务,则指定机器人列表中不存在第三子任务对应的机器人识别码,此时,可以采用本实施例中的第二种实施方式,确定可执行第三子任务的执行机器人。
[0075] 第二种实施方式:若指定机器人列表中不存在待执行子任务对应的指定机器人,从多机器人中,获取满足待执行子任务对机器人的功能要求的机器人,作为待执行子任务的执行机器人。
[0076] 可选地,预先建立每个子任务与子任务对机器人的功能要求的对应关系,从预先建立的每个子任务与子任务对机器人的功能要求的对应关系中,获取待执行子任务对机器人的功能要求;然后,从预先建立的机器人与机器人的能力信息之间的对应关系中,获取能力信息满足待执行子任务对机器人的功能要求的机器人,作为执行机器人。
[0077] 进一步可选地,可以在总任务列表中建立子任务与子任务对机器人的功能要求的对应关系,以及预先建立机器人列表。机器人列表包括机器人识别码以及机器人识别码所标识的机器人的能力信息的对应关系。继而,通过查询总任务列表,获取待执行子任务对机器人的功能要求;然后,查询机器人列表中,能力信息满足待执行子任务对机器人的功能要求的机器人,作为执行机器人。
[0078] 可选地,机器人的能力信息包括机器人的不同优先级的能力信息。进而,可查询机器人列表中,较高优先级的能力信息满足待执行子任务对机器人的功能要求的机器人,作为执行机器人。
[0079] 在一示例中,机器人A的能力信息包括较高优先级的绘图和较低优先级的动作,机器人B的能力信息包括较高优先级的动作和较低优先级的绘图。待执行子任务对机器人的功能要求为绘图。则将具有较高优先级的绘图功能的机器人A作为执行机器人。
[0080] 图2为本申请又一实施例提供的一种多机器人控制方法的流程示意图。如图2所示,包括以下步骤。
[0081] S201:将总任务划分为至少一个子任务。
[0082] S202:从至少一个子任务中,获取任务状态为非完成状态的待执行子任务。
[0083] S203:从多机器人中,确定可执行待执行子任务的执行机器人。
[0084] S204:判断执行机器人的状态是否为空闲状态。若是,跳转到步骤S205;若否,跳转到步骤S206。
[0085] S205:直接将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务,并结束本次操作。
[0086] S206:判断执行机器人正在执行的子任务的优先级是否低于待执行子任务的优先级。若是,跳转到步骤S208;若否,跳转到步骤S207。
[0087] S207:在执行机器人结束正在执行的子任务后,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务,并结束本次操作。
[0088] S208:中断执行机器人正在执行的子任务,并将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。继续执行步骤S209。
[0089] S209:获取中断执行机器人正在执行的子任务时,执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息。继续执行步骤S210。
[0090] S210:将执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息发送至多机器人中可执行被中断子任务的机器人,以供可执行被中断子任务的机器人继续执行被中断子任务,并结束本次操作。
[0091] 步骤S201、S202、S203分别与步骤S101、S102、S103相同,此处不再赘述。
[0092] 可选地,可以在机器人列表中建立每台机器人的识别码与每台机器人的识别码所标识的机器人的状态信息的对应关系。其中,机器人的状态信息为机器人的任务状态,例如空闲状态、非空闲状态。其中,处于非空闲状态的机器人可为正在执行子任务的机器人。处于空闲状态的机器人可能未分配子任务或者已完成所分配的子任务,一般情况下,可以执行下一个子任务。
[0093] 基于此,在确定执行机器人后,根据执行机器人的状态不同,将待执行子任务发送至执行机器人的操作方式不同。基于此,首先判断执行机器人的状态是否为空闲状态(即步骤S204)。
[0094] 可选地,通过查询机器人列表中,执行机器人的识别码对应的状态信息,确定执行机器人的状态。
[0095] 可选地,每台机器人可以实时向服务端,例如公网运或者内网云上传数据,上传的数据包括但不限于机器人的当前状态信息。服务端在接收到每台机器人上传的机器人的状态信息后,可以更新机器人列表中机器人的识别码对应的状态信息,还可以据此更新总任务列表中子任务的任务状态。可选地,每台机器人可通过心跳向服务端上传数据。
[0096] 若执行机器人的识别码对应的状态信息为空闲状态,即执行机器人的状态为空闲状态,意味着当前时刻,执行机器人未执行任何一个子任务,可直接将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务,并结束本次操作(即步骤S205)。
[0097] 若通过查询机器人列表中,执行机器人的识别码对应的状态信息为非空闲状态,即执行机器人的状态为非空闲状态;此时,判断执行机器人正在执行的子任务的优先级是否低于待执行子任务的优先级(即步骤S206)。
[0098] 可选地,可以在总任务列表中建立子任务与子任务被下发至的机器人的识别码的对应关系。基于此,可以在总任务列表中,查询执行机器人的识别码所对应的子任务,作为正在执行的子任务,进而在总任务列表中查询执行机器人正在执行的子任务的优先级。以及,在总任务列表中查询待执行子任务的优先级。进而,比较查询出的执行机器人正在执行的子任务的优先级与待执行子任务的优先级的高低。
[0099] 可选地,优先执行优先级较高的子任务。基于此,若是,即执行机器人正在执行的子任务的优先级低于待执行子任务的优先级,则中断执行机器人正在执行的子任务,并将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务(即步骤S208)。若否,即执行机器人正在执行的子任务的优先级高于待执行子任务的优先级,则在执行机器人结束正在执行的子任务后,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务,并结束本次操作(即步骤S207)。
[0100] 被中断的任务可以被重新发送至机器人以继续执行。可选地,可以获取中断执行机器人正在执行的子任务时,执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息(即步骤S209);将执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息发送至多机器人中可执行被中断子任务的机器人,以供可执行被中断子任务的机器人继续执行被中断子任务(即步骤S210)。
[0101] 可选地,执行机器人已执行的任务信息包括但不限于已采集的数据、已完成的处理信息等。执行机器人的物理信息包括但不限于机器人的坐标、朝向、运动速度、姿态等信息。初始子任务信息为下发至执行机器人的子任务的信息。例如,子任务要求、子任务执行区域、子任务相关数据等。
[0102] 当然,也可以在执行机器人执行子任务的过程中,实时向服务端上传执行机器人已执行的任务信息和执行机器人的物理信息和初始子任务信息。
[0103] 可选地,获取的信息可以对应存储在机器人列表中。服务端会根据每台机器人上传的数据更新机器人列表中每台机器人的识别码所标识的机器人的已执行的任务信息、物理信息和初始子任务信息。基于此,可以待到执行被中断子任务时,从机器人列表中将任务信息、物理信息和初始子任务信息发送至多机器人中可执行被中断子任务的机器人。可执行被中断子任务的机器人可根据执行机器人的物理信息调整自身的状态,并依据已执行的任务信息和初始子任务信息继续执行被中断子任务。
[0104] 可选地,被中断子任务的机器人的确定过程与执行机器人的确定过程类似。此处不再赘述。
[0105] 需要说明的是,本实施例尤其适用于执行机器人为一台时,将待执行子任务发送至该执行机器人。若存在多个满足待执行子任务对机器人的功能要求的机器人时,可以根据机器人的状态信息和正在执行的子任务的优先级,确定最优的可执行待执行子任务的执行机器人。
[0106] 具体而言,当机器人列表包括多个满足待执行子任务对机器人的功能要求的机器人时,优选地,将空闲状态的机器人作为执行机器人,进而将待执行子任务发送至执行机器人。
[0107] 若机器人列表中不存在满足待执行子任务对机器人的功能要求且空闲状态的机器人时,继续查询机器人列表,将满足待执行子任务对机器人的功能要求,且正在执行的子任务的优先级低于待执行子任务的优先级的机器人,作为执行机器人。继而,中断执行机器人正在执行的子任务,并将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0108] 若机器人列表中,存在满足待执行子任务对机器人的功能要求,且正在执行的子任务的优先级高于待执行子任务的优先级的机器人,也可以将该机器人作为执行机器人。在执行机器人结束正在执行的子任务后,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0109] 在一可选实施方式中,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务之后,可以根据执行机器人已完成的子任务,重新划分总任务列表为至少一个剩余子任务。
[0110] 首先,获取执行机器人已执行的任务信息。可选地,每台执行机器人可以通过心跳向服务端上传已执行的任务信息。则服务端可以获取每台执行机器人上传的已执行的任务信息。
[0111] 接着,根据执行机器人已执行的任务信息和总任务,确定剩余任务。可选地,剩余任务可通过总任务除去执行机器人已执行的任务信息得到。
[0112] 考虑到已执行的任务信息可能不满足要求,优选地,将已执行的任务信息结合总任务,重新确定剩余任务。剩余任务可包括已执行的任务信息。
[0113] 然后,将剩余任务划分为至少一个剩余子任务;将至少一个剩余子任务发送至可执行至少一个剩余子任务的执行机器人,以供执行机器人执行至少一个剩余子任务。
[0114] 其中,确定可执行至少一个剩余子任务的执行机器人的方法与确定可执行待执行子任务的执行机器人的方法类似,此处不再赘述。
[0115] 在上述实施例中,可选地,服务端可对获取的执行机器人已执行的任务信息进行汇总,并根据应用场景进行处理后,得到待共享数据,再将待共享数据下发至需要使用该数据的机器人。可选地,需要使用该数据的机器人可以为多机器人中的至少一个机器人。
[0116] 下面以一多机器人协同绘制三维空间地图的应用场景,详细说明本实施例提供的多机器人控制方法。
[0117] 本应用场景中的总任务为在绘图空间内绘制三维空间地图。服务端首先根据世界坐标系将绘图空间划分成若干多个区域,进而将总任务划分为多个子任务,每个子任务对应一个区域。然后,在服务端建立总任务列表。总任务列表包括每个子任务与子任务优先级的对应关系。子任务的优先级可以由人工设置或由云端自动生成。例如,第一子任务的优先级高于第二任务的优先级。
[0118] 总任务列表还可以包括每个子任务与子任务的任务状态的对应关系。本应用场景中,在将总任务列表划分为多个子任务后,多个子任务均未执行。因此,多个子任务的任务状态均为非完成状态。
[0119] 总任务列表还可以包括每个子任务与子任务对机器人的功能要求的对应关系。本应用场景中,子任务对机器人的功能要求为对应子任务的区域的绘图功能。
[0120] 服务端还可预先配置一个多机器人协同组以及机器人列表。机器人列表包括每台机器人的识别码与识别码所标识的机器人的能力信息的对应关系。本应用场景中,每台机器人的能力信息为在各自区域的绘图功能,且每台机器人拥有自己的绘图三维坐标系,开发人员可在需要绘图空间的初始点放置世界坐标系的x,y,z轴,原点标尺,每台机器人在进行绘图前会读取世界坐标系标尺,并将自己的绘图三维坐标系与世界坐标系标尺进行校准。
[0121] 机器人列表还可以包括每台机器人的识别码与每台机器人的识别码所标识的机器人的状态信息的对应关系。
[0122] 服务端可按照子任务的优先级依次下发不同子任务给满足待执行子任务对机器人的功能要求的机器人。每台机器人接收到子任务后,会在各自区域进行绘图工作,并通过心跳上传各个区域的绘图信息(即已执行的任务信息)、每台机器人在绘图空间中的位置、朝向、运动速度、姿态等信息(即物理信息)以及每台机器人的初始子任务信息。
[0123] 可选地,每台机器人上传的已执行的任务信息、物理信息以及初始子任务信息可以存储在机器人列表中。
[0124] 服务端会根据每台机器人上传的数据更新机器人列表中每台机器人的识别码所标识的机器人的状态信息、已执行的任务信息、物理信息和初始子任务信息,以及更新总任务列表中子任务的任务状态。
[0125] 服务端会将各个区域的绘图信息进行汇总整合,并会对边缘的重合区域、毛边进行处理,合成一张世界三维空间地图。并根据每台机器人的物理信息和初始子任务信息,标记每台机器人在该三维空间地图中的状态,例如机器人的位置、朝向、运动速度、正在执行的任务等。
[0126] 该三维空间地图会随着绘图任务的进行而不断完善,且会及时下发给多机器人协同组里需要使用该三维空间地图的机器人。本应用场景中,可将三维空间地图发送给每个机器人,以便每台机器人都能获得最新的空间地图及协同多机器人协同组里其他机器人的状态。
[0127] 在绘图过程中,服务端可分析各个区域的绘图信息,认为某些区域面积更大或特征更多更复杂,需要再细分,或可由人为指定拆分某区域。服务端可将区域面积大或者特征更多的区域的绘图任务和未上传绘图信息的区域的绘图任务作为剩余任务。将剩余任务细分为多个剩余子任务。这些细分的剩余子任务可以人为指定更高的优先级,以便人为的让更多的机器人参与到该复杂区域的绘图。
[0128] 随着任务的执行,可随时生成剩余任务,待剩余任务中所有的剩余子任务为已完成状态,或人为终止整个绘图任务的执行,多机器人协同绘制出一张世界坐标系的空间地图。
[0129] 本申请实施例还提供一种多机器人控制装置300,如图3所示,包括划分模块301、获取模块302、确定模块303和发送模块304。
[0130] 划分模块301,用于将总任务划分为至少一个子任务。
[0131] 获取模块302,用于从划分模块301划分的至少一个子任务中,获取任务状态为非完成状态的待执行子任务。
[0132] 确定模块303,用于从多机器人中,确定可执行获取模块302获取的待执行子任务的执行机器人。
[0133] 发送模块304,用于将获取模块302获取的待执行子任务发送至确定模块303确定的执行机器人,以供执行机器人执行待执行子任务。
[0134] 本实施例中,通过将总任务划分为至少一个子任务,以及获取任务状态为非完成状态的待执行子任务,进而确定可执行待执行子任务的执行机器人,使得可以按照子任务的状态,确定待执行子任务,并自动将待执行子任务发送至可执行待执行子任务的机器人,无需人工选取执行机器人,也无需人工向机器人输入任务,提高了多机器人任务执行的效率。
[0135] 可选地,待执行子任务为多个;发送模块304具体用于:按照多个待执行子任务之间的优先级,依次将多个待执行子任务发送至各自对应的执行机器人。
[0136] 可选地,如图4所示,确定模块303包括第一确定单元3031和第二确定单元3032。
[0137] 第一确定单元3031,用于若指定机器人列表中存在待执行子任务对应的指定机器人,获取待执行子任务对应的指定机器人,作为待执行子任务的执行机器人;
[0138] 第二确定单元3032,用于若指定机器人列表中不存在待执行子任务对应的指定机器人,从多机器人中,获取满足待执行子任务对机器人的功能要求的机器人,作为待执行子任务的执行机器人。
[0139] 可选地,第二确定单元3032在从多机器人中,获取满足待执行子任务对机器人的功能要求的机器人,作为待执行子任务的执行机器人时,具体用于:从预先建立的子任务与子任务对机器人的功能要求的对应关系中,获取待执行子任务对机器人的功能要求;从预先建立的机器人与机器人的能力信息之间的对应关系中,获取能力信息满足待执行子任务对机器人的功能要求的机器人,作为执行机器人。
[0140] 可选地,如图4所示,发送模块304包括第一发送单元3041、第二发送单元3042和第三发送单元3043。
[0141] 第一发送单元3041,用于若执行机器人的状态为空闲状态,直接将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0142] 第二发送单元3042,用于若执行机器人的状态为非空闲状态,且执行机器人正在执行的子任务的优先级低于待执行子任务的优先级,中断执行机器人正在执行的子任务,并将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0143] 第三发送单元3043,用于若执行机器人的状态为非空闲状态,且执行机器人正在执行的子任务的优先级高于待执行子任务的优先级,在执行机器人结束正在执行的子任务后,将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务。
[0144] 可选地,如图4所示,多机器人控制装置300还包括信息获取模块305和信息发送模块306。
[0145] 信息获取模块305,用于获取中断执行机器人正在执行的子任务时,执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息。
[0146] 信息发送模块306,用于将执行机器人已执行的任务信息、执行机器人的物理信息和初始子任务信息发送至多机器人中可执行被中断子任务的机器人,以供可执行被中断子任务的机器人继续执行被中断子任务。
[0147] 可选地,在将待执行子任务发送至执行机器人,以供执行机器人执行待执行子任务之后,信息获取模块305还用于获取执行机器人已执行的任务信息。划分模块301还用于根据执行机器人已执行的任务信息和总任务,确定剩余任务;以及将剩余任务划分为至少一个剩余子任务。发送模块304还用于将至少一个剩余子任务发送至可执行至少一个剩余子任务的执行机器人,以供执行机器人执行至少一个剩余子任务。
[0148] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。