MuJoCo   advanced physics simulation

MuJoCo stands for Multi-Joint dynamics with Contact. It is a physics engine aiming to facilitate research and development in robotics, biomechanics, graphics and animation, and other areas where fast and accurate simulation is needed. It offers a unique combination of speed, accuracy and modeling power, yet it is not merely a better simulator. Instead it is the first full-featured simulator designed from the ground up for the purpose of model-based optimization, and in particular optimization through contacts. MuJoCo makes it possible to scale up computationally-intensive techniques such optimal control, physically-consistent state estimation, system identification and automated mechanism design, and apply them to complex dynamical systems in contact-rich behaviors. It also has more traditional applications such as testing and validation of control schemes before deployment on physical robots, interactive scientific visualization, virtual environments, animation and gaming.

MuJoCo was developed by Emo Todorov for Roboti LLC. The initial goal was to facilitate robotics research at the Movement Control Laboratory, University of Washington. The engine has enabled a range of research projects highlighted in the Gallery page, as well as numerical benchmarks summarized in the Benchmark page. At the same time it has benefited from extensive feedback from expert users including Yuval Tassa, Tom Erez, Vikash Kumar, Igor Mordatch, Kendall Lowrey, Svetoslav Kolev, Sergey Levine, John Schulman, Nicolas Mansard, Tingfan Wu.

MuJoCo is now avaiable to the general public via the Download page. It comes in three different flavors described in the Product page. Additional resources as well as support are available on the Forum. There is also reference documentation and user guide formatted as an online Book.

MuJoCo aims to combine the best ideas from robotics and multi-body dynamics, and augment them with new mathematical models and numerical algorithms where necessary. Its key features are:

  • simulation in generalized coordinates, avoiding joint violations;
  • choice of projected Gauss-Seidel, sparse conjugate gradient, elliptic solver;
  • inverse dynamics that are well-defined even in the presence of contacts;
  • unified continuous-time formulation of constraints via convex optimization;
  • constraints include soft contacts, limits, dry friction, equality constraints;
  • multiple numerical integrators including Runge-Kutta methods;
  • actuators including motors, cylinders, muscles, tendons, slider-cranks;
  • multi-threaded sampling and finite-difference approximations;
  • intuitive XML model format (called MJCF) and built-in model compiler;
  • cross-platform GUI with interactive 3D visualization in OpenGL;
  • run-time module written in ANSI C and hand-tuned for performance.