PyBullet快速上手教程

(译自PyBullet官方英文文档

PyBullet Reinforcement Learning Gym Envs

快速使用PyBullet机器人RL环境

  1. 使用命令“pip install PyBullet“安装 PyBullet版本的Gym环境套件,其中包括了ant,hopper,humanoid,walker,还有Ghost Robotics Minitaur quadruped, the MIT racecar and the KUKA robot arm grasping environments等环境。源码位于github上:https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym。
  2. 该环境可用来做DRL的训练,比如DQN、PPO、TRPO、DDPG等。最新的PyBullet已经含有了一些预训练版本,可以直接上手使用:
pip install pybullet, tensorflow, gym (用于安装PyBullet、tensorflow、gym等环境及框架,如果出现安装错误,多是因为用户权限问题,可使用pip install --user pybullet, tensorflow, gym)。
python -m pybullet_envs.examples.enjoy_TF_HumanoidBulletEnv_v0_2017may (运行bullet3/examples/pybullet/gym/pybullet_envs/examples目录下的enjoy_TF_HumanoidBulletEnv_v0_2017may.py文件,-m表示将脚本以模块模式运行,和直接运行程序的区别在于加载的系统路径不同,程序的主入口也不同)。
python -m pybullet_envs.examples.kukaGymEnvTest (运行bullet3/examples/pybullet/gym/pybullet_envs/examples/目录下的kukaCamGymEnvTest.py文件)
  • 注意:某些文件的运行需要baselines 环境,需要提前安装baselines环境(需要python3.5以上和tensorflow)
git clone https://github.com/openai/baselines.git
cd baselines
pip install -e .

关于运行环境和数据

  1. pybullet安装后包含了pybullet_envs和pybullet_data。导入pybullet_envs包会自动将该环境注册到OpenAI Gym中。
  2. 如前所述,PyBullet中包含了多种机器人仿真环境。下面介绍KukaBulletEnv环境。
  3. KukaBulletEnv环境共包含两个版本:KukaBulletEnv-v0和KukaCamBulletEnv-v0两个版本。
  4. 该环境使用KUKA liwa机械臂,目标是抓取放在托盘中的物体。当机械臂将目标抓取到一定高度时,给与系统一定奖励。为了优化整个抓取过程,也会根据动作、手爪和目标物的距离给与少量奖励。观测值(即状态)通过目标的坐标值(x,y)来表示。
  5. KukaCamBulletEnv-v0中的观测值用相机像素值表示,其他与上一个版本完全一致(即camera pixels)。
  6. 用户可以直接访问pybullet_data package中的数据,包括URDF/SDF机器人包,Wavefront.ONJ文件等。比如:
import pybullet
import pybullet_data
datapath=pybullet_data.getDataPath()
pybullet.connect(pybullet.GUI)
pybullet.setAdditionalSearchPath(datapath)
pybullet.loadURDF("r2d2.urdf",[0,0,1])
  • 或者手动将路径附加到加载URDF/SDF命令中的文件名中去

  • 事实上,新版的Roboschool environments已经移植到PyBullet上,Roboschool 环境比以往的MuJoCo Gym环境更加丰富,也更加具有挑战性。

使用DQN,PPO,ES直接上手体验!

  1. 对于一些离散的Gym环境(动作或状态是离散而非连续),比如KukaBulletEnv-v0和RacecarBulletEnv-v0,我们可以使用OpenAI Baselines的DQN算法来对使用离散动作空间的模型进行训练。可以参照以下示例:
python -m pybullet_envs.baselines.train_pybullet_cartpole (运行bullet3/examples/pybullet/gym/pybullet_envs/baselines目录下的train_pybullet_cartpole.py文件)
python -m pybullet_envs.baselines.train_pybullet_racecar (运行bullet3/examples/pybullet/gym/pybullet_envs/baselines目录下的train_pybullet_racecar.py文件)

当模型得到改进时,OpenAI Baselines将会以指定的时间间隔保存一个.PKL文件。以下脚本会使用到这个.PKL文件:

python -m pybullet_envs.baselines.enjoy_pybullet_cartpole
python -m pybullet_envs.baselines.enjoy_pybullet_racecar
  1. 另外还有很多可以开箱即用的已经预训练好的模型,包含了:
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 & PyTorch进行训练

  1. 可以直接使用Tensorflow Agents PPO训练多种多样的PyBullet环境。
  2. 安装必要的Python包:
pip install gym,tensorflow,agents,pybullet,ruamel.yaml
  1. 训练模型
python -m pybullet_envs.agents.train_ppo --config=pybullet_pendulum --logdir=pendulum
  1. 我们为智能体的设置配置了多种不同的环境
pybullet_pendulum
pybullet_doublependulum
pybullet_pendulumswingup
pybullet_cheetah
pybullet_ant
pybullet_racecar
pybullet_minitaur
  1. 使用tensorboard 查看训练进程
tensorboard --logdir=pendulum --port=2222 (启动tensorflow下的tensorboard工具,将目标文件夹下的日志文件可视化,在本地服务器的port端口中以服务器模式运行,可被浏览器访问)
  1. 然后打开一个浏览器访问本地服务器的2222端口页面,可以查看训练过程
  2. 完成训练之后,可以获得可视化的训练模型,比如制作一个视频,或者使用一个物理引擎环境来可视化训练结果(python -m pybullet_envs.examples.runServer or ExampleBrowser in physics server mode or in Virtual Reality(这句示例没太看懂是具体怎么使用))。当我们打开一个本地GUI物理引擎, 可视化工具(bullet_cilent.py)会自动连上它,并且使用OpenGL硬件渲染来制作视频。否则将会使用CPU tinyrenderer。可以使用以下命令生成视频:
python -m pybullet_envs.agents.visualize_ppo --logdir=pendulum/xxxxx --outdir=pendulum_video
  1. https://www.youtube.com/watch?v=tfqCHDoFHRQ展示了一个实例Minitaur robot

进化策略

有关在PyBullet环境中使用进化策略的说明详见 David Ha(hardmaru)的博客文章

使用PyTorch PPO进行训练

官方文档目前还没有使用PyTorch训练PyBullet的说明。但有一个git repository使用了PyTorch训练了Pybullet环境。

猜你喜欢

转载自blog.csdn.net/yingyue20141003/article/details/89044438