[发明专利]多搜救机器人系统任务分配方法有效
申请号: | 201610257010.2 | 申请日: | 2016-04-22 |
公开(公告)号: | CN105956748B | 公开(公告)日: | 2019-09-13 |
发明(设计)人: | 查亚兵;秦龙;杨妹;焦鹏;孙林;段红;张琪 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F17/50 | 分类号: | G06F17/50;G06Q10/06 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种多搜救机器人系统任务分配方法,目的是提供一种在可通信机器人数少于任务数的情况下仍能进行任务分配的方法。技术方案是先构建一个多搜救机器人系统并初始化,各个搜救机器人都有任务分配子系统;调整搜救机器人之间的通信关系,采用通信代理策略解决中心节点机器人可通信的机器人数少于任务数的问题;多搜救机器人系统计算执行任务的综合能力,中心节点机器人计算最佳任务分配方案,得到任务分配表;根据任务分配表将任务发送给负责执行的搜救机器人。采用本发明可解决负责任务分配的搜救机器人可通信机器人数少于任务数的问题;且本发明充分考虑机器人的综合能力对完成任务的效能的影响,提高了任务分配成功率。 | ||
搜索关键词: | 搜救 机器人 系统 任务 分配 方法 | ||
【主权项】:
1.一种多搜救机器人系统任务分配方法,其特征在于包括以下步骤:第一步:构建一个多搜救机器人系统,多搜救机器人系统由N个搜救机器人组成,N为正整数;搜救机器人之间以无线方式进行通信,各个搜救机器人有相同的任务分配子系统;搜救机器人Rf的任务分配子系统由四部分组成,1≤f≤N,f为整数:基础数据模块、通信模块、任务综合能力计算模块和任务分配模块;基础数据模块保存通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表、候选表、任务表、已参加任务分配表、冲突表和最大等待时间;通信表用于保存可以与Rf通信的搜救机器人的通信地址,该表是一个一维表,有s行,0≤s≤N‑1,s为整数,每行记录与Rf通信的搜救机器人的通信地址;任务表保存需要分配的任务以及完成任务需要的基本能力,该表是一个二维表,有M行,表示有M个任务参加分配,M≥1;每行有K个域,K表示多搜救机器人系统具有的基本能力的数量,K≥1;表中每个元素为一个三元组(tm,ck,tcmk),其中tm表示第m个任务,ck表示第k种基本能力,tcmk取值为0或1,0表示任务tm不需要能力ck,1表示任务tm需要能力ck,1≤m≤M,1≤k≤K;基本能力表保存Rf的各个基本能力即完成任务必须的能力的大小,该表是一个二维表,有M'行,M'表示多搜救机器人系统能够完成的任务类型总数,每行有K个域,分别是完成不同任务的基本能力大小;基本能力权重表保存Rf的各个基本能力的权重,该表是一个二维表,有K行,每行有两个域,一个是基本能力名,一个是该能力的权重;潜在能力表保存Rf的各个潜在能力的大小,该表是一个二维表,有M'行,每行有K'个域,分别是完成不同任务的潜在能力大小,K'表示多搜救机器人系统具有的潜在能力的数量,K'≥1;潜在能力权重表保存Rf的各个潜在能力的权重,该表是一个二维表,有K'行,每行有两个域,一个是潜在能力名,一个是该能力的权重;候选表保存参加任务分配的搜救机器人的通信地址,该表是一个一维表,有s"行,0≤s"≤N‑1,s"为整数,每行记录参加任务分配的搜救机器人的通信地址;已参加任务分配表记录了Rf参加的任务分配,该表是一个一维表,记录了Rf参加的任务分配的总任务名;最大等待时间T表示搜救机器人Rf发出任务分配请求消息后等待反馈消息的时间;通信模块保存有消息表和已通信表;消息表保存Rf收到的消息,该表是一个一维表,每行记录Rf收到的消息;消息由五部分内容组成:标识、消息发送者、消息接收者、消息类型和消息内容;标识由消息来源机器人通信地址、总任务名和消息顺序依次组合而成;消息发送者记录发送消息的机器人的通信地址;消息接收者记录接收消息的机器人的通信地址;消息类型有六种取值:Request、Accept、Refuse、Taskrequirement、Taskutility和Taskallocated,Request表示消息用于请求建立通信网络;Accept表示消息发送者同意参加任务分配;Refuse表示消息发送者拒绝参加任务分配;Taskrequirement表示消息内容是任务需求描述;Taskutility表示消息内容是消息发送者执行任务的效用;Taskallocated表示消息内容是任务分配方案;消息内容是以字符串的形式记录的消息的内容;已通信表保存向Rf发送消息的搜救机器人的通信地址,该表是一个一维表,有s”'行,0≤s”'≤N‑1,s”'为整数,每行记录向Rf发送消息的搜救机器人的通信地址;如果通信模块从操作系统收到类型为Request的消息,通信模块修改消息表、已通信表、基础数据模块的通信表;如果通信模块从操作系统收到类型为Accept的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的候选表和通信表;如果通信模块从操作系统收到类型为Refuse的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的通信表;如果通信模块从操作系统收到类型为Taskrequirement的消息,通信模块修改消息表、已通信表,并修改基础数据模块的任务表;如果通信模块从操作系统收到类型为Taskutility的消息,通信模块修改消息表、已通信表,并修改任务综合能力计算模块的任务综合能力表;如果通信模块从操作系统收到类型为Taskallocated的消息,通信模块修改消息表、已通信表,并修改任务分配模块的任务分配表;如果通信模块从任务综合能力计算模块和任务分配模块收到消息,那么通信模块先修改消息表,然后通过操作系统将收到的消息发送出去;任务综合能力计算模块保存有任务综合能力表;任务综合能力表保存Rf完成不同任务的综合能力,该表是一个二维表,有s”行,每行有M域,是与任务名对应的完成任务的综合能力大小;任务综合能力计算模块根据从基础数据模块中获得的任务表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表计算Rf执行任务的综合能力,将Rf执行任务的综合能力保存在任务综合能力表中;如果Rf被分配任务,那么Rf的任务综合能力计算模块生成类型为Taskutility的消息发送给通信模块;任务分配模块保存有任务分配表,任务分配表是一个一维表,有M行,每行记录执行任务的机器人标识;任务分配模块根据任务综合能力计算模块的任务综合能力表计算最佳的任务分配方案,生成任务分配表,并生成标识为Taskallocated的消息,并将该消息发送给通信模块;在一次任务分配过程中,发起任务分配的机器人被称为中心节点机器人,设为R1,系统中其他机器人为Ri,2≤i≤N,中心节点机器人R1发起任务分配向Ri发送消息类型是Request的消息,Ri接收到Request类型的消息后对消息进行处理;第二步,多搜救机器人系统初始化:从用户提供的配置文件读入通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表和最大等待时间;第三步:调整搜救机器人之间的通信关系,采用通信代理策略来解决中心节点机器人可通信的机器人数少于任务数的问题:3.1 R1向R1的通信表中的搜救机器人发送类型为Request消息,消息内容为总任务名的任务分配请求消息,并将任务分配请求消息加入R1的消息表,然后R1开始等待反馈消息并计时,所述总任务名是对所有待分配任务的代表;3.2在R1等待反馈消息期间,R1每过1秒判断一次等待时间是否大于T,如果大于则转到3.13,否则转3.2,仍然等待;如果R1收到从Ri来的反馈消息,则转到3.10;同时,在R1等待期间,如果Ri收到从Rj来的消息,1≤j≤N,j≠i,转到3.3;3.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转到3.2,否则将Ri收到的消息加入Ri的消息表,并将消息发送者Rj的通信地址加入已通信表,转3.4;3.4 Ri向Ri的通信表中的所有搜救机器人Ri发送收到的消息;3.5 Ri判断消息的类型,如果类型是Request,则转3.6,否则转3.2;3.6如果Ri的已参加任务分配表为空,则转到3.7;否则转到3.9;3.7 Ri向Rj发送类型为Accept的消息,消息的内容是Ri的通信地址,Ri将总任务名填入Ri的已参加任务分配表;3.8 Ri将Ri的任务综合能力表清空,并转3.2;3.9 Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2;3.10 R1遍历R1的消息表,判断R1的消息表是否有与R1收到的反馈消息具有相同标识的消息,如果有,则转到3.2;否则,将R1收到的消息加入到R1的消息表,并将消息发送者的通信地址加入R1的已通信表,转3.11;3.11如果R1收到的反馈消息的类型是Request,则转到3.2,否则转到3.123.12如果R1收到的反馈消息的类型是Accept,则将同意参加任务分配的搜救机器人通信地址加入R1的候选表,转3.2;否则直接转3.2;3.13 R1用R1的已通信表替换R1的通信表,清空R1的已通信表和任务综合能力表;3.14如果R1的已参加任务分配表为空,则将R1的通信地址加入R1的候选表,将总任务名填入R1的已参加任务分配表,转第四步;否则直接转第四步;第四步:多搜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送给R1:4.1 R1判断任务数是否大于R1的候选表的行数,如果任务数大于R1的候选表的行数,则转4.18,否则转到4.2;4.2 R1向R1的通信表中的所有机器人发送类型为Taskrequirement、内容为任务表和总任务名的任务能力需求消息,并将任务能力需求消息加入R1的消息表;4.3 R1开始等待Ri的反馈消息,在R1等待期间,如果Ri收到消息,转4.7;如果R1收到Ri的反馈消息,则转4.4;4.4 R1遍历R1的消息表,判断R1的消息表中是否有与R1收到的消息具有相同标识的消息,有则转4.3,否则R1将消息中的Ri的任务综合能力值填入R1的任务综合能力表,并将R1收到的消息加入R1的消息表;4.5判断R1的候选表中的所有搜救机器人是否都返回了消息类型是Taskutility的消息,如果是,转4.6,否则转4.3;4.6 R1检查R1的已参加任务分配表,如果R1的已参加任务分配表中有当前的总任务名,则转4.12,否则转第五步;4.7 Ri遍历Ri的消息表,判断Ri收到的消息是否与Ri的消息表中的消息具有相同的标识,如果有,则转4.3,否则将Ri收到的消息加入到Ri的消息表;4.8 Ri向Ri的通信表中所有搜救机器人发送Ri的收到的消息;4.9 Ri判断消息的类型,如果类型是Taskrequirement,则转到4.10,否则转到4.3;4.10 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果是,则转4.12,否则转4.3;4.11 Ri向发送Taskrequirement类型消息的发送者Rj发送类型为Taskutility的消息,消息内容是任务综合能力表,转4.3;4.12由于R1与Ri计算综合任务能力的算法相同,以Rh代表R1和Ri,Rh从类型为Taskrequirement的消息中获得任务表,1≤h≤N;4.13 Rh遍历Rh的任务表,从表中取出第m个任务,1≤m≤M;4.14 Rh根据公式(1)和(2)计算完成第m个任务的基本能力Kmh;![]()
其中amh=1表示第h个搜救机器人能完成第m个任务,amh=0表示不能完成第m个任务;ecmhk表示第h个搜救机器人、完成第m个任务时具有的第k种基本能力的大小;ωhk表示第h个搜救机器人的第k种基本能力的权重;4.15 Rh根据公式(3)计算完成第m个任务的潜在能力Gmh
ω'hk'表示第h个搜救机器人第k种潜在能力的权重;egcmhk'表示第h个搜救机器人完成第m个任务具有的第k种潜在能力的大小;4.16 Rh根据公式(4)计算完成第m个任务的综合能力Acapmh,并将计算结果存入Rh的任务综合能力表;Acapmh=(ω"h1*Kmh+ω"h2*Gmh)*amh (4)其中Acapmh表示第h个机器人完成第m个任务的综合能力,ω"h1表示第h个机器人的基本能力的权重,ω"h2表示第h个机器人的潜在能力的权重;4.17如果Rh代表R1,则转第五步;如果Rh代表Ri转4.11;4.18 R1终止任务分配;第五步:R1计算最佳任务分配方案,算法的输入是R1的任务综合能力表,算法输出是R1的任务分配表;第六步:R1根据R1的任务分配表将任务发送给负责执行的搜救机器人:6.1 R1向R1的通信表中的所有机器人发送类型为Taskallocated、内容为任务分配表的消息,并将R1发送的类型为Taskallocated的消息加入R1的消息表;6.2 R1检查R1的任务分配表,如果R1被分配了任务,则执行分配的任务,否则转6.7,同时如果Ri收到任务分配消息,则转到6.3;6.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转6.8,否则将Ri收到的消息加入到Ri的消息表,转6.4;6.4 Ri向Ri的通信表中所有搜救机器人发送Ri的收到的消息;6.5 Ri判断Ri收到的消息的类型,如果类型是Taskallocated,则转到6.6,否则转6.7;6.6 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果Ri参加任务分配,则从Ri收到的类型为Taskallocated的消息中读出任务分配表,并执行分配的任务;6.7 R1退出任务分配子系统;6.8 Ri不对收到的消息进行响应。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610257010.2/,转载请声明来源钻瓜专利网。