MuJoCo   advanced physics simulation



MuJoCo stands for Multi-Joint dynamics with Contact. It is being developed by Emo Todorov for Roboti LLC. Initially it was used at the Movement Control Laboratory, University of Washington, and has now been adopted by a wide community of researchers and developers.

MuJoCo 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. Its key features are:

- simulation in generalized coordinates, avoiding joint violations
- 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
- simulation of particle systems, cloth, rope and soft objects
- actuators including motors, cylinders, muscles, tendons, slider-cranks
- choice of Newton, Conjugate Gradient, or Projected Gauss-Seidel solvers
- choice of pyramidal or elliptic friction cones, dense or sparse Jacobians
- choice of Euler or Runge-Kutta numerical integrators
- 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