基于深度强化学习的单臂机器人末端姿态控制
2022-09-05陈乃建董春超张来伟包佳伟李亚辉李映君
范 振,陈乃建,董春超,张来伟,包佳伟,李亚辉,李映君
(济南大学 机械工程学院,山东 济南 250022)
随着机械自动化技术的发展,机械臂在搬运、装配等工作场景中的应用逐渐增多。为了提高自动化生产的效率,改善产品质量,对机器人控制技术提出了更高的要求。在提出或改进一种控制算法时,需要对该算法进行测试,验证算法是否满足要求。倒立摆系统是理想的测试平台,与现实中多种系统相似,例如高楼的风振效应、双足机器人等[1-2]。倒立摆系统是一种非线性欠驱动系统,结构简单,但是为了保证摆杆的平衡,需要复杂的控制算法与策略,常用于测试线性、非线性控制理论,可以验证新提出的控制技术能否解决较强的非线性、不稳定问题。
目前常用的倒立摆系统为直线倒立摆与旋转倒立摆。由于直线倒立摆所需空间大,并且具有行程限制,相较而言,旋转倒立摆结构简单,具有不稳定性显著、非线性以及耦合性强等特点,因此在非线性控制理教学与研究中应用广泛[3-5]。目前常用的工业机器人与旋转倒立摆运动方式及结构相似,可以衡量设计、改进的控制算法的优劣性及其应用于工业机器人控制的可行性,因此旋转倒立摆是较理想的研究平台。马永凌[6]利用拉格朗日方程对倒立摆在不稳定平衡点上建立数学模型,并成功通过显示模型预测控制(EMPC)实现控制摆杆稳定竖直向上。Agarana等[7]利用拉格朗日变换法建立倒立摆模型,利用拉普拉斯变换法求解模型,合成的代数方程比原动力学系统的二阶微分方程模型更简单,更容易求解,但是采用拉格朗日方程的方法建立数学模型,不仅方法复杂且精度略低。为了使旋转臂的偏差最小化,Dwivedi等[8]提出基于分数阶演算的双闭环分数阶控制器的控制方法,并采用基于频率响应的图形调整方法调节控制器参数。由于扰动会影响非驱动关节,对控制系统进行干扰力补偿更复杂,因此Bonifacio等[9]研究三连杆倒立摆的欠驱动系统的稳定性,建立机器人耦合机电系统的数学模型,基于吸引椭球体方法设计了机电系统鲁棒镇定控制器,但是该方法较复杂,计算量大。
目前大部分研究方法以监督与非监督学习的被动学习方式为主,随着学者们对深度强化学习研究的深入,深度强化学习在控制领域也有了一定的应用[10-12]。深度强化学习并不依靠研究人员的经验,而是通过自身不断主动地试错并根据反馈逐渐习得准确、高效完成目标任务的能力。王建平等[13]将深度强化学习算法用于二连杆避障实验,结果表明,该算法可以控制机械臂避开障碍物,验证了二维平面内深度强化学习可以有效控制机器臂,但该研究未考虑机械臂的速度、角速度以及臂与臂之间的摩擦等因素,在实际应用中易出现实际结果与预期不符,并且控制参数易陷入局部最优解。由于在连续空间中易出现对策略更新产生负面影响的价值过估计现象,因此康朝海等[14]提出根据Critic网络的Loss函数值与指数加权移动平均值的动态差异,确定双延迟深度确定性策略梯度(twin delayed deep deterministic policy gradient,TD3)算法中延迟更新Actor网络的频率,但是基于延迟更新方法的TD3算法采用均匀采样,未考虑经验值的优劣。
为了研究简单、高效的控制算法,本文中建立单臂机器人倒立摆仿真模型,采用实际测得的运动参数对所建立的仿真模型进行约束,以保证在实际应用中最大程度地还原实验结果,并采用TD3算法与深度确定性策略梯度(deep deterministic policy gradient,DDPG)算法进行训练比较,使机械臂可以在最短时间内将末端摆杆立起,并以最小的控制力使摆杆保持该姿态。
1 单臂机器人倒立摆建模
单臂机器人倒立摆系统如图1所示。为了简化计算过程并且保证仿真结果与实际应用结果相近,在建模过程中对各关节进行角度变换并代入摩擦力。
(a)实物(b)仿真模型图1 单臂机器人倒立摆系统
1.1 角度转换
根据单臂机器人的实际尺寸、质量等参数建立SolidWorks模型,将导出的SolidWorks模型文件与模型参数文件添加至Simulink环境,并为单臂机器人倒立摆仿真模型添加速度约束和加速度约束。图2所示为单臂机器人倒立摆系统简化模型,其中α为机械臂旋转的角度,β为摆杆相对于机械臂旋转的角度。
oxy—基坐标系;ox1y1—机械臂旋转坐标系;o1x2y2—机械臂末端坐标系;o1x3y3—摆杆旋转坐标系;α—机械臂旋转的角度,-π≤α≤π;β—摆杆相对于机械臂旋转的角度,-π≤β≤π;ox′y′—摆杆旋转点的基坐标系;θ—摆杆与竖直方向的夹角,-π≤θ≤π。图2 单臂机器人倒立摆系统简化模型
单臂机器人倒立摆目的是使用最小的控制力在最短时间内将摆杆保持竖直向上,因此需要确定摆杆与竖直方向的夹角。所建立单臂机器人倒立摆系统简化模型中的夹角β为摆杆相对于机械臂旋转的角度,因此需要对β进行计算,转换为摆杆与竖直方向的夹角θ。
由于摆杆相对于机械臂旋转,机械臂基于底座转动,因此可以根据方程(1)计算θ,其中-π≤α,β,θ≤π。与进行坐标转换的方法相比,只对单臂机器人倒立摆仿真模型进行角度转换的方法不仅使单臂机器人倒立摆系统简化模型更简洁,而且减少了计算量,从而加快计算速度。
(1)
1.2 摩擦补偿
机械臂的运动是由伺服电机通过减速器带动的,而减速器存在多种摩擦,会对机械臂的运动产生一定的影响,因此为了提高单臂机器人倒立摆仿真模型精度,在单臂机器人倒立摆系统简化模型中加入机器人的摩擦模型。常用的摩擦模型主要有库伦摩擦模型、库伦与黏滞摩擦模型(见图3)、静摩擦-库伦摩擦-黏滞摩擦模型以及Stribeck摩擦模型。
基于黏液的特性,黏滞摩擦力的大小与速度有关,方向与运动方向相反。黏性摩擦模型一般与库伦摩擦模型搭配使用,可以更好地拟合实验数据。库伦与黏滞摩擦模型的表达式为
图3 库伦与黏滞摩擦模型
f=fCsignv+fvv,
(2)
式中:f为摩擦力;fC为库伦摩擦力;v为速度;fv为黏滞摩擦系数。
由于单臂机器人机械臂进行俯仰运动,机械臂的质心位置随运动而变化[15],因此为了探讨机械臂实际摩擦情况,对机器臂进行摩擦力参数辨识,机械臂的摩擦辨识数据散点图如图4所示。从图中可以看出,机械臂的摩擦辨识数据散点图与库伦与黏滞摩擦模型相似,因此选用库伦与黏滞摩擦模型作为本研究的摩擦模型。
图4 机械臂的摩擦辨识数据散点图
2 深度强化学习
2.1 深度学习与强化学习
深度学习(deep learning,DL)通过建立神经网络对数据进行处理与分析,目前在图像处理、语音识别等领域广泛应用。强化学习(reinforcement learning,RL)是与环境相互作用的智能体,可以通过试验中的错误进行训练学习,从而制定出最优策略,已广泛应用于自然科学、社会科学等领域。深度强化学习(deep reinforcement learning,DRL)将深度学习与强化学习相结合,既有深度学习的感知能力,又有强化学习的决策能力,而且具有较强的非线性处理能力,可在未知的环境中处理决策问题[16]。
目前,强化学习已有多种算法,例如DDPG算法、深度Q学习(又称深度Q网络,deep Q-network,DQN)、无监督强化和辅助学习、路径一致性学习(path consistency learning,PCL)等[17-20]。其中,TD3、DDPG算法均为无模型并且可在线也可离线的强化学习方法,同时观察空间可以是连续的,也可以是离散的。DQN算法行动空间是离散的,只能输入离散数据,但是将空间划分过多,难以收敛;DDPG算法的行动空间是连续的,可以对输出数据进行细微调整,相较于多数算法,DDPG算法较简单、高效。TD3算法是以DDPG算法为基础进行改进的,解决了DDPG算法的过估计问题,并且也是针对连续行为的策略学习方法。由于本文中单臂机器人倒立摆仿真模型简单,观察信息与行动信息较简单,因此使用TD3、DDPG算法进行训练对比。
2.2 DDPG算法
DDPG算法基于策略梯度(policy gradient,PG)算法与确定性行为策略算法发展而来,主要针对的是连续行为。通过反复迭代进行学习,每次迭代需要根据神经网络近似值函数更新策略。DDPG算法采用的网络为Actor-Critic网络,其中Actor网络是近似策略函数的神经网络,分为Actor当前策略网络和Actor目标策略网络;Critic网络是近似值函数的神经网络,分为Critic当前网络、Critic目标网络。DDPG算法原理如下:设计奖励函数,智能体给单臂机器人倒立摆仿真模型控制力使其摆动,并基于该控制力产生的倒立摆模环境状态数据与奖励值对网络参数与策略进行优化,由智能体再次输出控制力。DDPG算法流程如图5所示。
首先根据Actor网络当前策略网络给单臂机器人发送在t时刻智能体选择并执行的行为at,
at=μ(st|θμ)+Nt,
(3)
式中:st为在t时刻执行行为at前智能体观察到的环境状态数据;θμ为Actor当前策略网络参数;概率分布函数μ(st|θμ)为t时刻的策略;Nt为t时刻的噪声。
单臂机器人倒立摆仿真模型在执行后输出新的奖励值与环境状态,将环境状态存储并随机采样n个数据作为训练数据,然后结合训练数据与Actor目标策略网络、Critic目标网络,计算Critic目标网络的估计动作值Q,并根据均方差损失函数更新Critic当前网络的参数,再计算Actor当前策略网络的策略梯度,并更新Actor当前策略网络参数。最后对Actor目标策略网络和Critic目标网络进行软更新,
at—在t时刻智能体选择并执行的行为;st—在t时刻执行行为at前智能体观察到的环境状态数据;st+1—在t时刻执行行为at后智能体观察到的环境状态数据;rt—在t时刻环境状态为st时执行行为at后返回的奖励值;1,2,…,9—执行顺序。图5 深度确定性策略梯度算法流程
(4)
式中:θμ′为目标策略网络参数;θQ′为目标网络参数;θQ为当前网络参数;τ为更新系数,取值较小,本文中取值为0.001。
2.3 TD3算法
由于DDPG算法通过估计动作值Q寻找最优策略;但是噪声等因素会引入误差,导致Q值比真实值更大,从而导致算法不收敛或者效果较差,因此Fujimoto等[21]对DDPG算法进行改进,提出TD3算法。TD3算法以DDPG算法为基础,但是相比于DDPG算法,TD3算法采用双Critic网络,根据贝尔曼方程计算2个Q值,并选取其中较小的Q值作为本次更新的目标,以避免Q值被过估计。TD3算法流程如图6所示。为了减小误差,TD3算法采用延迟Actor网络更新的方法。本文中Critic网络每更新2次,Actor网络更新1次,在减小累计误差的同时进一步确定Q值。最后为了减小误差并改善Critic网络估值的准确性与鲁棒性,采用目标策略平滑,即在计算Critic目标网络时,对Actor网络给出的at值加入随机的噪声,使at具有一定的随机性,从而减小误差,改善算法稳定性。
at—在t时刻智能体选择并执行的行为;st—在t时刻执行行为at前智能体观察到的环境状态数据;st+1—在t时刻执行行为at后智能体观察到的环境状态数据;rt—在t时刻环境状态为st时执行行为at后返回的奖励值;Nt—t时刻的噪声;网络的Q函数;Q1—Critic 1网络的Q函数;γ为折扣因子,趋近于1但小于1,本文中取值为0.99。图6 双延迟深度确定性策略梯度算法流程
3 构建神经网络
3.1 设置奖励函数
奖励是指智能体给环境发送动作后,环境给智能体的反馈;奖励函数是包含当前时刻的状态、动作和下个时刻状态的标量函数。强化学习训练过程中智能体在本组训练中通过奖励函数获得回报即奖励值,并且智能体的目的是使获取的奖励值最大化。
图7所示为奖励函数简单模型。环境初始状态为A1,通过强化学习方法进行训练的目的是通过智能体使环境状态变为A4,如果没有给智能体设置奖励函数,即每一步没有奖励值或惩罚值,则智能体对下一步方向的选择并没有明确的依据;如果只设置奖励值而不设置惩罚值,智能体对下一步的方向选择有了依据,就可据此使环境状态达到A4,但是同时没有惩罚值可能会使智能体投机取巧,通过在A1、A2、A3之间循环就可以一直获取高回报值;如果基于使能设计奖励[22],即当智能体给出正确的动作则给予奖励,给出错误的动作则给予惩罚,这样就保证了策略的一致性。由此可知,需要设计优秀的奖励函数引导智能体实现目标。
A1、A2、A3、A4—仿真环境的4种状态;+1、+10、-10—改变状态所得分数。图7 奖励函数简单模型
基于摆杆与竖直方向的角度θ、机械臂与竖直方向的角度α以及上一步回报值设计奖励函数,不仅引导智能体输出的控制力更好地控制机械臂调整摆杆位置,而且加强了一个周期内每一步与上一步之间的联系,即
(5)
其中
(6)
(7)
(8)
3.2 构建神经网络
在强化学习中使用神经网络可以提高训练的数据量,并且神经网络通过梯度下降使真实值与预测值之间的差距最小,可以对任意函数进行逼近。
单臂机器人倒立摆仿真模型输出的环境状态为机械臂旋转角度的正弦值与余弦值、机械臂旋转角速度、摆杆旋转角度的正弦值与余弦值以及摆杆的旋转角速度。
卷积神经网络常用于机器视觉领域,但是对于简单的时序卷积神经网络也有较好的处理效果。本文中Critic网络共采用15层网络,包括2层输入层、2层卷积神经网络层、5层全连接层、1层连接层以及5层修正线性单元(rectified linear unit,ReLU)激活层;ReLU函数具有稀疏性,当输入值满足条件时才会激活对应神经元节点,而且收敛快,计算简单,可以缓解梯度消失现象。由于本文中数据较简单,因此非常适用ReLU函数。Actor网络共采用12层网络,包括1层输入层、2层卷积神经网络层、3层全连接层、4层ReLU函数激活层、1层双曲正切函数Tanh激活层以及1层缩放层;缩放层之前的激活函数使用Tanh函数,缩放层可以对Tanh激活层的非线性输出进行线性缩放和偏置。深度确定性策略梯度算法神经网络结构如图8所示,其中仅完整显示了输入层与第1层卷积层之间的神经元对应,对其他层之间的对应关系进行了省略。
(a)Critic网络
(b)Actor网络ReLU—修正线性单元;i×j×k—所在层的数据形状,表示共i组数据,i组数据中每组数据中有j组数据,这j组数据中每组又有k个数据,i、j、k为正整数。图8 深度确定性策略梯度算法神经网络结构
4 单臂机器人倒立摆仿真模型实验
在MATLAB 2020a软件中使用Simulink环境进行单臂机器人倒立摆仿真模型实验。单臂机器人倒立摆初始状态为机械臂竖直向下,摆杆在重力作用下悬挂于机械臂末端,智能体Actor网络与Critic网络的学习率均为0.001,每周期最多可训练1 250次,每次输出的控制力范围为[-10, 10],当回报值大于250 000且后10个周期内最大回报值与最小回报值之差小于1 362,即最大回报值周期与最小回报值周期完全相差1次训练时,认为训练结束。
4.1 TD3、DDPG算法训练结果与分析
为了改善训练模型的鲁棒性,在训练过程中对摆杆随机施加干扰力,并且在每个周期的训练过程中,机械臂角速度或加速度达到阈值即结束该周期的训练。
图9所示为利用TD3、DDPG算法时智能体每个周期获得的回报值。从图中可以看出,在本实验中理论周期最大回报值为460 808.85,但是干扰力等因素的存在使得在本次训练中利用TD3算法时最大回报值为286 051.20,在后10个周期中,最大回报值为283 153.20,最小回报值为282 034.40,平均回报值为282 619.80;在利用DDPG算法时,最大回报值为294 850.80,在后10个周期中,最大回报值为284 917.20,最小回报值为284 032,平均回报值为284 405.20。
DDPG—深度确定性策略梯度;TD3—双延迟深度确定性策略梯度。图9 利用TD3、DDPG算法时智能体每个周期获得的回报值
从图9中可以看出,相较于DDPG算法,TD3算法在500个周期左右开始收敛,但是直到1 800个周期左右回报值才有较大起伏,之后对策略才有较大的优化,以获得较大回报值。TD3算法比DDPG算法多1 217个训练周期,并且此次训练DDPG算法训练1 660个周期,共迭代1 510 687次,所用时间约为16.92 h;而TD3算法训练2 877个周期,共迭代3 377 971次,耗时约为49.17 h;由此可知,TD3算法训练总迭代次数约为DDPG算法总迭代次数的2.24倍,但是训练时间约为DDPG算法训练时间的2.91倍。TD3算法是通过优化DDPG算法而得到的,但是DDPG算法使用4个网络,TD3算法使用6个网络,因此在本文中单臂机器人倒立摆仿真模型较简单的情况下,每次迭代TD3算法训练所用时间比DDPG算法所用时间更长。
从图9中还可以看出,DDPG算法在前200个周期中获取的回报值较稳定,原因是智能体输出的控制力较大,导致机械臂角速度或加速度过大,超过阈值而停止训练;在400~760个周期时,回报值上下震动并不稳定,原因是智能体虽然逐渐加强对输出控制力大小的控制,以避免加速度与速度超过阈值,但是在400~760个周期内单臂机器人倒立摆的运动仍然有随意性;直到800个周期左右开始收敛,在1 600个周期左右波动较小,趋于稳定。相对于DDPG算法,TD3算法在前200个周期内回报值较小,原因是前200个周期内DDPG算法输出控制力数值基本为+10或-10,而TD3算法输出控制力为±10的数值较小,因此在前200个周期内,TD3算法每周期迭代次数更多,导致回报值较小;并且DDPG算法在第453个周期才逐渐保证输出的控制力可迭代完整周期,即迭代1 250次,而TD3算法只使用196个周期,表明本次实验中在前期TD3算法比DDPG算法有更强的学习能力和更好的约束适应性。
4.2 TD3、DDPG算法测试结果与分析
图10所示为无干扰力时摆杆与机械臂摆动角度。从图中可以看出,在无干扰力的情况下,TD3算法的摆杆平衡较快,在1 s左右趋于平衡,同时智能体输出控制力开始减小,平衡后控制力有小范围波动,从而保持摆杆平衡。DDPG算法在1.3 s左右趋于平衡,但是此时智能体输出控制力的变化频率较快,平衡后摆杆和机械臂的角度变化均较小,趋于稳定。为了保持摆杆平衡,智能体输出的控制力在小数值范围内波动,但是相较于TD3算法波动程度较大。
从图10中还可以看出,与TD3算法相比,DDPG算法在前期智能体输出的控制力变化较频繁且幅度较大,使用DDPG算法在平衡后摆杆的旋转角度有轻微波动,而使用TD3算法在平衡后摆杆的旋转角度有略微变化,因此摆杆的角度并非定值。为了比较TD3、DDPG算法智能体输出的总控制力,计算TD3、DDPG算法10 s内每0.02 s输出的总控制力绝对值,其中TD3算法共输出控制力360.83 N·m,DDPG算法共输出控制力458.77 N·m,而在实际应用中,电机输出扭矩与电流成正比,因此电流输出越小,输出扭矩越小,即相较于DDPG算法,TD3算法对单臂机器人倒立摆系统输入的控制力最小且摆杆平衡最快。
(a)TD3算法
(b)DDPG算法DDPG算法—深度确定性策略梯度算法;TD3算法—双延迟深度确定性策略梯度算法。图10 无干扰力时摆杆与机械臂摆动角度
图11所示为有干扰力时TD3、DDPG算法的摆杆旋转角度、机械臂旋转角度、角速度与智能体输出控制力。从图11(a)、(b)中可以看出,即使在有干扰力的情况下,摆杆平衡速度与无干扰力时平衡速度相差无几,在平衡后施加干扰力会打破摆杆的稳定状态,单臂机器人倒立摆系统可以迅速作出反应,对机械臂进行调整从而使摆杆继续保持平衡,并且整个过程中基于DDPG、TD3算法的机械臂的角度变化相似,但是在DDPG、TD3算法控制下,摆杆因干扰力而使摆动角度较小;从放大图10(a)中5~6 s时间段内机械臂旋转角度曲线可以发现,机械臂的旋转角度一直为0.015 7~0.031 4 rad(即旋转角度为0.9°~1.8°,电机的步距角为0.9°)之间变换。结合图11(a)中利用TD3算法时摆杆相对稳定可以发现,即使存在干扰力,相较于DDPG算法,TD3算法的控制精度有一定提高,表明使用TD3算法时系统鲁棒性更好,可适应多种环境,并且从图11(c)、(d)中可以看出,相较于单次施加较大干扰力,在短时间内多次施加干扰力对系统的稳定性影响较大。从图11(c)、(d)中还可以看出,由于施加干扰力破坏了摆杆的平衡,因此智能体通过调整输出控制力控制机械臂,从而保持摆杆平衡。相对于DDPG算法,使用TD3算法时的输出控制力更小,TD3算法输出的总控制力绝对值为1 816.42 N·m,DDPG算法输出的总控制力绝对值为2 238.04 N·m,是TD3算法的1.23倍。
基于TD3、DDPG算法,在有、无干扰力时摆杆旋转角度、机械臂旋转角度、机械臂角速度与智能体输出控制力的分析表明,TD3算法可以在短时间内以最小控制力调整姿态,使摆杆保持平衡,并且即使施加一定的干扰力,仍然可以迅速调整姿态,使摆杆保持平衡,具有较好的鲁棒性。
(a)摆杆旋转角度
(b)机械臂旋转角度
(c)TD3算法的机械臂角速度与智能体输出控制力
(d)DDPG算法的机械臂角速度与智能体输出控制力>DDPG算法—深度确定性策略梯度算法;TD3算法—双延迟深度确定性策略梯度算法。图11 有干扰力时TD3、DDPG算法的摆杆旋转角度、机械臂旋转角度、角速度与智能体输出控制力
5 结语
针对深度强化学习在机器人应用中的可行性以及提高控制的精准性问题,本文中采用以自主学习与交互学习为主的深度强化学习算法,设计了单臂机器人倒立摆仿真模型,并根据单臂机器人的实际运动参数设计了网络结构以及符合实际的多约束奖励函数,通过TD3、DDPG算法进行训练比较。实验结果表明,根据实际情况设计合理的奖励函数可以提高算法的收敛速度,并且训练完成的模型可以在1.3 s内完成姿态调整任务,并在受干扰时可以调整运动参数,从而持续保持末端姿态,减小输出控制力,同时提高对机械臂的控制精度,并保持末端姿态不变,在实际应用中可以减少能量的消耗,并提升运行效率与运行过程中的稳定性,因此重新设计的神经网络与奖励函数以及加入干扰力对控制系统的精准性与鲁棒性具有一定的提升,对多轴机器人的末端控制具有一定的借鉴意义。本文中仅以单臂机器人和TD3算法为研究对象,对于信赖域策略优化等算法与在多轴机器人上的应用以及验证对机械臂的控制效果将是下一步的研究重点。