MuJoCo and Google DeepMind robotics
The Apache-2.0 physics engine most robot learning papers use, its GPU back ends (MJX and MuJoCo Warp), the Menagerie model library, and Google DeepMind's Gemini Robotics models.
| Organisation | Google DeepMind (part of Google; MuJoCo originally developed by Roboti LLC) |
|---|---|
| Website | mujoco.org/ |
| Licensing | MuJoCo, MuJoCo Warp and MuJoCo Playground under Apache-2.0; Menagerie models each carry their own licence (Apache-2.0, BSD, MIT); Gemini Robotics models under Google's terms |
| Pricing | MuJoCo and its libraries are free; Gemini Robotics ER 2 is offered as a preview in Google AI Studio, and Google does not list prices for the other Gemini Robotics models at the time of writing |
| Updated | 14 Nov 2026 |
Products and offerings #
| Name | Kind | Positioning |
|---|---|---|
| MuJoCo | simulator | C library and Python bindings for rigid-body dynamics with contacts, tendons and actuators |
| MJX and MuJoCo Warp | simulator | Batched GPU back ends, on JAX and on NVIDIA Warp respectively |
| MuJoCo Menagerie | library | Curated MJCF models of commercial and research robots, with per-model licences |
| MuJoCo Playground | framework | Training environments and sim-to-real examples built on MJX and MuJoCo Warp |
| Gemini Robotics | service | Vision-language-action and embodied-reasoning models from Google DeepMind |
Who they are
This hub is for anyone who simulates contact-rich robots: legged locomotion, grasping and dexterous hands. MuJoCo was first developed by Roboti LLC. Google DeepMind acquired it and made it free in October 2021, then released the source in May 2022, according to the MuJoCo overview. It has since become the default simulator in much of the robot learning literature, and it is the engine behind lesson 9.
Google DeepMind also builds robot foundation models under the Gemini Robotics name. The Gemini Robotics page lists Gemini Robotics 2.5 (a vision-language-action model), Gemini Robotics ER 2 (embodied reasoning, offered as a preview in Google AI Studio) and Gemini Robotics On-Device 2 (a smaller model that runs on the robot). The page states no release dates. It says Google works with more than 100 trusted testers and runs a waitlist for early access.
Tooling and APIs
pip install mujoco gives you the engine and Python bindings. Version 4.0.0 shipped on 6 November 2026 and 4.0.1 on 11 November 2026. Version 4.0 dropped Python 3.10 and contains breaking changes: the composite element and the cable plugin are gone in favour of flexcomp, and the tendon sidesite semantics changed, according to the changelog. The engine is a C library with a C API, Python bindings and a WebAssembly build. Release archives exist for Linux, macOS and Windows, and the CPU engine runs comfortably on a laptop.
For many parallel environments there are two GPU back ends. MJX runs on JAX. MuJoCo Warp is Apache-2.0 and, in its own description, is designed for NVIDIA hardware. The same MuJoCo Warp solver also appears inside NVIDIA’s Newton back end, which links this hub to the NVIDIA Isaac hub. MuJoCo Playground packages locomotion and manipulation environments on top of them.
MuJoCo Menagerie holds the robot models. At the time of writing it includes the UR5e (6 DoF), the Franka Research 3 (7 DoF), the Unitree Go2 (12 DoF) and Boston Dynamics Spot (19 DoF), each with its own licence file.
ROS 2 support comes from the community. The mujoco_ros2_control package under the ros-controls organisation (Apache-2.0) exposes a MuJoCo model as a ros2_control hardware interface. Google DeepMind does not ship a ROS driver.
Pain points: MJCF is powerful but verbose, and contact tuning (solref, solimp, friction, timestep) decides whether a grasp holds. MJX does not support every CPU feature and raises an exception when a model uses one, so check its feature parity notes before porting.
Migration notes
MuJoCo has three conventions that catch people coming from ROS or URDF:
- Angles in MJCF default to degrees. Joint ranges and
eulerattributes are read as degrees unless the model sets<compiler angle="radian"/>. Internally,mjModelandmjDatahold radians. - Quaternions are (w, x, y, z). ROS messages, SciPy and Isaac Lab 3.0 use (x, y, z, w).
- Units are not fixed. MuJoCo assumes nothing, but its defaults (gravity of 9.81 and density of 1000) only make sense in SI units, so use metres, kilograms and seconds.
This block shows the first two. It loads the same model with and without the compiler flag and prints the stored range and body quaternion (tested with MuJoCo 3.16):
import mujoco
import numpy as np
# A hinge joint with range and a body rotated with euler="0 0 90".
# MJCF reads both in degrees unless <compiler angle="radian"/> is set.
xml_template = """
<mujoco>
{compiler}
<worldbody>
<body name="link" euler="0 0 90">
<joint name="hinge" type="hinge" axis="0 0 1" range="-90 90"/>
<geom type="capsule" fromto="0 0 0 0.3 0 0" size="0.02"/>
</body>
</worldbody>
</mujoco>
"""
for compiler in ("", '<compiler angle="radian"/>'):
model = mujoco.MjModel.from_xml_string(xml_template.format(compiler=compiler))
label = compiler or "default (degrees)"
print(f"{label}: joint range = {np.round(model.jnt_range[0], 4)} rad")
# body_quat is stored (w, x, y, z)
print(f" body quaternion (w, x, y, z) = {np.round(model.body_quat[1], 4)}")
Expected output: with the default, the range becomes ±1.5708 rad and the quaternion is (0.7071, 0, 0, 0.7071), a 90 degree turn about z. With angle="radian", the same numbers are read as ±90 rad and 90 rad. A URDF converted by hand without the compiler line will be silently wrong in this way.
Moving from URDF: MuJoCo can load URDF files directly, but URDF has no actuators, tendons or contact parameters, so you add them in MJCF afterwards. The URDF and MJCF cheat sheet maps the elements. Moving to Isaac Sim: its MJCF importer converts to USD, and the result needs the same checks as any converted model.
Watch for
- Menagerie licences differ by model. The collection mixes Apache-2.0, BSD-2-Clause, BSD-3-Clause, BSD-3-Clause-Clear and MIT. Read the licence in each model folder before you redistribute it.
- Major-version breaks. Version 4.0 removed elements and changed tendon wrapping. Pin
mujocoin your requirements and read the changelog before upgrading. - Simulation is not the robot. A Menagerie model is a curated approximation. Mass, friction and actuator limits need checking against the maker’s datasheet before you trust sim-to-real results.
- Model access terms. Gemini Robotics models are governed by Google’s terms and access programmes, not an open licence. Check what you may deploy before you build on them.