Skip to main content

gym-pusht

A gymnasium environment PushT.

Diffusion policy on PushT env

Installation

Create a virtual environment with Python 3.10 and activate it, e.g. with miniconda:

conda create -y -n pusht python=3.10 && conda activate pusht

Install gym-pusht:

pip install gym-pusht

Quick start

# example.py
import gymnasium as gym
import gym_pusht

env = gym.make("gym_pusht/PushT-v0", render_mode="human")
observation, info = env.reset()

for _ in range(1000):
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
    image = env.render()

    if terminated or truncated:
        observation, info = env.reset()

env.close()

Description

PushT environment.

The goal of the agent is to push the block to the goal zone. The agent is a circle and the block is a tee shape.

Action Space

The action space is continuous and consists of two values: [x, y]. The values are in the range [0, 512] and represent the target position of the agent.

Observation Space

If obs_type is set to state, the observation space is a 5-dimensional vector representing the state of the environment: [agent_x, agent_y, block_x, block_y, block_angle]. The values are in the range [0, 512] for the agent and block positions and [0, 2*pi] for the block angle.

If obs_type is set to environment_state_agent_pos the observation space is a dictionary with: - environment_state: 16-dimensional vector representing the keypoint locations of the T (in [x0, y0, x1, y1, ...] format). The values are in the range [0, 512]. - agent_pos: A 2-dimensional vector representing the position of the robot end-effector.

If obs_type is set to pixels, the observation space is a 96x96 RGB image of the environment.

Rewards

The reward is the coverage of the block in the goal zone. The reward is 1.0 if the block is fully in the goal zone.

Success Criteria

The environment is considered solved if the block is at least 95% in the goal zone.

Starting State

The agent starts at a random position and the block starts at a random position and angle.

Episode Termination

The episode terminates when the block is at least 95% in the goal zone.

Arguments

>>> import gymnasium as gym
>>> import gym_pusht
>>> env = gym.make("gym_pusht/PushT-v0", obs_type="state", render_mode="rgb_array")
>>> env
<TimeLimit<OrderEnforcing<PassiveEnvChecker<PushTEnv<gym_pusht/PushT-v0>>>>>
  • obs_type: (str) The observation type. Can be either state, environment_state_agent_pos, pixels or pixels_agent_pos. Default is state.

  • block_cog: (tuple) The center of gravity of the block if different from the center of mass. Default is None.

  • damping: (float) The damping factor of the environment if different from 0. Default is None.

  • render_mode: (str) The rendering mode. Can be either human or rgb_array. Default is rgb_array.

  • observation_width: (int) The width of the observed image. Default is 96.

  • observation_height: (int) The height of the observed image. Default is 96.

  • visualization_width: (int) The width of the visualized image. Default is 680.

  • visualization_height: (int) The height of the visualized image. Default is 680.

Reset Arguments

Passing the option options["reset_to_state"] will reset the environment to a specific state.

[!WARNING] For legacy compatibility, the inner functioning has been preserved, and the state set is not the same as the the one passed in the argument.

>>> import gymnasium as gym
>>> import gym_pusht
>>> env = gym.make("gym_pusht/PushT-v0")
>>> state, _ = env.reset(options={"reset_to_state": [0.0, 10.0, 20.0, 30.0, 1.0]})
>>> state
array([ 0.      , 10.      , 57.866196, 50.686398,  1.      ],
        dtype=float32)

Version History

  • v0: Original version

References

  • TODO:

Contribute

Instead of using pip directly, we use poetry for development purposes to easily track our dependencies. If you don't have it already, follow the instructions to install it.

Install the project with dev dependencies:

poetry install --all-extras

Follow our style

# install pre-commit hooks
pre-commit install

# apply style and linter checks on staged files
pre-commit

Acknowledgment

gym-pusht is adapted from Diffusion Policy

Metadata

Release files for gym-pusht 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gym-pusht 0.1.6
File Size Uploaded
gym_pusht-0.1.6.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gym-pusht 0.1.6
File Interpreter ABI Platform
gym_pusht-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 32.7 kB

Release files / gym_pusht-0.1.6.tar.gz

Download URL gym_pusht-0.1.6.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b748dc5282c41b504df16359df26d3c2184e194edd20cde691fcda9fdc277005
BLAKE2b-256 checksum
How to use checksums
8cf1e856b105ec298bd22235362d6cf3b3ccf355ac1e6f6a7df9c20d1a5127da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release files / gym_pusht-0.1.6-py3-none-any.whl

Download URL gym_pusht-0.1.6-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c0785a29795f17c97c58b00ffaed9e45be5996dbc864d863a39a857403010206
BLAKE2b-256 checksum
How to use checksums
d0b3330dc180fc32d0a7f99d9ac6caec0413771882665ea1da17899e248e577a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page