主要内容

基于DDPG Agent的四足机器人运动

这个例子展示了如何使用深度确定性策略梯度(deep deterministic policy gradient, DDPG) agent训练四足机器人行走。本例中的机器人使用Simscape™Multibody™建模。有关DDPG代理的更多信息,请参见双延迟深度确定性策略梯度代理

将必要的参数加载到MATLAB®的基本工作空间中。

initializeRobotParameters

四足机器人模型

本例的环境是一个四足机器人,训练目标是使机器人以最小的控制努力沿直线行走。

采用Simscape Multibody和Simscape多体接触力库.主要结构部件是四条腿和一个躯干。腿通过转动关节与躯干相连。RL Agent块提供的动作值被缩放并转换为关节扭矩值。这些关节转矩值被转动关节用来计算运动。

打开模型。

mdl =“rlQuadrupedRobot”;open_system (mdl)

观察

机器人环境为agent提供了44个观察结果,每一个都在-1和1之间标准化。这些观察结果是:

  • 躯干重心Y(垂直)和Y(侧向)位置

  • 代表躯干方向的四元数

  • 躯干在质心处的X(向前)、Y(垂直)和Z(侧向)速度

  • 躯干的滚转,俯仰和偏航率

  • 每条腿的髋关节和膝关节的角度位置和速度

  • 每条腿接触地面时的法向力和摩擦力

  • 动作值(每个关节的扭矩)从上一个时间步骤

对于所有四条腿,髋关节和膝关节角度的初始值分别设置为-0.8234和1.6468 rad。关节的中立位置为0 rad。当腿伸展到最大时,腿处于中立位置,并与地面垂直对齐。

行动

代理生成8个在-1和1之间标准化的操作。与比例因子相乘后,这些对应于转动关节的8个关节扭矩信号。每个关节的总扭矩界限为+/ - 10n·m。

奖励

在训练过程中的每一个时间步骤中,向agent提供如下奖励。这个奖励功能通过为正向速度提供正向奖励来鼓励代理向前移动。它还通过提供固定的奖励( 2 5 T 年代 / T f 25 Ts /特遣部队 )。奖励功能中的其余项是惩罚,阻止不必要的状态,如偏离预期高度和方向的巨大偏差,或使用过大的关节力矩。

r t v x + 2 5 T 年代 T f - 5 0 y ˆ 2 - 2 0 θ 2 - 0 0 2 u t - 1 2 r (t) = vx (t) + 25 * Ts / Tf - - 50 *ĥ(t) ^ 2 - 20 *θ(t) 2 - 0.02 *Σu (t - 1) ^ 2

在哪里

  • v x vx (t) 是躯干质心在x方向上的速度。

  • T 年代 Ts T f 特遣部队 分别为环境的采样时间和最终仿真时间。

  • y ˆ 为躯干质心从0.75米期望高度的比例高度误差。

  • θ 是躯干的俯仰角度。

  • u t - 1 u (t - 1) 关节的动作值是多少 从上一个时间步骤。

集终止

在训练或模拟期间,如果出现下列任何情况,本集将终止。

  • 躯干重心离地面的高度在0.5米以下(下落)。

  • 躯干的头部或尾部在地面以下。

  • 任何膝关节都在地下。

  • 滚转、俯仰或偏航角在边界外(分别为+/ - 0.1745、+/ - 0.1745和+/ - 0.3491 rad)。

创建环境接口

指定观察集的参数。

numObs = 44;obsInfo = rlNumericSpec([nummobs 1]); / /指定对象obsInfo。Name =“观察”

指定操作集的参数。

numAct = 8;actInfo = rlNumericSpec([numAct 1],“LowerLimit”, 1“UpperLimit”1);actInfo。Name =“扭矩”

使用强化学习模型创建环境。

黑色= [mdl,' / RL代理'];env = rl金宝appSimulinkEnv (mdl,黑色,obsInfo actInfo);

在训练过程中,复位函数在初始关节角度和角速度中引入随机偏差。

env。ResetFcn = @quadrupedResetFcn;

创建DDPG代理

DDPG代理通过使用批判价值函数表示来近似给定观察和行动的长期奖励。代理还使用参与者表示来决定根据观察结果采取何种操作。这个例子中的演员和评论家网络受到[2]的启发。

有关创建深度神经网络值函数表示的更多信息,请参见创建策略和价值功能表示.有关为DDPG代理创建神经网络的示例,请参见培训DDPG Agent控制双积分系统

在MATLAB工作空间中创建网络使用createNetworkshelper函数。

createNetworks

您也可以创建您的演员和评论家网络交互式使用深层网络设计师应用程序。

查看critical网络配置。

情节(criticNetwork)

使用指定代理选项rlDDPGAgentOptions

agentOptions = rlDDPGAgentOptions;agentOptions。SampleTime = t;agentOptions。DiscountFactor = 0.99;agentOptions。MiniBatchSize = 250;agentOptions。ExperienceBufferLength = 1 e6;agentOptions。TargetSmoothFactor = 1e-3; agentOptions.NoiseOptions.MeanAttractionConstant = 0.15; agentOptions.NoiseOptions.StandardDeviation = 0.1;

创建rlDDPGAgent对象为代理。

代理= rlDDPGAgent(演员、评论家、agentOptions);

指定培训选项

要培训代理,首先指定以下培训选项:

  • 每一集最多10000集,每一集最多持续时间maxSteps时间的步骤。

  • 在“插曲管理器”对话框中显示培训进度(设置情节选项),并禁用命令行显示(设置详细的选项)。

  • 当经纪人在250次连续训练中获得超过190次的累计奖励时,停止训练。

  • 当累计奖励超过200时,为每一集保存一份代理。

maxEpisodes = 10000;maxSteps =地板(Tf / Ts);trainOpts = rlTrainingOptions (...“MaxEpisodes”maxEpisodes,...“MaxStepsPerEpisode”maxSteps,...“ScoreAveragingWindowLength”, 250,...“详细”,真的,...“阴谋”“训练进步”...“StopTrainingCriteria”“AverageReward”...“StopTrainingValue”, 190,...“SaveAgentCriteria”“EpisodeReward”...“SaveAgentValue”, 200);

要并行地培训代理,请指定以下培训选项。并行培训需要并行计算工具箱™软件。如果您没有安装并行计算工具箱™软件,请设置UseParallel

  • 设置UseParallelt选项

  • 并行异步训练代理。

  • 每走32步后,每个工作者将经验发送给主机。

  • DDPG代理需要workers发送“经验”主机。

trainOpts。UseParallel = true;trainOpts.ParallelizationOptions.Mode =“异步”;trainOpts.ParallelizationOptions.StepsUntilDataIsSent = 32;trainOpts.ParallelizationOptions.DataToSendFromWorkers =“经验”

火车代理

训练代理人使用火车函数。由于机器人模型的复杂性,这个过程是计算密集型的,需要几个小时才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理doTraining.自己训练代理人,设置doTraining真正的.由于并行训练的随机性,你可以从下面的图中看到不同的训练结果。

doTraining = false;如果doTraining培训代理商。trainingStats =火车(代理,env, trainOpts);其他的%为示例加载一个预先训练过的代理。负载(“rlQuadrupedAgent.mat”“代理”结束

模拟训练的代理

修复随机生成器种子的再现性。

rng (0)

为了验证训练过的代理的性能,在机器人环境中模拟它。有关代理模拟的更多信息,请参见rlSimulationOptionssim卡

simOptions = rlSimulationOptions (“MaxSteps”, maxSteps);经验= sim (env,代理,simOptions);

关于如何训练一个DDPG代理行走一个两足机器人和模拟Simscape™多体™的类人步行者的例子,请参见使用强化学习代理训练两足机器人行走火车人形沃克(Simscape多体),分别。

参考文献

Heess, Nicolas, Dhruva TB, Srinivasan Sriram, Jay Lemmon, Josh Merel, Greg Wayne, Yuval Tassa等,《丰富环境中运动行为的出现》。ArXiv: 1707.02286 (Cs)2017年7月10日。https://arxiv.org/abs/1707.02286

Lillicrap, Timothy P, Jonathan J. Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa, David Silver和Daan Wierstra。“深度强化学习的连续控制”。ArXiv: 1509.02971 (Cs,统计)2019年7月5日。https://arxiv.org/abs/1509.02971

另请参阅

相关的话题