创建强化学习任务的gym环境。
定义环境类的属性和方法。
定义完环境类的属性后,可以先定义 render() 函数,搭配 pybullet.stepSimulation() 对环境的初始状态进行调试。
在设计获得奖励的条件时,应关注条件在现实环境中的易获取性。当然也可以先在虚拟环境中训练,看看智能体能获得什么样的行为,再考虑虚拟到现实的转换问题。
在进行策略学习时,密集的奖励要优于稀疏的奖励。
即任务的状态空间。
常见的六轴机械臂拥有六维连续动作空间。然而,大部分任务并不需要全探索。可以根据具体任务,在 init() 中限制TCP的动作维度以及范围,让 agent 更容易学习。
先注册环境,再安装环境。最后,在每次训练前声明环境:
env = gym.make("MyRobotGym")
注:以下内容请参阅 PyBullet Quickstart Guide 的 Reinforcement Learning Gym Envs 部分。
一系列的 RL Gym 环境在 “pip install pybullet” 时已经被安装好了,包括适配 PyBullet 的 OpenAI Gym 环境例如ant, hopper, humanoid and walker。还有一些同时适用于模拟以及真实机器人的环境,例如 the Ghost Robotics Minitaur quadruped, the MIT racecar and the KUKA robot arm grasping environments。
pybullet、pybullet_envs、pybullet_data 的源代码和示例:
https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym
你可以使用 RL training algorithms(例如 DQN、PPO、TRPO 和 DDPG)来训练环境。 这里有几个预训练的示例可用,打开方式:
pip install pybullet, tensorflow, gym
python -m pybullet_envs.examples.enjoy_TF_HumanoidBulletEnv_v0_2017may
python -m pybullet_envs.examples.kukaGymEnvTest
在 “sudo pip install pybullet” 之后,pybullet_envs 和 pybullet_data 包可用。 导入 pybullet_envs 包会自动将环境注册到 OpenAI Gym。
你可以使用以下 Python 代码获取健身房中的 Bullet 环境列表:待更新…
Roboschool 环境也被移植到了 pybullet 中。 Roboschool 环境比 MuJoCo Gym 环境更难。
也可以从 pybullet_data 包中访问数据,例如 URDF/SDF 格式的机器人模型、Wavefront 公司的 OBJ 文件。 这是一个如何执行此操作的示例:
import pybullet
import pybullet_data
datapath = pybullet_data.getDataPath()
pybullet.connect(pybullet.GUI)
pybullet.setAdditionalSearchPath(datapath)
pybullet.loadURDF("r2d2.urdf",[0,0,1])
或者手动将数据路径附加到 loadURDF/SDF 命令中的文件名。
对于 the HalfCheetah (HalfCheetahBulletEnv-v0), Ant (AntBulletEnv_v0), (Hopper) HopperBulletEnv_v0, CartPoleContinuousBulletEnv-v0 等连续控制的 Gym 环境,可以使用 Stable Baselines。
对于 KukaBulletEnv-v0 和 RacecarBulletEnv-v0 等离散的 Gym 环境,你可以使用 OpenAI Baselines DQN,使用离散动作空间训练模型。 这里提供了一些示例,如何训练和使用这些离散环境。首先需要安装baselines,最新版本的baselines已经不支持以下示例:
python -m pybullet_envs.baselines.train_pybullet_cartpole
python -m pybullet_envs.baselines.train_pybullet_racecar
当模型改进时,OpenAI Baselines 将在指定的时间间隔保存一个 .PKL 文件。 此 .PKL 文件用于使用(enjoy)脚本:
python -m pybullet_envs.baselines.enjoy_pybullet_cartpole
python -m pybullet_envs.baselines.enjoy_pybullet_racecar
PyBullet 还附带了一些预训练模型,你可以开箱即用。 以下是可以使用(enjoy)的预训练环境列表:
python -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_HalfCheetahBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_HopperBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_HumanoidBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_InvertedDoublePendulumBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_InvertedPendulumBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_InvertedPendulumSwingupBulletEnv_v0_2017may
python -m pybullet_envs.examples.enjoy_TF_Walker2DBulletEnv_v0_2017may
你可以使用 TensorFlow Agents PPO 训练各种 pybullet 环境。 首先安装需要的Python包:pip install gym、tensorflow、agents、pybullet、ruamel.yaml
然后用于训练:待更新…
以下环境可用作代理配置:
pybullet_pendulum
pybullet_doublependulum
pybullet_pendulumswingup
pybullet_cheetah
pybullet_ant
pybullet_racecar
pybullet_minitaur
你可以使用 tensorboard 查看训练的进度:
tensorboard --logdir=pendulum --port=2222
打开网络浏览器并访问 localhost:2222 页面。 这是来自 Tensorboard 的用于钟摆训练的示例图:
训练后,你可以可视化训练后的模型,创建视频或使用物理服务器(python -m pybullet_envs.examples.runServer or ExampleBrowser in physics server mode or in Virtual Reality)进行可视化。 如果你启动本地 GUI 物理服务器,可视化器 (bullet_client.py) 将自动连接到它,并使用 OpenGL 硬件渲染来创建视频。 否则它将使用 CPU tinyrenderer。 要生成视频,请使用:
python -m pybullet_envs.agents.visualize_ppo --logdir=pendulum/xxxxx --outdir=pendulum_video
以类似的方式,你可以训练和可视化 Minitaur 机器人:
python -m pybullet_envs.agents.train_ppo --config=pybullet_minitaur --logdir=pybullet_minitaur
这是 Minitaur 步态的示例视频。
David Ha (hardmaru) 有一篇博客文章如何使用 Evolution Strategies 训练 PyBullet 环境。
PyBullet 可以作为 MuJoCo 的免费开源替代品,用于连续控制的任务。
Proximal Policy Optimization 的原文。
OpenAI 关于 PPO 的帖子。PPO2:一个支持 GPU 的 PPO implementation。
此部分请参阅项目 pytorch-a2c-ppo-acktr。该项目基于PyTorch,使用 Kronecker-factored approximation (ACKTR) and Generative Adversarial Imitation Learning (GAIL) 实现了 Advantage Actor Critic (A2C), Proximal Policy Optimization (PPO), Scalable trust-region method for deep reinforcement learning。该实现受到 A2C、ACKTR 和 PPO 的 OpenAI baselines 的启发。