GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - google-deepmind/mujoco_playground: An open-source library for sim and real robot demos on top of MuJoCo.

BranchesTags
Open more actions menu

Latest commit

 

History

324 Commits
324 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
mujoco_playground
mujoco_playground
 
 
profiling
profiling
 
 
rss2025
rss2025
 
 
third_party/reaf_sim
third_party/reaf_sim
 
 
.gitignore
.gitignore
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.readthedocs.yaml
.readthedocs.yaml
 
 
AGENTS.md
AGENTS.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
pyproject.toml
pyproject.toml
 
 
uv.lock
uv.lock
 
 

Repository files navigation

MuJoCo Playground

Build PyPI version Documentation Status License Banner for playground

MuJoCo Playground is a suite of robot environments, reinforcement learning tasks, and hardware workflows written in PyTorch and built on reaf-sim, MuJoCo, and MuJoCo Warp.

Robots exist in mujoco_playground/robots/, either in simulation or paired with a hardware counterpart, enabling end-to-end workflows across simulation and hardware:

  • Large-batch RL training on GPU: with state and vision observations across control, manipulation, and humanoid whole-body tracking.
  • Sim & real teleoperation: with leader-follower control and episodic MCAP logging.
  • System identification: fitting simulated joint dynamics to logged hardware trajectories via mujoco.sysid.
  • Zero-shot sim-to-real policy deployment: running the same task layer and policy in simulation (--mode=sim) and on hardware (--mode=real).
  • Agentic manipulation: for vision-language model (VLM) examples across simulation and hardware (SO-101, i2rt YAM).
Whole body motion tracking
Whole body motion tracking
SO-101 Simulation Teleoperation Demo
Sim teleoperation
SO-101 Real Teleoperation Demo
Real teleoperation
SO-101 System Identification Rollout
System identification
Sim2Real and interactive viewer
Sim2Real and interactive viewer
YAM Agentic Tabletop Manipulation
Agentic manipulation

Note

Looking for the original RSS 2025 JAX/MJX environments? They remain available under rss2025.

Installation

First install uv if you don't have it yet. Install playground (Python 3.12–3.13) from PyPI with uv pip (or skip installation and run directly with uvx in Getting Started):

uv venv --python 3.13 && source .venv/bin/activate
uv pip install --default-index https://pypi.org/simple "playground>=1.0"

Note

On Linux with CUDA 12 drivers, install with --index https://download.pytorch.org/whl/cu129 -f https://github.com/NVIDIA/warp/releases/expanded_assets/v1.18.0 "warp-lang==1.18.0+cu12" "playground[rl]>=1.0".

Getting Started

To get started, try controlling a sim/real robot with your coding agent, or train an RL policy in sim and deploy it to hardware.

Control a robot with your coding agent

Spin up the agentic tabletop manipulation task directly from your coding agent with a prompt in sim or real:

Start the tabletop_v0 bridge for the yam in sim and get it to <your task>,
following mujoco_playground/tasks/agentic/tabletop_v0/AGENT_PROMPT.md

Swap sim for real to run on hardware, or so101 for yam (see AGENT_PROMPT.md).

Note

On macOS, --viewer requires mjpython in place of python. Before the first run, link libpython into the virtualenv so mjpython can load it:

ln -sf "$(uv run python -c 'import sys; print(sys.base_prefix)')"/lib/libpython3.13.dylib .venv/lib/

Train, visualize, and deploy an RL policy

Train an SO101PickCube PPO policy with RSL-RL and inspect it in the MuJoCo Studio web viewer:

CPU
# Train SO101PickCube on CPU
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.train \
  --env=SO101PickCube \
  --logdir=/tmp/rslrl_logs/so101_pick_cube \
  --overrides='{"nworld": 64}'

# Play trained policy in MuJoCo Studio web viewer
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.play \
  --env=SO101PickCube \
  --resume_path=/tmp/rslrl_logs/so101_pick_cube
GPU (CUDA 12)
# Train SO101PickCube (CUDA 12 driver)
uvx --default-index https://pypi.org/simple --python 3.13 \
  --index https://download.pytorch.org/whl/cu129 \
  -f https://github.com/NVIDIA/warp/releases/expanded_assets/v1.18.0 \
  --with "warp-lang==1.18.0+cu12" \
  --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.train \
  --env=SO101PickCube \
  --logdir=/tmp/rslrl_logs/so101_pick_cube

# Play trained policy in MuJoCo Studio web viewer
uvx --default-index https://pypi.org/simple --python 3.13 \
  --index https://download.pytorch.org/whl/cu129 \
  -f https://github.com/NVIDIA/warp/releases/expanded_assets/v1.18.0 \
  --with "warp-lang==1.18.0+cu12" \
  --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.play \
  --env=SO101PickCube \
  --resume_path=/tmp/rslrl_logs/so101_pick_cube
GPU (CUDA 13)
# Train SO101PickCube (8,192 parallel envs on GPU)
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.train \
  --env=SO101PickCube \
  --logdir=/tmp/rslrl_logs/so101_pick_cube

# Play trained policy in MuJoCo Studio web viewer
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.play \
  --env=SO101PickCube \
  --resume_path=/tmp/rslrl_logs/so101_pick_cube

Monitor training curves in TensorBoard:

uvx --default-index https://pypi.org/simple tensorboard --logdir=/tmp/rslrl_logs/so101_pick_cube

Optionally set up the SO-101 hardware, train the wrist-camera policy (SO101PickCubeVision), and deploy zero-shot to the follower arm:

# Train SO-101 Pick-Cube vision policy (add CUDA 12 flags above on CUDA 12)
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[rl]>=1.0" \
  python -m mujoco_playground.rl.rsl_rl.train \
  --env=SO101PickCubeVision \
  --logdir=/tmp/rslrl_logs/so101_pick_cube_vision

# Deploy the trained policy on the physical SO-101 follower arm
uvx --default-index https://pypi.org/simple --python 3.13 --from "playground[so101,rl]>=1.0" \
  python -m mujoco_playground.tasks.manipulation.pick_cube.so101.deploy.run \
  --mode=real \
  --checkpoint=/tmp/rslrl_logs/so101_pick_cube_vision

Local Installation

For local development from HEAD, clone the repository and sync dependencies:

CPU (macOS or Linux)
git clone https://github.com/google-deepmind/mujoco_playground.git && cd mujoco_playground
make sync-cpu
GPU (CUDA 12)
git clone https://github.com/google-deepmind/mujoco_playground.git && cd mujoco_playground
make sync-cu12
GPU (CUDA 13)
git clone https://github.com/google-deepmind/mujoco_playground.git && cd mujoco_playground
make sync

Verify your installation by running the test suite:

make test

Note

Hardware SDKs are optional extras so simulation-only stays lightweight. Passing --extra so101 or --extra yam to uv run installs the hardware drivers on demand.

Documentation & Contributing

  • Documentation: See the MuJoCo Playground documentation.
  • Contributing: See the contributing guide for contribution guidelines.
  • Changelog: See the changelog.

Citation

If you use MuJoCo Playground in your work, please cite it as follows (see the GitHub contributors page for the full list of contributors):

@software{mujoco_playground_2026,
  author = {Tabanpour, Baruch and Howell, Taylor and Haves, Sam and Abeyruwan, Saminda and Ma, Tony and Suh, Dan and {MuJoCo Playground Contributors}},
  title = {{MuJoCo Playground}},
  url = {https://github.com/google-deepmind/mujoco_playground},
  year = {2026},
}

For the RSS 2025 benchmark suite that was built on JAX/MJX (see rss2025), please cite:

@misc{mujoco_playground_2025,
  title = {MuJoCo Playground: An open-source framework for GPU-accelerated robot learning and sim-to-real transfer.},
  author = {Zakka, Kevin and Tabanpour, Baruch and Liao, Qiayuan and Haiderbhai, Mustafa and Holt, Samuel and Luo, Jing Yuan and Allshire, Arthur and Frey, Erik and Sreenath, Koushil and Kahrs, Lueder A. and Sferrazza, Carlo and Tassa, Yuval and Abbeel, Pieter},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/google-deepmind/mujoco_playground}
}

License & Disclaimer

All content in this repository is licensed under the Apache License, Version 2.0. See LICENSE for details.

This is not an officially supported Google product.

About

An open-source library for sim and real robot demos on top of MuJoCo.

playground.mujoco.org

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

2.3k stars

Watchers

20 watching

Forks

383 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.