Skip to main content

Robotics environments for the Gymnasium repo.

Project description

Python PyPI pre-commit Code style: black

This library contains a collection of Reinforcement Learning robotic environments that use the Gymansium API. The environments run with the MuJoCo physics engine and the maintained mujoco python bindings.

The documentation website is at robotics.farama.org, and we have a public discord server (which we also use to coordinate development work) that you can join here: https://discord.gg/YymmHrvS

Installation

To install the Gymnasium-Robotics environments use pip install gymnasium-robotics

These environments also require the MuJoCo engine from Deepmind to be installed. Instructions to install the physics engine can be found at the MuJoCo website and the MuJoCo Github repository.

Note that the latest environment versions use the latest mujoco python bindings maintained by the MuJoCo team. If you wish to use the old versions of the environments that depend on mujoco-py, please install this library with pip install gymnasium-robotics[mujoco-py]

We support and test for Linux and macOS. We will accept PRs related to Windows, but do not officially support it.

Environments

Gymnasium-Robotics includes the following groups of environments:

  • Fetch - A collection of environments with a 7-DoF robot arm that has to perform manipulation tasks such as Reach, Push, Slide or Pick and Place.
  • Shadow Dexterous Hand - A collection of environments with a 24-DoF anthropomorphic robotic hand that has to perform object manipulation tasks with a cube, egg-object, or pen. There are variations of these environments that also include data from 92 touch sensors in the observation space.
  • MaMuJoCo - A collection of multi agent factorizations of the Gymnasium/MuJoCo environments and a framework for factorizing robotic environments, uses the pettingzoo.ParallelEnv API.

The D4RL environments are now available. These environments have been refactored and may not have the same action/observation spaces as the original, please read their documentation:

  • Maze Environments - An agent has to navigate through a maze to reach certain goal position. Two different agents can be used: a 2-DoF force-controlled ball, or the classic Ant agent from the Gymnasium MuJoCo environments. The environment can be initialized with a variety of maze shapes with increasing levels of difficulty.
  • Adroit Arm - A collection of environments that use the Shadow Dexterous Hand with additional degrees of freedom for the arm movement. The different tasks involve hammering a nail, opening a door, twirling a pen, or picking up and moving a ball.
  • Franka Kitchen - Multitask environment in which a 9-DoF Franka robot is placed in a kitchen containing several common household items. The goal of each task is to interact with the items in order to reach a desired goal configuration.

WIP: generate new D4RL environment datasets with Minari.

Multi-goal API

The robotic environments use an extension of the core Gymansium API by inheriting from GoalEnv class. The new API forces the environments to have a dictionary observation space that contains 3 keys:

  • observation - The actual observation of the environment
  • desired_goal - The goal that the agent has to achieved
  • achieved_goal - The goal that the agent has currently achieved instead. The objective of the environments is for this value to be close to desired_goal

This API also exposes the function of the reward, as well as the terminated and truncated signals to re-compute their values with different goals. This functionality is useful for algorithms that use Hindsight Experience Replay (HER).

The following example demonstrates how the exposed reward, terminated, and truncated functions can be used to re-compute the values with substituted goals. The info dictionary can be used to store additional information that may be necessary to re-compute the reward, but that is independent of the goal, e.g. state derived from the simulation.

import gymnasium as gym

env = gym.make("FetchReach-v3")
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)

The GoalEnv class can also be used for custom environments.

Project Maintainers

Main Contributors: Rodrigo Perez-Vicente, Kallinteris Andreas, Jet Tai

Maintenance for this project is also contributed by the broader Farama team: farama.org/team.

Citation

If you use this in your research, please cite:

@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.3.0},
  year = {2023},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gymnasium_robotics-1.3.0.tar.gz (26.1 MB view details)

Uploaded Source

Built Distribution

gymnasium_robotics-1.3.0-py3-none-any.whl (26.1 MB view details)

Uploaded Python 3

File details

Details for the file gymnasium_robotics-1.3.0.tar.gz.

File metadata

  • Download URL: gymnasium_robotics-1.3.0.tar.gz
  • Upload date:
  • Size: 26.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for gymnasium_robotics-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b3198b1e31ea86ca674434a5643bcf354129cb93f512f1b2b57e18274c22c050
MD5 c9325436f70d1882f6869b46992c7dfb
BLAKE2b-256 b3eb57df83184d1e4dae32c4b0489c828d0d35e1d5fbc0bf1c7e0a506c7559b7

See more details on using hashes here.

File details

Details for the file gymnasium_robotics-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gymnasium_robotics-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d514a291e58e2d0197fd0bafb973685be7a43e40c7d464b5ef842462f1839fd7
MD5 78d69cf43100f6e8b02233767ce19217
BLAKE2b-256 186fcaa7988670efc4b6bcbed2b8216ff465778935d16cabd1b66480966c84ce

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page