Home

Awesome

<h1> <a href="#"><img alt="MuJoCo Menagerie" src="assets/banner.png" width="100%"></a> </h1> <p> <a href="https://github.com/google-deepmind/mujoco_menagerie/actions/workflows/build.yml?query=branch%3Amain" alt="GitHub Actions"> <img src="https://img.shields.io/github/actions/workflow/status/google-deepmind/mujoco_menagerie/build.yml?branch=main"> </a> <a href="https://mujoco.readthedocs.io/en/latest/models.html" alt="Documentation"> <img src="https://readthedocs.org/projects/mujoco/badge/?version=latest"> </a> <a href="https://github.com/google-deepmind/mujoco_menagerie/blob/main/CONTRIBUTING.md"> <img src="https://img.shields.io/badge/PRs-welcome-green.svg" alt="PRs" height="20"> </a> </p>

Menagerie is a collection of high-quality models for the 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.

<img src='assets/franka_fr3-fr3.png' width=100><img src='assets/kuka_iiwa_14-iiwa14.png' width=100><img src='assets/ufactory_lite6-lite6.png' width=100><img src='assets/franka_emika_panda-panda.png' width=100><img src='assets/rethink_robotics_sawyer-sawyer.png' width=100>
<img src='assets/universal_robots_ur10e-ur10e.png' width=100><img src='assets/universal_robots_ur5e-ur5e.png' width=100><img src='assets/trossen_vx300s-vx300s.png' width=100><img src='assets/ufactory_xarm7-xarm7.png' width=100><img src='assets/unitree_z1-z1.png' width=100>
<img src='assets/aloha-aloha.png' width=100><img src='assets/robotiq_2f85-2f85.png' width=100><img src='assets/franka_emika_panda-hand.png' width=100><img src='assets/ufactory_xarm7-hand.png' width=100><img src='assets/wonik_allegro-left_hand.png' width=100>
<img src='assets/shadow_hand-left_hand.png' width=100><img src='assets/wonik_allegro-right_hand.png' width=100><img src='assets/shadow_hand-right_hand.png' width=100><img src='assets/shadow_dexee-shadow_dexee.png' width=100><img src='assets/google_robot-robot.png' width=100>
<img src='assets/hello_robot_stretch-stretch.png' width=100><img src='assets/unitree_a1-a1.png' width=100><img src='assets/anybotics_anymal_b-anymal_b.png' width=100><img src='assets/anybotics_anymal_c-anymal_c.png' width=100><img src='assets/google_barkour_v0-barkour_v0.png' width=100>
<img src='assets/google_barkour_vb-barkour_vb.png' width=100><img src='assets/unitree_go1-go1.png' width=100><img src='assets/unitree_go2-go2.png' width=100><img src='assets/boston_dynamics_spot-spot_arm.png' width=100><img src='assets/agility_cassie-cassie.png' width=100>
<img src='assets/unitree_g1-g1.png' width=100><img src='assets/unitree_h1-h1.png' width=100><img src='assets/robotis_op3-op3.png' width=100><img src='assets/bitcraze_crazyflie_2-cf2.png' width=100><img src='assets/skydio_x2-x2.png' width=100>
<img src='assets/flybody-fruitfly.png' width=100><img src='assets/realsense_d435i-d435i.png' width=100>

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, or if you are working with Python, you can install the native bindings from PyPI via pip install mujoco. For alternative installation instructions, see here.

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.

├── unitree_go2
│   ├── assets
│   │   ├── base_0.obj
│   │   ├── ...
│   ├── go2.png
│   ├── go2.xml
│   ├── LICENSE
│   ├── README.md
│   └── scene.xml
│   └── go2_mjx.xml
│   └── scene_mjx.xml

Note that <model>.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.

Usage

Via robot-descriptions

You can use the opensource robot_descriptions package to load any model in Menagerie. It is available on PyPI and can be installed via pip install robot_descriptions.

Once installed, you can load a model of your choice as follows:

import mujoco

# Loading a specific model description as an imported module.
from robot_descriptions import panda_mj_description
model = mujoco.MjModel.from_xml_path(panda_mj_description.MJCF_PATH)

# Directly loading an instance of MjModel.
from robot_descriptions.loaders.mujoco import load_robot_description
model = load_robot_description("panda_mj_description")

# Loading a variant of the model, e.g. panda without a gripper.
model = load_robot_description("panda_mj_description", variant="panda_nohand")

Via git clone

You can also directly clone this repository in the directory of your choice:

git clone https://github.com/google-deepmind/mujoco_menagerie.git

You can then interactively explore the model using the Python viewer:

python -m mujoco.viewer --mjcf mujoco_menagerie/unitree_go2/scene.xml

If you have further questions, please check out our FAQ.

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:

GradeDescription
A+Values are the product of proper system identification
AValues are realistic, but have not been properly identified
BStable, but some values are unrealistic
CConditionally 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.

Menagerie Models

Arms.

NameMakerDoFsLicenseMJX
FR3Franka Robotics7Apache-2.0✖️
iiwa14KUKA7BSD-3-Clause✖️
Lite6UFACTORY6BSD-3-Clause✖️
PandaFranka Robotics7BSD-3-Clause✖️
SawyerRethink Robotics7Apache-2.0✖️
Unitree Z1Unitree Robotics6BSD-3-Clause✖️
UR5eUniversal Robots6BSD-3-Clause✖️
UR10eUniversal Robots6BSD-3-Clause✖️
ViperX 300Trossen Robotics8BSD-3-Clause✖️
WidowX 250Trossen Robotics8BSD-3-Clause✖️
xarm7UFACTORY7BSD-3-Clause✖️
Gen3Kinova Robotics7BSD-3-Clause✖️

Bipeds.

NameMakerDoFsLicenseMJX
CassieAgility Robotics28BSD-3-Clause✖️

Dual Arms.

NameMakerDoFsLicenseMJX
ALOHA 2Trossen Robotics, Google DeepMind16BSD-3-Clause✔️

Drones.

NameMakerDoFsLicenseMJX
Crazyflie 2Bitcraze0MIT✖️
Skydio X2Skydio0Apache-2.0✖️

End-effectors.

NameMakerDoFsLicenseMJX
Allegro Hand V3Wonik Robotics16BSD-2-Clause✖️
LEAP HandCarnegie Mellon University16MIT✖️
Robotiq 2F-85Robotiq8BSD-2-Clause✖️
Shadow Hand EM35Shadow Robot Company24Apache-2.0✖️
Shadow DEX-EE HandShadow Robot Company12Apache-2.0✖️

Mobile Manipulators.

NameMakerDoFsLicenseMJX
Google RobotGoogle DeepMind9Apache-2.0✖️
Stretch 2Hello Robot17Clear BSD✖️
Stretch 3Hello Robot17Apache-2.0✖️

Humanoids.

NameMakerDoFsLicenseMJX
Robotis OP3Robotis20Apache-2.0✖️
Unitree G1Unitree Robotics37BSD-3-Clause✖️
Unitree H1Unitree Robotics19BSD-3-Clause✖️
TALOSPAL Robotics32Apache-2.0✖️

Quadrupeds.

NameMakerDoFsLicenseMJX
ANYmal BANYbotics12BSD-3-Clause✖️
ANYmal CANYbotics12BSD-3-Clause✔️
SpotBoston Dynamics12BSD-3-Clause✖️
Unitree A1Unitree Robotics12BSD-3-Clause✖️
Unitree Go1Unitree Robotics12BSD-3-Clause✖️
Unitree Go2Unitree Robotics12BSD-3-Clause✔️
Google Barkour v0Google DeepMind12Apache-2.0✔️
Google Barkour vBGoogle DeepMind12Apache-2.0✔️

Biomechanical.

NameMakerDoFsLicenseMJX
flybodyGoogle DeepMind, HHMI Janelia Research Campus102Apache-2.0✖️

Miscellaneous.

NameMakerDoFsLicenseMJX
D435iIntel Realsense0Apache-2.0✖️

Citing Menagerie

If you use Menagerie in your work, please use the following citation:

@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, with help from the Robotics Simulation team at Google DeepMind.

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.