跳转到主要内容

体育馆仓库的机器人环境。

项目描述

pre-commit Code style: black

本库包含了一系列使用 Gymansium API 的强化学习机器人环境。这些环境使用 MuJoCo 物理引擎和维护良好的 mujoco python 绑定 运行。

文档网站位于 robotics.farama.org,我们有一个公开的 discord 服务器(我们也在其中协调开发工作),您可以通过以下链接加入: https://discord.gg/YymmHrvS

安装

要安装 Gymnasium-Robotics 环境请使用 pip install gymnasium-robotics

这些环境还需要安装 Deepmind 的 MuJoCo 引擎。安装物理引擎的说明可以在 MuJoCo 网站MuJoCo Github 仓库 中找到。

注意,最新环境版本使用 MuJoCo 团队维护的最新 mujoco python 绑定。如果您想使用依赖于 mujoco-py 的旧版本环境,请使用 pip install gymnasium-robotics[mujoco-py] 安装此库

我们支持并测试了 Linux 和 macOS 上的 Python 3.8、3.9、3.10 和 3.11。我们将接受与 Windows 相关的 PR,但不官方支持。

环境

Gymnasium-Robotics 包括以下环境组

  • Fetch - 一系列具有 7 个自由度的机器人手臂环境,需要执行诸如抓取、推动、滑动或拾取和放置等操作任务。
  • Shadow Dexterous Hand - 一系列具有 24 个自由度的类人形机器人手环境,需要使用方块、鸡蛋物体或笔等物体执行操作任务。这些环境的一些变体还包括观察空间中的 92 个触觉传感器的数据。

现在可用的 D4RL 环境已经重构,可能不具有与原始版本相同的动作/观察空间,请阅读其文档。

  • 迷宫环境 - 代理必须穿过迷宫到达特定的目标位置。可以使用两种不同的代理:2 个自由度的力控球或经典的来自 Gymnasium MuJoCo 环境Ant 代理。环境可以使用各种迷宫形状初始化,难度级别逐渐增加。
  • Adroit Arm - 一系列使用 Shadow Dexterous Hand 并具有额外的手臂运动自由度的环境。不同的任务包括钉钉、开门、旋转笔或拾取和移动球。
  • Franka Kitchen - 多任务环境,其中放置了一个 9 个自由度的 Franka 机器人在包含多个常用家庭用品的厨房中。每个任务的目标是与物品交互以达到预期的目标配置。

正在进行中:使用 Minari 生成新的 D4RL 环境数据集。

多目标 API

机器人环境通过从 GoalEnv 类继承扩展了核心 Gymansium API。新的 API 强制环境具有包含 3 个键的字典观察空间

  • observation - 环境的实际观察
  • desired_goal - 代理必须达到的目标
  • achieved_goal - 代理当前达到的目标。环境的目的是使此值接近 desired_goal

此 API 还公开了奖励功能以及终止和截断信号,以便使用不同的目标重新计算它们的值。这对于使用 Hindsight Experience Replay (HER) 的算法很有用。

以下示例演示了如何使用暴露的奖励、终止和截断函数来重新计算具有替代目标的值。info字典可以用来存储可能需要重新计算奖励的额外信息,但这些信息与目标无关,例如从模拟中导出的状态。

import gymnasium as gym

env = gym.make("FetchReach-v2")
env.reset()
obs, reward, terminated, truncated, info = env.step(env.action_space.sample())

# The following always has to hold:
assert reward == env.compute_reward(obs["achieved_goal"], obs["desired_goal"], info)
assert truncated == env.compute_truncated(obs["achieved_goal"], obs["desired_goal"], info)
assert terminated == env.compute_terminated(obs["achieved_goal"], obs["desired_goal"], info)

# However goals can also be substituted:
substitute_goal = obs["achieved_goal"].copy()
substitute_reward = env.compute_reward(obs["achieved_goal"], substitute_goal, info)
substitute_terminated = env.compute_terminated(obs["achieved_goal"], substitute_goal, info)
substitute_truncated = env.compute_truncated(obs["achieved_goal"], substitute_goal, info)

GoalEnv类还可以用于自定义环境。

项目维护者

主要贡献者:Rodrigo Perez-VicenteKallinteris AndreasJet Tai

此项目的维护也得到更广泛的Farama团队的贡献:farama.org/team

引用

如果您在研究中使用了这个,请引用

@software{gymnasium_robotics2023github,
  author = {Rodrigo de Lazcano and Kallinteris Andreas and Jun Jet Tai and Seungjae Ryan Lee and Jordan Terry},
  title = {Gymnasium Robotics},
  url = {http://github.com/Farama-Foundation/Gymnasium-Robotics},
  version = {1.2.4},
  year = {2023},
}

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

gymnasium-robotics-1.2.4.tar.gz (26.1 MB 查看哈希值)

上传时间 源代码

构建分发

gymnasium_robotics-1.2.4-py3-none-any.whl (26.1 MB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面