多搜救机器人系统任务分配方法

文档序号:10594754阅读:491来源:国知局
多搜救机器人系统任务分配方法
【专利摘要】本发明公开了一种多搜救机器人系统任务分配方法,目的是提供一种在可通信机器人数少于任务数的情况下仍能进行任务分配的方法。技术方案是先构建一个多搜救机器人系统并初始化,各个搜救机器人都有任务分配子系统;调整搜救机器人之间的通信关系,采用通信代理策略解决中心节点机器人可通信的机器人数少于任务数的问题;多搜救机器人系统计算执行任务的综合能力,中心节点机器人计算最佳任务分配方案,得到任务分配表;根据任务分配表将任务发送给负责执行的搜救机器人。采用本发明可解决负责任务分配的搜救机器人可通信机器人数少于任务数的问题;且本发明充分考虑机器人的综合能力对完成任务的效能的影响,提高了任务分配成功率。
【专利说明】
多搜救机器人系统任务分配方法
技术领域
[0001] 本发明设及在灾后救援、战场捜救等环境中多个分布式捜救机器人的任务分配方 法,特别是在通信环境恶劣的大范围动态复杂环境中,为多机器人协同完成救援任务提供 的一种任务分配方法。
【背景技术】
[0002] 在执行灾后救援、大范围战场捜救、复杂地形救援和高危环境救援等行动中使用 捜救机器人代替救援人员可W提高救援效率、降低对救援人员的威胁。但是由于单一机器 人的能力有限往往需要多个机器人相互配合共同完成捜救任务。为了使不同的机器人能够 相互配合自主完成救援任务,需要为机器人提供任务分配方法。
[0003] 在通信对象受限制的大范围动态复杂环境中,多捜救机器人系统进行任务分配需 要解决如下=个问题:
[0004] (1)负责任务分配的捜救机器人能够通信的机器人数量少于需要分配的任务数 量;
[0005] (2)根据捜救机器人工作能力的差异性进行任务分配,提高任务分配的成功率;
[0006] (3)减少任务分配的时间消耗。
[0007] 目前现有的任务分配方法主要集中于解决问题(2)和问题(3)。任务分配方法分为 集中式和分布式两大类。集中式任务分配方法如智能优化算法、基于图论的算法等,具有任 务分配时间短、通信代价低的优点。但是集中式任务分配方法对中屯、节点的运算性能要求 高,对通信环境的适应性较差。分布式任务分配方法包括基于行为的方法、基于市场机制的 方法、群智能方法等,目前的基于市场机制的任务分配方法具有环境适应性好、任务分配过 程中考虑机器人工作性能差异和任务分配结果接近全局最优解等优点,但是已有的分布式 任务算法中没有对问题(1)进行过多的考虑。目前的任务分配算法没有考虑下述情况:负责 任务分配的机器人能够通信的机器人数量少于需要分配的任务数。

【发明内容】

[000引本发明要解决的技术问题是:提供一种多捜救机器人系统任务分配方法,使得负 责任务分配的捜救机器人能够在可通信机器人数少于任务数的情况下、基于捜救机器人的 工作能力进行任务分配。本发明的技术方案如下:
[0009] 第一步:构建一个多捜救机器人系统。系统由N个捜救机器人组成(N为正整数)。捜 救机器人之间W无线方式进行通信。各个捜救机器人的工作能力具有差异性,但是都有相 同的任务分配子系统。
[0010] 捜救机器人Rf的任务分配子系统由四部分组成,为整数:基础数据模 块、通信模块、任务综合能力计算模块和任务分配模块;
[0011] 基础数据模块保存通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力 权重表、候选表、任务表、已参加任务分配表、冲突表和最大等待时间。
[0012] 通信表用于保存可W与Rf通信的捜救机器人。该表是一个一维表,有S行,0《s《 N-I,S为整数,每行记录与Ri通信的捜救机器人的通信地址。
[0013] 任务表保存需要分配的任务W及完成任务需要的基本能力。该表是一个二维表, 有M行,表示有M个任务参加分配,M>1。每行有K个域,K表示多捜救机器人系统具有的基本 能力的数量,K> 1。表中每个元素为一个S元组(U,Ck,tCmk),其中tm表示第m个任务,C读示 第k种基本能力,tCmk取值为0或1,0表示任务U不需要能力Ck, 1表示任务U需要能力Ck,,
[0014] 基本能力表保存Rf的各个基本能力(完成任务必须的能力)的大小。该表是一个二 维表,有M'行,M'表示多捜救机器人系统能够完成的任务类型总数,每行有K个域,分别是完 成不同任务的基本能力大小。
[0015] 基本能力权重表保存Rf的各个基本能力的权重。该表是一个二维表,有K行,每行 有两个域,一个是基本能力名,一个是该能力的权重。
[0016] 潜在能力表保存Rf的各个潜在能力(只影响任务完成效果的能力)的大小。该表是 一个二维表,有M'行,每行有K'个域,分别是完成不同任务的潜在能力大小,K'表示多捜救 机器人系统具有的潜在能力的数量,K'>1。
[0017] 潜在能力权重表保存Rf的各个潜在能力的权重。该表是一个二维表,有K'行,每行 有两个域,一个是潜在能力名,一个是该能力的权重。
[0018] 候选表保存参加任务分配的捜救机器人的通信地址。该表是一个一维表,有S"行, 0《s"《N-l,s"为整数,,每行记录参加任务分配的捜救机器人的通信地址。
[0019] 已参加任务分配表记录了 Rf参加的任务分配,该表是一个一维表,记录了 Rf参加的 任务分配的总任务名。
[0020] 最大等待时间T表示捜救机器人Rf发出任务分配请求消息后等待反馈消息的时 间,T一般设置为10~40秒。
[0021] 通信模块保存消息表和已通信表。
[0022] 消息表保存Rf收到的消息。该表是一个一维表,每行记录Ri收到的消息。消息由五 部分内容组成:标识、消息发送者、消息接收者、消息类型和消息内容。标识由消息来源机器 人通信地址、总任务名和消息顺序依次组合而成。消息发送者记录发送消息的机器人的通 信地址。消息接收者记录接收消息的机器人的通信地址。消息类型有六种取值:Request、 Accept、Refuse、Taskrequirement、Taskuti Iity 和Taskal IocatecLRequest 表示消息用于 请求建立通信网络;Accept表示消息发送者同意参加任务分配;Refuse表示消息发送者拒 绝参加任务分配;Taskrequirement表示消息内容是任务需求描述;Taskuti Iity表示消息 内容是消息发送者执行任务的效用;Taskallocated表示消息内容是任务分配方案。消息内 容是W字符串的形式记录的消息的内容。
[0023] 已通信表保存向Rf发送消息的捜救机器人的通信地址。该表是一个一维表,有S"' (S" ' = 1,2,3-N-1)行,每行记录向Rf发送消息的捜救机器人的通信地址。
[0024] 如果通信模块从操作系统收到类型为Request的消息,通信模块修改消息表、已通 信表、基础数据模块的通信表。如果通信模块从操作系统收到类型为Accept的消息,通信模 块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的候选表和通信表。如果 通信模块从操作系统收到类型为Re化Se的消息,通信模块修改消息表、已通信表,并根据消 息的发送者修改基础数据模块的通信表。如果通信模块从操作系统收到类型为 Taskrequirement的消息,通信模块修改消息表、已通信表,并修改基础数据模块的任务表。 如果通信模块从操作系统收到类型为Taskutility的消息,通信模块修改消息表、已通信 表,并修改任务综合能力计算模块的任务综合能力表。如果通信模块从操作系统收到类型 为化skallocated的消息,通信模块修改消息表、已通信表,并修改任务分配模块的任务分 配表。如果通信模块从任务综合能力计算模块和任务分配模块收到消息,那么通信模块先 修改消息表,然后通过操作系统将收到的消息发送出去。
[0025] 任务综合能力计算模块保存有任务综合能力表。
[0026] 任务综合能力表保存Rf完成不同任务的综合能力。该表是一个二维表,有S"行。每 行有1域,是与任务名对应的完成任务的综合能力大小。
[0027] 任务综合能力计算模块根据从基础数据模块中获得的任务表、基本能力表、基本 能力权重表、潜在能力表、潜在能力权重表计算Rf执行任务的综合能力,将Rf执行任务的综 合能力保存在任务综合能力表中。如果Rf被分配任务,那么Rf的任务综合能力计算模块生成 类型为化Skutility的消息发送给通信模块。
[0028] 任务分配模块保存有任务分配表。任务分配表是一个一维表,有M行,每行记录执 行任务的机器人标识。
[0029] 任务分配模块根据任务综合能力计算模块的任务综合能力表计算最佳的任务分 配方案,生成任务分配表,并生成标识为化Skallocated的消息,并将该消息发送给通信模 块。
[0030] 虽然所有的捜救机器人的任务分配子系统是完全相同的,但是在任务分配过程 中,捜救机器人所承担的角色是不同的,并且捜救机器人的角色是可W发生变化的。在一次 任务分配过程中,发起任务分配的机器人被称为中屯、节点机器人,设为Ri,系统中其他机器 人为Ri(2《i《N)。中屯、节点机器人化发起任务分配向Ri发送消息类型是Request的消息,Ri 接收到Request类型的消息后对消息进行处理。
[0031 ]第二步,多捜救机器人系统初始化:
[0032] 从用户提供的配置文件读入通信表、基本能力表、基本能力权重表、潜在能力表、 潜在能力权重表和最大等待时间。
[0033] 第=步:调整捜救机器人之间的通信关系,采用通信代理策略来解决中屯、节点机 器人可通信的机器人数少于任务数的问题。
[0034] 3. IRi向Ri的通信表中的捜救机器人发送类型为Request消息,消息内容为总任务 名(总任务名是对所有待分配任务的代表)的任务分配请求消息,并将任务分配请求消息加 入Ri的消息表,然后化开始等待反馈消息并计时;
[0035] 3.2在Ri等待反馈消息期间瓜每过1秒判断一次等待时间是否大于T,如果大于则 转到3.13,否则转3.2,仍然等待。如果Ri收到从Ri来的反馈消息,则转到3.10。同时,在Ri等 待期间,如果Ri收到从Rj来的消息,1《j《N,j声i转到3.3;
[0036] 3.3Ri遍历Ri的消息表,判断Ri的消息表中是否有与R3收到的消息具有相同标识的 消息,如果有,则转到3.2,否则将Ri收到的消息加入Ri的消息表,并将消息发送者 N,j声i)的通信地址加入已通信表,转3.4;
[0037] 3.4Ri向Ri的通信表中的所有捜救机器人Ri发送收到的消息;
[0038] 3.5Ri判断消息的类型,如果类型是Request,则转3.6,否则转3.2;
[0039] 3.6如果Ri的已参加任务分配表为空,则转到3.7;否则转到3.9;
[0040] 3.7Ri向扣发送类型为Accept的消息,消息的内容是Ri的通信地址,Ri将总任务名 填入Ri的已参加任务分配表;
[OOW 3. SRi将Ri的任务综合能力表清空,并转3.2; 3.9Ri向R泼送类型为Refuse的消息, 消息的内容是Ri的通信地址,并转3.2;
[0042] 3. IORi遍历Ri的消息表,判断Ri的消息表是否有与Ri收到的反馈消息具有相同标 识的消息,如果有,则转到3.2;否则,将化收到的消息加入到Ri的消息表,并将消息发送者的 通信地址加入Ri的已通信表,转3.11;
[0043] 3.11如果化收到的反馈消息的类型是Request,则转到3.2,否则转到3.12
[0044] 3.12如果Ri收到的反馈消息的类型是Accept,则将同意参加任务分配的捜救机器 人通信地址加入Ri的候选表,转3.2;否则转3.2;
[0045] 3.13Ri用化的已通信表替换Ri的通信表,清空化的已通信表和任务综合能力表。
[0046] 3.14如果Ri的已参加任务分配表为空,则将Ri的通信地址加入Ri的候选表,将总任 务名,填入Ri的已参加任务分配表,转第四步;否则直接转第四步;
[0047] 第四步:多捜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送 给Ri。
[0048] 4. IRi判断任务数是否大于Ri的候选表的行数,如果任务数大于Ri的候选表的行 数,则转4.18,否则转到4.2;
[0049] 4.2R1向Ri的通信表中的所有机器人发送类型为化skrequirement、内容为任务表 和总任务名的任务能力需求消息,并将任务能力需求消息加入Ri的消息表;
[0050] 4.3R況始等待Ri的反馈消息。在Ri等待期间,如果Ri收到消息,转4.7。如果Ri收到 Ri的反馈消息,则转4.4;
[0051] 4.4Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的 消息,有则转4.3,否则化将消息中的Ri的任务综合能力值填入化的任务综合能力表,并将Ri 收到的消息加入Ri的消息表;
[0052] 4.5判断Ri的候选表中的所有捜救机器人是否都返回了消息类型是化Skutility 的消息,如果是,转4.6,否则转4.3;
[0053] 4.6Ri检查化的已参加任务分配表,如果化的已参加任务分配表中有当前的总任务 名,则转4.12,否则转第五步;
[0054] 4.7Ri遍历Ri的消息表,判断Ri收到的消息是否与Ri的消息表中的消息具有相同的 标识,如果有,则转4.3,否则将Ri收到的消息加入到Ri的消息表;
[0055] 4.8Ri向Ri的通信表中所有捜救机器人发送Ri的收到的消息;
[0化6] 4.9Ri判断消息的类型,如果类型是化Skrequirement,则转到4.10,否则转到4.3;
[0057] 4. IORi根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果是,则转4.12, 否则转4.3;
[0化引 4. IlRi向发送化skrequirement类型消息的发送者Rj发送类型为化skutility的消 息,消息内容是任务综合能力表,转4.3 ;由于Ri是Taskrequirement类型消息的最初发送 者,所W最终所有类型为化Skut i 1 i ty的消息都会发送给Ri。
[0062]
[0059] 4.12由于Ri与Ri计算综合任务能力的算法是相同的,WRh代表Ri和Ri,l《h《N。化 从类型为化skrequirement的消息中获得任务表;[0060] 4.13Rh遍历化的任务表,从表中取出第m个任务,[0061] 4.14Rh根据公式(1)和(2)计算完成第m个任务的基本能力Kmh;
[0063]
[0064] 其中amh=l表示第h个捜救机器人能完成第m个任务,amh = 0表示不能完成第m个任 务;ecm化表示第h个捜救机器人、完成第m个任务时具有的第k种基本能力的大小,ecmhkG[0, 1 ]; ? hk表示第h个捜救机器人的第k种基本能力的权重,CO hkG [0,1 ]。
[0065] 4.15Rh根据公式(3)计算完成第m个任务的潜在能力Gmh
[0066]
怯).
[0067] CO '化表示第h个捜救机器人第k种潜在能力的权重,CO 'hkG[0,l];egCmh读示第h 个捜救机器人完成第m个任务具有的第k种潜在能力的大小,egc血kG [0,1 ]
[00側 4.16化根据公式(4)计算完成第m个任务的综合能力Acapmh,并将计算结果存入Rh 的任务综合能力表;
[0069]
[0070] 其中Acapmh表示第h个机器人完成第m个任务的综合能力,CO "hi表示第h个机器人 的基本能力的权重,W"h2表示第h个机器人的潜在能力的权重,W"hlG[0,l],《"h2G[0, 1]〇
[00川 4.17如果化代表Ri,则转第五步;如果化代表Ri转4.11。
[0072] 4.18化终止任务分配。
[0073] 第五步:Ri使用匈牙利算法(参见彭静.分配问题中匈牙利算法分析[J].科技信 息,VOl. 36,2009)计算最佳任务分配方案,算法的输入是Ri的任务综合能力表,算法输出是 Ri的任务分配表。
[0074] 第六步:虹根据化的任务分配表将任务发送给负责执行的捜救机器人。
[00巧]6. IRi向Ri的通信表中的所有机器人发送类型为化SkallocatecU内容为任务分配 表的消息,并将Ri发送的类型为化Skallocated的消息加入化的消息表;
[0076] 6.2Ri检查Ri的任务分配表,如果Ri被分配了任务,则执行分配的任务,否则转6.7, 同时如果Ri(2《 i《N)收到任务分配消息,则转到6.3:
[0077] 6.3Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的 消息,如果有,则转6.8,否则将Ri收到的消息加入到Ri的消息表,转6.4;
[0078] 6.4Ri向Ri的通信表中所有捜救机器人(除消息的发送者)发送Ri的收到的消息;
[0079] 6.5Ri判断Ri收到的消息的类型,如果类型是Taskallocated,则转到6.6,否则转 6.7;
[0080] 6.6Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果Ri参加任务分 配,则从Ri收到的类型为化Skallocated的消息中读出任务分配表,并执行分配的任务;
[0081 ] 6.7化退出任务分配子系统。
[0082] 6. SRi不对收到的消息进行响应。
[0083] 本发明提供了一种负责任务分配的捜救机器人可通信机器人数少于任务数的、基 于捜救机器人工作能力的任务分配方法。采用本发明具有W下优点:
[0084] 第一:为了解决负责任务分配的捜救机器人可通信机器人数少于任务数的问题, 本发明第=步采用通信代理的方法调整多捜救机器人系统的通信网络,增加了参与任务分 配的机器人数;
[0085] 第二:本发明第四步采用基于捜救机器人综合能力的计算方法。在任务分配过程 中,充分考虑机器人的综合能力对完成任务的效能的影响,提高了任务分配成功率。
[0086] 说明书附图
[0087] 为了更清楚的说明本发明实施例和现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单的介绍。
[0088] 图1是本发明总体结构图;
[0089] 图2为本发明多捜救机器人系统任务分配方法的软件部署图;
[0090] 图3为本发明总体流程图;
【具体实施方式】
[0091] 为了使其他技术人员能够更好的理解本发明,下面对本发明进行详细介绍。
[0092] 第一步:构建一个如图1所示的多捜救机器人系统。假设系统中有4个捜救机器人 (N=4),分别为Ri、化、化和R4。
[0093] 第二步:多捜救机器人系统初始化:
[0094] 设化负责发起任务分配过程,最大等待时间T = 20s,总任务为TN;
[0095] 化的通信表如表所示:
[0096] 表 1 「00971 LUWS」 护」通信巧观巧尸几不:
[0099]表 2 「/"H LUiui」 K3tfj旭旧巧挪J巧/yr不:
[0102]表4
[0122] R2的基本能力权重表如表所示:
[0123] 表10 「01241

L〇158」第=步:调整搜救机器人之间的通信关系。具体步骤如下:
[0159] 3. IRi向R2发送任务分配请求消息,消息内容为总任务名,并将该任务分配请求消 息加入消息表,然后Ri开始等待反馈消息并计时;
[0160] 3.2在Ri等待反馈消息期间,扣每过1秒判断一次等待时间是否大于T,如果大于则 转到3.16,否则仍然等待。如果Ri收到反馈消息,则转到3.10。同时,在化等待期间,RiQ = I, 2,3)对收到的消息进行处理,如果Ri收到消息,转到3.3
[0161] 3.3Ri遍历消息表,判断消息表是否有与收到的消息相同的消息,如果有,则转到 3.2,否则将消息加入消息表,并将消息发送者J声i)的通信地址加入已通信 表,转3.4;
[0162] 3.4Ri向通信表中机器人发送收到的消息;
[0163] 3.5Ri判断消息的类型,如果类型是Request,则转到3.6,否则转3.2;
[0164] 3.6Ri判断是否参加任务分配,如果参加任务分配,则转到3.7;否则转到3.9;
[0165] 3.7Ri向Rj发送类型为Acc邱t的消息,消息的内容是Ri的通信地址,将总任务名TN 填入已参加任务分配表;
[0166] 3. SRi将自身的任务综合能力表清空,并转3.2;
[0167] 3.9Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2;
[0168] 3. IORi遍历消息表,判断消息表是否有与收到的消息相同的消息,如果有,则,转 到3.2;否则,将消息加入到消息表,并将R2的通信地址加入已通信表,转到3.11;
[0169] 3.11如果化收到的消息的类型是Request,则转到3.2,否则转到3.12
[0170] 3.12如果Ri收到的消息的类型是Accept,则将同意参加任务分配的捜救机器人通 信地址加入候选表,转到3.2;否则转到3.2;
[0171] 3.13化用已通信表替换通信表,清空已通信表和任务综合能力表;
[0172] 3.14Ri判断自身是否参加任务分配,如果参加任务分配,则将自己的通信地址加 入候选表,将总任务名TN填入已参加任务分配表,转到第四步;否则转到第四步;
[0173] 第四步:多捜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送 给Ri
[0174] 4. IRi判断任务数是否大于候选表的行数,如果任务数大于候选表的行数,则转 4.18,否则转到4.2;
[0175] 4.2R1向R2发送类型为化skrequirement、内容为任务表和总任务名TN的任务能力 需求消息,并将该消息加入消息表;
[0176] 4.3R況始等待Ri的反馈消息。在Ri等待期间,如果Ri收到消息,那么转到4.7。如果 Ri收到Ri的反馈消息,则转到4.4;
[0177] 4.4Ri遍历消息表,判断消息表是否有相同的消息,如果有则转到4.3,否则Ri将消 息中的任务综合能力表填入Ri的任务综合能力表,并将消息加入消息表;
[0178] 4.5判断Ri的候选表中的所有机器人R2、R3和R4都返回了消息类型是化Skutility 的消息,如果是,则转到4.6,否则转到4.3;
[0179] 4.6如果化参加任务分配,则转4.12,否则转到第五步;
[0180] 4.7Ri遍历消息表,判断是否收到相同的消息,如果收到过相同的消息,则转到 4.3,否则将消息加入到消息表;
[0181] 4.8Ri向通信表中所有机器人发送收到的消息;
[0182] 4.9Ri判断消息的类型,如果类型是化Skrequirement,则转到4.10,否则转到4.3;
[0183] 4. IORi根据已参加任务分配表判断是否参加任务分配,如果参加,则转到4.12,否 则转到4.3;
[0184] 4.1 IRi向发送Taskrequirement类型消息的发送者Rj(1《j《N, j声i)发送类型为 Taskut i 1 i ty的消息,消息内容是任务综合能力表,转到4.3;
[0185] 4.12由于Ri与Ri计算综合任务能力的算法是相同的,WRh(l《h《N)代表Ri和RisRi 从类型为化skrequirement的消息中获得任务表;
[0186] 4.13Rh遍历化的任务表,从表中取出第个任务;
[0187] 4.14Rh计算完成第m个任务的基本能力Kmh;
[018引4.15Rh计算完成第m个任务的潜在能力Gmh
[0189] 4.16Rh计算完成第m个任务的综合能力Acapmh,并将计算结果存入化的任务综合能 力表;
[0190] 4.17如果化是化,则转第五步,如果化代表Ri转4.11。
[0191] 4.18化终止任务分配。
[0192] 化最终获得的任务综合能力表的值如表22所示
[0193] 表22 「01941
[01M]第五步:Ri计算最佳任务分配方案,输入是Ri的任务综合能力表,输出是Ri的任务 分配表,如表23所示:
[0196] 表23
[0197]
[0198] 第六步:町根据任务分配表将任务发送给负责执行的捜救机器人。
[0199] 6. IRi向化发送类型为化skallocated、内容为任务分配表的消息,并将该消息加入 消息表;
[0200] 6.2如果Ri被分配了任务,则执行分配的任务,否则转到6.7,同时如果Ri收到任务 分配消息,则转到6.3:
[0201] 6.3Ri遍历消息表,判断是否收到相同的消息,如果收到过相同的消息,则不处理, 否则将消息加入到消息表,转到6.4;
[0202] 6.4Ri向通信表中所有机器人(除消息的发送者)发送收到的消息;
[0203] 6.5Ri判断消息的类型,如果类型是化skallocated,则转到6.6,否则转6.8;
[0204] 6.6Ri根据已参加任务分配表判断是否参加任务分配,如果参加任务分配,则从消 息中读出任务分配表,并执行分配的任务;
[0205] 6.7Ri退出任务分配子系统;
[0206] 6. SRi不对收到的消息进行响应。
【主权项】
1. 一种多搜救机器人系统任务分配方法,其特征在于包括以下步骤: 第一步:构建一个多搜救机器人系统,多搜救机器人系统由N个搜救机器人组成,N为正 整数;搜救机器人之间以无线方式进行通信,各个搜救机器人有相同的任务分配子系统; 搜救机器人Rf的任务分配子系统由四部分组成,l<f<N,f为整数:基础数据模块、通信 模块、任务综合能力计算模块和任务分配模块; 基础数据模块保存通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重 表、候选表、任务表、已参加任务分配表、冲突表和最大等待时间; 通信表用于保存可以与Rf通信的搜救机器人,该表是一个一维表,有s行,0彡s彡N-l,s 为整数,每行记录与Ri通信的搜救机器人的通信地址; 任务表保存需要分配的任务以及完成任务需要的基本能力,该表是一个二维表,有Μ 行,表示有Μ个任务参加分配,Μ多1;每行有Κ个域,Κ表示多搜救机器人系统具有的基本能力 的数量,Κ彡1;表中每个元素为一个三元组(U,c k,tcmk),其中U表示第m个任务,ck表示第k 种基本能力,tCmk取值为0或1,0表示任务tm不需要能力Ck,1表示任务tm需要能力Ck,, M,l^k^K; 基本能力表保存Rf的各个基本能力即完成任务必须的能力的大小,该表是一个二维表, 有M'行,M'表示多搜救机器人系统能够完成的任务类型总数,每行有K个域,分别是完成不 同任务的基本能力大小; 基本能力权重表保存Rf的各个基本能力的权重,该表是一个二维表,有K行,每行有两个 域,一个是基本能力名,一个是该能力的权重; 潜在能力表保存Rf的各个潜在能力的大小,该表是一个二维表,有M'行,每行有K'个域, 分别是完成不同任务的潜在能力大小,K'表示多搜救机器人系统具有的潜在能力的数量, K,彡 1; 潜在能力权重表保存Rf的各个潜在能力的权重,该表是一个二维表,有K'行,每行有两 个域,一个是潜在能力名,一个是该能力的权重; 候选表保存参加任务分配的搜救机器人的通信地址,该表是一个一维表,有s"行,(X s〃$N-l,s"为整数,每行记录参加任务分配的搜救机器人的通信地址; 已参加任务分配表记录了 Rf参加的任务分配,该表是一个一维表,记录了 Rf参加的任务 分配的总任务名; 最大等待时间T表示搜救机器人Rf发出任务分配请求消息后等待反馈消息的时间; 通信模块保存有消息表和已通信表; 消息表保存Rf收到的消息,该表是一个一维表,每行记录R!收到的消息;消息由五部分 内容组成:标识、消息发送者、消息接收者、消息类型和消息内容;标识由消息来源机器人通 信地址、总任务名和消息顺序依次组合而成;消息发送者记录发送消息的机器人的通信地 址;消息接收者记录接收消息的机器人的通信地址;消息类型有六种取值:Request、 Accept、Refuse、Taskrequirement、Taskutility和Taskal located,Request 表不消息用于 请求建立通信网络;Accept表示消息发送者同意参加任务分配;Refuse表示消息发送者拒 绝参加任务分配;Taskrequirement表示消息内容是任务需求描述;Taskuti lity表示消息 内容是消息发送者执行任务的效用;Taskal located表示消息内容是任务分配方案;消息内 容是以字符串的形式记录的消息的内容; 已通信表保存向Rf发送消息的搜救机器人的通信地址,该表是一个一维表,有s"'行,Ο 彡s〃'彡N-l,s"'为整数,每行记录向Rf发送消息的搜救机器人的通信地址; 如果通信模块从操作系统收到类型为Request的消息,通信模块修改消息表、已通信 表、基础数据模块的通信表;如果通信模块从操作系统收到类型为Accept的消息,通信模块 修改消息表、已通信表,并根据消息的发送者修改基础数据模块的候选表和通信表;如果通 信模块从操作系统收到类型为Refuse的消息,通信模块修改消息表、已通信表,并根据消息 的发送者修改基础数据模块的通信表。如果通信模块从操作系统收到类型为 Taskrequirement的消息,通信模块修改消息表、已通信表,并修改基础数据模块的任务表。 如果通信模块从操作系统收到类型为Taskutility的消息,通信模块修改消息表、已通信 表,并修改任务综合能力计算模块的任务综合能力表。如果通信模块从操作系统收到类型 为Taskallocated的消息,通信模块修改消息表、已通信表,并修改任务分配模块的任务分 配表;如果通信模块从任务综合能力计算模块和任务分配模块收到消息,那么通信模块先 修改消息表,然后通过操作系统将收到的消息发送出去; 任务综合能力计算模块保存有任务综合能力表; 任务综合能力表保存Rf完成不同任务的综合能力,该表是一个^维表,有s"彳丁,每彳丁有Μ 域,是与任务名对应的完成任务的综合能力大小; 任务综合能力计算模块根据从基础数据模块中获得的任务表、基本能力表、基本能力 权重表、潜在能力表、潜在能力权重表计算Rf执行任务的综合能力,将Rf执行任务的综合能 力保存在任务综合能力表中;如果R f被分配任务,那么Rf的任务综合能力计算模块生成类型 为Taskut i 1 i ty的消息发送给通信模块; 任务分配模块保存有任务分配表,任务分配表是一个一维表,有Μ行,每行记录执行任 务的机器人标识; 任务分配模块根据任务综合能力计算模块的任务综合能力表计算最佳的任务分配方 案,生成任务分配表,并生成标识为Taskal located的消息,并将该消息发送给通信模块; 在一次任务分配过程中,发起任务分配的机器人被称为中心节点机器人,设为心,系统 中其他机器人为Ri,i <N,中心节点机器人Ri发起任务分配向Ri发送消息类型是Request 的消息,Ri接收到Request类型的消息后对消息进行处理; 第二步,多搜救机器人系统初始化: 从用户提供的配置文件读入通信表、基本能力表、基本能力权重表、潜在能力表、潜在 能力权重表和最大等待时间; 第三步:调整搜救机器人之间的通信关系,采用通信代理策略来解决中心节点机器人 可通信的机器人数少于任务数的问题: 3.1心向1?1的通信表中的搜救机器人发送类型为Request消息,消息内容为总任务名的 任务分配请求消息,并将任务分配请求消息加入办的消息表,然后办开始等待反馈消息并计 时,所述总任务名是对所有待分配任务的代表; 3.2在心等待反馈消息期间,心每过1秒判断一次等待时间是否大于T,如果大于则转到 3.13,否则转3.2,仍然等待;如果心收到从Ri来的反馈消息,则转到3.10;同时,在心等待期 间,如果Ri收到从Rj来的消息,1 < j,j辛i,,转到3.3; 3.3?遍历心的消息表,判断心的消息表中是否有与R3收到的消息具有相同标识的消息, 如果有,则转到3.2,否则将心收到的消息加入心的消息表,并将消息发送者心的通信地址加 入已通信表,转3.4; 3.4R^Ri的通信表中的所有搜救机器人心发送收到的消息; 3.5Ri判断消息的类型,如果类型是Request,则转3.6,否则转3.2; 3.6如果心的已参加任务分配表为空,则转到3.7;否则转到3.9; 3.7Ri向Rj发送类型为Accept的消息,消息的内容是Ri的通信地址,Ri将总任务名填入Ri 的已参加任务分配表; 3 · 8Ri将Ri的任务综合能力表清空,并转3 · 2; 3.9Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2; 3.10?遍历办的消息表,判断心的消息表是否有与收到的反馈消息具有相同标识的消 息,如果有,则转到3.2;否则,将收到的消息加入到仏的消息表,并将消息发送者的通信地 址加入Ri的已通信表,转3.11; 3.11如果R!收到的反馈消息的类型是Request,则转到3.2,否则转到3.12 3.12如果心收到的反馈消息的类型是Accept,则将同意参加任务分配的搜救机器人通 信地址加入Ri的候选表,转3.2;否则转3.2; 3.13RJR^已通信表替换办的通信表,清空的已通信表和任务综合能力表; 3.14如果心的已参加任务分配表为空,则将心的通信地址加入心的候选表,将总任务名 填入心的已参加任务分配表,转第四步;否则直接转第四步; 第四步:多搜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送给R:: 4.1心判断任务数是否大于心的候选表的行数,如果任务数大于心的候选表的行数,则 转4.18,否则转到4.2; 4.2Ri向Ri的通信表中的所有机器人发送类型为Taskrequirement、内容为任务表和总 任务名的任务能力需求消息,并将任务能力需求消息加入Ri的消息表; 4.3?开始等待心的反馈消息,在心等待期间,如果心收到消息,转4.7;如果心收到心的 反馈消息,则转4.4; 4.4?遍历办的消息表,判断的消息表中是否有与收到的消息具有相同标识的消息, 有则转4.3,否则心将消息中的Ri的任务综合能力值填入心的任务综合能力表,并将心收到 的消息加入心的消息表; 4.5判断h的候选表中的所有搜救机器人是否都返回了消息类型是Taskutility的消 息,如果是,转4.6,否则转4.3; 4.6心检查心的已参加任务分配表,如果h的已参加任务分配表中有当前的总任务名, 则转4.12,否则转第五步; 4.7?遍历心的消息表,判断心收到的消息是否与心的消息表中的消息具有相同的标识, 如果有,则转4.3,否则将心收到的消息加入到心的消息表; 4. SR^Ri的通信表中所有搜救机器人发送心的收到的消息; 4.9Ri判断消息的类型,如果类型是Taskrequirement,则转到4.10,否则转到4.3; 4. lORi根据h的已参加任务分配表判断Ri是否参加任务分配,如果是,则转4.12,否则 转 4.3; 4. llRi向发送Taskrequirement类型消息的发送者Rj发送类型为Taskutility的消息, 消息内容是任务综合能力表,转4.3; 4. 12由于1^与1^计算综合任务能力的算法相同,以Rh代表1^和1^,1^从类型为 Taskrequirement的消息中获得任务表,Kh<N; 4.13Rh遍历Rh的任务表,从表中取出第m个任务, 4.14Rh根据公式(1)和(2)计算完成第m个任务的基本能力Kmh;其中amh=l表示第h个搜救机器人能完成第m个任务,amh = 0表示不能完成第m个任务; ecmhk表示第h个搜救机器人、完成第m个任务时具有的第k种基本能力的大小;c〇hk表示第h个 搜救机器人的第k种基本能力的权重; 4.15Rh根据公式(3)计算完成第m个任务的潜在能力Gmh(3) ω 'hk表示第h个搜救机器人第k种潜在能力的权重;egcmhk表示第h个搜救机器人完成第 m个任务具有的第k种潜在能力的大小; 4.16Rh根据公式(4)计算完成第m个任务的综合能力Acapmh,并将计算结果存入R h的任务 综合能力表; Acapmh= ( ω //hi*Kmh+ ω //h2*Gmh)*amh (4) 其中Acapmh表示第h个机器人完成第m个任务的综合能力,ω "hl表示第h个机器人的基本 能力的权重,ω "h2表示第h个机器人的潜在能力的权重; 4.17如果Rh代表Ri,则转第五步;如果Rh代表Ri转4.11。 4.18办终止任务分配; 第五步:心计算最佳任务分配方案,算法的输入是心的任务综合能力表,算法输出是R: 的任务分配表; 第六步:根据心的任务分配表将任务发送给负责执行的搜救机器人: 6. lRi向Ri的通信表中的所有机器人发送类型为Taskallocated、内容为任务分配表的 消息,并将Ri发送的类型为Taskal located的消息加入Ri的消息表; 6.2?检查仏的任务分配表,如果仏被分配了任务,则执行分配的任务,否则转6.7,同时 如果心收到任务分配消息,则转到6.3: 6.3?遍历心的消息表,判断心的消息表中是否有与心收到的消息具有相同标识的消息, 如果有,则转6.8,否则将化收到的消息加入到&的消息表,转6.4; 6.4R^Ri的通信表中所有搜救机器人发送心的收到的消息; 6.5Ri判断Ri收到的消息的类型,如果类型是Taskallocated,则转到6.6,否则转6.7; 6.6?根据&的已参加任务分配表判断&是否参加任务分配,如果&参加任务分配,则从 心收到的类型为Taskallocated的消息中读出任务分配表,并执行分配的任务; 6.7办退出任务分配子系统。 6.8?不对收到的消息进行响应。2. 如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述第五步Ri使用 匈牙利算法计算最佳任务分配方案。3. 如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述最大等待时 间T设置为10~40秒。4. 如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述eCmhke[〇, 1],c〇hke[0,i],ω,hke[〇,i],egCmhke[〇,i],c〇" hle[0,i],c〇"h2e[0,i]o
【文档编号】G06Q10/06GK105956748SQ201610257010
【公开日】2016年9月21日
【申请日】2016年4月22日
【发明人】查亚兵, 秦龙, 杨妹, 焦鹏, 孙林, 段红, 张琪
【申请人】中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1