代码先锋网 代码片段及技术文章聚合

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文件)

关于运行环境和数据

  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环境。

版权声明:本文为yingyue20141003原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yingyue20141003/article/details/89044438

智能推荐

Apache CXF快速上手教程 (转)

基础架构 CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成: 1.Bus 它是C X F架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于S p r i n g的ApplicationContext。这些共享资源包括WSDL管理器、绑定工厂等。通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有 的资源。默认Bus实现是基于Spring的,通过依赖注入,将运行...

Linux Shell 教程 快速上手

作为一个 Java 程序员,Go 爱好者,自然免不了天天和 Linux 打交道,也曾经写过一点点 shell 脚本,但是对那个反人类的语法深感厌恶,空格不对都不行。无奈项目需要一定要用 shell 来实现一个工具,学习的过程总是不那么顺风的,不过搞完之后也觉得没那么讨厌了。整理一下几天所得,希望能让一个从没写过 shell 但是还挺熟悉 Linux 的可以立马完成一个可用的脚本。 执行顺序 脚本顺...

Taro,快速上手教程(一)

个人所有文章同步到:github.com/zhengzhuang… 前言 最近公司Boss准备开发几款可以在微信小程序端和H5端同时运行的一套商城,接着就是任务下发喽,但是有一点,时间紧任务重,Boss直接说其他的不管,反正几个星期之内必须上线,~~~头疼。那就只好想办法喽 机缘巧合在一个博客栏目看到了Taro的beta版本,研究下,心里小九九就像看一下,谁知道是啥呢,这不看不知道一...

Chameleon快速上手简易教程

CML特点是“一端所见即多端所见”,你只需开发一次就能跑所有端。 跟随这个教程,开启你的chameleon跨端开发。 1 起步 1.1 安装运行环境 开发chameleon项目的第一步是要安装运行环境和全局安装chameleon-tool。 运行环境 node >= 8.10.0 npm >= 5.6.0 建议安装使用nvm管理node版本。 1.2 安装脚手架...

VB快速上手文档教程

前言 本来我想可能不会接触到这个语言, 不过在用excel时需要用到VBA. 这就不得不专门去学习一番. 入了个门, 专门写个文档留着. 万一以后用得到呢… 论VB, 我还是初学者. 如有弄错了的地方. 你倒是来打我呀~ 学习和阅读这篇文章, 需要你有其他编程经验. 我不会长篇大论的和你解释什么是”变量”什么是”循环” VB/VBA/V...

猜你喜欢

smarty半小时快速上手教程

smarty的程序设计部分:   在smarty的模板设计部分我简单的把smarty在模板中的一些常用设置做了简单的介绍,这一节主要来介绍一下如何在smarty中开始我们程 序设计。   PHP代码:-------------------------------------------------------------------------------- 首先来介绍一下在上...

Python爬虫快速上手教程

1 这个是什么        整理Python中requests常用的API 2 代码...

Python中logging快速上手教程

本文使用得日志需要导入logging模块和logging.handlers模块,即 欢迎看Github上的代码...

EasyExcel全面教程快速上手

EasyExcel教程 本文使用的技术是Alibaba集团开源的EasyExcel技术,该技术是针对Apache POI技术的封装和优化,主要解决了POI技术的耗内存问题,并且提供了较好的API使用。不需要大量的代码就可以实现excel的操作功能。 文章目录 EasyExcel教程 一、简介 二、传统解析的弊端 三、快速感受 四、详解读取Excel 简单读取 指定列的下标或名称 读取多个sheet...

matlab基础操作快速上手教程

matlab基础操作快速上手教程 标签: matlab matlab基础操作快速上手教程 标签 matlab 基本语句 生成矩阵 图形命令 循环分支语句 for语句 while语句 关于函数 matlab类似与python不用声明可以直接对变量赋值 1.基本语句 语句 作用 备注 ; 如果不想每一步都输出则在语句后加 ; disp(sprintf(“%0.2”,a)); 会...