主要内容

四足机器人运动使用DDPG代理

这个例子展示了如何训练四足机器人行走使用深度确定的策略梯度(DDPG)代理。机器人在这个例子中是使用Simscape建模™多体™。DDPG代理的更多信息,请参阅Twin-Delayed深决定性策略梯度代理

必要的参数加载到MATLAB®的基础工作。

initializeRobotParameters

四足机器人模型

这个例子是一个四足机器人,环境和培训的目标是使机器人走直线使用最少的控制工作。

打开模型。

mdl =“rlQuadrupedRobot”;open_system (mdl)

机器人使用Simscape多体建模的主要结构部件组成的四条腿和躯干。腿连接到躯干的转动关节,使腿的躯干的转动。的关节驱动力矩信号提供的RL代理。

观察

机器人环境提供44观测到代理,每个1和1之间的归一化。这些观察结果是:

  • (垂直)和Y(横向)躯干质心的位置

  • 四元数代表躯干的方向

  • X(向前),Y(垂直)和Z(横向)速度躯干的质心

  • 躯干的横滚、俯仰和偏航率

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

  • 正常和摩擦力为每条腿由于地面接触

  • 每个联合行动值(扭矩)前一个时间步

四条腿,髋关节和膝关节关节角的初始值设置为-0.8234和1.6468弧度,分别。中性关节的位置设置在0弧度。腿在中立位置时达到最大,垂直地排列在地上。

行动

代理生成8个1和1之间的行为规范化。乘以一个比例因子后,这些对应的八个转动关节的关节转矩信号。整个关节转矩范围+ / - 10 N·m为每个关节。

奖励

以下奖励期间代理在每个时间步的训练。这个奖励函数鼓励代理前进通过提供积极的奖励积极的前进速度。它还鼓励代理避免提前终止通过提供一个恒定的奖励( 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弧度,分别)。

创建环境接口

为观察组指定的参数。

numObs = 44;obsInfo = rlNumericSpec ([numObs 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剂来控制双积分器系统

设置随机种子。

rng (0)

在MATLAB中创建网络使用的工作区createNetworkshelper函数。

createNetworks

您还可以创建你的演员和批评网络交互使用深层网络设计师应用程序。

查看评论家网络配置。

情节(criticNetwork)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

查看演员网络配置。

情节(actorNetwork)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

使用指定代理选项rlDDPGAgentOptions

agentOptions = rlDDPGAgentOptions ();agentOptions。SampleTime = t;agentOptions。DiscountFactor = 0.99;agentOptions。MiniBatchSize = 128;agentOptions。ExperienceBufferLength = 1 e6;agentOptions。TargetSmoothFactor = 1e-3; agentOptions.NoiseOptions.MeanAttractionConstant = 0.15; agentOptions.NoiseOptions.Variance = 0.1;

指定优化器选择演员和评论家。

agentOptions.ActorOptimizerOptions。算法=“亚当”;agentOptions.ActorOptimizerOptions。LearnRate = 1的军医;agentOptions.ActorOptimizerOptions。GradientThreshold = 1;agentOptions.ActorOptimizerOptions。L2RegularizationFactor = 1 e-5;agentOptions.CriticOptimizerOptions。算法=“亚当”;agentOptions.CriticOptimizerOptions。LearnRate = 1 e - 3;agentOptions.CriticOptimizerOptions。GradientThreshold = 1;agentOptions.CriticOptimizerOptions。L2RegularizationFactor = 2的军医;

创建rlDDPGAgent代理对象。

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

指定培训选项

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

  • 运行每个训练集最多10000集,每集与持久的最多maxSteps时间的步骤。

  • 在事件管理器对话框显示培训进展(设置情节选项)。

  • 停止训练当代理接收到平均累积奖励大于190连续超过250集。

  • 保存一份代理每集累积奖励大于220。

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

培训代理并行,指定以下培训选项。并行训练需要并行计算工具箱™软件。如果你没有安装并行计算工具箱™软件,集UseParallel

  • 设置UseParallelt选项

  • 火车异步并行代理。

  • DDPG代理要求员工发送“经验”主机。

trainOpts。UseParallel = true;trainOpts.ParallelizationOptions。模式=“异步”;trainOpts.ParallelizationOptions。DataToSendFromWorkers =“经验”;

火车代理

火车代理使用火车函数。由于机器人模型的复杂性,这一过程是计算密集型和需要几个小时才能完成。节省时间在运行这个例子中,加载一个pretrained代理设置doTraining。训练自己代理,集doTraining真正的。由于随机并行训练,你可以期待不同的训练结果从下面的情节。

doTraining = false;如果doTraining%培训代理。trainingStats =火车(代理,env, trainOpts);其他的%加载pretrained代理的例子。负载(“rlQuadrupedAgent.mat”,“代理”)结束

模拟训练的代理

解决随机发生器再现性的种子。

rng (0)

验证的性能训练有素的特工,在机器人模拟环境。代理模拟更多的信息,请参阅rlSimulationOptionssim卡

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

引用

尼古拉斯,[1]Heess Dhruva结核病,Srinivasan·杰伊·雷蒙Josh梅瑞尔格雷格•韦恩Yuval Tassa, et al。“丰富环境中出现的运动行为”。ArXiv: 1707.02286 (Cs)2017年7月10日。https://arxiv.org/abs/1707.02286

[2]Lillicrap,蒂莫西·P。,Jonathan J. Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa, David Silver, and Daan Wierstra. ‘Continuous Control with Deep Reinforcement Learning’.ArXiv: 1509.02971 (Cs,统计),2019年7月5日。https://arxiv.org/abs/1509.02971

另请参阅

相关的话题

相关的话题