MuJoCo 3.14.0 Release Notes
3.14.0
MuJoCo 3.14.0 introduces ipc flag for penetration-free flex contact, improves MJCF frame preservation, and updates API for actuator control.
Evidence and limits
Published automatically after robotics and source-evidence checks; no manual editorial approval is recorded. Source assertions are not independently verified. Missing information remains not reported.
- Environment:
- Not reported
- Control:
- Not reported
- Data origin:
- Not reported
Source excerpts and review record
No manual editorial approval recorded.
Original source quotation: “Version 3.14.0 (September 22, 2026) General 458189298 Added the ipc flag , an experimental contact mode of the discrete integrator for penetration-free flex contact.”
Source E1
Original source quotation: “Each step minimizes an incremental potential subject to linearized contact constraints, using a barrier-free augmented Lagrangian whose subproblems are the discrete solve.”
Source E2
Original source quotation: “Every committed position update is verified intersection-free by continuous collision detection, so flex contact cannot tunnel.”
Source E3
Original source quotation: “Supported for dim-2 flexes: a flex with edge equality constraints keeps its elasticity in the constraint solver, while elastic2d elasticity is integrated implicitly through the effective metric.”
Source E4
Original source quotation: “The contacts the mode resolves are frictionless. The mode keeps contact multipliers across steps that no state specification covers, so mj_getState / mj_setState do not capture its full state and exact replay is not supported.”
Source E5
Original source quotation: “2fec92237 Introduced archive resource providers ( mjp_registerArchiveResourceProvider ). Archive providers use the mjpResourceProvider interface to mount and read archive containers (such as .mjz / .zip ), decoupling container handling from format decoders and enabling on-demand asset extraction without requiring a pre-allocated VFS .”
Source E6
Original source quotation: “e312ce82d Frames are now preserved when saving MJCF: <frame> elements are written with their pos and quat and their contents in frame-relative coordinates, so a saved model reloads with the same frames.”
Source E7
Original source quotation: “Previously the frame transformation was accumulated into the children on save and only the frame's name was kept. Changes to the pos or quat of a frame in an mjSpec now also take effect when the spec is recompiled.”
Source E8
Original source quotation: “Engine Warning Breaking API changes dc8bb1364 mj_readCtrl now matches the signature and semantics of mj_readSensor to support multi-input actuators (e.g., pid , dcmotor , orientation ): it takes an output buffer result of size actuator_ctrlnum[id] and returns const mjtNum* (a pointer into mjData.ctrl or mjData.history on zero-order-hold or exact timestamp matches, or NULL when interpolated values are written to result ).”
Source E9
Original source quotation: “Actuator history buffers now store actuator_ctrlnum[id] values per sample, and mj_initCtrlHistory expects nsample * actuator_ctrlnum[id] values ( #3597 ).”
Source E10
Original source quotation: “9e0c6b577 The mjWARN_INERTIA warning is now also raised by the modified-inertia factorizations of the implicitfast and damped- Euler integrators (previously silent) and of the implicit integrator (previously a fatal error).”
Source E11
Original source quotation: “35c0631de The sparse Newton solver no longer aborts with a "rank-deficient sparse Hessian" error when rounding loses a pivot of its Hessian, as can happen in single precision with ill-conditioned inertia. The pivot is now clamped and its row decoupled, as in the dense factorization.”
Source E12
Original source quotation: “Bug fixes 2a3f1f5a4 Procedural model editing is no longer quadratic in the number of elements. mjSpec previously recomputed the compilation signature on every mjs_addGeom -like call, and mjs_setName rescanned every name of the element's type. Both are now incremental. Building a spec with 8000 geoms is roughly 10x faster.”
Source E13
Original source quotation: “Warning Breaking API changes mjsElement.signature is now 0 whenever the spec has been structurally edited since it was last compiled, rather than being eagerly recomputed on each edit. It is still equal to mjModel.signature after a successful mj_compile , which is what mj_copyBack and the Python bind methods rely on.”
Source E14
Original source quotation: “Code that compared the signature of an uncompiled spec against anything other than 0 must compile first. Additionally, when mjs_setName fails on a duplicate name, the element's previous name is now preserved rather than being overwritten with the duplicate name.”
Source E15
Original source quotation: “ac329bd17 Fixed the torque applied by weld constraints in mj_rnePostConstraint . The rotational constraint force was used directly as a world-frame torque, missing the scaling by 0.5 * torquescale and the rotation into the world frame.”
Source E16
Original source quotation: “Force and torque sensors on bodies held by a weld that carries torque were wrong ( #2533 ).”
Source E17
Original source quotation: “263c638c0 mj_rnePostConstraint now accounts for the forces of spatial tendons (spring, damper, actuator, limit, friction loss, equality and armature), so force and torque sensors register the forces that tendons apply to bodies ( #832 ).”
Source E18
Original source quotation: “eb662fcaf Tendon actuatorfrclimited now defaults to "auto" as documented. Previously the default was "false" and actuatorfrcrange was silently ignored unless actuatorfrclimited was set explicitly.”
Source E19
Original source quotation: “54be9cce6 mjd_transitionFD and mjd_inverseFD now raise an error when sleeping is enabled. Previously, their repeated evaluations changed the sleep state, leading to internal errors or wrong derivatives.”
Source E20
Original source quotation: “e38573c64 Fixed a memory leak in mjs_delete where deleted elements and subtrees were retained in mjSpec until mj_deleteSpec ( #2882 ).”
Source E21
Original source quotation: “65ea54c3c Fixed an out-of-bounds read when parsing the header of a GMSH file loaded by flexcomp . Truncated headers are now reported as an error.”
Source E22
Source:MuJoCo — Releases · github.com