基于MADDPG算法的船舶多机械臂弧焊协同焊接方法转让专利

申请号 : CN202011240612.X

文献号 : CN112434464B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 花磊孙宏伟李启明沈言张明盛陈卫彬曹荣祥

申请人 : 中国船舶重工集团公司第七一六研究所江苏杰瑞科技集团有限责任公司

摘要 :

本发明属于焊接控制领域,具体为一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法。包括如下步骤:a)搭建强化学习环境;b)确定机械臂的动作空间和状态空间信息,并初始化状态值;c)由状态值、动作值及协同焊接、避碰的不同任务,设定奖励函数;d)根据当前自身状态值通过演员网络选择当前的动作,并将该动作与a中环境交互得出奖励值及新的状态值;e)将动作和状态输入评判家网络得到该状态和动作下的价值函数;f)由e中得到的价值函数及c中的奖励函数构成损失函数反向传播更新演员网络和评判家网络中的权值,重复d‑f的训练过程直至权重变化满足期望要求。本方法不依赖系统的模型,适应于障碍环境中的复杂弧焊任务。

权利要求 :

1.一种基于MADDPG算法的船舶多机械臂弧焊协同焊接方法,其特征在于,适应于障碍环境中的复杂弧焊任务,该方法包括如下步骤:步骤(a):搭建船舶弧焊协同焊接的强化学习环境;

步骤(a1):模拟刻画基于python软件中的仿真焊接环境的舱室空间;

步骤(a2):模拟加入焊缝,障碍物及机械臂后的仿真焊接环境;

步骤(b):确定机械臂在不同协同焊接任务下强化学习过程中的动作空间u和状态空间s信息,并随机初始化机械臂的状态值;

在环境中模拟机械臂学习过程,根据不同的焊接任务确认构建强化学习所需的状态空间s、动作空间u以及焊缝的状态信息,根据任务的不同具体分为以下两种:第一种情况(b1):一条焊缝仅由一个机械臂焊接的情况下,机械臂的动作空间u、状态空间s以及各个焊缝的焊接情况和位置信息,并初始化机械臂的状态值;

第二种情况(b2)一条焊缝可以同时被多个机械臂焊接的情况下,机器人的动作空间u、状态空间s以及各个焊缝的焊接情况和位置信息;

步骤(c):由步骤(b)中的状态值及协同焊接、避碰的不同任务,设定强化学习过程中引导机械臂学习的奖励函数;

步骤(c)包括两种情况,具体为:第一种情况(c1):设计一条焊缝仅由一个机械臂焊接的情况下焊接焊缝所需的焊接奖励函数、受力惩罚函数以及避障函数的奖励函数;

第二种情况(c2):设计一条焊缝可以同时被多个机械臂焊接的情况下焊接焊缝所需的焊接奖励函数、受力惩罚函数以及避障函数的奖励函数;

步骤(d):根据当前自身状态值通过演员网络选择当前的动作,并将该动作与步骤(a)的强化学习环境交互得出奖励值及新的状态值;

步骤(d1):设计一个输入为机械臂状态值,输出为动作值的演员神经网络;

步骤(d2):将(b1)中的状态值输入到步骤(d1)中的演员神经网络得到每个机械臂动作值;

步骤(d3):由步骤(d2)中得到的每个机械臂动作值,此时对选择的动作值加入噪声得到最终的动作值;再根据此动作与步骤(a2)中的环境进行交互得出机械臂新的状态值以及奖励值;

步骤(e):将动作和状态输入评判家网络得到该状态和动作下的价值函数;

步骤(e1):设计一个以动作值,状态值以及奖励值为输入,动作价值函数为输出的评论家神经网络;

步骤(e2):将(b1)中的状态值,步骤(d3)中的动作值,新的状态值以及奖励值输入到步骤(e1)中的评论家神经网络,得出每个机械臂的动作价值函数;

步骤(f):由步骤(e)中得到的价值函数及步骤(c)中的奖励函数构成损失函数反向传播更新演员网络和评判家网络中的权值,重复步骤(d)到步骤(f)的训练过程直至权重变化满足期望要求;

步骤(f1):由步骤(e2)中得到的机械臂的动作价值函数及步骤(d3)中得到的奖励值分别构造演员网络和评论家网络的损失函数;

步骤(f2):根据反向传播算法计算更新神经网络权重并重复训练过程。

说明书 :

基于MADDPG算法的船舶多机械臂弧焊协同焊接方法

技术领域

[0001] 本发明属于焊接控制领域,具体涉及一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法。

背景技术

[0002] 随着工业及计算机等技术的发展,焊接工业自动化在船舶领域内被广泛应用。焊接任务对于多机器人的协同作业来说,避免与其它焊接机器人发生干涉是一个比较重要的
问题。因此研究多台焊接机器人的路径规划问题对减少焊接工作时间、提高焊接生产效率
有着重要的意义。
[0003] 目前,在多机器人协作系统研究领域,进行了很多科学有效的研究,并且取得了较丰硕的成果。张铁等在文献(张铁,应灿,翟敬梅,“基于运动链末端耦合与解耦的机器人协
同焊接算法”,华南理工大学学报(自然科学版),2013,41(11):56‑66.)提出了一种基于运
动链末端耦合与解耦思想的、具普适性的机器人工作站协同焊接算法。该算法以负责夹持
焊件的运动链为主运动链,使焊缝离散点依次更替并调整到最佳焊接位姿,其他运动链末
端跟踪当前焊缝离散点。翟敬梅等在文献(翟敬梅,应灿,张铁,徐晓,“双机器人协同焊接的
轨迹优化”,焊接学报,2015,36(01):91‑95.)提出一种双机器人协同焊接轨迹优化方法,该
方法以最佳焊位、焊接速度恒定、无碰撞以及一定焊枪工作位姿为约束条件,确定双机器人
初始焊接点可行域,基于焊接平稳性思想,获取最优初始焊接点和其对应的最优焊接轨迹。
Ryu等在文献(Ryu L,Kim T,Oh M,“Workspace analysis to generate a collision‑free 
torch path for a ship welding  robot”,Journal of marine science and 
technology,2009,14(3):345‑358.)提出了一种确定最佳初始位置与生成火炬路径的方
法。借助目标函数,通过调整割炬姿势,可操纵程度和每个关节角度范围的约束以避免碰
撞。此法可通过改变目标函数来使造船期间每个区块的焊接工作自动执行,而无需考虑机
器人的形状。
[0004] 上述方法往往都需要具体的系统模型,而强化学习旨在让智能体探索并学习某特定的未知环境,通过奖励函数设置及值函数更新等方法来引导智能体针对特定状态学会决
策并做出相应的最优动作,从而获得最大的奖励。

发明内容

[0005] 本发明的目的在于提供一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法,该方法简单可靠,适应于障碍环境中的复杂弧焊任务。
[0006] 实现本发明目的的技术解决方案为:一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法,适应于障碍环境中的复杂弧焊任务,该方法包括如下步骤:
[0007] 步骤(a):搭建船舶弧焊协同焊接的强化学习环境;
[0008] 步骤(b):确定机械臂在不同协同焊接任务下强化学习过程中的动作空间u 和状态空间s信息,并随机初始化机械臂的状态值;
[0009] 步骤(c):由步骤(b)中的状态值及协同焊接、避碰的不同任务,设定强化学习过程中引导机械臂学习的奖励函数;
[0010] 步骤(d):根据当前自身状态值通过演员网络选择当前的动作,并将该动作与步骤(a)的强化学习环境交互得出奖励值及新的状态值;
[0011] 步骤(e):将动作和状态输入评判家网络得到该状态和动作下的价值函数;
[0012] 步骤(f):由步骤(e)中得到的价值函数及步骤(c)中的奖励函数构成损失函数反向传播更新演员网络和评判家网络中的权值,重复步骤(d)到步骤(f) 的训练过程直至权
重变化满足期望要求。
[0013] 进一步的,所述步骤(a)具体包括如下步骤:
[0014] 步骤(a1):模拟刻画基于python软件中的仿真焊接环境的舱室空间;
[0015] 步骤(a2):模拟加入焊缝,障碍物及机械臂后的仿真焊接环境。
[0016] 进一步的,所述步骤(b)包括两种情况,具体为:
[0017] 第一种情况(b1):一条焊缝仅由一个机械臂焊接的情况下,机械臂的动作空间u、状态空间s以及各个焊缝的焊接情况和位置信息,并初始化机械臂的状态值;
[0018] 第二种情况(b2)一条焊缝可以同时被多个机械臂焊接的情况下,机器人的动作空间u、状态空间s以及各个焊缝的焊接情况和位置信息。
[0019] 进一步的,所述步骤(c)包括两种情况,具体为:
[0020] 第一种情况(c1):设计一条焊缝仅由一个机械臂焊接的情况下焊接焊缝所需的焊接奖励函数、受力惩罚函数以及避障函数的奖励函数;
[0021] 第二种情况(c2):设计一条焊缝可以同时被多个机械臂焊接的情况下焊接焊缝所需的焊接奖励函数、受力惩罚函数以及避障函数的奖励函数。
[0022] 进一步的,所述步骤(d)具体包括如下步骤:
[0023] 步骤(d1):设计一个输入为机械臂状态值,输出为动作值的演员神经网络;
[0024] 步骤(d2):将(b1)中的状态值输入到步骤(d1)中的演员神经网络得到每个机械臂动作值;
[0025] 步骤(d3):由步骤(d2)中得到的每个机械臂动作值,此时对选择的动作值加入噪声得到最终的动作值;再根据此动作与步骤(a2)中的环境进行交互得出机械臂新的状态值
以及奖励值。
[0026] 进一步的,所述步骤(e)具体包括如下步骤:
[0027] 步骤(e1):设计一个以动作值,状态值以及奖励值为输入,动作价值函数为输出的评论家神经网络;
[0028] 步骤(e2):将(b1)中的状态值,步骤(d3)中的动作值,新的状态值以及奖励值输入到步骤(e1)中的评论家神经网络,得出每个机械臂的动作价值函数。
[0029] 进一步的,所述步骤(f)具体包括如下步骤:
[0030] 步骤(f1):由步骤(e2)中得到的机械臂的动作价值函数及步骤(d3)中得到的奖励值分别构造演员网络和评论家网络的损失函数;
[0031] 步骤(f2):根据反向传播算法计算更新神经网络权重并重复训练过程本发明与现有技术相比,其显著优点在于:
[0032] 本方法简单有效,由于强化学习是端到端的过程,且仅由智能体与环境之间交互及奖励函数的激励来完成,因此不依赖系统的模型,适应于障碍环境中的复杂弧焊任务。

附图说明

[0033] 图1为本发明的焊缝强化学习环境初始化结果,其中(a)为未焊接时,(b) 为焊接时。
[0034] 图2为本发明的演员神经网络的结构。
[0035] 图3为本发明的评论家神经网络的结构。
[0036] 图4为本发明基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法设计流程图。
[0037] 以上的图中:其中A指向的圆代表机械臂;O指向的圆表示障碍物;UW指向的线段表示未焊接的焊缝;W指向的线段表示焊缝已焊接部分;FC表示神经网络中的全连接层;ReLU
表示激励函数中的线性整流函数;tanh表示激励函数中的双曲正切函数;q(s,a)表示该状
态值动作值下的动作价值函数。

具体实施方式

[0038] 下面结合附图对本发明作进一步详细描述。
[0039] 本发明是一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法,特别适应于障碍环境中的复杂弧焊任务。首先,考虑机械臂在一个600×600 的连续空间内进行
协同焊接学习,并对该环境在python软件中进行建模。随后模拟加入多个机械臂,障碍物以
及多条焊缝后的环境,并同样在python软件中进行建模。
[0040] 这里借助摄像头来确定机械臂,障碍物以及焊缝的位置,并确定焊缝被焊接的情况,再借助传感器得到各机械臂的速度(即机械臂的状态空间s),这里焊缝我们假设用直线
型的,而障碍物用圆形的。
[0041] 对于机械臂的动作空间u,这里包括x和y方向上的力fx,fy(都存在正负,都为0时则为静止,且都存在一个上限)。机械臂通过受力得到加速度,结合自身速度在仿真环境中运
动,若达到该环境边缘时,则使当前速度反向(避免跑出边界)。
[0042] 对机械臂在学习环境中的奖励值的设置可以正确的引导其学习过程。首先,在该方法中,每个机械臂都有一个单独的奖励值。由于目标是最短时间内完成焊接任务,我们考
虑在奖励值中加入一个对时间t的一个惩罚,而焊接一条焊缝的奖励值设为100。在机械臂
运动过程会发生机械臂与障碍物或其他机械臂的碰撞,此时我们设置一个碰撞的惩罚,如
若两者距离过小,则会得到一个‑100的奖励,且使此次焊接结束。同时,若考虑机械臂能量
的消耗,可加入一个对机械臂受力的惩罚函数。最后,结合四个函数,予以不同的权重得出
最终的奖励函数。
[0043] 在对机械臂学习过程的状态空间、动作空间及奖励函数做了上述规定后,便可以利用MADDPG算法训练机械臂在环境中的学习过程。
[0044] 首先,对机械臂在强化学习环境的状态值进行初始化。然后设计一个输入为机械臂状态值,输出为动作值的演员神经网络,将初始化的状态值输入该神经网络得出动作值,
此时加入些许噪声得到最终的动作值,再将该动作以及状态值输入到强化学习环境中得出
下一时刻的状态值及该状态动作下的奖励值。再设计一个以动作值,状态值以及奖励值为
输入,动作价值函数为输出的评论家神经网络,将动作值,状态值以及奖励值输入该网络得
出动作价值函数。得到的动作价值函数结合奖励值再分别构造演员神经网络与评论家神经
网络的损失函数,利用反向传播的计算更新神经网络的权重,再更新的神经网络不断进行
以上步骤的重复及训练过程,最终可以得到一个近似收敛到最优值的结果。由此,便完成了
基于 MADDPG强化学习算法的船舶多机械臂弧焊协同焊接的训练学习过程。
[0045] 图4是本发明的设计流程图,由步骤P1‑P6构成,各步骤叙述如下:
[0046] 1)步骤P1
[0047] 本发明是一种基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接方法,因此需要先模拟刻画基于python软件中的仿真焊接环境的舱室空间,再模拟加入焊缝,障碍物
及机械臂后的仿真焊接环境,具体实施步骤如下:
[0048] 第一步:由于本方法采用MADDPG的强化学习方法,动作空间和状态空间将为连续的,所以先使用python软件建立一个600×600的空白连续空间,而后的模拟学习过程将都
会在此空间内进行。并设置机械臂在此环境中的速度上限,以及若机械臂达到该环境边缘
时,则使当前速度反向(避免跑出边界)
[0049] 第二步:将焊缝,障碍物及机械臂加入到第一步中建立的空间中,并通过其中的reset函数初始化焊缝,障碍物及机械臂的位置,再通过gym库中的render 函数可视化,结
果如图1。并设置机械臂在此环境中的速度上限,以及若机械臂达到该环境边缘时,则使当
前速度反向(避免跑出边界)。并在此环境中写入机械臂通过受力得到加速度,以及结合自
身速度编写在仿真环境中运动的规则。依照该规则编写出step函数,即输入状态和动作得
出下一时刻状态和该动作状态下的奖励值。
[0050] 2)步骤P2
[0051] 建立完强化学习环境后,想要在环境中模拟机械臂学习过程,需要先根据不同的焊接任务确认构建强化学习所需的状态空间s、动作空间u以及焊缝的状态信息,根据任务
的不同具体分为以下两种:
[0052] 一.一条焊缝仅由一个机械臂焊接的情况下:
[0053] 状态空间s:第i个机器人在空间内的坐标(xi,yi),并假设这里机器人为简单的圆形,半径为Di,速度vix,viy(初始为0)以及焊接是否结束的状态endstate (若所有弧焊都已
被焊接则完成,这里也可在发生碰撞时使该episode结束)。其中训练以episode的形式进行
的,即一个episode结束时,则通过编写reset函数使机器人状态值回到初始状态。
[0054] 动作空间u:在该空间内,每个机器人受到x,y方向下的两个力fx,fy(都存在正负,都为0时则为静止,且都存在一个上限)。
[0055] 障碍物的信息:我们假设这里的障碍物也为简单的圆形,第k个障碍物在空间内的坐标(xk,yk),半径为Dk。
[0056] 焊缝的状态:第j个弧焊的起点位置(xjs,yjs),终止位置(xje,yje)以及其状态 sj,sj等于0表示已焊上,等于1表示未被焊上,若已被焊上则不再称为焊缝。由于一条焊缝仅有
一个机械臂焊接,则我们假设每个机器人的焊接能力是相同的,即焊完一个焊缝需要时间
th,且只要有机器人到达焊缝起点即表示焊缝已被焊接,因为到达焊缝起点则表示接下来
的th内的动作与状态都将被确定,假设此时的 fx,fy都为0,机械臂沿焊缝运动)。
[0057] 二.一条焊缝可以同时被多个机械臂焊接的情况下:
[0058] 此情况下机器人的状态空间、动作空间以及障碍物的信息同场景一中所述一样,而焊缝的状态将有所变化。
[0059] 焊缝的状态:第j个弧焊的起点位置(xjs,yjs)和终止位置(xje,yje),由于此时需考虑不同机械臂焊接同一条焊缝的情况,焊缝的焊接状态sj将不再是简单的 0‑1分布,而是
一个连续的分布。这里我们仍假设每个机器人的焊接能力是相同的,即焊完一个焊缝需要
时间th。则sj如下:
[0060]
[0061] 其中tij表示机器人i在第j个焊缝工作的时间,初始都为0,只有到达焊缝的起始位置是开始计算。若sj为0时,则表述焊接第j个焊缝完毕。
[0062] 3)步骤P3
[0063] 步骤P3根据由P1中的信息以及不同协同焊接任务的要求设计强化学习的价值函数。根据不同的任务具体设计如下:
[0064] 一.一条焊缝仅由一个机械臂焊接的情况下:
[0065] 针对每个机器人的价值我们分为以下几块:
[0066] (1)对输入的力的惩罚(力的大小与需要的能量有关,能量则与机器人消耗的电量相关):
[0067]
[0068] (2)机器人所处位置是否为弧焊(机械臂的位置是否与焊缝的起点位置相同,且焊缝未被焊接)的奖励:
[0069]
[0070] (3)对时间t的惩罚(目的是焊接的越快越好):
[0071] rit=‑t
[0072] (4)对碰撞的惩罚(即进行避碰):
[0073]
[0074] 其中pi,pk分别为机械臂和障碍物的中心位置坐标,而Di,Dk则表示为它们的半径;pm表示除自身以外的其他机械臂的中心位置坐标,而Dm则表示它们的半径。若碰撞到障碍物
或其他机械臂,不止要受到惩罚还会使该episode提前结束。最终的价值函数如下:
[0075] r=k1rif+k2rih+k3rit+k4ric
[0076] 这里的k1,k2,k3,k4表示每个价值的权重,取值取决于目标的侧重性,比如若侧重时间最短,则k3取较大值,若侧重能耗小,则k1取较大值。
[0077] 二.一条焊缝可以同时被多个机械臂焊接的情况下:
[0078] 由于在该场景下需考虑一条焊缝可以同时被多个机械臂焊接的问题,焊缝焊接状态与第一种情况不同,则在焊接奖励函数部分将有所变化,如下式:
[0079]
[0080] 其中设mij表示第i个机器人是否在焊接第j个焊缝,若是则为1,否则为0。此价值表示为焊接了一个时间步长所得到的价值,若sjh为0时,则焊接第j个焊缝完毕,mij全置为0。
其他三个部分的价值将无需变化,与场景一中相同。
[0081] 4)步骤P4
[0082] 步骤P4根据当前自身状态值(初次为P1中reset函数得到的初始化状态值,而后为P4通过step函数得到的下一步的状态值)通过演员网络选择当前的动作, 并将该动作与P1
中环境交互得出奖励值及新的状态值。设计按下列步骤实现:
[0083] 第一步:设计如图2所示的演员神经网络,该网络由三层全连接层构成,且每层后面都连接一个激励函数,每一层全连接层后的数字代表输出的为几维向量,即最后将输出
动作值,ReLU激励函数的作用是简化梯度下降以及反向传播过程,使收敛速度更快。而最后
一层全连接层后接tanh激励函数是为了将action的值控制在[‑1,1]之间,因为在环境中将
所受的力限制在此区间内。且在此算法中每个机械臂都需有一个演员神经网络,每个机械
臂只用到自身的信息,即称为分布式的演员结构。
[0084] 第二步:将机械臂的状态值输入到第一步设计的演员神经网络,得出各机械臂的动作值。
[0085] 第三步:对得到的动作值加入适当噪声,作用如同Epsilon‑Greedy算法(在当前观测下机械臂有ε的概率选择所有当前动作,同时也有1‑ε的概率选择其余的任意非当前时刻
的动作。)可以探索更广的空间。然后将该动作值与状态值带入P1环境中的step函数得出下
一时刻的状态及该动作状态下的奖励值。
[0086] 5)步骤P5
[0087] 步骤P5将所有机器人的状态信息以及P4中所有机器人的当前动作输入评论家网络得到该动作状态下的动作价值函数。设计按下列步骤实现:
[0088] 第一步:设计如图3所示的评论家网络,该网络先对all states输入一层全连接层进行预处理,然后将得到的结果与all actions拼接,再通过三层全连接网络,逐层递进,最
后将维度置为1,得出动作价值函数。其中最后一层全连接层未接 ReLU激励函数,因为此动
作价值函数需有复数(表示该动作产生了负反馈)。同样的,每个机械臂也存在一个评论家
神经网络,由于用到所有机械臂的信息,即称为集中式的评论家结构。
[0089] 第二步:将所有机械臂状态值和P4中得到的所有机械臂的动作值输入到第一步中设计的评论家神经网络得到该状态动作下的动作价值函数。
[0090] 6)步骤P6
[0091] 步骤P6由P5中得到的动作价值函数及P4中的奖励值构成损失函数反向传播更新演员网络和评判家网络中的权值。具体实现步骤如下:
[0092] 第一步:分别构建演员网络和评判家网络的损失函数。这里为了使网络的更新稳定,这里对演员和评论家网络都加入了相应的目标网络,目标网络即结构相同,但是更新方
式不同。且由更新方式不同可分为hard update(每过指定的epsiode, target网络参数更
新成与相应网络相同的参数,其他时候不更新)和soft update 如下:
[0093]
[0094] 即每步都更新,但更新更加缓慢。其中θQ,θQ',θμ,θμ'分别表示评论家网络,评论家目标网络,演员网络,演员目标网络的权值,τ表示更新速率的一个参数。我们首先通过目标
演员网络及评论家网络得到现实的动作价值函数:
[0095]
[0096] 其中ri表示第i个机械臂的奖励值, 表示通过目标演员网络得到的动作值带入到评论家网络得到的动作价值函数,x'表示下一时刻的所有机械臂的状态总和,a'1,...,
a'N表示通过目标演员网络得到的机械臂动作值,oj表示该机械臂的观测值,μj表示智能体
选择动作值采用的策略,对应于上述网络参数θ。然后利用该现实的动作价值函数得到TD‑
error作为评论家网络的loss函数:(上式中还有参数没有中文含义)
[0097]
[0098] 其中S为在经验池中选中的样本数,这里的Q则为目标的Q值,而更新演员网络用的梯度如下:
[0099]
[0100] 第二步:根据反向传播算法,通过对第一步的损失函数进行梯度下降来更新演员和评论家神经网络的权重,相应的目标网络用soft update方法进行更新。将更新权重后的
神经网络不断进行以上步骤的重复及训练过程,最终便可以得到一个近似收敛到最优值的
结果。由此,便完成了基于MADDPG强化学习算法的船舶多机械臂弧焊协同焊接的训练学习
过程。