主要内容

基于DDPG代理的四足机器人运动

本例展示了如何使用深度确定性策略梯度(DDPG)代理训练四足机器人行走。本例中的机器人使用Simscape建模™ 多体™. 有关DDPG代理的更多信息,请参阅双延迟深层确定性策略梯度代理.

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

initializeRobotParameters

四足机器人模型

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

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

打开模型。

mdl=“四足机器人”;开放式系统(mdl)
警告:无法识别的函数或变量“CloneDetectionUI.internal.CloneDetectionPerspective.register”。

观察

机器人环境向代理提供了44个观测值,每个观测值在–1和1之间标准化。这些观测值是:

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

  • 表示躯干方向的四元数

  • 重心处躯干的X(向前)、Y(垂直)和Z(横向)速度

  • 躯干的横摇、俯仰和横摆率

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

  • 各支腿因接地而产生的法向力和摩擦力

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

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

行动

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

奖励

在培训期间的每个时间步骤,都会向代理提供以下奖励。此奖励功能通过为正向前进速度提供正向奖励来鼓励代理向前移动。它还鼓励代理人通过提供持续的奖励来避免提前终止合同( 2. 5. T s / T F 25 Ts/Tf )在每个时间步。奖励函数中的剩余项是阻止不必要状态的惩罚,例如与所需高度和方向的较大偏差或使用过大的关节扭矩。

R T = v x + 2. 5. T s 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 s Ts T F Tf 分别是环境的采样时间和最终模拟时间。

  • Y ˆ 是躯干重心相对于所需高度0.75 m的标度高度误差。

  • θ 是躯干的俯仰角。

  • U T - 1. u(t-1) 是关节的动作值 从上一时间步开始。

情节终止

在训练或模拟过程中,如果出现以下任何情况,则该情节终止。

  • 躯干重心离地面的高度低于0.5 m(下降)。

  • 躯干的头部或尾部低于地面。

  • 任何膝关节都在地面以下。

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

创建环境接口

指定观测集的参数。

numObs=44;obsInfo=rlNumericSpec([numObs 1]);obsInfo.Name=“观察”;

指定操作集的参数。

numAct=8;actInfo=rlNumericSpec([numact1],“LowerLimit”,-1,“上限”, 1); actInfo.Name=“扭矩”;

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

blk=[mdl,“/RL代理”]; 环境=rlSim万博1manbetxulinkEnv(mdl、blk、obsInfo、actInfo);

在训练期间,重置功能会将随机偏差引入初始关节角度和角速度。

env.ResetFcn=@quadrepedresetfcn;

创建DDPG代理

DDPG代理使用评判值函数表示法近似给定观察和行动的长期回报。代理还使用参与者表示法确定给定观察采取的行动。本例中的参与者和评论家网络受[2]启发。

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

使用创建网络辅助函数。

创建网络

您还可以使用深度网络设计器应用程序。

查看网络配置。

绘图(关键网络)

使用指定代理选项rlDDPGAgentOptions.

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

创建RLDDPG试剂代理的对象。

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

指定培训选项

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

  • 每集训练最多10000集,每集最多持续时间最大步骤时间步长。

  • 在“事件管理器”对话框中显示培训进度(设置阴谋选项)并禁用命令行显示(设置冗长的选项)。

  • 当代理在250个连续事件中收到超过190个平均累积奖励时,停止训练。

  • 为累积奖励大于200的每集保存一份代理副本。

最大事件数=10000;最大台阶=地板(Tf/Ts);培训选项=RL培训选项(...“最大集”,每集,...“MaxStepsPerEpisode”,maxSteps,...“ScoreAveragingWindowLength”,250,...“冗长”符合事实的...“情节”,“培训进度”,...“停止培训标准”,“平均向上”,...“停止训练值”,190,...“SaveAgentCriteria”,“情节报酬”,...“SaveAgentValue”,200);

要并行培训代理,请指定以下培训选项。并行培训需要并行计算工具箱™ 软件如果没有并行计算工具箱™ 已安装软件,已设置使用并行错误的.

  • 设定使用并行选择t后悔.

  • 异步并行训练代理。

  • 在每32个步骤之后,每个工作人员都会向主机发送经验。

  • DDPG代理要求工人发送“经验”给主人。

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

列车员

使用火车函数。由于机器人模型的复杂性,此过程计算量大,需要几个小时才能完成。为了在运行此示例时节省时间,请通过设置溺爱错误的.要亲自培训特工,请设置溺爱符合事实的.由于并行训练的随机性,您可以从下图中看到不同的训练结果。

doTraining=false;如果溺爱%培训代理人。trainingStats=列车(代理人、环境、列车员);其他的%为示例加载预训练的代理。装载('四足动物.垫',“代理人”)终止

模拟训练有素的代理人

修复随机生成器种子以获得再现性。

rng(0)

要验证经过训练的agent的性能,请在robot环境中对其进行模拟。有关agent模拟的更多信息,请参阅模拟选项模拟.

simOptions=rlSimulationOptions(“MaxSteps”,maxSteps);体验=sim(环境、代理、simOptions);

例如,如何训练DDPG代理行走在Simscape中建模的两足机器人和仿人步行器™ 多体™ 看见使用强化学习代理训练两足机器人行走训练类人助行器(Simscape多体)分别地

工具书类

[1] 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.

[2] Lillicrap、Timothy P、Jonathan J.Hunt、Alexander Pritzel、Nicolas Heess、Tom Erez、Yuval Tassa、David Silver和Daan Wierstra持续控制与深度强化学习'。ArXiv:1509.02971[Cs,Stat],2019年7月5日。https://arxiv.org/abs/1509.02971.

另见

相关话题

相关话题