CN111432015B - 一种面向动态噪声环境的全覆盖任务分配方法 - Google Patents
一种面向动态噪声环境的全覆盖任务分配方法 Download PDFInfo
- Publication number
- CN111432015B CN111432015B CN202010241918.0A CN202010241918A CN111432015B CN 111432015 B CN111432015 B CN 111432015B CN 202010241918 A CN202010241918 A CN 202010241918A CN 111432015 B CN111432015 B CN 111432015B
- Authority
- CN
- China
- Prior art keywords
- robot
- module
- node
- estimation module
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Feedback Control In General (AREA)
Abstract
本发明公开了一种面向动态噪声环境的全覆盖任务分配方法。先构建由机器人节点和中心控制节点构成的多机器人环境;机器人节点装有感知信息获取模块、输入状态估值模块、位置关系判定模块、交互权重估计模块和动作估计模块;中心控制节点装有环境状态监测模块、经验采集模块和网络更新模块;感知信息获取模块获取局部视图,输入状态估值模块得到输入状态估值向量和编号独热编码向量,位置关系判定模块计算邻接特征矩阵集合,交互权重估值模块计算邻接加权向量,动作估计模块挑选估值最大动作作为决策;中心控制节点采用强化学习方法对各模块中网络进行优化;本发明边执行边优化,不但任务分配准确高效,且机器人下次执行任务时间更短。
Description
技术领域
本发明涉及智能机器人系统领域和多智能体强化学习技术,具体涉及一种基于多智能体强化学习的多机器人全覆盖任务分配方法,可用于有噪声存在的动态环境。
背景技术
移动机器人由于具有可移动性,可以代替人到各种复杂或危险的环境执行探险、探测和操作等任务。移动机器人经过多年的研究与发展,已经逐步走向实用化,在制造业、物流业、服务业等传统领域,已经有不少使用移动机器人提高生产效率或者替代人工作业的实例。而在一些对国家经济、社会、国防等领域具有重大战略意义的项目中,移动机器人的需求也日益明显。随着人类活动范围的不断扩展,移动机器人在星球探测、海洋开发、军事反恐、灾难救助、危险品处理等领域逐渐发挥出巨大的作用,并显现出广泛的应用前景,而这些领域都存在着很大程度的不确定性,有的甚至是完全未知的新环境,探索周围环境成为移动机器人的基本任务,机器人若要在一个不确定、非结构化的环境内完成复杂任务,关键是感知周围环境并创建地图,这也是完成其他任务的基础。实际上,机器人经常在危险环境下作业,如在坍塌的建筑物内进行搜救等,因此研究未知环境中移动机器人的探索问题,对提高移动机器人的实用性至关重要,并有着广泛的经济和社会价值。
在未知环境中,全覆盖任务分配往往要求机器人在较短时间内完成对未知环境全覆盖的任务分配,相比于单机器人而言,多机器人协作探索具有更加高效、可靠和鲁棒的优势,因此受到了移动机器人领域的广泛关注。
多机器人全覆盖任务分配面临的主要问题包括:1)如何有效地协调多机器人的全覆盖任务分配行为。如果缺少协调,多个机器人可能跟踪相同的路径探索环境,导致与单机器人类似的探索结果,因此需要为多个机器人选择不同的运动方式,使它们能够探索环境的不同区域,实现分布式探索。2)在执行全覆盖任务分配任务的时候,环境中往往会存在很多噪声干扰,比如恶劣的环境条件可能会导致单个机器人的环境感知信息有误,或者黑客可能会控制某些机器人使它们的历史轨迹记录信息有误。在这种强噪声环境下,如何使得机器人保持协同,高效率地完成全覆盖任务分配是一个丞待解决的问题。
现有的多机器人全覆盖任务分配方法大多基于传统事先“预设”的协同方法。比如,最近边界点方法是基于贪心技术,即每个机器人都选择到最近边界点的最短路径;基于协同边界点的方法使用简单的智能体边界分配算法来实现协同。简而言之,每个机器人为自己和附近的队友确定边界点的收益值,然后迭代地计算分配方案,从而最大化联合收益;基于市场的方法要求机器人对探索的子任务进行投标,出价通常基于预期信息增益和到达目标点的花费值。此类解决方案的有效性已经得到实践检验,但其执行过程基于对目标任务、环境等的可预期性和不变假设性,需要事先获得任务和环境的全面、具体的信息,相应系统仅限于执行那些专门为其设计的任务,无法适应超出程序设计的情况。在真实环境中,往往不能提前预知环境可能会发生的各种变化以及非预期因素,事先“预设”的协同方法将很难应对,这将会限制多机器人系统适应动态变化环境的能力和应用到现实场景中的潜能。
强化学习作为机器学习的方法之一,又称再励学习、增强学习,来源于生物学中的条件反射理论,其基本思想是对所希望的结果予以奖励,对不希望的结果予以惩罚,逐渐形成一种趋向于好结果的条件反射。智能体在完成某项任务时,首先通过动作A与周围环境进行交互,在动作A和环境的作用下,智能体会产生新的状态S,同时环境会给出一个奖惩信息R,即如果智能体在状态S采取动作A符合设定的奖励情况,则会收到正信号奖励;反之则收到负信号惩罚。如此循环下去,智能体与环境不断地交互从而产生很多数据。强化学习算法利用产生的数据修改自身的动作策略,再与环境交互,产生新的数据,进一步改善自身行为,经过数次迭代学习后,智能体能够学到完成相应任务的最优动作,也就是最优策略。正是由于强化学习算法所具有的简单、灵活的特性,使得强化学习算法符合人们对多智能体策略学习算法的各种需求,进而在多智能体领域有着广阔的前景,多智能体强化学习应运而生。多智能体强化学习已被成功应用于计算机技术、移动通信技术、自动化技术等领域。每个具有强化学习能力的智能体能够在训练中学会如何与动态变化的环境进行交互,观察环境的状态并采取行动,使得所在环境到达一个新的状态,同时智能体会收到一个量化的反馈值,以使得智能体能够不断适应有其他智能体存在的新的环境,学会如何在动态开放环境中做出决策。多个这样彼此相互影响相互适应的智能体,通过强化学习的方法学习策略,以达到整体的期望目标。
现有的多智能体强化学习方法直接应用到多机器人全覆盖任务分配场景也是有一定的不足,因为在分布式多机器人全覆盖任务分配问题中,每个机器人需要记录自己的历史轨迹并告知其他队友以避免重复区域探索。这就需要机器人学会关注那些虽然目前距离相对较远,但是历史轨迹在机器人当前位置周围的机器人传递的消息,这需要一个准确的衡量每一对机器人之间交互权重的注意力机制,而现有的多智能体强化学习算法大多只能实现近距离的消息关注权重计算,无法对历史轨迹告知问题和局部目标区域冲突问题做出平衡。比如,如果机器人1和机器人3由于距离比较近,存在潜在的目标冲突问题应该紧密交互;同样地,机器人1因即将要探索机器人0的已探索区域,而机器人0的历史轨迹需要通过消息传递的形式才能告知机器人1,虽然二者此时距离较远,但是二者也应紧密交互以避免重复探索,而现有的多智能体强化学习算法很难平衡这两部分消息的权重。因此,如何能够将多智能体强化学习方法应用于多机器人全覆盖任务分配问题,且能够有效应对环境的动态变化,同时能够应对环境中的噪声,是目前智能机器人系统领域技术人员面临的一个技术难题。
发明内容
本发明要解决的技术问题是提供一种基于多智能体强化学习的多机器人动态噪声环境全覆盖任务分配方法,该方法利用边训练边学习的方法让多机器人在执行对未知环境的全覆盖分配任务的同时优化多机器人的交互及行动策略,应对环境中存在的噪声及随机分布的动态障碍达到指定的环境覆盖率,进而掌握协同策略,无需事先获得任务和环境的全面、具体的信息。本发明提出的多头注意力机制可以帮助机器人在通信时选择正确且对自己有价值的消息,减小对噪声信息和对自己无用信息的关注权重,进而正确地完成状态价值估计过程,以有效应对动态和噪声环境的干扰。本发明的技术方案是:首先将地图离散化为网格信息,每个网格被设置为一个网格点,每个机器人配备定位装置和通信装置,机器人之间可以互相通信以获取机器人编号信息以及局部环境感知信息(即当前局部视图)。机器人通过感知信息获取模块在获取当前局部视图后,将当前局部视图与历史坐标集合发送至输入状态估值模块,输入状态估值模块得到输入状态估值向量和编号独热编码向量并将其发送给位置关系判定模块,位置关系判定模块接收来自其余机器人的输入状态估值向量和编号独热编码向量计算出邻接特征矩阵集合,然后这些信息经过交互权重估值模块的处理后得到邻接加权向量,动作估计模块对邻接加权向量和输入状态估值向量进行处理,得到当前状态对应的动作概率分布,进而挑选估值最大动作作为决策。当到达指定探索时间后,中心控制节点根据设定的奖惩函数使用强化学习方法对机器人的行为及通信策略(即交互权重估计模块对邻接特征矩阵集合的注意力分配权重)进行优化,供机器人后续执行。本发明采用边执行边优化的方法,在每一次执行的过程中由中心控制节点记录地图各个网格是否已被探索,且存储所有机器人的状态转移信息,进而在执行周期结束的时候通过强化学习方法优化各个机器人的行为策略参数,使得机器人在完成下一次执行任务时覆盖全部地图的时间更短。
本发明包括以下步骤:
第一步,构建多机器人环境,它由N个机器人节点和中心控制节点构成,N为正整数,N个机器人节点的工作方式一致。机器人节点是可以运行软件程序的异构机器人硬件设备,如无人车、人形机器人、无人机等。中心控制节点是具有良好计算能力的资源可控的计算设备,可以运行计算密集型或者知识密集型的机器人应用,可以运行深度学习模型。中心控制节点监控地图状态,为每个机器人更新行为策略参数。多个机器人节点和中心控制节点通过网络设备互联。
机器人节点i(1≤i≤N)除了装有操作系统(如Ubuntu16.04)、深度学习框架(如Pytorch0.3.0.post4)外,还装有感知信息获取模块、输入状态估值模块、位置关系判定模块、交互权重估计模块和动作估计模块。
中心控制节点除了装有操作系统(如Ubuntu16.04)以及深度学习框架(如Pytorch0.3.0.post4)外,还装有环境状态监测模块、经验采集模块和网络更新模块。
定义离散化地图中的每个网格为网格点,使用占用网格法来表示地图,根据每个网格上的不同情况,将网格的当前状态分为障碍、已探索和未探索三种地图状态,如公式1所示:
P(x,y)为在离散化地图上横坐标为x,纵坐标为y位置的当前地图状态。地图状态记录在地图状态数组(H1×W1的二维数组,H1和W1均为正整数)里,地图状态数组的每个元素表示每个网格点的状态。
定义机器人节点i的局部环境感知信息为当前状态oi,oi描述了以机器人节点i为中心,以机器人节点i通信范围为半径的正方形网格区域内(网络区域不是圆形,因为地图被离散化为网格,是正方形,这里的半径意指正方形边长的一半),是否包含障碍物或其余的机器人;定义机器人节点i前往的下一网格点方向(如向上、向下、向左、向右)的移动为动作ai,到达的下一个状态为o′i;定义机器人节点从到达当前网格点至到达下一网格点的过程中,与障碍物或其余机器人节点的碰撞与否以及下一节点是否为机器人群体已探索过的区域,为当前状态下选择该动作后获得的奖惩信息ri;定义机器人节点i从一个状态开始选择一个动作后直至全覆盖任务结束(即当前时刻到达预设的全覆盖任务周期)所得到的奖惩信息之和为该状态下选择该动作后获得的累积回报Ri;将机器人节点i将自己的编号i以及Ki个邻居的编号转化为独热编码向量,得到(Ki+1)×N维的矩阵,定义该矩阵为邻接矩阵Ci,N为机器人的数目,N为正整数,Ki为机器人节点i的邻居机器人的个数,0≤Ki≤N-1。邻接矩阵Ci定义为的第一行代表机器人节点i的编号独热编码,其余Ki行代表Ki个邻居机器人的编号独热编码,由上到下的顺序为机器人编号由小到大的顺序,代表机器人的数目。因此邻接矩阵Ci与传统意义上的“邻接矩阵”含义不同,每个机器人的邻接矩阵描述了其通信范围内的邻居机器人的编号信息,用于判断邻居机器人是谁。
中心控制节点的经验采集模块中有一个经验池,经验池存储各个机器人的经验五元组,经验五元组为[当前状态,动作,奖惩信息,下一状态,邻接矩阵]。
定义机器人节点i的动作估计模块估计机器人节点i在当前环境状态(简称状态)oi,采取动作ai能够得到的累积回报值为Q(oi,ai;θ3),θ3为动作估计模块的参数。通过计算当前状态oi对应的所有动作的累积回报值,并挑选出使得累积回报值最大的动作a,即maxaQ(oi,ai;θ3),得到当前状态应该采取的动作a。
下一状态就是从当前状态采取了动作后到达的状态。例如当前状态包含所有机器人的位置信息以及距离其余机器人的相对位置信息,那么当机器人采取行动后,新的位置信息以及新的距离其余机器人的相对位置信息就是下一状态。
机器人节点i的感知信息获取模块与机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块和经验采集模块相连,用于从环境获取当前局部视图,记录机器人节点i的历史轨迹信息以避免重复探索。感知信息获取模块从环境获取机器人节点i的实时位置(xi,yi),(xi,yi)为二维数组,代表实时位置在离散化地图中的坐标值,将实时位置(xi,yi)存储到机器人节点i的历史坐标集合li中;使用机器人节点i的传感器获取机器人节点i的当前环境状态oi(当前环境状态oi记录了当前环境状态内的其他机器人节点的相对位置,当前环境状态内的其他机器人节点指机器人节点i视觉范围内的机器人),将oi和li发送给机器人节点i的输入状态估值模块。机器人节点i执行动作后,感知信息获取模块根据传感器获取机器人节点i的下一时刻环境状态o′i,并将oi和o′i发送给环境状态监测模块和经验采集模块。
机器人节点i的输入状态估值模块是包含一个一层的多层感知机的软件模块,与机器人节点i的感知信息获取模块、机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的交互权重估值模块、Ki(Ki为机器人节点i的邻居机器人的个数,Ki为小于N的正整数)个邻居机器人节点的位置关系判定模块相连,它从机器人节点i的感知信息获取模块获取oi和li,对oi和li进行拼接后输入多层感知机,得到输入状态估值向量hi(hi是128维的向量,每一维的数值范围是0~1(指0到1之间的实数)。输入状态估值模块创建机器人节点i的编号独热编码向量,将hi和编号独热编码向量发送给机器人节点i的位置关系判定模块和Ki个邻居机器人节点的位置关系判定模块;将hi发送给机器人节点i的动作估计模块。机器人节点i的输入状态估值模块从中心控制节点的网络更新模块接收更新参数,用于更新输入状态估值模块中多层感知机的网络参数θ1。
多层感知机(MLP,MultiLayerPerception)是一种前馈人工神经网络模型,其为前向结构形式,由输入层、隐藏层、输出层构成,多层感知机将一个a维的向量通过全连接网络转化为一个b维的向量。多层感知机可以抽象成一张有向图,该图由多个层次分明的节点层组成,每层节点全连接到下一层节点,不与不相邻的层的节点连接。多层感知机层与层之间是全连接的,即上一层的任何一个节点都与下一层的所有节点连接。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。输入层的节点个数等于输入向量的维数,假设隐藏层的输入为X,隐藏层的输出为f(W1X+b1),其中W1为隐藏层的连接系数,b1是偏置,函数f是激活函数,比如sigmoid函数或tanh函数。具体见(Pal S K,Mitra S.Multilayerperceptron,fuzzy sets,and classification[J].IEEE Transactions on neuralnetworks,1992,3(5):683-697.多层感知机,模糊集和分类[J].IEEE神经网络学报,1992,3(5):683-697.)。一层的多层感知机包括了输入层、隐藏层和输出层,两层的多层感知机包括了输入层、两层隐藏层和输出层。
独热编码(one-hot),又称为一位有效编码(每一位0或1,代表每一个机器人的状态),主要是采用N位状态寄存器对N台机器人节点的状态进行编码,每个状态都有其独立的寄存位,且在任意时候只有一位有效。独热编码是分类变量(标签值,比如在动作空间为4的全覆盖任务分配问题中,分类变量就是“向上”、“向下”、“向左”和“向右”)作为二进制向量的表示。这首先要求将分类变量映射到整数值(比如“向上”映射到1、“向下”映射到2、“向左”映射到3、“向右”映射到4),然后每个整数值所在索引被标记为1(比如1就是1000、2就是0100、3就是0010、4就是0001),其余位置均被标记为0。
机器人节点i的位置关系判定模块与机器人节点i的输入状态估值模块、机器人节点i的交互权重估值模块和Ki个邻居机器人节点的输入状态估值模块相连,它从机器人节点i的输入状态估值模块接收hi和编号独热编码向量,从邻居机器人(Ki为机器人节点i的邻居机器人的个数,i不属于)的输入状态估值模块接收Ki个输入状态估值向量(用表示)和Ki个编号独热编码向量(用表示),将hi和整合成N×H维的特征矩阵Fi(机器人节点i视觉范围外的机器人输入状态估值向量直接用单位向量代替,H代表输入状态估值向量的维度,H为128)。机器人节点i的位置关系判定模块利用编号独热编码向量和建立(Ki+1)×N维的邻接矩阵Ci,计算Ci×Fi,得到邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi发送给机器人节点i的交互权重估值模块和中心控制节点的经验采集模块。
单位向量的维度是输入状态估值向量的维度,除第一位为1之外,向量的其余位置均为0。
机器人节点i的交互权重估值模块与机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的输入状态估值模块相连,交互权重估值模块是包含M(1≤M≤4)个注意力头的软件模块,注意力头是计算两个机器人的输入状态估值向量之间匹配程度的软件子模块。每个注意力头由查询转换子模块、键值转换子模块和价值转换子模块组成,查询转换子模块、键值转换子模块和价值转换子模块均是包含一层的多层感知机的软件模块。
注意力头是一种注意力模型,注意力模型可以宏观上理解为一个查询(Query)到一系列(键Key-值Value)对的映射。将Source(源)中的构成元素想象成由一系列的<Key,Value>数据对构成,此时给定Target(目标)中的某个元素Query(查询),通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数(即Value占整个邻接加权向量的百分比),通过查询转换子模块、键值转换子模块和价值转换子模块中神经网络归一化层softmax归一化后,对权重和相应Value进行加权求和,得到最终的来自邻居机器人的有价值消息。所以本质上注意力头的功能是根据Query和Key计算对应Query的Value的权重系数,然后对Source中的Value值进行加权求和,得到邻接加权向量。Query指机器人节点i应该关注的邻居机器人消息的权重查询;Key指交互权重计算时的键值;Value值即价值指每个机器人局部视图中信息的有效信息;Value的权重系数指Value占整个邻接加权向量的百分比;Source指邻居机器人集合。
邻接加权向量指所有邻居机器人Value的权重系数与Value值的乘积之和,Value值(即价值)是每个机器人局部视图中信息的有效信息。
机器人节点i的交互权重估值模块从机器人节点i的位置关系判定模块接收机器人节点i的邻接特征矩阵集合Gi,将邻接特征矩阵集合等分为M份,将M份邻接特征矩阵子集合分别分配给M个注意力头并行进行权重估值得到针对机器人i的来自Ki个邻居机器人的邻接加权向量Qi。机器人节点i的交互权重估值模块从中心控制节点的网络更新模块接收更新参数,用于更新查询转换子模块、键值转换子模块和价值转换子模块中多层感知机的网络参数。
机器人节点i的动作估计模块与机器人节点i的交互权重估值模块、机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块、经验采集模块和网络更新模块相连,从机器人节点i的交互权重估计模块接收邻接加权向量Qi,从机器人节点i的输入状态估值模块接收输入状态估值向量hi,从中心控制节点的网络更新模块接收动作估计模块的参数,从中心控制节点的环境状态监测模块接收机器人步数(N个机器人同时动作,步数是相等的)。动作估计模块是包括一个两层的多层感知机的软件模块,主要用于计算累积回报值。该两层的多层感知机称为状态估计神经网络,状态估计神经网络将mi和hi转化为累积回报值Q(oi,ai;θ3)(即在状态oi下执行动作ai的累积回报值),θ3是为动作估计模块的网络参数。机器人节点i的动作估计模块以∈概率(∈为不按当前策略采取动作,随机采样新动作的概率,0≤∈≤0.1。)随机挑选的动作a或者以(1-∈)的概率选择累积回报值最大的动作a(a=maxaQ(oi,ai;θ3))。动作a的方向代表分配给机器人的目标探索区域,机器人之间的任务分配过程体现在通信策略当中,即交互权重估计模块对邻接特征矩阵集合的注意力分配权重。机器人通过自己的输入状态估值向量和邻接特征矩阵得到动作方向,即完成了目标探索任务的分配过程。动作估计模块根据∈的概率随机选取动作,可保证尽可能多地估计到机器人i可能经历的完整状态。机器人节点i的动作估计模块从中心控制节点的网络更新模块接收更新参数,用于更新动作估计模块中的网络参数。
中心控制节点的环境状态监测模块与机器人节点i的动作估计模块、机器人节点i的感知信息获取模块和中心控制节点的经验采集模块相连,从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1,…,oi,…,oN(简写为o1…N)和下一时刻状态o′1,…,o′i,…,o′N(简写为o′1…N),根据o1…N更新地图状态,即记录地图哪些位置已经被探索,并记录N个机器人每一步来自环境状态检测模块的决策奖惩信息r1,…,ri,…,rN,(简写为r1…N),将奖惩信息r1…N发送给经验采集模块。记录机器人步数,将机器人步数发送给机器人节点i的动作估计模块。
经验采集模块与N个机器人节点的动作估计模块、N个机器人节点的感知信息获取模块、N个机器人节点的位置关系判定模块、中心控制节点的环境状态监测模块、中心控制节点的网络更新模块相连,从N个机器人节点的动作估计模块接收N个机器人节点分别采取的动作a1…N、从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1…N和下一时刻状态o′1…N、从N个机器人节点的位置关系判定模块分别接收N个机器人节点的邻接特征矩阵集合G1,…,Gi,…,GN(简写为G1…N)、从环境状态监测模块接收N个机器人节点获得的奖惩信息r1…N,将经验五元组[o1…N,a1…N,r1…N,o′1…N,G1…N]存入经验池,以供N个机器人节点的输入状态估值模块、交互权重估值模块和动作估计模块参数更新时用。经验池的容量大小通常设置为100000个经验五元组,当经验池填满后,新加入的经验五元组将顶替经验池顶端的经验五元组。如果当前时刻到达了预设的网络更新周期,经验采集模块将经验池中的p个(p为2的整数次幂,优选1024)经验五元组一次发送给网络更新模块。
网络更新模块与机器人节点i的动作估计模块和中心控制节点的经验采集模块相连,从经验采集模块接收p个经验五元组。网络更新模块的主要功能包括:1)计算网络更新模块中的状态现实神经网络下一时刻状态及动作的累计回报值;2)运行反向传播算法更新动作估计模块、交互权重模块和输入状态估值模块的参数。
网络更新模块是一个包含一个2层的多层感知机的软件模块,该2层的多层感知机称为状态现实神经网络。网络更新模块功能是计算状态现实神经网络下一时刻状态及动作的累积回报值,更新状态现实神经网络的网络参数θ4;并采用反向传播算法更新动作估计模块、交互权重估计模块和输入状态估值模块的参数,将更新后的参数发送给相应模块;
反向传播算法(Goodfellow,Ian;Bengio,Yoshua;Courville,Aaron(2016)."6.5Back-Propagation and Other Differentiation Algorithms".Deep Learning.MITPress.pp.200–220.ISBN9780262035613.“6.5节反向传播和其他微分算法”书籍《深度学习》200-220页)的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入信息通过输入层经隐含层,逐层处理并传向输出层。如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯度,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。
第二步,对地图、经验池以及输入状态估值模块、交互权重估计模块、动作估计模块和网络更新模块的多层感知机参数进行初始化,方法是:
2.1初始化地图网格的当前状态,障碍位置标记为0,其余位置标记为未探索即-1;
2.2初始化经验池为空;
2.3初始化历史坐标集合为空;
2.4初始化机器人步数t=0,令全覆盖任务周期T1=40,N个机器人节点分别执行40次动作作为一个全覆盖任务周期T1。令网络更新周期T2=T1*1000,即当全覆盖任务执行1000次的倍数时,网络更新模块开始逐步更新动作估计模块、交互权重估计模块和状态估值模块中的多层感知机的参数。令策略优化周期T3=T1*50000,即当全覆盖任务执行50000次时,结束对N个机器人节点的输入状态估值模块、交互权重估计模块以及动作估计模块中的多层感知机的参数优化。
2.5将输入状态估值模块的多层感知机参数θ1、交互权重估值模块的多层感知机参数θ2、及动作估计模块的多层感知机参数θ3以及网络更新模块的多层感知机参数θ4初始化为0至1之间的随机数,交互权重估值模块中M个注意力头的θ2需分别初始化为不同的随机数。
2.6将N个机器人节点选择各个动作的概率均初始化为1/动作空间维度,动作空间维度指机器人所有可能执行的不同动作个数,例如4个动作初始化概率就是1/4,8个动作初始化概率就是1/8。
第三步,N个机器人节点的感知信息获取模块并行接收环境感知信息,输入状态估值模块、位置关系判定模块、交互权重估计模块、动作估计模块相互配合决策下一步的动作,N个机器人节点执行动作,N个机器人节点的决策过程完全相同,以机器人节点i为例来说明的决策过程是:
3.1机器人节点i的感知信息获取模块从环境获取机器人节点i的实时位置坐标(xi,yi),将(xi,yi)加入至历史坐标集合li;机器人节点i用传感器获取当前状态oi,将li和oi发送给输入状态估值模块。
3.2机器人节点i的输入状态估值模块从机器人节点i的感知信息获取模块接收li和oi,通过多层感知机得到输入状态估值向量hi;并根据机器人的数目N对编号i进行独热编码得到独热编码向量ei,将hi和ei发送给机器人i的位置关系判定模块和视觉范围内的邻居机器人节点的位置关系判定模块。方法是:
3.2.1机器人节点i的输入状态估值模块从机器人节点i的感知信息获取模块接收li和oi,将li拼接到oi的尾端,然后将拼接了li的oi输入到一层的多层感知机中,得到输入状态估值向量hi(计算过程见2016年6月12日的cnblog博客,讲解神经网络基础运算的《多层感知机及其BP算法》https://www.cnblogs.com/ooon/p/5577241.html)。
3.2.2机器人节点i的输入状态估值模块根据机器人的数目N对编号i进行独热编码得到独热编码向量ei。
3.3机器人节点i的位置关系判定模块从邻居机器人节点的输入状态估值模块接收输入状态估值向量和编号独热编码向量 从机器人节点i的输入状态估值模块接收hi和ei,将ei和经过进行转化,得到(Ki+1)×N维的邻接矩阵Ci,将hi和进行转化,得到N×H维的特征矩阵Fi。计算Ci×Fi,得到邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi发送给机器人节点i的交互权重估计模块和中心控制节点的经验采集模块。方法是:
3.3.3机器人节点i的位置关系判定模块将hi和进行转化,得到N×H维的特征矩阵集合Fi,转化方法是:Fi的第一行为hi,按 由小到大排序,分别作为Fi的行,Fi除第一行、第行以外的其它N-1-Ki行为其余视觉范围外机器人的输入状态估值向量,直接用视觉范围外机器人输入状态估值向量的单位向量按机器人的编号由小到大排序代替,H代表输入状态估值向量的维度;
3.3.4机器人i的位置关系判定模块计算Ci×Fi,得到邻接特征矩阵集合Gi,将Gi发送给交互权重估计模块和中心控制节点的经验采集模块。
3.4机器人节点i的交互权重估计模块从机器人节点i的位置关系判定模块接收机器人节点i的邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi交由M个注意力头并行进行权重估值,获得邻接加权向量Qi,将Qi发送给机器人节点i的动作估计模块。M个注意力头子模块并行进行权重估值的方法相同,第m个注意力头进行权重估值的方法是:
3.4.1第m个注意力头的查询转化子模块接收来自机器人节点i的位置关系判定模块的邻接特征矩阵,其中包含了hi,以及机器人节点i的所有邻居机器人节点的输入状态估值向量。查询转化子模块将机器人节点i的输入状态估值向量输入一层的多层感知机,通过一层的多层感知机转化为机器人i的查询向量
3.4.2初始化独热编码向量的当前维度v为1;
3.4.3第m个注意力头的键值转化子模块将邻居机器人节点jv的输入状态估值向量通过一层的多层感知机转化为机器人j的第m个注意力头的键值向量第m个注意力头的价值转化子模块将邻居机器人节点jv的输入状态估值向量通过一层的多层感知机转化为机器人j的第m个注意力头的价值向量jv属于
3.4.4令v=v+1,若v≤Ki,转步骤3.4.3;若v>Ki,转3.4.5;
3.4.6第m个注意力头计算邻居机器人j对于机器人i的有价值消息mij,
3.4.8此时M个注意力头分别计算出了机器人i和机器人j的有价值消息,机器人节点i的交互权重估值模块将有价值消息E1,…,Em,…,EM顺序拼接,如公式3所示:
Qi=σ(Concat[E1,…,Em,…,EM]) 公式3
得到融合了多类不同特征(因为每一个注意力头的参数都是不同的,所以每一个注意力头提取出的特征类型也是不同的,比如在输入状态估值向量中,既可以关注于机器人之间的位置关系特征,又可以关注于历史轨迹特征)的针对于机器人i的邻接加权向量Qi。
公式3中Concat代表拼接,σ(x)代表参数x的非线性激活函数。
3.4.9机器人节点i的交互权重估值模块将邻接加权向量Qi发送到机器人节点i的动作估计模块。
3.5机器人节点i的动作估计模块估算当前状态对应的动作,方法是:
3.5.1机器人节点i的动作估计模块将hi和Qi顺序拼接后输入到动作估计模块的两层的多层感知机中,计算选择不同动作ai对应的累积回报值Q(oi,ai;θ3)(计算过程见2016年6月12日的cnblog博客,讲解神经网络基础运算的《多层感知机及其BP算法》https://www.cnblogs.com/ooon/p/5577241.html);
3.5.2机器人节点i的动作估计模块从中心控制节点的环境状态监测模块接收机器人步数,判断当前机器人步数t是否大于T3,即N个机器人是否已执行完T3周期内的任务分配。如果t>T3,则执行步骤3.5.3;否则,机器人节点i生成一个随机数,如果随机数>∈,执行步骤3.5.3;否则,令ai为向上、向下、向左、向右中的任意一个,执行步骤3.6。
3.5.3取使得累积回报值最大的动作ai=maxaQ(Oi,ai;θ3),此动作代表机器人i通过与邻居机器人交互后,得到机器人i下一步的决策方向。如果将所有邻居机器人视为一个整体,此决策方向即代表机器人i被其邻居机器人整体分配的目标探索任务区域。
3.6机器人节点i执行动作ai,机器人节点i的坐标位置以及历史轨迹发生变化。
3.7机器人节点i的动作估计模块将采取的动作ai发送给中心控制节点的经验采集模块。
3.8感知信息获取模块获取机器人节点i此时的状态o′i,将oi和o′i发送给中心控制节点的环境状态监测模块。
第四步,环境状态监测模块根据N个机器人的当前位置信息更新地图状态,并将N个机器人的奖惩信息发送给经验采集模块。方法是:
4.1初始化节点编号变量i=1;
4.2环境状态监测模块从机器人节点i的感知信息获取模块接收当前状态oi和下一时刻状态o′i,从oi中获取机器人节点i当前坐标(xi,yi),更新地图网格状态,即标记(xi,yi)状态为已探索,值为1。
的目的是强制机器人i去探索新的区域并且避免与其余机器人或障碍物的碰撞。其中BbackrbacK+ctRcoll代表个人奖励,目的是让机器人i学会去探索新的区域并且避免碰撞。Bback是判断机器人是否此时探索的是整个群体已经探索过的区域的布尔向量,为1表示已探索过,为0表示未探索过;rback的值为-10,rback指机器人i当前步如果走的是已探索区域应该给予的惩罚值,一般为-10,用来惩罚机器人探索群体已经探索过的区域的行为。Ct代表机器人i与其余机器人或障碍物的碰撞次数。这里碰撞是指两个物体的位置重合。碰撞的惩罚值rcoll是-10。
Bfinal·issucc·rsucc+Bfinal·(1-issucc)·rfail代表平均全局奖励和惩罚,只在全覆盖任务的最后一步发挥作用,以引导机器人群体学会协同。每一全覆盖任务周期结束,判断此次全覆盖任务是否成功的标准取决于具体任务的难度。Bfinal是判断此时是否是全覆盖任务周期最后一步的布尔向量,为1表示是最后一步,为0表示不是最后一步。issucc是判断这一全覆盖任务周期是否成功的布尔向量,为1表示成功,为0表示不成功;成功即N个机器人是否完成了全覆盖任务,也就是说地图的所有格子状态是否均为已探索。rsucc为奖励值,一般设置为40,rfail为惩罚值,一般设置为-5。具体来讲,在最后一步,每个机器人会收到一个平均全局奖励,如果所有机器人整体的探索率达到了指定标准,那么每个机器人将会得到值为40的奖励rsucc。(即rsucc=40)否则,每个机器人将得到一个值为-5(设为固定值-5)的惩罚值rfail。
4.5令机器人步数t=t+1,环境状态监测模块将奖惩信息r1…N发送给经验采集模块,将机器人步数发送给所有机器人节点的动作估计模块。
第五步,经验采集模块接收N个机器人节点动作估计模块采取的动作a1…N、从环境状态监测模块接收的奖励值r1…N,从N个机器人节点感知信息获取模块接收当前时刻状态o1…N和下一时刻状态o′1…N,从N个机器人节点位置关系判定模块接收邻接特征矩阵集合G1…N。将五元组[o1…N,a1…N,r1…N,o′1…N,G1…N]存入经验池。
第六步,环境监测模块判断任务是否达到指定的全覆盖任务周期,即判断t’=t%T1是否为0,%为取余计算。如果t’不为0,则转第三步;如果为0,转第七步。
第七步,环境状态监测模块判断N个机器人节点是否达到了策略优化周期T3(即判断t>T3是否为真),如果为真,则中心控制节点停止对N个机器人节点的输入状态估值模块、交互权重估值模块和动作估计模块的参数进行优化;否则继续判断当前是否到达了指定的网络更新周期T2,如果是,网络更新模块逐步更新动作估计模块、交互权重估计模块和输入状态估值模块多层感知机的网络参数。方法是:
7.1环境状态监测模块获取当前步数t,如果t>T3,即到达策略优化周期,执行第八步;否则执行步骤7.2;
7.2环境状态监测模块进行判断,如果t”=t%T2≠0,即没有到达网络更新周期,转第三步;否则到达网络更新周期,从经验池中取出p个经验五元组,转7.3;
7.3网络更新模块从环境状态监测模块处获取p个经验五元组,从p个经验五元组中获得N个机器人在当前状态下采取的动作信息及到达的下一时刻状态信息,根据N个机器人的下一时刻状态o′i,挑选使得Q(o′i,a′i;θ4)值最大的动作a′i,即maxa′Q(o′i,a′i;θ4),Q(o′i,a′i;θ4)指在状态为o′i时采取动作a′i的估算值,描述了在状态为o′i时采取动作a′i的累积回报值,θ4为状态现实神经网络的参数。
7.4网络更新模块通过公式5所示的损失函数L(θ3)(损失函数即通过最小化所有经验五元组中“当前状态oi采取动作ai的估计累积回报值与真实累积回报值的差异”的平均值,来端到端地优化整个网络,使得动作估计模块可以真实预测出在状态oi采取动作ai的累积回报值,进而采取正确的动作的函数。),对动作估计模块的参数进行优化:
其中
yi=ri+γmaxa′Q(o′i,a′i;θ4)
7.5N个机器人的网络更新模块更新θ4,即令
θ4=τθ3+(1-τ)θ4 公式6
7.7网络更新模块将优化后的动作估计模块、交互权重估计模块和输入状态估值模块参数(即各机器人节点相应的θ3、θ2、θ1)分别发送给N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块,N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块接收到参数后,更新多层感知机的参数。
7.8转第三步。
第八步,此时t>T3,N个机器人已执行完T3周期内的任务分配,不再对输入状态估值模块、交互权重估计模块以及动作估计模块中多层感知机的参数优化。环境状态监测模块判断当前地图中的所有网格点是否已被覆盖完,如果已经覆盖完,则转第九步;否则转第三步,继续进行目标区域探索。
第九步,当前地图的全覆盖分配任务结束。
采用本发明可以达到如下的有益效果:
1.本发明由于第三步获得的是累积回报值最大的动作,使得机器人执行的动作是最适合当时环境状态,因此在有突发状况(环境中突然出现新的障碍)或强噪声状态下(机器人的环境感知信息存在噪声)本发明均能做到任务分配准确高效。
2.本发明第七步通过优化动作估计模块、交互权重估计模块和输入状态估值模块、网络更新模块的网络参数让多机器人在指定时间内执行对未知环境的全覆盖分配任务的同时优化多机器人的交互及行动策略,应对随机分布的动态障碍达到指定的环境覆盖率,进而掌握协同策略,无需事先获得任务和环境的全面、具体的信息,就可以让多机器人学会在执行全覆盖任务的时候应对环境的动态变化,自动根据环境的变化调整任务分配决策,得到针对变化后的环境的最优目标区域分配方式,高效率地完成全覆盖任务。
3.本发明交互权重估计模块采用多个注意力头并行估算机器人之间的交互权重,可以帮助机器人在通信时选择正确且对自己有价值的消息,减小对噪声信息和对自己无用信息的关注权重,进而正确地完成状态价值估计过程,以有效应对动态和噪声环境的干扰。
4.本发明在第四步设置奖惩函数,鼓励机器人在避障的同时探索新区域,同时限制多机器人系统在指定时间内达到的环境覆盖率,使得多机器人系统能够通过试错自主学会如何在有限的时间内完成对未知环境的全覆盖任务分配。
附图说明
图1是本发明第一步构建的多机器人环境逻辑结构图。
图2是本发明第一步构建的多机器人环境中机器人节点i和中心控制节点上实现任务分配的软件模块部署图。
图3是本发明整体流程图。
图4是图1所示多机器人环境3.5.3步执行完后获得的地图状态示意图。
图5是在图4中4个机器人完成动作后,下一任务执行周期开始时,环境中突然出现了新障碍的情况下的地图状态示意图最佳分配方案。
具体实施方式
以下以多机器人动态噪声环境救援探索为例说明本发明的具体实施方式。本发明中选取改装的轮式移动机器人Turtlebot作为执行者,机器人中装载Kinect传感器、激光测距传感器、定位装置,同时在底盘安装三个碰撞传感器。整个系统各部分通过局域网实现数据通信。
图3是本发明整体流程图。如图3所示,本发明包括以下步骤:
第一步,构建如图1所示的多机器人环境,它由N(例如实验时图1所示的多机器人环境中N=4)个机器人节点(轮式移动机器人Turtlebot)和一个中心控制节点(服务器)构成。N个机器人节点和中心控制节点通过网络设备互联,N个机器人节点的工作方式一致。轮式移动机器人Turtlebot装有操作系统Ubuntu16.04版本、深度学习框架Pytorch0.3.0.post4版本、感知信息获取模块(包括Kinect传感器、激光测距传感器、定位装置,同时在底盘安装三个碰撞传感器)、输入状态估值模块、位置关系判定模块、交互权重估计模块和动作估计模块。中心控制节点即服务器装有操作系统Ubuntu16.04版本、深度学习框架Pytorch0.3.0.post4版本、环境状态监测模块、经验采集模块和网络更新模块。多个机器人节点和中心控制节点通过网络设备互联。
如图2所示,机器人节点i的感知信息获取模块与机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块和经验采集模块相连,用于从环境获取当前局部视图,记录机器人节点i的历史轨迹信息以避免重复探索。感知信息获取模块从环境获取机器人节点i的实时位置(xi,yi),(xi,yi)为二维数组,代表实时位置在离散化地图中的坐标值,将实时位置(xi,yi)存储到机器人节点i的历史坐标集合li中;使用机器人节点i的传感器获取机器人节点i的当前环境状态oi(当前环境状态oi记录了当前环境状态内的其他机器人节点的相对位置,当前环境状态内的其他机器人节点指机器人节点i视觉范围内的机器人),将oi和li发送给机器人节点i的输入状态估值模块。机器人节点i执行动作后,感知信息获取模块根据传感器获取机器人节点i的下一时刻环境状态o′i,并将oi和o′i发送给环境状态监测模块和经验采集模块。
机器人节点i的输入状态估值模块是包含一个一层的多层感知机的软件模块,与机器人节点i的感知信息获取模块、机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的交互权重估值模块、Ki(Ki为机器人节点i的邻居机器人的个数,Ki为小于N的正整数)个邻居机器人节点的位置关系判定模块相连,它从机器人节点i的感知信息获取模块获取oi和li,对oi和li进行拼接后输入多层感知机,得到输入状态估值向量hi。输入状态估值模块创建机器人节点i的编号独热编码向量,将hi和编号独热编码向量发送给机器人节点i的位置关系判定模块和Ki个邻居机器人节点的位置关系判定模块;将hi发送给机器人节点i的动作估计模块。机器人节点i的输入状态估值模块从中心控制节点的网络更新模块接收更新参数,用于更新输入状态估值模块中多层感知机的网络参数θ1。
机器人节点i的位置关系判定模块与机器人节点i的输入状态估值模块、机器人节点i的交互权重估值模块和Ki个邻居机器人节点的输入状态估值模块相连,它从机器人节点i的输入状态估值模块接收hi和编号独热编码向量,从邻居机器人(Ki为机器人节点i的邻居机器人的个数,i不属于)的输入状态估值模块接收Ki个输入状态估值向量(用表示)和Ki个编号独热编码向量(用表示),将hi和整合成N×H维的特征矩阵Fi(机器人节点i视觉范围外的机器人输入状态估值向量直接用单位向量代替,H代表输入状态估值向量的维度,H为128)。机器人节点i的位置关系判定模块利用编号独热编码向量和建立(Ki+1)×N维的邻接矩阵Ci,计算Ci×Fi,得到邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi发送给机器人节点i的交互权重估值模块和中心控制节点的经验采集模块。
机器人节点i的交互权重估值模块与机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的输入状态估值模块相连,交互权重估值模块是包含M(1≤M≤4)个注意力头的软件模块。每个注意力头由查询转换子模块、键值转换子模块和价值转换子模块组成,查询转换子模块、键值转换子模块和价值转换子模块均是包含一层的多层感知机的软件模块。
机器人节点i的交互权重估值模块从机器人节点i的位置关系判定模块接收机器人节点i的邻接特征矩阵集合Gi,将邻接特征矩阵集合等分为M份,将M份邻接特征矩阵子集合分别分配给M个注意力头并行进行权重估值得到针对机器人i的来自Ki个邻居机器人的邻接加权向量Qi。机器人节点i的交互权重估值模块从中心控制节点的网络更新模块接收更新参数,用于更新查询转换子模块、键值转换子模块和价值转换子模块中多层感知机的网络参数。
机器人节点i的动作估计模块与机器人节点i的交互权重估值模块、机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块、经验采集模块和网络更新模块相连,从机器人节点i的交互权重估计模块接收邻接加权向量Qi,从机器人节点i的输入状态估值模块接收输入状态估值向量hi,从中心控制节点的网络更新模块接收动作估计模块的参数,从中心控制节点的环境状态监测模块接收机器人步数。动作估计模块是包括一个两层的多层感知机的软件模块,主要用于计算累积回报值。该两层的多层感知机称为状态估计神经网络,状态估计神经网络将mi和hi转化为累积回报值Q(oi,ai;θ3)(即在状态oi下执行动作ai的累积回报值),θ3是为动作估计模块的网络参数)。机器人节点i的动作估计模块以∈概率(∈为不按当前策略采取动作,随机采样新动作的概率,0≤∈≤0.1。)随机挑选的动作a或者以(1-∈)的概率选择累积回报值最大的动作a(a=maxaQ(oi,ai;θ3)),将动作a发送给环境状态监测模块。动作a的方向代表分配给机器人的目标探索区域,机器人之间的任务分配过程体现在通信策略当中,即交互权重估计模块对邻接特征矩阵集合的注意力分配权重。机器人通过自己的输入状态估值向量和邻接特征矩阵得到动作方向,即完成了目标探索任务的分配过程。动作估计模块根据∈的概率随机选取动作,可保证尽可能多地估计到机器人i可能经历的完整状态。机器人节点i的动作估计模块从中心控制节点的网络更新模块接收更新参数,用于更新动作估计模块中多层感知机的网络参数。
中心控制节点的环境状态监测模块与机器人节点i的动作估计模块、机器人节点i的感知信息获取模块和中心控制节点的经验采集模块相连,从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1,…,oi,…,oN(简写为o1…N)和下一时刻状态o′1,…,o′i,…,o′N(简写为o′1…N),根据o1…N更新地图状态,即记录地图哪些位置已经被探索,并记录N个机器人每一步来自环境状态检测模块的决策奖惩信息r1,…,ri,…,rN,(简写为r1…N),将奖惩信息r1…N发送给经验采集模块。
经验采集模块与N个机器人节点的动作估计模块、N个机器人节点的感知信息获取模块、N个机器人节点的位置关系判定模块、中心控制节点的环境状态监测模块、中心控制节点的网络更新模块相连,从N个机器人节点的动作估计模块接收N个机器人节点分别采取的动作a1…N、从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1…N和下一时刻状态o′1…N、从N个机器人节点的位置关系判定模块分别接收N个机器人节点的邻接特征矩阵集合G1,…,Gi,…,GN(简写为G1…N)、从环境状态监测模块接收N个机器人节点获得的奖惩信息r1…N,将经验五元组[o1…N,a1…N,r1…N,o′1…N,G1…N]存入经验池,以供N个机器人节点的输入状态估值模块、交互权重估值模块和动作估计模块参数更新时用。经验池的容量大小设置为100000个经验五元组,当经验池填满后,新加入的经验五元组将顶替经验池顶端的经验五元组。如果当前时刻到达了预设的网络更新周期,经验采集模块将经验池中的p个经验五元组一次发送给网络更新模块。
网络更新模块与机器人节点i的动作估计模块和中心控制节点的经验采集模块相连,从经验采集模块接收p个经验五元组。网络更新模块的主要功能包括:1)计算网络更新模块中的状态现实神经网络下一时刻状态及动作的累计回报值;2)运行反向传播算法更新动作估计模块、交互权重模块和输入状态估值模块的参数。
网络更新模块是一个包含一个2层的多层感知机的软件模块,该2层的多层感知机称为状态现实神经网络。该2层的多层感知机称为状态现实神经网络;网络更新模块功能是计算状态现实神经网络下一时刻状态及动作的累积回报值,更新状态现实神经网络的网络参数θ4;并采用反向传播算法更新动作估计模块、交互权重估计模块和输入状态估值模块的参数,将更新后的参数发送给相应模块;
假设图1中机器人节点4的感知信息获取模块存在故障,且N个机器人节点在执行全覆盖任务的过程中,环境中可能突然出现新的障碍。
第二步,对地图、经验池以及输入状态估值模块、交互权重估计模块、动作估计模块和网络更新模块的多层感知机参数进行初始化,方法是:
2.1初始化地图网格的当前状态,障碍位置标记为0,其余位置标记为未探索即-1;
2.2初始化经验池为空;
2.3初始化历史坐标集合为空;
2.4初始化机器人步数t=0,令全覆盖任务周期T1=40,N个机器人节点分别执行40次动作作为一个全覆盖任务周期T1。令网络更新周期T2=T1*1000,即当全覆盖任务执行1000次的倍数时,网络更新模块开始逐步更新动作估计模块、交互权重估计模块和状态估值模块中的多层感知机的参数。令策略优化周期T3=T1*50000,即当全覆盖任务执行50000次时,结束对N个机器人节点的输入状态估值模块、交互权重估计模块以及动作估计模块中的多层感知机的参数优化。
2.5将输入状态估值模块的多层感知机参数θ1、交互权重估值模块的多层感知机参数θ2、及动作估计模块的多层感知机参数θ3以及网络更新模块的多层感知机参数θ4初始化为0至1之间的随机数,交互权重估值模块中M(例如图2中M=4)个注意力头的θ2需分别初始化为不同的随机数。
2.6将N个机器人节点在初始状态选择各个动作的概率均初始化为1/4,即每个机器人在初始状态选择向上、向左、向下或向右动作的概率是相等的。
第三步,N个机器人节点的感知信息获取模块并行接收环境感知信息,输入状态估值模块、位置关系判定模块、交互权重估计模块、动作估计模块相互配合决策下一步的动作,N个机器人节点执行动作,N个机器人节点的决策过程完全相同,以机器人节点1为例来说明的决策过程是:
3.1机器人节点1的感知信息获取模块从环境获取机器人节点1的实时位置坐标(5,5),将(5,5)加入至历史坐标集合l1={(0,5)、(1,5)、…、(4,5)}的尾部,即新的历史坐标集合为l1={(0,5)、(1,5)、…、(4,5)、(5,5)};机器人节点1用传感器获取当前状态o1=10维的实数向量,将l1和o1发送给输入状态估值模块。这里机器人节点4获取的当前状态o4=0.15×真实值+0~1间的随机数,用来模仿感知信息获取模块存在故障。(假设正常状态(即真实值)是10维0~1间的随机数[0.5,0.7…0.9],0~1间的随机数是0.2,那么机器人节点4获取到的状态就是[0.15*0.5+0.2,0.15*0.7+0.2,…0.15*0.9+0.2]。)
3.2机器人节点1的输入状态估值模块从机器人节点1的感知信息获取模块接收l1和o1,通过一层多层感知机(输入神经元个数为10,输出神经元个数为128)得到输入状态估值向量h1=128维的实数向量;并根据机器人的数目N=4对编号1进行独热编码得到独热编码向量e1=[1,0,0,0],将h1和e1发送给机器人1的位置关系判定模块和视觉范围内的邻居机器人节点{2、4}的位置关系判定模块。这里设置所有机器人节点的视觉范围为7(即以机器人节点1通信范围为半径为7的正方形网格区域内),即每个机器人可以接收以其为中心,边长为14的正方形范围内的邻居机器人消息,故当前状态机器人节点1的邻居机器人节点是机器人节点{2,4}。方法是:
3.2.1机器人节点1的输入状态估值模块从机器人节点1的感知信息获取模块接收l1和o1,将l1拼接到o1的尾端,然后将拼接了l1的o1输入到一层的多层感知机中,得到输入状态估值向量h1。
3.2.2机器人节点1的输入状态估值模块根据机器人的数目N=对编号1进行独热编码得到独热编码向量e1=[1,0,0,0]。
3.2.3机器人节点1的输入状态估值模块将h1和e1发送给机器人1的位置关系判定模块和机器人1的视觉范围内的邻居机器人节点{2、4}的位置关系判定模块,并将h1发送到机器人节点1的动作估计模块。
3.3机器人节点1的位置关系判定模块从邻居机器人节点{2、4}的输入状态估值模块接收输入状态估值向量{h2、h4}和编号独热编码向量{e2、e4},从机器人节点1的输入状态估值模块接收h1和e1,将e1和{e2、e4}经过进行转化,得到(2+1)×4维的邻接矩阵将h1和{h2、h4}进行转化,得到4×128维的特征矩阵F1。计算C1×F1,得到邻接特征矩阵集合G1,将邻接特征矩阵集合G1发送给机器人节点i的交互权重估计模块和中心控制节点的经验采集模块。方法是:
3.3.1机器人节点1的位置关系判定模块从邻居机器人{2、4}的输入状态估值模块接收{h2、h4}和{e2、e4},从机器人节点1的输入状态估值模块接收h1和e1;
3.3.2机器人节点1的位置关系判定模块将e1和{e2、e4}经过进行转化得到(2+1)×4维的邻接矩阵C1,转化方法是将e1作为C1的第一行,e2、e4按2、4由小到大排序,分别作为C1的其余2行;
3.3.3机器人节点1的位置关系判定模块将h1和{h2、h4}进行转化,得到4×128维的特征矩阵集合F1,转化方法是:F1的第一行为h1,h2、h4按2、4由小到大排序,分别作为F1的2、4行,F1除第一行、第2、4行以外的其它1行,即第三行为其余视觉范围外机器人的输入状态估值向量,因机器人3在机器人1的视觉范围之外,机器人1无法收到其输入状态估值向量,故第三行机器人1的输入状态估值向量
机器人2的输入状态估值向量,
用单位向量代替,因此F1为单位向量此,即4×128维的矩阵;
机器人4的输入状态估值向量
3.3.4机器人1的位置关系判定模块计算C1×F1,得到邻接特征矩阵集合
机器人1的输入状态估值向量
G1=机器人2的输入状态估值向量,即3×128维的矩阵,将G1发送给交互权重
机器人4的输入状态估值向量
估计模块和中心控制节点的经验采集模块。
3.4机器人节点i的交互权重估计模块从机器人节点1的位置关系判定模块接收机器人节点1的邻接特征矩阵集合G1,将邻接特征矩阵集合G1交由4个注意力头并行进行权重估值,最终获得邻接加权向量Q1,将Q1发送给机器人节点1的动作估计模块。4个注意力头子模块并行进行权重估值的方法相同,以第1个注意力头为例,其进行权重估值的方法是:
3.4.1第1个注意力头的查询转化子模块接收来自机器人节点1的位置关系判定模块的邻接特征矩阵。查询转化子模块将机器人节点1的输入状态估值向量输入一层的多层感知机,通过一层(输入神经元个数为128,输出神经元个数为32)的多层感知机转化为机器人1的查询向量维的实数向量。
3.4.2初始化独热编码向量的当前维度v为1;
3.4.3第1个注意力头的键值转化子模块将邻居机器人节点j=2的输入状态估值向量通过一层(输入神经元个数为128,输出神经元个数为32)的多层感知机转化为机器人2的第1个注意力头的键值向量维的实数向量;第1个注意力头的价值转化子模块将邻居机器人节点2的输入状态估值向量通过一层(输入神经元个数为128,输出神经元个数为32)的多层感知机转化为机器人2的第1个注意力头的价值向量维的实数向量。2属于邻居机器人集合{2、4}。
这里由于机器人节点4的环境感知信息存在噪声,故机器人节点1对其消息的关注权重较小,为0.2;由于机器人节点1和机器人节点2存在潜在的目标区域冲突问题,因此机器人节点1对机器人节点2的消息关注权重较大,为0.8。
3.4.6第1个注意力头计算邻居机器人2对于机器人1的有价值消息m12,
3.4.8此时4个注意力头分别计算出了机器人1和所有邻居机器人的有价值消息,机器人节点1的交互权重估值模块将有价值消息E1,E2,…,E4顺序拼接,如公式3所示:
Qi=σ(Concat[E1,…,Em,…,EM]) 公式3
得到32*4=128维的实数向量,即融合了多类不同特征(因为每一个注意力头的参数都是不同的,所以每一个注意力头提取出的特征类型也是不同的,比如在输入状态估值向量中,既可以关注于机器人之间的位置关系特征,又可以关注于历史轨迹特征)的针对于机器人1的邻接加权向量Q1=128维实数向量。
公式3中Concat代表拼接,σ(x)代表参数x的非线性激活函数。
3.4.9机器人节点1的交互权重估值模块将邻接加权向量Q1发送到机器人节点1的动作估计模块。
3.5机器人节点1的动作估计模块估算当前状态对应的动作,方法是:
3.5.1机器人节点1的动作估计模块将h1和Q1顺序拼接后得到128*2=256维的拼接向量,然后输入到动作估计模块的两层的多层感知机中,多层感知机的第一层输入神经元个数为256,输出神经元个数为128;多层感知机的第二层输入神经元个数为128,输出神经元个数为4。多层感知机的第二层输出代表选择不同的4个动作a1对应的累积回报值Q(o1,a1;θ3)。令a1代表向上、a2代表向下、a3代表向左、a4代表向右,则Q(o1,a1;θ3)=-37.76、Q(o1,a2;θ3)=-39.94、Q(o1,a3;θ3)=-25.42、Q(o1,a4;θ3)=-18.68。
3.5.2机器人节点i的动作估计模块从中心控制节点的环境状态监测模块接收机器人步数,判断当前机器人步数t>T3,即N个机器人是否已执行完T3周期内的任务分配。此时t<T3,机器人节点1生成一个随机数0.9,如果随机数>∈=0.8,执行步骤3.5.3;否则,令ai为向上、向下、向左、向右中的任意一个,执行步骤3.6。
3.5.3取使得累积回报值最大的动作ai=maxaQ(oi,ai;θ3),在状态o1下,使得Q(o1,a1;θ3)值最大的动作为a4向右,此动作代表机器人1通过与邻居机器人交互后,得到机器人1下一步的决策方向。如果将所有邻居机器人视为一个整体,此决策方向即代表机器人1被其邻居机器人整体分配的目标探索任务区域。当前时刻的地图状态如图4所示。图4的左上角表示地图位置(0,0),由左上角向右一格表示地图位置(0,1),由左上角向下一格表示地图位置(1,0)。图4中/标注1的位置为已探索,黑色为0的位置代表障碍,标注为-1的位置代表未探索的目标区域。图4中①代表机器人1,②代表机器人2,③代表机器人3,④代表机器人4,④为故障机器人,传感器信息有误。同时,机器人节点2的动作a2为向下,机器人节点3的动作a3为向下,机器人节点4的动作a4为向下。从4个机器人节点的动作方向中可以看出,机器人节点1被分配的目标探索区域是区域4,机器人节点2被分配的目标探索区域是区域1,机器人节点3被分配的目标探索区域是区域3,机器人节点4被分配的目标探索区域是区域2。这种分配方案从整体角度来看对于提升整体的全覆盖任务效率显然是最优的。
3.6机器人节点1执行动作a1,向右移动一格,机器人节点1的坐标位置变为(5,6),历史轨迹变为l1={(0,5)、(1,5)、…、(5,5)、(5,6)}。
3.7机器人节点1的动作估计模块将采取的动作a1发送给中心控制节点的经验采集模块。
3.8假设此时环境中出现了新障碍,如图5所示,在地图坐标为(4,4)、(4,5)、(4,6)、(4,7)、(5,7)处出现了新的障碍(即在位置(4,4)、(4,5)、(4,6)、(4,7)、(5,7)的地图状态为0)。感知信息获取模块获取机器人节点1此时的状态o′1为新的10维实数向量,将o1和o′1发送给中心控制节点的环境状态监测模块。
第四步,环境状态监测模块根据N个机器人的当前位置信息以及动作信息更新地图状态,并将N个机器人的奖惩信息发送给经验采集模块。方法是:
4.1初始化节点编号变量i=1;
4.2环境状态监测模块从机器人节点i的感知信息获取模块接收当前状态oi和下一时刻状态o′i,从oi中获取机器人节点i当前坐标。例如机器人节点1的当前坐标为(5,5),动作为向右,故环境状态检测模块将地图(5,5)值标记为1,即已探索。
此时由于机器人1的新坐标(5,6)在地图网格的状态值为1,即该位置已经被探索过了,故Bback为1。由于机器人1的新坐标处没有其余机器人,即机器人1并未与其余机器人发生碰撞,故Ct为0,由于当前时刻t%40不等于0,故当前时刻尚未达到全覆盖任务周期,故Bfinal值为0。因此机器人1的奖励值
4.5令机器人步数t=t+1,环境状态监测模块将奖惩信息r1…N发送给经验采集模块,将机器人步数发送给所有机器人节点的动作估计模块。
第五步,经验采集模块接收N个机器人节点动作估计模块采取的动作a1…N、从环境状态监测模块接收的奖励值r1…N,从N个机器人节点感知信息获取模块接收当前时刻状态o1…N和下一时刻状态o′1…N,从N个机器人节点位置关系判定模块接收邻接特征矩阵集合G1…N。将五元组[o1…N,a1…N,r1…N,o′1…N,G1…N]存入经验池。
第六步,环境监测模块判断任务是否达到指定的全覆盖任务周期,即判断t’=t%T1是否为0,%为取余计算。如果t’不为0,则转第三步,4个机器人节点的感知信息获取模块并行接收环境感知信息,输入状态估值模块、位置关系判定模块、交互权重估计模块、动作估计模块相互配合决策下一步的动作。经过计算累积回报值,此时4个机器人节点的决策为:机器人1节点的动作为向左,机器人2节点的动作为向右,机器人3节点的动作为向下,机器人4节点的动作为向下。此决策分配时由于新障碍阻挡了机器人1节点前往目标区域4的道路,故机器人1节点与机器人2节点沟通后交换了目标区域,此分配是当前状态下的最优任务分配方案。
第七步,环境状态监测模块判断N=4个机器人节点是否达到了策略优化周期T3(即判断t>T3是否为真),如果为真,则中心控制节点停止对N=4个机器人节点的输入状态估值模块、交互权重估值模块和动作估计模块的参数进行优化;否则继续判断当前是否到达了指定的网络更新周期T2,如果是,网络更新模块逐步更新动作估计模块、交互权重估计模块和输入状态估值模块多层感知机的网络参数。方法是:
7.1环境状态监测模块获取当前步数t,如果t>T3,即到达策略优化周期,执行第八步;否则执行步骤7.2;
7.2环境状态监测模块进行判断,如果t”=t%T2≠0,即没有到达网络更新周期,转第三步;否则到达网络更新周期,从经验池中取出p=1024个经验五元组,转7.3;
7.3网络更新模块从环境状态监测模块处获取1024个经验五元组,从1024个经验五元组中获得5个机器人在当前状态下采取的动作信息及到达的下一时刻状态信息,根据N个机器人的下一时刻状态o′i,挑选使得Q(o′i,a′i;θ4)值最大的动作a′i,即maxa′Q(o′i,a′i;θ4),Q(o′i,a′i;θ4)指在状态为o′i时采取动作a′i的估算值,描述了在状态为o′i时采取动作a′i的累积回报值,θ4为状态现实神经网络的参数。
7.4网络更新模块通过公式5所示的损失函数L(θ3)(损失函数即通过最小化所有经验五元组中“当前状态oi采取动作ai的估计累积回报值与真实累积回报值的差异”的平均值,来端到端地优化整个网络,使得动作估计模块可以真实预测出在状态oi采取动作ai的累积回报值,进而采取正确的动作的函数。),对动作估计模块的参数进行优化:
其中
yi=ri+γmaxa′Q(o′i,a′i;θ4)
7.5N个机器人的网络更新模块更新θ4,即令
θ4=τθ3+(1-τ)θ4 公式6
7.7网络更新模块将优化后的动作估计模块、交互权重估计模块和输入状态估值模块参数(即各机器人节点相应的θ3、θ2、θ1)分别发送给N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块,N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块接收到参数后,更新多层感知机的参数。
7.8转第三步。
第八步,此时t>T3,N=4个机器人已执行完T3周期内的任务分配,不再对输入状态估值模块、交互权重估计模块以及动作估计模块中多层感知机的参数优化。环境状态监测模块判断当前地图中的所有网格点是否已被覆盖完,如果已经覆盖完,则转第九步;否则转第三步,继续进行目标区域探索。
第九步,当前地图的全覆盖分配任务结束。
Claims (10)
1.一种面向动态噪声环境的全覆盖任务分配方法,其特征在于包括以下步骤:
第一步,构建多机器人环境,它由N个机器人节点和中心控制节点构成,N为机器人节点全数,N为正整数,N个机器人节点的工作方式一致;机器人节点是可以运行软件程序的异构机器人硬件设备,中心控制节点是具有计算能力的资源可控的计算设备;中心控制节点监控地图状态,为每个机器人更新行为策略参数,多个机器人节点和中心控制节点通过网络设备互联;
机器人节点i除了装有操作系统外,还装有感知信息获取模块、输入状态估值模块、位置关系判定模块、交互权重估计模块和动作估计模块,1≤i≤N;
中心控制节点除了装有操作系统以及深度学习框架外,还装有环境状态监测模块、经验采集模块和网络更新模块;
定义离散化地图中的每个网格为网格点,使用占用网格法来表示地图,根据每个网格上的不同情况,将网格的当前状态分为障碍、已探索和未探索三种地图状态,如公式1所示:
P(x,y)为在离散化地图上横坐标为x,纵坐标为y位置的当前状态;
定义机器人节点i的局部环境感知信息为当前状态oi,oi描述了以机器人节点i为中心,以机器人节点i通信范围为半径的正方形网格区域内是否包含障碍物或其余的机器人,半径指正方形边长的一半;定义机器人节点i前往的下一网格点方向的移动为动作ai,到达的下一个状态为o′i,下一网格点方向包括向上、向下、向左、向右;定义机器人节点从到达当前网格点至到达下一网格点的过程中,与障碍物或其余机器人节点的碰撞与否以及下一节点是否为机器人群体已探索过的区域,为当前状态下选择该动作后获得的奖惩信息ri;定义机器人节点i从一个状态开始选择一个动作后直至全覆盖任务结束所得到的奖惩信息之和为该状态下选择该动作后获得的累积回报Ri;将机器人节点i的编号i以及Ki个邻居的编号转化为独热编码向量,得到(Ki+1)×N维的矩阵,定义该矩阵为邻接矩阵Ci,Ki为机器人节点i的邻居机器人的个数,0≤Ki≤N-1;邻接矩阵Ci定义为的第一行代表机器人节点i的编号独热编码,其余Ki行代表Ki个邻居机器人的编号独热编码,由上到下的顺序为机器人编号由小到大的顺序,代表机器人的数目;
中心控制节点的经验采集模块中有一个经验池,经验池存储各个机器人的经验五元组,经验五元组为[当前状态,动作,奖惩信息,下一状态,邻接矩阵];
定义机器人节点i的动作估计模块估计机器人节点i在当前状态oi,采取动作ai得到的累积回报值为Q(oi,ai;θ3),θ3为动作估计模块的网络参数,当前状态oi记录了当前环境状态内的其他机器人节点的相对位置,当前环境状态内的其他机器人节点指机器人节点i视觉范围内的机器人;通过计算当前状态oi对应的所有动作的累积回报值,并挑选出使得累积回报值最大的动作a,即maxaQ(oi,ai;θ3),得到当前状态应该采取的动作a;
下一状态指从当前状态采取了动作后到达的状态;
机器人节点i的感知信息获取模块与机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块和经验采集模块相连,用于从环境获取当前局部视图,记录机器人节点i的历史轨迹信息以避免重复探索;感知信息获取模块从环境获取机器人节点i的实时位置(xi,yi),(xi,yi)为二维数组,代表实时位置在离散化地图中的坐标值,将实时位置(xi,yi)存储到机器人节点i的历史坐标集合li中;使用机器人节点i的传感器获取机器人节点i的当前状态oi,将oi和li发送给机器人节点i的输入状态估值模块;机器人节点i执行动作后,感知信息获取模块根据传感器获取机器人节点i的下一时刻环境状态o′i,并将oi和o′i发送给环境状态监测模块和经验采集模块;
机器人节点i的输入状态估值模块是包含一个一层的多层感知机的软件模块,与机器人节点i的感知信息获取模块、机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的交互权重估值模块、Ki个邻居机器人节点的位置关系判定模块相连,它从机器人节点i的感知信息获取模块获取oi和li,对oi和li进行拼接后输入多层感知机,得到输入状态估值向量hi,Ki为机器人节点i的邻居机器人的个数,Ki为小于N的正整数;输入状态估值模块创建机器人节点i的编号独热编码向量,将hi和编号独热编码向量发送给机器人节点i的位置关系判定模块和Ki个邻居机器人节点的位置关系判定模块;将hi发送给机器人节点i的动作估计模块;机器人节点i的输入状态估值模块从中心控制节点的网络更新模块接收更新参数,用于更新输入状态估值模块中多层感知机的网络参数θ1;
机器人节点i的位置关系判定模块与机器人节点i的输入状态估值模块、机器人节点i的交互权重估值模块和Ki个邻居机器人节点的输入状态估值模块相连,它从机器人节点i的输入状态估值模块接收hi和编号独热编码向量,从邻居机器人的输入状态估值模块接收Ki个输入状态估值向量 和Ki个编号独热编码向量将hi和整合成N×H维的特征矩阵Fi;机器人节点i的位置关系判定模块利用编号独热编码向量和建立(Ki+1)×N维的邻接矩阵Ci,计算Ci×Fi,得到邻接特征矩阵集合Gi,将Gi发送给机器人节点i的交互权重估值模块和中心控制节点的经验采集模块;机器人节点i视觉范围外的机器人输入状态估值向量用单位向量代替,H代表输入状态估值向量的维度;
单位向量的维度是输入状态估值向量的维度,除第一位为1之外,向量的其余位置均为0;机器人节点i的交互权重估值模块与机器人节点i的位置关系判定模块、机器人节点i的动作估计模块、机器人节点i的输入状态估值模块相连,交互权重估值模块是包含M个注意力头的软件模块,1≤M≤4;注意力头是计算两个机器人的输入状态估值向量之间匹配程度的软件子模块,每个注意力头由查询转换子模块、键值转换子模块和价值转换子模块组成,查询转换子模块、键值转换子模块和价值转换子模块均是包含一层的多层感知机的软件模块;
注意力头的功能是根据Query和Key计算对应Query的Value的权重系数,然后对Source中的Value值进行加权求和,得到邻接加权向量;Query指机器人节点i应该关注的邻居机器人消息的权重查询;Key指交互权重计算时的键值;Value值即价值指每个机器人局部视图中信息的有效信息;Value的权重系数指Value占整个邻接加权向量的百分比;Source指邻居机器人集合;邻接加权向量指所有邻居机器人Value的权重系数与Value值的乘积之和;
机器人节点i的交互权重估值模块从机器人节点i的位置关系判定模块接收机器人节点i的邻接特征矩阵集合Gi,将邻接特征矩阵集合等分为M份,将M份邻接特征矩阵子集合分别分配给M个注意力头并行进行权重估值,得到针对机器人i的来自Ki个邻居机器人的邻接加权向量Qi;机器人节点i的交互权重估值模块从中心控制节点的网络更新模块接收更新参数,用于更新查询转换子模块、键值转换子模块和价值转换子模块中多层感知机的网络参数θ2;
机器人节点i的动作估计模块与机器人节点i的交互权重估值模块、机器人节点i的输入状态估值模块、中心控制节点的环境状态监测模块、经验采集模块和网络更新模块相连,从机器人节点i的交互权重估计模块接收邻接加权向量Qi,从机器人节点i的输入状态估值模块接收输入状态估值向量hi,从中心控制节点的网络更新模块接收动作估计模块的参数,从中心控制节点的环境状态监测模块接收机器人步数;动作估计模块是包括一个两层的多层感知机的软件模块,主要用于计算累积回报值;该两层的多层感知机称为状态估计神经网络,状态估计神经网络将mi和hi转化为状态oi下执行动作ai的累积回报值Q(oi,ai;θ3);机器人节点i的动作估计模块以∈概率随机挑选的动作a或者以(1-∈)的概率选择累积回报值最大的动作a,a=maxaQ(oi,ai;θ3),∈为不按当前策略采取动作随机采样新动作的概率;机器人节点i的动作估计模块从中心控制节点的网络更新模块接收更新参数,用于更新θ3;
中心控制节点的环境状态监测模块与机器人节点i的动作估计模块、机器人节点i的感知信息获取模块和中心控制节点的经验采集模块相连,从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1,...,oi,...,oN和下一时刻状态o′1,...,o′i,...,o′N,将o1,...,oi,...,oN简写为o1...N,将o′1,...,o′i,...,o′N简写为o′1...N,根据o1...N更新地图状态,即记录地图哪些位置已经被探索,并记录N个机器人每一步来自环境状态检测模块的决策奖惩信息r1,...,ri,...,rN,将r1,...,ri,...,rN简写为r1...N,将奖惩信息r1...N发送给经验采集模块;记录机器人步数,将机器人步数发送给机器人节点i的动作估计模块;
经验采集模块与N个机器人节点的动作估计模块、N个机器人节点的感知信息获取模块、N个机器人节点的位置关系判定模块、中心控制节点的环境状态监测模块、中心控制节点的网络更新模块相连,从N个机器人节点的动作估计模块接收N个机器人节点分别采取的动作a1...N、从N个机器人节点的感知信息获取模块分别接收N个机器人节点当前时刻状态o1...N和下一时刻状态o′1...N、从N个机器人节点的位置关系判定模块分别接收N个机器人节点的邻接特征矩阵集合G1,...,Gi,...,GN、从环境状态监测模块接收N个机器人节点获得的奖惩信息r1...N,将G1,...,Gi,...,GN简写为G1...N,将经验五元组[o1...N,a1...N,r1...N,o′1...N,G1...N]存入经验池;如果当前时刻到达了预设的网络更新周期,经验采集模块将经验池中的p个经验五元组发送给网络更新模块,p为2的整数次幂;
网络更新模块与机器人节点i的动作估计模块和中心控制节点的经验采集模块相连,从经验采集模块接收p个经验五元组;网络更新模块是一个包含一个2层的多层感知机的软件模块,该2层的多层感知机称为状态现实神经网络;网络更新模块功能是计算状态现实神经网络下一时刻状态及动作的累积回报值,更新状态现实神经网络的网络参数θ4;并更新动作估计模块、交互权重模块和输入状态估值模块的参数,将更新后的参数发送给相应模块;
第二步,对地图、经验池以及输入状态估值模块、交互权重估计模块、动作估计模块和网络更新模块的多层感知机参数进行初始化,方法是:
2.1初始化地图网格的当前状态,障碍位置标记为0,其余位置标记为-1;
2.2初始化经验池为空;
2.3初始化历史坐标集合为空;
2.4初始化机器人步数t=0,令全覆盖任务周期T1=40;令网络更新周期T2=T1*1000;令策略优化周期T3=T1*50000;
2.5将输入状态估值模块的多层感知机参数θ1、交互权重估值模块的多层感知机参数θ2、及动作估计模块的多层感知机参数θ3以及网络更新模块的多层感知机参数θ4初始化为0至1之间的随机数,其中交互权重估值模块中M个注意力头的θ2分别初始化为不同的随机数;
2.6将N个机器人节点选择各个动作的概率均初始化为1/动作空间维度,动作空间维度指机器人所有可能执行的不同动作个数;
第三步,N个机器人节点的感知信息获取模块并行接收环境感知信息,输入状态估值模块、位置关系判定模块、交互权重估计模块、动作估计模块相互配合决策下一步的动作,N个机器人节点执行动作,N个机器人节点的决策过程完全相同,机器人节点i的决策过程是:
3.1机器人节点i的感知信息获取模块从环境获取机器人节点i的实时位置坐标(xi,yi),将(xi,yi)加入至历史坐标集合li;机器人节点i用传感器获取当前状态oi,将li和oi发送给输入状态估值模块;
3.2机器人节点i的输入状态估值模块从机器人节点i的感知信息获取模块接收li和oi,通过多层感知机得到输入状态估值向量hi;并根据机器人的数目N对编号i进行独热编码得到独热编码向量ei,将hi和ei发送给机器人i的位置关系判定模块和视觉范围内的邻居机器人节点的位置关系判定模块;
3.3机器人节点i的位置关系判定模块从邻居机器人节点的输入状态估值模块接收输入状态估值向量和编号独热编码向量 从机器人节点i的输入状态估值模块接收hi和ei,将ei和经过进行转化,得到(Ki+1)×N维的邻接矩阵Ci,将hi和进行转化,得到N×H维的特征矩阵Fi;计算Ci×Fi,得到邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi发送给机器人节点i的交互权重估计模块和中心控制节点的经验采集模块;
3.4机器人节点i的交互权重估计模块从机器人节点i的位置关系判定模块接收机器人节点i的邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi交由M个注意力头并行进行权重估值,获得邻接加权向量Qi,将Qi发送给机器人节点i的动作估计模块, M个注意力头子模块并行进行权重估值的方法相同,第m个注意力头进行权重估值的方法是:
3.4.1第m个注意力头的查询转化子模块接收来自机器人节点i的位置关系判定模块的邻接特征矩阵,其中包含了hi,以及机器人节点i的所有邻居机器人节点的输入状态估值向量;查询转化子模块将机器人节点i的输入状态估值向量输入一层的多层感知机,通过一层的多层感知机转化为机器人i的查询向量
3.4.2初始化独热编码向量的当前维度v为1;
3.4.3第m个注意力头的键值转化子模块将邻居机器人节点jv的输入状态估值向量通过一层的多层感知机转化为机器人j的第m个注意力头的键值向量第m个注意力头的价值转化子模块将邻居机器人节点jv的输入状态估值向量的第m份通过一层的多层感知机转化为机器人j的第m个注意力头的价值向量jv属于
3.4.4令v=v+1,若v≤Ki,转步骤3.4.3;若v>Ki,转3.4.5;
3.4.8机器人节点i的交互权重估值模块将有价值消息E1,...,Em,...,EM顺序拼接,得到融合了多类不同特征的针对于机器人i的邻接加权向量Qi:
Qi=σ(Concat[E1,...,Em,...,EM])公式3;
公式3中Concat代表拼接,σ(x)代表参数x的非线性激活函数;
3.4.9机器人节点i的交互权重估值模块将邻接加权向量Qi发送到机器人节点i的动作估计模块;
3.5机器人节点i的动作估计模块估算当前状态对应的动作,方法是:
3.5.1机器人节点i的动作估计模块将hi和Qi顺序拼接后输入到动作估计模块的两层的多层感知机中,计算选择不同动作ai对应的累积回报值Q(oi,ai;θ3);
3.5.2机器人节点i的动作估计模块从中心控制节点的环境状态监测模块接收机器人步数,判断机器人步数t是否大于T3,如果t>T3,则执行步骤3.5.3;否则,机器人节点i生成一个随机数,如果随机数>∈,执行步骤3.5.3;否则,令ai为向上、向下、向左、向右中的任意一个,执行步骤3.6;
3.5.3取使得累积回报值最大的动作ai=maxaQ(oi,ai;θ3),此动作代表机器人i通过与邻居机器人交互后,得到机器人i下一步的决策方向;
3.6机器人节点i执行动作ai,机器人节点i的坐标位置以及历史轨迹发生变化;
3.7机器人节点i的动作估计模块将采取的动作ai发送给中心控制节点的经验采集模块;
3.8感知信息获取模块获取机器人节点i此时的状态o′i,将oi和o′i发送给中心控制节点的环境状态监测模块;
第四步,环境状态监测模块根据N个机器人的当前位置信息更新地图状态,并将N个机器人的奖惩信息发送给经验采集模块,方法是:
4.1初始化节点编号变量i=1;
4.2环境状态监测模块从机器人节点i的感知信息获取模块接收当前状态oi和下一时刻状态o′i,从oi中获取机器人节点i当前坐标(xi,yi),更新地图网格状态;
Bback·rback+Ct·rcoll代表个人奖励,Bback是判断机器人是否此时探索的是整个群体已经探索过的区域的布尔向量,为1表示已探索过,为0表示未探索过;rback指机器人i当前步如果走的是已探索区域应该给予的惩罚值,Ct代表机器人i与其余机器人或障碍物的碰撞次数;rcoll为碰撞的惩罚值;Bfinal·issucc·rsucc+Bfinal·(1-issucc)·rfail代表平均全局奖励和惩罚Bfinal是判断此时是否是全覆盖任务周期最后一步的布尔向量;issucc是判断这一全覆盖任务周期是否成功的布尔向量;rsucc为奖励值,rfail为惩罚值;
4.5令机器人步数t=t+1,环境状态监测模块将奖惩信息r1...N发送给经验采集模块;将机器人步数发送给所有机器人节点的动作估计模块;
第五步,经验采集模块接收N个机器人节点动作估计模块采取的动作a1...N、从环境状态监测模块接收的奖励值r1...N,从N个机器人节点感知信息获取模块接收当前时刻状态o1...N和下一时刻状态o′1...N,从N个机器人节点位置关系判定模块接收邻接特征矩阵集合G1...N,将五元组[o1...N,a1...N,r1...N,o′1...N,G1...N]存入经验池;
第六步,环境监测模块判断任务是否达到指定的全覆盖任务周期,即判断t’=t%T1是否为0,%为取余计算,如果t’不为0,转第三步;如果为0,转第七步;
第七步,环境状态监测模块判断N个机器人节点是否达到了策略优化周期T3,即t>T3是否为真,如果为真,则中心控制节点停止对N个机器人节点的输入状态估值模块、交互权重估值模块和动作估计模块的参数进行优化;否则继续判断当前是否到达了指定的网络更新周期T2,如果是,网络更新模块逐步更新动作估计模块、交互权重估计模块和输入状态估值模块多层感知机的网络参数,方法是:
7.1环境状态监测模块获取当前步数t,如果t>T3,执行第八步;否则执行步骤7.2;
7.2环境状态监测模块进行判断,如果t”=t%T2≠0,转第三步;否则到达网络更新周期,从经验池中取出p个经验五元组,转7.3;
7.3网络更新模块从环境状态监测模块处获取p个经验五元组,从p个经验五元组中获得N个机器人在当前状态下采取的动作信息及到达的下一时刻状态信息,根据N个机器人的下一时刻状态o′i,挑选使得Q(o′i,a′i;θ4)值最大的动作a′i,即maxa′Q(o′i,a′i;θ4),Q(oi′,ai′;θ4)指在状态为oi′时采取动作ai′的累积回报值;
7.4网络更新模块通过公式5所示的损失函数L(θ3),对动作估计模块的参数进行优化:
其中
yi=ri+γmaxa′Q(o′i,a′i;θ4);
7.5N个机器人的网络更新模块按照动作估计模块的参数θ4进行更新,即令
θ4=τθ3+(1-τ)θ4 公式6;
7.7网络更新模块将优化后的动作估计模块、交互权重估计模块和输入状态估值模块参数即各机器人节点相应的θ3、θ2、θ1分别发送给N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块,N个机器人的动作估计模块、交互权重估计模块和输入状态估值模块接收到参数后,更新多层感知机的参数;
7.8转第三步;
第八步,环境状态监测模块判断当前地图中的所有网格点是否已被覆盖完,如果已经覆盖完,转第九步;否则转第三步继续进行目标区域探索;
第九步,当前地图的全覆盖分配任务结束。
2.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于所述机器人节点、中心控制节点上安装的操作系统指Ubuntu16.04,安装的深度学习框架指Pytorch0.3.0.post4。
3.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于所述地图状态记录在地图状态数组里,地图状态数组是一个H1×W1的二维数组,地图状态数组的每个元素表示每个网格点的状态,H1和W1均为正整数。
4.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于所述输入状态估值向量hi是128维的向量,每一维的数值范围是0到1之间的实数;机器人节点i视觉范围外的机器人输入状态估值向量用单位向量代替,H代表输入状态估值向量的维度,H=128;所述不按当前策略采取动作随机采样新动作的概率∈满足,0≤∈≤0.1。
5.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于所述经验池的容量大小设置为100000个经验五元组,当经验池填满后,新加入的经验五元组将顶替经验池顶端的经验五元组;所述p为1024。
6.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于3.2步所述机器人节点i的输入状态估值模块得到输入状态估值向量hi和独热编码向量ei,将hi和ei发送给机器人i的位置关系判定模块和视觉范围内的邻居机器人节点的位置关系判定模块的方法是:
3.2.1机器人节点i的输入状态估值模块从机器人节点i的感知信息获取模块接收li和oi,将li拼接到oi的尾端,然后将拼接了li的oi输入到一层的多层感知机中,得到输入状态估值向量hi;
3.2.2机器人节点i的输入状态估值模块根据机器人的数目N对编号i进行独热编码得到独热编码向量ei;
7.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于3.3步所述机器人节点i的位置关系判定模块得到邻接特征矩阵集合Gi,将邻接特征矩阵集合Gi发送给机器人节点i的交互权重估计模块和中心控制节点的经验采集模块的方法是:
3.3.3机器人节点i的位置关系判定模块将hi和进行转化,得到N×H维的特征矩阵集合Fi,转化方法是:Fi的第一行为hi,按 由小到大排序,分别作为Fi的行,Fi除第一行、第行以外的其它N-1-Ki行为其余视觉范围外机器人的输入状态估值向量,直接用视觉范围外机器人输入状态估值向量的单位向量按机器人的编号由小到大排序代替,H代表输入状态估值向量的维度;
3.3.4机器人i的位置关系判定模块计算Ci×Fi,得到邻接特征矩阵集合Gi,将Gi发送给交互权重估计模块和中心控制节点的经验采集模块。
8.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于4.2步所述环境状态监测模块更新地图网格状态的方法是:标记(xi,yi)状态为已探索,值为1。
9.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于4.3步公式4中所述Bback为1表示已探索过,为0表示未探索过;rback的值为-10,rcoll是-10;Bfinal为1表示是最后一步,为0表示不是最后一步;issucc为1表示成功,为0表示不成功;rsucc设置为40;rfail设置为-5。
10.如权利要求1所述的一种面向动态噪声环境的全覆盖任务分配方法,其特征在于7.4步所述α设置为0.01。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241918.0A CN111432015B (zh) | 2020-03-31 | 2020-03-31 | 一种面向动态噪声环境的全覆盖任务分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241918.0A CN111432015B (zh) | 2020-03-31 | 2020-03-31 | 一种面向动态噪声环境的全覆盖任务分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111432015A CN111432015A (zh) | 2020-07-17 |
CN111432015B true CN111432015B (zh) | 2022-07-19 |
Family
ID=71550107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010241918.0A Active CN111432015B (zh) | 2020-03-31 | 2020-03-31 | 一种面向动态噪声环境的全覆盖任务分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111432015B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112008707B (zh) * | 2020-08-13 | 2021-10-26 | 中山大学 | 一种基于部件分解的机器人控制方法及装置 |
CN112008734B (zh) * | 2020-08-13 | 2021-10-15 | 中山大学 | 一种基于部件交互程度的机器人控制方法及装置 |
CN112329948B (zh) * | 2020-11-04 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 一种多智能体策略预测方法及装置 |
CN112327852B (zh) * | 2020-11-09 | 2022-12-27 | 苏州大学 | 融合路径信息丰富度的移动机器人自主探索方法 |
CN112462783B (zh) * | 2020-12-02 | 2021-07-23 | 中国人民解放军国防科技大学 | 全覆盖应用下异构多机器人系统的任务规划方法 |
CN113283169B (zh) * | 2021-05-24 | 2022-04-26 | 北京理工大学 | 一种基于多头注意力异步强化学习的三维群体探索方法 |
CN114879742B (zh) * | 2022-06-17 | 2023-07-04 | 电子科技大学 | 基于多智能体深度强化学习的无人机集群动态覆盖方法 |
CN117762150B (zh) * | 2024-02-22 | 2024-04-26 | 北京航空航天大学 | 多智能体分布式区域覆盖控制方法、智能体和程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107820276A (zh) * | 2017-10-27 | 2018-03-20 | 北京邮电大学 | 一种无线传感器任务分配方法 |
CN109839933A (zh) * | 2019-02-20 | 2019-06-04 | 哈尔滨工程大学 | 一种基于vdsom算法的多机器人任务分配方法 |
CN109978176A (zh) * | 2019-03-05 | 2019-07-05 | 华南理工大学 | 一种基于状态动态感知的多智能体合作学习方法 |
CN110119844A (zh) * | 2019-05-08 | 2019-08-13 | 中国科学院自动化研究所 | 引入情绪调控机制的机器人运动决策方法、系统、装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353399B2 (en) * | 2017-07-21 | 2019-07-16 | AI Incorporated | Polymorphic path planning for robotic devices |
-
2020
- 2020-03-31 CN CN202010241918.0A patent/CN111432015B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107820276A (zh) * | 2017-10-27 | 2018-03-20 | 北京邮电大学 | 一种无线传感器任务分配方法 |
CN109839933A (zh) * | 2019-02-20 | 2019-06-04 | 哈尔滨工程大学 | 一种基于vdsom算法的多机器人任务分配方法 |
CN109978176A (zh) * | 2019-03-05 | 2019-07-05 | 华南理工大学 | 一种基于状态动态感知的多智能体合作学习方法 |
CN110119844A (zh) * | 2019-05-08 | 2019-08-13 | 中国科学院自动化研究所 | 引入情绪调控机制的机器人运动决策方法、系统、装置 |
Non-Patent Citations (2)
Title |
---|
Learning to cooperate in decentralized multi-robot exploration of dynamic environments;Mingyang Geng;《International conference on neural information processing》;20181118;全文 * |
Learning to cooperate via an attention-based communication neural network in decentralized multi-robot exploration;Mingyang Geng;《Entropy 2019,21,294》;20190319;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111432015A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111432015B (zh) | 一种面向动态噪声环境的全覆盖任务分配方法 | |
Jiang et al. | Path planning for intelligent robots based on deep Q-learning with experience replay and heuristic knowledge | |
Chen et al. | Robot navigation with map-based deep reinforcement learning | |
Tan et al. | Deepmnavigate: Deep reinforced multi-robot navigation unifying local & global collision avoidance | |
Pham et al. | Navigation of multiple mobile robots using a neural network and a Petri Net model | |
Behjat et al. | Learning robot swarm tactics over complex adversarial environments | |
US20220413496A1 (en) | Predictive Modeling of Aircraft Dynamics | |
Wang et al. | Adaptive environment modeling based reinforcement learning for collision avoidance in complex scenes | |
Jiang et al. | iTD3-CLN: Learn to navigate in dynamic scene through Deep Reinforcement Learning | |
Chen et al. | Deep reinforcement learning-based robot exploration for constructing map of unknown environment | |
Tanneberg et al. | Deep spiking networks for model-based planning in humanoids | |
Sevugan et al. | Optimized navigation of mobile robots based on Faster R-CNN in wireless sensor network | |
Paudel | Learning for robot decision making under distribution shift: A survey | |
Yang et al. | Brain storm robotics: an automatic design framework for multi-robot systems | |
Bi et al. | Hierarchical path planning approach for mobile robot navigation under the dynamic environment | |
Chen et al. | Mitigating Imminent Collision for Multi-robot Navigation: A TTC-force Reward Shaping Approach | |
Srinivasan et al. | Hybrid multi-agent systems | |
Chohra et al. | Neuro-fuzzy expert system E_S_CO_V for the obstacle avoidance behavior of intelligent autonomous vehicles | |
Uchibe | Cooperative behavior acquisition by learning and evolution in a multi-agent environment for mobile robots | |
Beom et al. | Behavioral control in mobile robot navigation using fuzzy decision making approach | |
Cruz-Álvarez et al. | Robotic behavior implementation using two different differential evolution variants | |
Liu et al. | KG-Planner: Knowledge-Informed Graph Neural Planning for Collaborative Manipulators | |
Jia et al. | Hierarchical Perception-Improving for Decentralized Multi-Robot Motion Planning in Complex Scenarios | |
Chuang et al. | A novel approach with bayesian networks to multi-robot task allocation in dynamic environments | |
Tzafestas et al. | Recent algorithms for fuzzy and neurofuzzy path planning and navigation of autonomous mobile robots |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |