MuJoCo 4: which problems do the changes address?#

Ask what the current model lacks before choosing a new capability. This lesson follows official releases, checked on 2026-11-13. The current stable release is 4.0.1. These are upstream capabilities, not a validated DexLab or MATRiX migration.

Fast objects can cross thin obstacles#

Version 4.0.0 adds speculative contacts for fast convex geoms that could cross a thin obstacle within one step. Compare motion per step with obstacle size before studying candidate contacts and conservative advancement.

Distinguish missed detection, contact response, numerical convergence and time discretization. The feature does not establish non-penetration for every model and timestep. Official mechanism and scope

A scale check you can do by hand

At a constant 1 m/s and a 20 ms step, an object travels 20 mm. Against a 2 mm obstacle, checking positions only at step endpoints can miss a crossing. This illustrates a sampling problem; it is not a reproduction or measurement of MuJoCo's collision algorithm.

A concrete evaluation would compare the feature on and off under matched geometry, initial state and inputs, retaining native contacts and trajectories. Examine the resulting contact response as well as penetration.

Materials can remember deformation#

Version 4.0.0 adds elasto-plasticity to joint/tendon springs and 2D/3D flexes. Plastic state lives in mjData.plastic, identified by mjSTATE_PLASTIC. Residual deformation after unloading therefore involves internal material state, not only positions and velocities. 4.0.0 changelog

For recovery and persistent tasks, identify exactly which states are saved and reset. Supporting plasticity does not calibrate a model to a real material.

Inspect simulation beyond its appearance#

In MuJoCo 4, Studio leaves experimental status, bringing Filament rendering, composable inspection tools and browser viewing. Python distributions separate mujoco-core and mujoco-studio; mujoco installs both by default. Explore the official browser demos or online viewer without installing an environment for this lesson. Official announcement

Inspection tools help reveal state. Rendering quality alone does not validate contact physics or control.

Separate the 4.0 delta from the 3.x journey#

The new mujoco.batch API arrived in 3.17.0. MJX, MuJoCo Warp, multi-point contacts and sleeping also have their own 3.x histories. A “3.0 to 4.0” overview does not mean every capability debuted in 4.0.0. The next lesson separates batch throughput from single-instance latency. Per-release changelog

Compatibility changes worth reading before migration

Python 3.10 is no longer supported. Upgrading the old monolithic package involves moved files; follow official installation instructions. Flexcomp replaces the old composite/cable path, and Studio import paths changed. Version 4.0.0 also corrected RK4 orientation integration for ball/free joints and changed tendon sidesite semantics, potentially changing existing trajectories.

Version 4.0.1 fixes a sparse Cholesky defect introduced in 4.0.0. With sparse constraint Jacobians, it could give Newton an incorrect Hessian factor, affecting accelerations and convergence. This is a specific implementation-path fix, not evidence that Newton methods are generally unreliable.

Source: the official changelog pinned to 4.0.1. This lesson performs no upgrade; historical experiments retain their frozen version.

Self-check: choose the problem first#

If the current problem is delayed control messages, should speculative contacts be the first change?

There is no direct basis for that choice. Measure message timing, control updates and physics steps first. Speculative contacts becomes relevant when evidence points to within-step crossings or its corresponding collision mechanism. Connect a new feature to the actual bottleneck.

Read more: Version and evidence baseline · Flex and elasticity · Recording and replay