**Menagerie** is a collection of high-quality models for the
[MuJoCo](https://github.com/google-deepmind/mujoco) physics engine, curated by
Google DeepMind.
A physics simulator is only as good as the model it is simulating, and in a
powerful simulator like MuJoCo with many modeling options, it is easy to create
"bad" models which do not behave as expected. The goal of this collection is to
provide the community with a curated library of well-designed models that work
well right out of the gate.
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Overview](#overview)
- [Usage](#usage)
- [Python Package](#python-package)
- [Model Quality and Contributing](#model-quality-and-contributing)
- [Quick contributor setup](#quick-contributor-setup)
- [Menagerie Models](#menagerie-models)
- [Citing Menagerie](#citing-menagerie)
- [Acknowledgments](#acknowledgments)
- [Changelog](#changelog)
- [License and Disclaimer](#license-and-disclaimer)
## Getting Started
### Prerequisites
The minimum required MuJoCo version for each model is specified in its
respective README. You can download prebuilt binaries for MuJoCo from the GitHub
[releases page](https://github.com/google-deepmind/mujoco/releases/), or if you
are working with Python, you can install the native bindings from
[PyPI](https://pypi.org/project/mujoco/) via `pip install mujoco`. For
alternative installation instructions, see
[here](https://github.com/google-deepmind/mujoco#installation).
### Overview
The structure of Menagerie is illustrated below. For brevity, we have only
included one model directory since all others follow the exact same pattern.
```bash
├── unitree_go2
│ ├── assets
│ │ ├── base_0.obj
│ │ ├── ...
│ ├── go2.png
│ ├── go2.xml
│ ├── LICENSE
│ ├── README.md
│ └── scene.xml
│ └── go2_mjx.xml
│ └── scene_mjx.xml
```
- `assets`: stores the 3D meshes (.stl or .obj) of the model used for visual and
collision purposes
- `LICENSE`: describes the copyright and licensing terms of the model
- `README.md`: contains detailed steps describing how the model's MJCF XML file
was generated
- `.xml`: contains the MJCF definition of the model
- `scene.xml`: includes `.xml` with a plane, a light source and
potentially other objects
- `.png`: a PNG image of `scene.xml`
- `_mjx.xml`: contains an MJX-compatible version of the model. Not all
models have an MJX variant.
- `scene_mjx.xml`: same as `scene.xml` but loads the MJX variant
Note that `.xml` solely describes the model, i.e., no other entity is
defined in the kinematic tree. We leave additional body definitions for the
`scene.xml` file, as can be seen in the Shadow Hand
[`scene.xml`](shadow_hand/scene_right.xml).
### Usage
The [Python package](#python-package) is the easiest way to use Menagerie from
Python. You can also clone this repository in the directory of your choice:
```bash
git clone https://github.com/google-deepmind/mujoco_menagerie.git
```
and explore a model interactively using the Python viewer:
```bash
python -m mujoco.viewer --mjcf mujoco_menagerie/unitree_go2/scene.xml
```
Menagerie models are also available through the third-party
[`robot_descriptions`](https://github.com/robot-descriptions/robot_descriptions.py)
package.
If you have further questions, please check out our [FAQ](FAQ.md).
## Python Package
```bash
pip install mujoco-menagerie
```
```python
import mujoco_menagerie as mm
model = mm.load('unitree_go2') # downloads once, compiles scene.xml
spec = mm.get('unitree_go2').spec() # editable mujoco.MjSpec
```
Each model is downloaded the first time it is loaded, into a per-user cache,
and `mujoco-menagerie==2026.9.0` pins every model to that release. To open a
model straight from the command line, with nothing installed:
```bash
uvx mujoco-menagerie view unitree_go2
```
See [`python/DOC.md`](python/DOC.md) for the full API.
## Model Quality and Contributing
Our goal is to eventually make all Menagerie models as faithful as possible to
the real system they are being modeled after. Improving model quality is an
ongoing effort, and the current state of many models is not necessarily
as good as it could be.
However, by releasing Menagerie in its current state, we hope to consolidate
and increase visibility for community contributions. To help Menagerie users
set proper expectations around the quality of each model, we introduce the
following grading system:
| Grade | Description |
|-------|-------------------------------------------------------------|
| A+ | Values are the product of proper system identification |
| A | Values are realistic, but have not been properly identified |
| B | Stable, but some values are unrealistic |
| C | Conditionally stable, can be significantly improved |
The grading system will be applied to each model once a proper system
identification toolbox is created. We are currently planning to release
this toolbox later this year.
For more information regarding contributions, for example to add a new model to
Menagerie, see [CONTRIBUTING](CONTRIBUTING.md).
### Quick contributor setup
Two commands and you're set up. You need [`uv`](https://docs.astral.sh/uv/)
installed; that's the only prerequisite.
```bash
make install # one-time: installs pre-commit + git hook
make all # run every check CI runs (lint + format + license + XML + tests)
```
After `make install`, the fast checks fire automatically on every `git commit`.
Run `make all` before pushing. See [CONTRIBUTING.md](CONTRIBUTING.md) for the
full breakdown.
## Menagerie Models
> Click any thumbnail below to open the model in an in-browser MuJoCo viewer powered by [live.mujoco.org](https://live.mujoco.org).
**Humanoids.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Unitree H1 | 19 | [BSD-3-Clause](unitree_h1/LICENSE) |
|
| Robotis OP3 | 20 | [Apache-2.0](robotis_op3/LICENSE) |
|
| Unitree G1 | 29 | [BSD-3-Clause](unitree_g1/LICENSE) |
|
| TALOS | 44 | [Apache-2.0](pal_talos/LICENSE) |
|
| Booster T1 | 23 | [Apache-2.0](booster_t1/LICENSE) |
|
| ToddlerBot 2XC | 44 | [MIT](toddlerbot_2xc/LICENSE) |
|
| PNDbotics Adam_lite | 25 | [MIT](pndbotics_adam_lite/LICENSE) |
|
| Apptronik Apollo | 32 | [Apache-2.0](apptronik_apollo/LICENSE) |
|
| Berkeley Humanoid | 12 | [BSD-3-Clause](berkeley_humanoid/LICENSE) |
|
| Fourier N1 | 23 | [Apache-2.0](fourier_n1/LICENSE) |
|
| ToddlerBot 2XM | 44 | [MIT](toddlerbot_2xm/LICENSE) |
**Quadrupeds.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Unitree A1 | 12 | [BSD-3-Clause](unitree_a1/LICENSE) |
|
| Google Barkour v0 | 12 | [Apache-2.0](google_barkour_v0/LICENSE) |
|
| ANYmal B | 12 | [BSD-3-Clause](anybotics_anymal_b/LICENSE) |
|
| Unitree Go1 | 12 | [BSD-3-Clause](unitree_go1/LICENSE) |
|
| ANYmal C | 12 | [BSD-3-Clause](anybotics_anymal_c/LICENSE) |
|
| Google Barkour vB | 12 | [Apache-2.0](google_barkour_vb/LICENSE) |
|
| Unitree Go2 | 12 | [BSD-3-Clause](unitree_go2/LICENSE) |
|
| Boston Dynamics Spot | 19 | [BSD-3-Clause](boston_dynamics_spot/LICENSE) |
**Bipeds.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Agility Cassie | 28 | [MIT](agility_cassie/LICENSE) |
**Biomechanical.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Flybody | 102 | [Apache-2.0](flybody/LICENSE) |
|
| IIT SoftFoot | 92 | [BSD-3-Clause](iit_softfoot/LICENSE) |
|
| MS-Human-700 | 85 | [Apache-2.0](ms_human_700/LICENSE) |
**Dual Arms.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| ALOHA | 16 | [BSD-3-Clause](aloha/LICENSE) |
**Mobile Manipulators.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Google Robot | 9 | [Apache-2.0](google_robot/LICENSE) |
|
| Hello Robot Stretch 2 | 17 | [BSD-3-Clause-Clear](hello_robot_stretch/LICENSE) |
|
| Stanford TidyBot | 18 | [MIT](stanford_tidybot/LICENSE) |
|
| Hello Robot Stretch 3 | 20 | [Apache-2.0](hello_robot_stretch_3/LICENSE) |
|
| TIAGo | 22 | [Apache-2.0](pal_tiago/LICENSE) |
|
| TIAGo++ | 25 | [Apache-2.0](pal_tiago_dual/LICENSE) |
**Drones.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Skydio X2 | 0 | [Apache-2.0](skydio_x2/LICENSE) |
|
| Bitcraze Crazyflie 2 | 0 | [MIT](bitcraze_crazyflie_2/LICENSE) |
**Arms.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Franka Emika Panda | 9 | [Apache-2.0](franka_emika_panda/LICENSE) |
|
| Franka Robotics FR3 | 7 | [Apache-2.0](franka_fr3/LICENSE) |
|
| Lite 6 | 6 | [BSD-3-Clause](ufactory_lite6/LICENSE) |
|
| Unitree Z1 | 6 | [BSD-3-Clause](unitree_z1/LICENSE) |
|
| Universal Robots UR5e | 6 | [BSD-3-Clause](universal_robots_ur5e/LICENSE) |
|
| Rethink Robotics Sawyer | 7 | [Apache-2.0](rethink_robotics_sawyer/LICENSE) |
|
| Universal Robots UR10e | 6 | [BSD-3-Clause](universal_robots_ur10e/LICENSE) |
|
| KUKA LBR iiwa 14 | 7 | [BSD-3-Clause](kuka_iiwa_14/LICENSE) |
|
| ViperX 300 6DOF | 8 | [BSD-3-Clause](trossen_vx300s/LICENSE) |
|
| xArm7 | 13 | [BSD-3-Clause](ufactory_xarm7/LICENSE) |
|
| Kinova Gen3 | 7 | [BSD-3-Clause](kinova_gen3/LICENSE) |
|
| AgileX PiPER | 8 | [MIT](agilex_piper/LICENSE) |
|
| Flexiv Robotics Rizon4 | 7 | [Apache-2.0](flexiv_rizon4/LICENSE) |
|
| ARX L5 | 8 | [BSD-3-Clause](arx_l5/LICENSE) |
|
| Flexiv Robotics Rizon4S | 7 | [Apache-2.0](flexiv_rizon4s/LICENSE) |
|
| WidowX 250 6DOF | 8 | [BSD-3-Clause](trossen_wx250s/LICENSE) |
|
| Standard Open Arm-100 5DOF - Version 1.3 | 6 | [Apache-2.0](trs_so_arm100/LICENSE) |
|
| Low-Cost Robot Arm | 6 | [Apache-2.0](low_cost_robot_arm/LICENSE) |
|
| Yet Another Manipulator (YAM) | 8 | [MIT](i2rt_yam/LICENSE) |
|
| Seeed Studio reBot DevArm | 8 | [MIT](seeed_rebot_devarm/LICENSE) |
**End-effectors.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Panda Gripper | 2 | [Apache-2.0](franka_emika_panda/LICENSE) |
|
| Allegro Hand V3 | 16 | [BSD-2-Clause](wonik_allegro/LICENSE) |
|
| Shadow Hand E3M5 | 24 | [Apache-2.0](shadow_hand/LICENSE) |
|
| Robotiq 2F-85 | 8 | [BSD-2-Clause](robotiq_2f85/LICENSE) |
|
| xarm7 Gripper | 6 | [BSD-3-Clause](ufactory_xarm7/LICENSE) |
|
| Shadow DEX-EE Hand | 12 | [Apache-2.0](shadow_dexee/LICENSE) |
|
| Leap Hand | 16 | [MIT](leap_hand/LICENSE) |
|
| UMI-Gripper | 8 | [MIT](umi_gripper/LICENSE) |
|
| Sharpa Wave | 22 | [Apache-2.0](sharpa_wave/LICENSE) |
**Mobile Bases.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Robot soccer kit omnidirectional | 64 | [MIT](robot_soccer_kit/LICENSE) |
**Miscellaneous.**
| Preview | Name | DoFs | License |
|:---:|---|---|---|
|
| Realsense D435i | 0 | [Apache-2.0](realsense_d435i/LICENSE) |
## Citing Menagerie
If you use Menagerie in your work, please use the following citation:
```bibtex
@software{menagerie2022github,
author = {Zakka, Kevin and Tassa, Yuval and {MuJoCo Menagerie Contributors}},
title = {{MuJoCo Menagerie: A collection of high-quality simulation models for MuJoCo}},
url = {http://github.com/google-deepmind/mujoco_menagerie},
year = {2022},
}
```
## Acknowledgments
The models in this repository are based on third-party models designed by many talented people, and would not have been possible without their generous open-source contributions. We would like to acknowledge all the designers and engineers who made MuJoCo Menagerie possible.
We'd like to thank Pedro Vergani for his help with visuals and design.
The main effort required to make this repository publicly available was undertaken by [Kevin Zakka](https://kzakka.com/), with help from the Robotics Simulation team at Google DeepMind.
This project has also benefited from contributions by members of the broader community — see the [CONTRIBUTORS.md](./CONTRIBUTORS.md) for a full list.
## Changelog
For a summary of key updates across the repository, see the [global CHANGELOG.md](./CHANGELOG.md).
Each individual model also includes its own `CHANGELOG.md` file with model-specific updates, linked directly from the corresponding README.
## License and Disclaimer
XML and asset files in each individual model directory of this repository are
subject to different license terms. Please consult the `LICENSE` files under
each specific model subdirectory for the relevant license and copyright
information.
All other content is Copyright 2022 DeepMind Technologies Limited and licensed
under the Apache License, Version 2.0. A copy of this license is provided in the
top-level LICENSE file in this repository.
You can also obtain it from https://www.apache.org/licenses/LICENSE-2.0.
This is not an officially supported Google product.