1 搭建环境(未完待续)

创建强化学习任务的gym环境。

1.1 创建环境类

定义环境类的属性和方法。

1.1.1 环境可视化:渲染并调试

定义完环境类的属性后,可以先定义 render() 函数,搭配 pybullet.stepSimulation() 对环境的初始状态进行调试。

1.2 定义奖励函数

在设计获得奖励的条件时,应关注条件在现实环境中的易获取性。当然也可以先在虚拟环境中训练,看看智能体能获得什么样的行为,再考虑虚拟到现实的转换问题。

在进行策略学习时,密集的奖励要优于稀疏的奖励。

1.3 定义观察空间

即任务的状态空间。

1.4 定义动作空间

常见的六轴机械臂拥有六维连续动作空间。然而,大部分任务并不需要全探索。可以根据具体任务,在 init() 中限制TCP的动作维度以及范围,让 agent 更容易学习。

1.5 注册环境

先注册环境,再安装环境。最后,在每次训练前声明环境:

env = gym.make("MyRobotGym")

2 策略学习

注:以下内容请参阅 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

Environments and Data

在 “sudo pip install pybullet” 之后,pybullet_envs 和 pybullet_data 包可用。 导入 pybullet_envs 包会自动将环境注册到 OpenAI Gym。

你可以使用以下 Python 代码获取健身房中的 Bullet 环境列表:待更新…

Environments of KUKA

环境 描述
KukaBulletEnv-v0 模拟 KUKA Iiwa 机械臂,抓取托盘中的物体。 主要奖励发生在最后,当抓手可以抓住物体超过一定高度时。 每一步都会发生一些非常小的奖励/成本:动作成本,抓手与物体之间的距离。 observation:物体的 x,y 坐标。注:这个环境目前训练有问题。
KukaCamBulletEnv-v0 与 KukaBulletEnv-v0 相同,但observation是相机像素。

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 命令中的文件名。

Stable Baselines & ARS, ES,…

对于 the HalfCheetah (HalfCheetahBulletEnv-v0), Ant (AntBulletEnv_v0), (Hopper) HopperBulletEnv_v0, CartPoleContinuousBulletEnv-v0 等连续控制的 Gym 环境,可以使用 Stable Baselines。

Train and Enjoy: DQN, PPO, ES

对于 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

Train using TensorFlow & PyTorch

你可以使用 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 步态的示例视频。

Evolution Strategies (ES)

David Ha (hardmaru) 有一篇博客文章如何使用 Evolution Strategies 训练 PyBullet 环境。

Train using PyTorch PPO

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 的启发。

在PyBullet中进行机械臂的强化学习相关推荐

  1. MATLAB 中的机械臂算法——运动学

    MATLAB 中的机械臂算法--运动学 机械臂算法 MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法.而且随着客户需求的 ...

  2. 【机器人操作系统(ROS)中的机械臂仿真】

    [机器人操作系统(ROS)中的机械臂仿真] 1. 前言 2. 什么是机械臂? 3. 设计机械臂 4. 模型设计 5. 了解启动文件 6. 了解自定义节点 7. 运行机械臂模拟 8. 结果和结论 1. ...

  3. 加州伯克利大学:自动驾驶中虚拟到现实的强化学习|厚势汽车

    来源:同济智能汽车研究所 UCB 提出了虚拟场景到真实场景的翻译网络,解决强化学习用于自动驾驶虚拟测试中与现实测试的差异. 强化学习需要大量的试错,而真实的自动驾驶车辆(AV)无法提供大量的试错 为此 ...

  4. 实验室中的机械臂-资料汇总

    本文不断完善和化学实验室分析机器人机械臂相关的资料和报道. ■ 相关网页报道 化学实验室中的可灵活移动的机器人 ▲ 登上Nature杂志封面的化学实验室的灵活机器人

  5. MoveIT和KDL中进行机械臂位置和姿态插值

    机械臂轨迹规划中,可以使用直线和圆弧规划,不同规划方式对应不同的计算方法.在MoveIT中,moveit_planners/pilz_industrial_motion_planner/src/下保存 ...

  6. 如何将solidworks中的机械臂三维装配体导出matlab可以运行或者说可以识别的STEP和XML格式

    首先我们需要有一个机器人的三维装配体文件,一般购买机器人,厂家会提供.当然,对于我们学生来说,不可能去为了一个装配体文件去购买机器人,一般机器人厂家的官网会有装配体文件,这个步骤大家就自己去找吧,不同 ...

  7. 机械臂抓取学习笔记三

    论文:Real-Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robot ...

  8. 机械臂抓取学习笔记二

    论文: Antipodal Robotic Grasping using Generative Residual Convolutional Neural Network 摘要: 本文提出了一个模块化 ...

  9. 基于基于模型设计(MBD)(我没打错)的机械臂开发课程学习笔记(1)——基本知识和环境配置

    目录 ▶ MBD的一些基本知识 ● 什么是MBD ● MBD开发流程 ● MIL模型在环测试: ● SIL软件在环测试: ● PIL处理器在环测试: ● HIL处理器在环测试: ▶ 安装支持包及相关软 ...

最新文章

  1. steamvr unity 连接眼镜_150度FOV,自研显示方案,Kura公布全新AR眼镜Gallium
  2. 让我再撸一次HashMap
  3. java学习笔记_Java学习笔记——第1篇
  4. 飞书,助力字节跳动高效成长的神秘引擎
  5. python嵌套列表元素和_Python嵌套列表内部比较和编辑
  6. 2020年网站优化思路从哪着手?
  7. [ Android 五种数据存储方式之二 ] —— 文件存储数据
  8. Python工程师面试题集合
  9. 定时器表达式各组成部分详解
  10. python 可视化大屏幕_如何用python搭建可视化看板?
  11. 该放弃正在堕落的“RNN和LSTM”了
  12. c# 之抽象工厂模式
  13. juniper srx 1500 HA及双线路自动切换配置
  14. HTML5移动Web开发指南
  15. 开发smartphone应用,无法生成cab文件?
  16. Excel 如何让复制的内容保持原文本格式
  17. 键盘上各种特殊符号的英文读法
  18. HW护网即将开始4.6
  19. 比特率和波特率的关系
  20. Laravel 学习笔记: 授权策略(Policy)

热门文章

  1. 初学者写python之被除数连续被除四次
  2. 数字中国万里行:腾讯@天津
  3. 第3讲、Cadence原理图工程以及原理图库的创建
  4. 使用RKE安装K8S集群
  5. 南京大学计算机科学与技术就,南京大学计算机科学与技术怎么样
  6. 注册香港公司和在注册国内公司有什么区别区别
  7. bing输入法linux,必应输入法如何安装 必应Bing输入法安装图解介绍
  8. could not open selected vm debug port 8700
  9. Android API与Android版本的关系
  10. 现代控制理论——状态转移矩阵