[发明专利]一种面向开放场景的多机器人自主协同搜救方法有效
申请号: | 201910883109.7 | 申请日: | 2019-09-18 |
公开(公告)号: | CN110587606B | 公开(公告)日: | 2020-11-20 |
发明(设计)人: | 刘惠;丁博;王怀民;贾宏达;史佩昌;张捷;骆杰;怀智博;巩旭东;耿铭阳 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | B25J9/16 | 分类号: | B25J9/16 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 陈晖 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 开放 场景 机器人 自主 协同 搜救 方法 | ||
1.一种面向开放场景的多机器人自主协同搜救方法,其特征在于包括以下步骤:
第一步,构建多机器人系统,多机器人系统由M个机器人节点和一个云端服务器节点构成,云端服务器节点与M个机器人节点均相连;
机器人节点指能够运动、观测、通信、具有软件运行能力的机器人;每个机器人节点上均部署有探测模块、第一存储模块、计算模块、运动模块和第一通信模块;探测模块是能采集搜救场景环境数据的传感器,探测模块与第一存储模块相连,从开始运行后每隔α秒周期性地对传感器可见范围内的搜救场景和除自己以外的另M-1台机器人节点进行拍摄或扫描,得到当前搜救场景状态,并将当前搜救场景状态发送给第一存储模块;
第一存储模块是存贮器,与探测模块和计算模块相连,第一存储模块中有一个元经验回放池,以数组的形式存放所属机器人节点m的D条轨迹信息,D为正整数;第一存储模块从探测模块接收搜救场景状态,将搜救场景状态转化成轨迹信息,轨迹信息是一个四元组,第j条轨迹信息的格式为(sj,aj,rj,sj+1),其中,sj表示探测模块第j次观察到的搜救场景状态,sj涵盖第j次观察到的除机器人节点m以外的另M-1台机器人节点、搜救场景中所有目标点、搜救场景中所有障碍物的位置坐标和另M-1台机器人节点的速度;aj表示探测模块在第j次观测到第j+1次观测两个时间点之间,机器人节点m所采取的行动,表现为机器人节点m往某个方向进行加速或施加作用力的动作,机器人节点m在执行行动时自动记录aj;rj是探测模块在第j+1次观察时,对于第j次观察到的搜救场景状态的任务完成度进行评价的得分;sj+1表示探测模块第j+1次观察到的搜救场景状态,sj+1涵盖第j+1次观察到的除机器人节点m以外的另M-1台机器人节点、搜救场景中所有目标点、搜救场景中所有障碍物的位置坐标和另M-1台机器人节点的速度;
计算模块负责制定和优化搜救策略,并根据搜救策略向运动模块发送行动指令;计算模块与第一存储模块、运动模块、第一通信模块相连,计算模块中安装有操作系统,并安装有与操作系统相匹配的ROS即“机器人操作系统”和TensorFlow深度学习框架;计算模块使用TensorFlow深度学习框架创建6个全连接神经网络,分属用于形成行动指令的Actor结构和用于优化搜救策略的Critic结构,Actor结构包括策略网络、目标网络、元策略网络;Critic结构包括评价网络、目标网络、元评价网络,这6个网络是结构相同的神经网络;Actor结构策略网络从第一存储模块中获取多条轨迹信息和当前状态,将自身的网络参数发送给Actor结构目标网络和Actor结构元策略网络,并发送行动指令给运动模块,Actor结构策略网络主要功能是根据当前状态制定下一步的行动指令;Actor结构目标网络从Actor结构策略网络获取Actor结构策略网络的参数,辅助Actor结构策略网络进行更新,并将损失函数度量值发送给Critic结构目标网络;Critic结构评价网络从第一存储模块接收多条轨迹信息,从Critic结构目标网络接收损失函数度量值,指导Actor结构策略网络制定更佳的行动指令,并将自身网络参数发送给Actor结构策略网络、Critic结构目标网络和Critic结构元评价网络;Critic结构目标网络从Critic结构评价网络接收Critic结构评价网络的网络参数,从Actor结构目标网络接收损失函数度量值,辅助Critic结构评价网络进行更新,并将损失函数度量值发送给Critic结构评价网络;Actor结构元策略网络从Actor结构策略网络接收Actor结构策略网络的网络参数,将不同搜救场景中得到的Actor结构策略网络参数进行提炼和保存;Critic结构元评价网络从Critic结构评价网络接收Critic结构评价网络参数,将不同搜救场景中得到的Critic结构评价网络参数进行提炼和保存;计算模块将Actor结构元策略网络和Critic结构元评价网络的两个网络参数保存成一个.data格式文件,发送到第一通信模块;机器人节点每隔α秒进行一次观测并执行一个动作指令,定义为机器人节点每隔α秒执行一步行动;每一步行动后,计算模块从第一存储模块接收到多条轨迹信息和当前状态,一方面计算模块从多条轨迹信息中找到当前状态,将此状态输入到Actor结构策略网络中,得到并输出下一步的行动指令;另一方面,计算模块根据这多条轨迹信息,对六个神经网络的参数进行更新,在行动完成后,将保存有Actor结构元策略网络的网络参数和Critic结构元评价网络的网络参数的文件发送给第一通信模块;
运动模块由数模转换器和驱动装置构成;运动模块与计算模块相连,从计算模块接收行动指令,通过内置的数模转换器将数字信号转换为模拟信号,并将模拟信号传输给驱动装置,使机器人根据行动指令做出相应动作,导致搜救场景发生改变;
第一通信模块与计算模块、云端服务器节点相连,第一通信模块从计算模块接收记录参数的.data格式文件,将.data格式文件发送给云端服务器节点中的第二通信模块;
云端服务器节点指网络服务器、工作站,安装有第二通信模块和第二存储模块;第二存储模块与第二通信模块相连,第二存储模块上安装有Ubuntul6.04/18.04操作系统,以及与机器人节点相同版本的TensorFlow深度学习框架;第二通信模块与第二存储模块、M个机器人节点的第一通信模块相连,同时与M个机器人节点进行通信;
第二步,在Gazebo仿真环境中构建多种仿真搜救场景:
2.1在任意一台电脑上运行Gazebo仿真环境,并在Gazebo仿真环境中,仿照第一步构建的多机器人系统中M个机器人节点的实际结构和尺寸,构建对应的M个机器人节点仿真模型;
2.2在Gazebo仿真环境中,对搜救场景可能出现的各个要素以相同比例进行仿真建模,得到各种场景要素仿真模型;
2.3随机选取以上设计的机器人节点仿真模型和场景要素仿真模型的种类、数目和初始位置坐标,形成N个搜救任务场景,N为正整数,用来模拟在N次灾难后搜救的现场条件;
2.4设计搜救任务完成度评价指标,搜救任务完成度评价指标的设定原则是对促进完成任务目标的行为进行加分,对干扰任务完成的行为进行扣分;
第三步,让M个机器人节点仿真模型在N个仿真搜救场景中进行预训练,使机器人节点掌握具有泛化性的基本协同搜救策略;M台机器人节点仿真模型并行执行以下步骤,机器人节点仿真模型m的执行过程如下,1≤m≤M:
3.1机器人节点仿真模型m的计算模块进行初始化,即计算模块中的六个神经网络对参数进行初始化,参数包括每个神经网络内部每层之间的权重矩阵和偏置向量,按照期望为0、方差为2的正态分布随机生成每个神经网络内部每层之间的权重矩阵和偏置向量中的每个数字;M个机器人节点仿真模型的初始化过程相互独立,机器人节点仿真模型m和机器人节点仿真模型mm选取的参数可以相同也可以不同,1≤mm≤M且mm≠m;
3.2初始化循环变量n=1;
3.3在Gazebo仿真环境中从N个搜救任务场景选取第n个搜救任务场景,命名为仿真搜救场景;
3.4初始化已经探索的轮数k=0,并设定在仿真搜救场景中最大探索轮数KK为正整数;
3.5在仿真搜救场景中随机设置机器人节点仿真模型m和多个目标点的初始位置;
3.6初始化机器人节点仿真模型m在第k轮探索中已经完成的行动步数i=0,并设定第k轮探索中机器人节点仿真模型m可以执行的行动步数最大值I,I为正整数;
3.7机器人节点仿真模型m的计算模块从第一存储模块获得搜救场景的当前状态si,输入到Actor结构策略网络μ中,将μ的输出,即行动指令ai发送给运动模块和第一存储模块;运动模块执行动作ai;
3.8 Gazebo仿真环境按照搜救任务完成度评价指标,自动计算ai当前的搜救任完成度评价得分ri,并发送到机器人节点仿真模型m的第一存储模块;
3.9 ai的执行导致搜救场景状态发生变化,机器人节点仿真模型m的探测模块观测到搜救场景状态si+1,将si+1发送给第一存储模块;
3.10机器人节点仿真模型m的第一存储模块整合信息si、si+1、ai、ri,得到一组轨迹信息(si,ai,ri,si+1),存入到第一存储模块的元经验回放池;
3.11机器人节点仿真模型m的计算模块判定元经验回放池是否已有P条信息,若已有P条信息,则计算模块从元经验回放池随机抽取P条轨迹信息,并执行步骤3.14,P为正整数;否则,令i=i+1,转步骤3.7;
3.12机器人节点仿真模型m的计算模块按照抽取的先后顺序对P条轨迹信息进行编号1~P,同时初始化序号值np=0;
3.13机器人节点仿真模型m的计算模块从序号np开始顺序选取前p条轨迹信息,并将np更新为选取轨迹信息中最后一条的序号,p为小于等于P的正整数;
3.14机器人节点仿真模型m的计算模块采用梯度下降法最小化如公式(1)所示的损失函数L,得到新的评价网络参数,实现评价网络优化:
其中,Q′是Critic结构目标网络,Q是Critic结构评价网络,μ′是Actor结构目标网络,μ′(si+1)表示将si+1输入到μ′中得到的行动指令,Q′(si+1,μ′(si+1))表示将状态si+1和行动指令μ′(si+1)输入到Q′得到的得分,α是0~1的常数,作为权重,Q(si,ai)表示将状态si和行动ai输入到Q中得到的得分,(ri+αQ′(si+1,μ′(si+1))-Q(si,ai))是对三项得分进行加权计算;
3.15机器人节点仿真模型m的计算模块根据p条轨迹信息,通过梯度下降法,使得机器人节点仿真模型m表现评价函数Jθ(μ)值增大;在增大评价函数Jθ(μ)值的过程中,Actor结构策略网络参数得到更新,从而实现对Actor结构策略网络优化:
其中,ρi(si)表示在第i步时,计算模块根据探测模块观测到的搜救场景状态si,采取不同行动的概率分布,这个概率分布由Actor结构策略网络确定;
3.16判断np+p>P是否满足,若满足,执行步骤3.17;否则,转步骤3.13;
3.17机器人节点仿真模型m的计算模块按照公式(3)更新Critic结构元评价网络参数、按照公式(4)更新Actor结构元策略网络参数、按照公式(5)更新Critic结构目标网络参数、按照公式(6)更新Actor结构目标网络参数:
其中,是Critic结构元评价网络在第k轮第i步时的参数、是Critic结构评价网络在第k轮第i步时的参数、是Critic结构目标网络在第k轮第i步时的参数、是Actor结构元策略网络在第k轮第i步时的参数、是Actor结构策略网络在第k轮第i步时的参数、是Actor结构目标网络在第k轮第i步时的参数,τ1、τ2、τ3、τ4是取值在0~1的常数;
3.18令i=i+1,若i等于设定的每轮最大步数I,则执行步骤3.19;否则执行步骤3.7;
3.19令k=k+1,若k等于设定的最大执行轮数K,则执行步骤3.20;否则执行步骤3.5;
3.20令n=n+1,若n等于N,执行步骤3.22;否则,执行步骤3.21;
3.21机器人节点仿真模型m的计算模块保留Actor结构元策略网络、Critic结构元评价网络中的所有参数;同时机器人节点仿真模型m的计算模块清空Actor结构策略网络、Actor结构目标网络、Critic结构评价网络、Critic结构目标网络的所有参数并按照期望为0、方差为2的正态分布随机赋予初始值;清空第一存储模块的元经验回放池,转步骤3.4;
3.22计算模块将Actor结构元策略网络、Critic结构元评价网络的网络参数共同保存在一个.data格式文件;M个机器人节点仿真模型并行执行完第三步,得到M个.data格式文件,其中记录的M个Actor结构元策略网络参数,即为M个机器人节点的基本行动策略,这些基本行动策略共同组成了基本多机器人协同搜救策略;
第四步,M个机器人节点仿真模型将记录基本多机器人协同搜救策略的.data格式文件上传到云端服务器节点,即将第三步得到M个基本多机器人协同搜救策略保存在云端服务器节点,M台机器人节点仿真模型并行执行以下步骤,机器人节点仿真模型m的具体步骤如下:
4.1机器人节点仿真模型m的计算模块将.data格式的文件发送到第一通信模块;
4.2机器人节点仿真模型m的第一通信模块将.data格式文件发送到云端服务器节点的第二通信模块;
4.3第二通信模块将收到.data文件保存在第二存储模块;
第五步,将第一步构建的多机器人系统设置在需要开展搜救任务的地点,对基本多机器人协同搜救策略进行优化,得到M个机器人节点的Actor结构策略网络参数,共同构成多机器人自主协同搜救策略;M台机器人节点并行执行以下步骤,机器人节点m的具体步骤如下:
5.1机器人节点m的第一通信模块向云端服务器节点的第二通信模块发送基本多机器人协同搜救策略下载请求;
5.2第二通信模块从第二存储模块读取.data格式文件,并发送给第一通信模块;
5.3机器人节点m的第一通信模块将.data格式文件发送给机器人节点m的计算模块;
5.4机器人节点m的计算模块通过TensorFlow深度学习框架加载.data格式文件中的信息,将.data格式文件中保存的Actor结构元策略网络参数赋值给机器人节点m的Actor结构策略网络,将.data格式文件中保存的Critic结构元评价网络参数赋值给机器人节点m的Critic结构评价网络;
5.5对机器人节点m的Actor结构目标网络和Critic结构目标网络的参数进行初始化,参数包括神经网络每个神经网络内部每层之间的权重矩阵和偏置向量,其中的每一维数字按照期望为0、方差为2的正态分布随机选取;M个机器人节点的初始化过程相互独立,机器人节点m和机器人节点mm选取的参数可以相同也可以不同,1≤mm≤M且mm≠m;
5.6初始化机器人节点m的第一存储模块中的经验回放池为空;
5.7初始化机器人节点m已经完成的行动步数i=0,并设定机器人节点m可以执行的行动步数最大值I′,I′为正整数;
5.8机器人节点m的计算模块从第一存储模块获得搜救场景的当前状态si,输入到机器人节点m的Actor结构策略网络μ中,将μ的输出,即行动指令ai发送给运动模块和第一存储模块;运动模块执行动作ai;
5.9在机器人节点m的运动模块执行行为ai后,机器人节点m根据步骤2.4设计的评价指标,得到当前搜救任务完成度评分ri,并将ri发送到机器人节点的第一存储模块;
5.10 ai的执行导致搜救场景状态发生变化,机器人节点m的探测模块观测到新的搜救场景环境状态si+1,并将si+1发送到第一存储模块;
5.11机器人节点m的第一存储模块将接收的si,ai,ri,si+1整合成一组轨迹信息(si,ai,ri,si+1),存入经验回放池;
5.12若机器人节点m的第一存储模块的经验回放池已经有R条信息,则计算模块从经验回放池中随机抽取R条轨迹信息,转步骤5.13;否则,令i=i+1,转步骤5.8;R为正整数;
5.13机器人节点m的计算模块读取R条轨迹信息,采用梯度下降法最小化如公式(1)所示的损失函数L,以更新Critic结构评价网络参数,实现对评价网络优化;
5.14计算模块根据当前读取的R条轨迹信息,通过梯度下降法,使得如公式(2)所示的机器人节点m表现评价函数Jθ(μ)值增大,以更新Actor结构策略网络参数,实现对策略网络的优化;
5.15计算模块根据当前读取的R条轨迹信息,按照公式(5)更新Critic结构目标网络参数、按照公式(6)更新Actor结构目标网络参数;
5.16令i=i+1,若i达到最大步骤数I′,表示搜救策略优化完毕,转第六步;否则,转步骤5.8;
第六步,将M个机器人节点放置在第五步的搜救场景中;
第七步,多机器人系统根据优化后的搜救策略,在开放场景下协同完成搜救任务,M台机器人节点并行执行以下步骤,机器人节点m的具体步骤如下:
7.1根据搜救任务要求,设置多机器人系统需要搜救多个目标点,将所有目标点的坐标存放在列表L中,并发送到机器人节点的第一通信模块中,第一通信模块将L转发到计算模块中,机器人节点m从L中选择前往的目标点;
7.2初始化i=0;
7.3机器人节点m的探测模块探测搜救场景状态si,发送到第一存储模块,第一存储模块将si发送到计算模块;
7.4机器人节点m的计算模块的Actor结构策略网络将二元组(si,L中的目标点位置)作为策略网络的输入,得到策略网络的输出ai;
7.5机器人节点m的计算模块将ai发送到运动模块;
7.6机器人节点m的运动模块执行动作ai;
7.7若机器人节点m达到目标点附近d米以内,d为正整数,则从列表L中删除d米内的目标点,执行步骤7.8;否则,令i=i+1,执行步骤7.3;
7.8机器人节点m判断L中是否还存有目标点信息,若有,执行步骤7.2;否则,执行第八步;
第八步,结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910883109.7/1.html,转载请声明来源钻瓜专利网。