一种基于递归算法的异构多机器人系统任务分解方法与流程

文档序号:14256552阅读:201来源:国知局

本发明涉及计算机软件系统领域,具体涉及一种基于递归算法的异构多机器人系统任务分解方法。



背景技术:

随着科学技术的不断发展,机器人的应用领域不断地拓展。但是就目前的机器人发展状况而言,单机器人在信息获取、任务处理方面能力都有不足,这就要求对多机器人系统的发展提出了紧迫要求。但是单纯地将机器人堆砌在一起,并不能发挥多机器人系统执行任务时的优势,反而有可能因为不同机器人在行为上的并发行和冲突性,引起机器人在执行任务时的冲突和对抗,使得系统整体性能降低。一项任务的完成,需要对生产力资源进行合理的配置,多机器人系统也如此。因此,需要对系统中的多机器人进行合理的任务分配。分配机制是否合理直接关系到系统中各个机器人是否能够进行有效的沟通,最大程度地发挥自身能力,高效的完成系统中的任务。

在本发明作出之前,现有的任务分解方法主要存在以下的问题:1.现有的任务分解方法大都是针对具体应用提出来的,适合于特定的环境,通用性较差。但是在智能制造模式下,机器人系统面临的任务环境是动态的和不确定的,具有很强的随机性。2.当前的任务分解方法大多数应用在小规模机器人系统中,并且假设都是同构机器人。但是在智能制造的模式下,机器人数量规模巨大,并且机器人各司其职,执行不同的任务,多为异构机器人。3.现有的分解任务无法得出一组任务,在特定环境下的所有可能分解方案。但是智能制造模式下,子任务的不同分配方案和执行顺序间可能存在着很大的经济效益差距,需要对不同分解分配方案进行比较。



技术实现要素:

本发明的目的就在于克服上述缺陷,研制一种基于递归算法的异构多机器人系统任务分解方法。

本发明的技术方案是:

一种基于递归算法的异构多机器人系统任务分解方法,其特征在于如下步骤:

(1)对任务执行过程中,所涉及的资源进行形式化表示;完成一项任务需满足一定的条件,任务完成后会产生相应的结果;将多机器人系统中,这样的条件和结果统称为资源,并且这样的资源是可数的;定义一个二元组r=<rnam,rnum>,其中r表示系统中的一种资源情况,rnam唯一标示资源r的种类,rnum表示资源r的数量;系统中所有种类的资源,都需要进行上述形式的表示,将所有的资源表示二元组组成一个集合,表示当前状态下系统的资源总体状况,形式化表示为r={r1,r2,…,rn},其中n表示该机器人系统所涉及到的资源总种数;

(2)在步骤(1)基础上,用一个三元组对机器人所能完成的任务进行形式化表示:task=<name,owner,input,output>,其中,name唯一标示该类任务;owner是一个机器人的id,表示该id对应的机器人有能力完成此任务;input表示完成此任务需要消耗的资源情况,是一个由r=<rnam,rnum>组成的集合,output表示完成此任务会产生的资源情况,也是一个由r=<rnam,rnum>组成的集合;在很多异构机器人环境中,不同机器人之间的能力互不交差,因此对于任意两个不同任务taski和taskj

(3)调用基于递归函数的任务分解算法;定义一个递归函数judge(item,num),用来判断当前环境下,是否能用一系列的生产流程的导出num个item资源;如果能,函数返回true;如果不能,函数返回false;该递归函数的特征在于如下步骤:

(3.1)比较现有资源中item资源的个数num′和num的关系;如果现有item资源数量大于等于num,则函数直接返回true;又如果现有item资源的数量小于num且不为0,若judge(item,num-num′)为真,则函数直接返回true;若judge(item,num-num′)为假,则进入步骤(3.2);

(3.2)如果item可以通过完成某个任务而产生,则找到那个唯一的任务,并记作task,记该任务可以产生的item资源数量为num″;计算需要执行该任务的次数,记作k,k的计算公式如下:task.input表示task所需要的输入资源集合,task.input[i]nam表示该集合中第i种资源的名称,task.input[i]num表示该集合中第i种资源所需的数量。设n=|task.input|,如果:

judge(task.input[1]nam,task.input[1]num)∧…

∧judge(task.input[n]nam,task.input[n]num)

能够满足为真k次,则表示每个子任务都能完成,函数直接返回true;否则函数返回false;

(3.3)若经过步骤(3.10和步骤(3.2),函数都未终止,则直接返回false;

(4)根据函数的堆栈调用轨迹,还原任务执行流程。

本发明的优点和效果在于设计了一种多机器人系统领域的形式化任务表示,采用递归遍历算法,可以对多机器人系统中的任务进行分解。其主要优点如下:

(1)现有的任务分解方法大都是针对具体应用提出来的,适合于特定的环境,通用性较差。本发明对系统环境资源及任务进行了统一的可共享形式化表示。可以更好地应用于不同的动态、随机、不确定环境下,具有良好的适应性。

(2)当前的任务分解方法大多数应用在小规模机器人系统中,并且假设都是同构机器人。本发明对机器人能力进行了统一的可共享形式化表示,不同能力的机器人可用同一个表示方式进行表示,支持异构机器人系统。

(3)现有的分解任务无法得出一组任务,在特定环境下的所有可能分解方案。本发明采用了递归算法,可以在机器人能力空间内,对任何可能的分解方式都进行遍历搜索,可以得到所有的分解方案。

附图说明

图1——本发明一种当前环境下的资源情况图。

图2——本发明一种机器人系统可以完成的任务示意图。

图3——本发明针对一种特定目标产物的一种分解方法示意图。

具体实施方式

本发明是一种基于递归算法的异构多机器人系统任务分解方法,为了使本发明的目的,技术方案和优点更加清楚,下面将结合附图及具体实例对本发明做进一步地详细描述。

步骤(1).对任务执行过程中,所涉及的资源进行形式化表示。完成一项任务需满足一定的条件,任务完成后会产生相应的结果。我们将多机器人系统中,这样的条件和结果统称为资源,并且这样的资源是可数的。定义一个二元组r=<rnam,rnum>,其中r表示系统中的一种资源情况,rnam唯一标示资源r的种类,rnum表示资源r的数量。系统中所有种类的资源,都需要进行上述形式的表示。比如<a,10>表示系统现在有10个名为a的资源。并将所有的资源表示二元组组成一个集合,表示当前状态下系统的资源总体状况,形式化表示为r={r1,r2,…,rn},其中n表示该机器人系统所涉及到的资源总种数。图1是一种可能的系统资源情况,此图表示在当前系统中,共存在14种资源,分别用a,b,…,n进行表示;其中资源a有10个,b有5个,c有5个,i、j、k、l、m等数量都为0。对于图1所代表的资源情况,可以形式化表示为

步骤(2).在步骤1)的基础上,用一个三元组对机器人所能完成的任务进行形式化表示:task=<name,input,output>。其中,name唯一标示该类任务;input表示完成此任务需要消耗的资源情况,是一个由r=<rnam,rnum>组成的集合,output表示完成此任务会产生的资源情况,也是一个由r=<rnam,rnum>组成的集合。图2是机器人可完成基础任务的示意图,1,2~9表示任务的编号,每个标号上方表示此任务可以得到的资源,标号下方表示此任务需要消耗的资源,比如任务1需要消耗一个c资源和一个d资源,会生成一个e资源。此图表示的任务可以形式化表示为:task1=<1,{<c,1>,<d,1>},<e,1>>等。并且,在robocup等异构机器人环境中,不同机器人之间的能力互不交差。因此对于任意两个不同任务taski和taskj图2中的任务满足了这样的特点。

步骤(3).调用基于递归函数的任务分解算法。我们定义了一个递归函数judge(item,num),用来判断当前环境下,是否能用一系列的生产流程的导出num个item资源。如果能,函数返回true;如果不能,函数返回false。该递归函数的特征在于如下步骤:

步骤(3.1)比较现有资源中item资源的个数num′和num的关系。如果现有item资源数量大于等于num,则函数直接返回true。如果现有item资源的数量小于num且不为0,若judge(item,num-num′)为真,则函数直接返回true;若judge(item,num-num′)为假,则进入步骤3.2.

步骤(3.2)如果item可以通过完成某个任务而产生,则找到那个唯一的任务,并记作task,记该任务可以产生的item资源数量为num″。计算需要执行该任务的次数,记作k,k的计算公式如下:task.input表示task所需要的输入资源集合,task.input[i]nam表示该集合中第i种资源的名称,task.input[i]num表示该集合中第i种资源所需的数量。设n=|task.input|,如果:judge(task.input[1]nam,task.input[1]num)∧…∧judge(task.input[n]nam,task.input[n]num)能够满足为真k次,则表示每个子任务都能完成,函数直接返回true;否则函数返回false。

步骤(3.3)若经过步骤(3.1)和步骤(3.2),函数都未终止,则直接返回false。

步骤(4)根据函数的堆栈调用轨迹,还原任务执行流程。在图3中,三角形点表示直接从系统中使用资源,不需通过其他任务产生。根据步骤(3)的流程,图3还原了一种任务分解流程。由图3可知,目标所需的n在系统中不存在,但是可以调用任务10来生成。任务10需要资源a,直接从现有资源中取得;单另外两个原材料m和l需要通过任务9和任务8生成。以任务9为例,需要原材料j和k,此两材料需要通过任务6和7生成。以任务6为例,需要i、g和h原材料,h可从现有资源中取得,但是i和g需要通过任务5和任务3生成。此两任务需要的a、g、e、f资源都可以直接从原材料中取得。任务分解完成。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1