基于强化学习算法的异构模块化机器人自重构规划方法与流程

文档序号:18820096发布日期:2019-10-09 00:37阅读:247来源:国知局
基于强化学习算法的异构模块化机器人自重构规划方法与流程

本发明属于人工智能规划领域,具体涉及应用强化学习算法优化模块化机器人在自主变形过程中的规划。



背景技术:

随着机器人在各个领域的广泛应用,机器人越来越多的应用到非结构环境中完成作业,而对于未知的工作环境以及不同的工作任务,需要机器人可以通过改变其构型来达到适应环境的要求,这种可以动态、自主改变构型以适应任务需要的机器人,称之为自重构模块化机器人。自重构模块化机器人是由一系列结构简单,功能各异的单元模块组成。为了实现更好的任务性与环境适应性,当多模块系统运行时,各模块单元分别通过连接与断开动作,自主实现构型变化,以满足环境与任务的需要。与普通机器人所不同的是它摆脱了固定构型的限制,并且能够自主完成构型的变化,因此针对未知环境下作业,例如灾难救援、核电站维保及航天探索领域具有显著的优势。

由多模块构成的自重构机器人形变过程如图1所示。模块化机器人虽然可以根据环境及任务性的不同来改变结构,以达到最理想的工作构型,但是重构运动中需要对每一个参与模块进行运动规划,而且由当前构型向目标构型变换的方式并不唯一,理论上构型模块数越多,能达到目标构型的解就越多,因此如何从减少参与模块数,降低模块搬运步数,缩短重构时间等方面寻求重构最优解,成为自重构研究领域的一个关键问题。

一般的自重构算法针对的都是构型较为简单的模块化机器人,注重的是运动过程中的形变。对于构型复杂、模块较多的机器人,现有的算法为保证初始构型到目标构型的有解性,会引入中间构型作为过渡,这将会导致模块移动次数过多,效率低下。如何消除中间构型,实现空间模块机器人直接从初始构型到目标构型的快速转变,是亟待解决的问题。

近年来智能算法蓬勃发展,其中深度强化学习算法在机器规划和控制等领域中得到了广泛的研究和应用。特别是alphago和alphazero的横空出世,将深度强化学习在任务规划方面的能力发挥到了极致。



技术实现要素:

要解决的技术问题

为了避免现有技术的不足之处,提升自重构效率,本发明提出一种基于强化学习算法的异构模块化机器人自重构规划方法。

技术方案

一种基于强化学习算法的异构模块化机器人自重构规划方法,所述的模块机器人的规格相同,并且每个模块至少有两个面可以用于对接;其特征在于步骤如下:

步骤1:给定一个模块数为n的初始模块化机器人构型和目标构型,分别将两个构型转化为n×n×n的矩阵,并且初始化神经网络参数:

定义构型状态s为一个n×n×n的矩阵,将模块从1到n进行编号,然后将模块化机器人构型放到n×n×n的矩阵中去,有模块的地方对应相应模块编号,没有模块的地方设置为0;

定义摘取i号模块并与j号模块的k面对接为一个可执行动作a,假设每个模块有m个对接面,动作空间的大小为n×(n-1)×m,这也是策略神经网络的输出维数;

定义回报函数r为所有模块距离差值的和的平均,始终将1号模块的位置规定为基准点,坐标固定为(0,0,0),其余模块以1号模块为基准定位,回报函数r的计算公式如下:

其中xi′、yi′和zi′分别是目标构型中编号为i号模块的笛卡尔坐标,xi、yi和zi分别是当前构型中编号为i号模块的笛卡尔坐标;

定义平均行动价值q为策略价值网络输出的价值评估v的平均值,定义总行动价值w为价值评估v的总和,定义n为动作节点访问次数,其中q=w/n;

定义向量p为策略价值网络输出的策略评估值,也是某一构型下可执行动作a对应的先验概率,向量p的维数就是动作空间的维数,具体为n×(n-1)×m;

步骤2:将初始构型作为根节点,此时,该初始构型还未被探索,因此调用蒙特卡洛树的扩展及评估阶段,通过策略价值网络得到初始构型下的先验概率p和当前状态的评分v,并通过环境得到回报函数r(s),然后就可以扩展初始构型的子节点,并将子节点中存储的信息进行初始化;扩展完成后,进行蒙特卡洛树的回传步骤,更新叶子节点到根节点路径上的每个节点中保存的统计信息;此时根节点已被展开,就可以进行蒙特卡洛树当中的选择阶段,选择总体评分最高的分支作为下一步动作;接下来就是重复执行选择、扩展及评估和回传三个步骤一定次数;然后根据当前构型下分支的访问次数得到每个构型的访问概率,选择访问概率最高的点作为下一步执行的动作;每次搜索结束后即找到目标构型或达到设定步数上限,给出规划路径,并保存规划样本,样本形式为(s,π,z);

所述的蒙特卡洛树包括选择、扩展及评估和回传;

a)选择

选择阶段从一个构型节点开始,沿着建立好的树结构,选择对应f(s)=q+u+r最大的分支,其中q是平均行动价值,u是置信上限,r是回报函数,u的具体公式如下:

其中cpuct控制探索和利用之间的平衡,n(s,b)表示父节点的访问次数,n(s,a)表示该父节点下a动作子节点的访问次数;

整个过程在遇到完全未知的构型后停止;

b)扩展及评估

遇到完全未知的构型时,调用策略价值网络,把当前构型和目标构型的构型矩阵s作为输入传入网络,策略价值网络会返回先验概率p和当前状态的评分v,环境也会给出回报函数r(s)作为当前构型的评估,得到当前构型下所有可行的动作以及对应的先验概率后,就可以扩展未知构型的子节点,并将子节点中存储的信息初始化为n(s,a)=0,w(s,a)=0,q(s,a)=0,p(s,a)=p,r(s)=r;

c)回传

当扩展与评估阶段完成后,更新叶子节点到根节点路径上的每个节点中保存的统计信息,统计信息包括节点访问次数、总行动价值以及平均行动价值,更新公式为:

n=n+1

w=w+v

q=(w+v)/(n+1)

d)执行

在重复执行a~c一定次数后,根据当前构型下分支的访问次数得到每个构型的访问概率,选择访问概率最高的点作为下一步执行的动作;

步骤3:当样本数达到给定值后,将收集到的样本(s,π,z)输入策略价值网络进行训练,训练目标是最小化损失函数l=(z-v)2tlogp+c||θ||2,并在完成训练后更新神经网络参数;

所述的策略价值网络的输入为当前模块构型矩阵和目标模块构型矩阵,输出为该构型下每一个可行动作的概率p以及该状态评分v;

输入的当前模块构型矩阵和目标模块构型矩阵首先经过256个3×3、步幅为1的卷积核构成的卷积层,然后经过批归一化处理和非线性激活函数relu输出;接下来经过一串残差模块,在每个残差模块内部,输入信号依次经过由256个3×3、步幅为1的卷积核构成的卷积层、批归一化层、非线性激活函数relu、由256个3×3、步幅为1的卷积核构成的卷积层、批归一化层,然后和输入部分的直连信号叠加,最后经过非线性激活函数relu输出;

在经过一串的残差模块之后,信号最后进入输出模块,输出模块分为策略输出和价值输出两部分,其中策略输出部分首先经过包含两个1×1卷积核的卷积层,然后经过批归一化和relu激活函数,最后通过一个全连接层输出n×(n-1)×m维的向量,对应所有可能移动动作的概率;价值输出部分首先经过包含1个1×1卷积核的卷积层,然后经过批归一化和relu激活函数,接着是256维输出的全连接层和relu激活函数,最后再通过一个1维输出的全连接层,输出对于当前构型的价值评估;

步骤4:参数更新后,再次从初始构型开始进行蒙特卡洛搜索;重复步骤2-3,不断迭代搜索最优结果;在每次搜索完成后,更新步数最少的规划路径。

所述的步骤3中的一串残差模块为3-5个。

有益效果

本发明提出了一种利用强化学习解决模块化机器人自重构问题的算法,在已知初始构型和目标构型的前提下,得到模块的高效搬运规划,显著提升自重构效率。

附图说明

图1自重构变形示意图(该图展示了二维构型自重构变换的过程,实际算法完全可以解决三维构型的自重构问题)

图2蒙特卡洛算法流程(其中a部分代表选择阶段,b部分代表扩展及评估阶段,c部分代表回传阶段,d部分代表执行阶段)

图3总体算法框图

具体实施方式

现结合实施例、附图对本发明作进一步描述:

本发明的目的是针对数量为n(n>100)个的模块组成的模块化机器人,利用强化学习算法实现自重构模块化机器人从任意初始构型到指定目标构型的模块拆装次序,使得装配次数尽量少,提升自重构效率。

算法应用的对象主要是由规格相同的模块构成的机器人,并且每个模块至少有两个面可以用于对接。

为了实现上述目的,本发明所采用的技术方案包括以下步骤:

步骤一:给定一个模块数为n的初始模块化机器人构型和目标构型,分别将两个构型转化为n×n×n的矩阵,并且初始化神经网络参数。

步骤二:将初始构型作为根节点,此时,该初始构型还未被探索,因此调用蒙特卡洛树的扩展及评估阶段,通过策略价值网络得到初始构型下的先验概率p和当前状态的评分v,并通过环境得到回报函数r(s),然后就可以扩展初始构型的子节点,并将子节点中存储的信息进行初始化。扩展完成后,进行蒙特卡洛树的回传步骤,更新叶子节点到根节点路径上的每个节点中保存的统计信息。此时根节点已被展开,就可以进行蒙特卡洛树当中的选择阶段,选择总体评分最高的分支作为下一步动作。接下来就是重复执行选择、扩展及评估和回传三个步骤一定次数。然后根据当前构型下分支的访问次数得到每个构型的访问概率,选择访问概率最高的点作为下一步执行的动作。每次搜索结束后(找到目标构型或达到设定步数上限),给出规划路径,并保存规划样本,样本形式为(s,π,z)。

步骤三:当样本数达到给定值后,将收集到的样本(s,π,z)输入策略价值网络进行训练,训练目标是最小化损失函数l=(z-v)2tlogp+c||θ2,并在完成训练后更新神经网络参数。

步骤四:参数更新后,再次从初始构型开始进行蒙特卡洛搜索。重复步骤二、三,不断迭代搜索最优结果。在每次搜索完成后,更新步数最少的规划路径。随着训练的不断优化,完成构型转化的步数越少。

具体步骤如下:

步骤一:参数定义

定义n为构成空间模块机器人的模块总个数。

定义构型状态s为一个n×n×n的矩阵,将模块从1到n进行编号,然后将模块化机器人构型放到n×n×n的矩阵中去,有模块的地方对应相应模块编号,没有模块的地方设置为0。

定义摘取i号模块并与j号模块的k面对接为一个可执行动作a,假设每个模块有m个对接面,动作空间的大小为n×(n-1)×m,这也是策略神经网络的输出维数。

定义回报函数r为所有模块距离差值的和的平均,始终将1号模块的位置规定为基准点,坐标固定为(0,0,0),其余模块以一号模块为基准定位,r具体的计算公式如下:

其中xi′、yi′和zi′分别是目标构型中编号为i号细胞的笛卡尔坐标,xi、yi和zi分别是当前构型中编号为i号细胞的笛卡尔坐标。

定义平均行动价值q为策略价值网络输出的价值评估v的平均值,定义总行动价值w为价值评估v的总和,定义n为动作节点访问次数,其中q=w/n。

定义向量p为策略价值网络输出的策略评估值,该向量的维数就是动作空间的维数,具体为n×(n-1)×m

步骤二:建立蒙特卡洛树

蒙特卡洛树的每个节点中保存了用于决策一个构型s下如何选择动作a的信息。这些信息包括在构型s下访问动作节点a的次数n(s,a),回报函数r(s),总行动价值w(s,a),平均行动价值q(s,a)和在构型s下选择动作a的先验概率p(s,a)。

建立树的过程包括选择、扩展及评估和回传。通过不断的迭代过程,可以得到每个构型s下的动作概率分布π,按照π的概率分布执行下一步动作。

a)选择

选择阶段从一个构型节点开始,沿着建立好的树结构,选择对应f(s)=q+u+r最大的分支,其中q是平均行动价值,u是置信上限,r是回报函数,u的具体公式如下:

其中cpuct控制探索和利用之间的平衡,p(s,a)是先验概率,n(s,b)表示父节点的访问次数,n(s,a)表示该父节点下a动作子节点的访问次数。

整个过程在遇到完全未知的构型后停止。选择过程综合考虑了行动价值、节点的探索程度以及该节点在实现构型转化过程中的成功率。

b)扩展及评估

遇到完全未知的构型时,调用策略价值网络,把当前构型和目标构型的构型矩阵s作为输入传入网络,策略价值网络会返回先验概率p和当前状态的评分v,环境也会给出回报函数r(s)作为当前构型的评估,其中向量p是当前构型下每个可执行动作a对应的概率。得到当前构型下所有可行的动作以及对应的先验概率后,就可以扩展未知构型的子节点,并将子节点中存储的信息初始化为n(s,a)=0,w(s,a)=0,q(s,a)=0,p(s,a)=p,r(s)=r

c)回传

当扩展与评估阶段完成后,更新叶子节点到根节点路径上的每个节点中保存的统计信息,具体包括节点访问次数、总行动价值以及平均行动价值,更新公式为:

n=n+1

w=w+v

q=(w+v)/(n+1)

d)执行

在重复执行a~c步骤m次(m这里设置为400,可供根据构型复杂度和细胞数目调整)之后,根据当前构型下分支的访问次数得到每个构型的访问概率,选择访问概率最高的点作为下一步执行的动作。

重复迭代a~d步骤,直到找到目标构型或达到迭代上限k(k根据模块个数和构型复杂度确定),在到达迭代终止条件(找到目标构型或达到迭代上限)后,将迭代过程保存为一系列样本,样本形式为一个元组(s,π,z),其中s是当前构型的描述,π是在该构型下mcts返回的动作概率分布,z是一局规划结束后对该局的评价,若在迭代上限k内找到目标构型,则z为1,若超过迭代上限k还未搜到目标构型,则z为0。这些样本用于后面策略价值网络的训练和参数优化。

步骤三:策略价值网络搭建

通过反复迭代蒙特卡洛树,可以得到训练样本来优化神经网络,样本的生成过程见附图2。

这里定义策略价值网络的输入为当前模块构型矩阵和目标模块构型矩阵,输出为该构型下每一个可行动作的概率p(策略部分)以及该状态评分v(价值部分)。

输入的构型矩阵s首先经过256个3×3、步幅为1的卷积核构成的卷积层,然后经过批归一化处理和非线性激活函数relu输出。接下来经过一串残差模块(3-5个)。在每个残差模块内部,输入信号依次经过由256个3×3、步幅为1的卷积核构成的卷积层、批归一化层、非线性激活函数relu、由256个3×3、步幅为1的卷积核构成的卷积层、批归一化层,然后和输入部分的直连信号叠加,最后经过非线性激活函数relu输出。

在经过一系列的残差模块之后,信号最后进入输出模块。输出模块分为策略输出和价值输出两部分,其中策略输出部分首先经过包含两个1×1卷积核的卷积层,然后经过批归一化和relu激活函数,最后通过一个全连接层输出n×(n-1)×m维的向量,对应所有可能移动动作的概率。价值输出部分首先经过包含1个1×1卷积核的卷积层,然后经过批归一化和relu激活函数,接着是256维输出的全连接层和relu激活函数,最后再通过一个1维输出的全连接层,输出对于当前构型的价值评估。

在迭代蒙特卡洛树的过程中,已经积累了一部分样本,当样本数达到给定值(一般为100或者更多)时,就可以开始训练神经网络了。优化神经网络的目标就是让神经网络预测的动作概率p和构型的s反馈函数v分别与样本(s,π,z)中的π和z拟合,为此设计损失函数为:

l=(z-v)2tlogp+c||θ||2

策略价值网络训练的目标就是在保存的数据集上最小化上述损失函数,其中θ就是神经网络参数,c是控制正则化程度的参数。

步骤四:保存最短路径搜索结果

在进行一次完整的蒙特卡洛搜索之后(即到达目标构型),便会保存从初始构型到目标构型的规划路径以及总步数。迭代过程中,只保留步数最少的一次搜索最优结果。显然,随着迭代次数增加,总步数越少,搜索结果越优。

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