Prepare changelog for release

PiperOrigin-RevId: 869124525
Change-Id: I7ea6f3c1cf163e98b1bc0b8ed87f8e44afd59ab5
This commit is contained in:
Yuval Tassa
2026-02-12 03:15:44 -08:00
committed by Copybara-Service
parent 14116336e0
commit 54b8b68b23
2 changed files with 89 additions and 91 deletions
+88 -89
View File
@@ -8,47 +8,45 @@ Upcoming version (not yet released)
Significant new features Significant new features
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
- Added new System Identification toolbox (Python), see 1. :doc:`MuJoCo Warp <mjwarp/index>` is now officially released.
`README <https://github.com/google-deepmind/mujoco/blob/main/python/mujoco/sysid/README.md>`__ for details. 2. Added a new **System Identification** toolbox (Python), see
A Colab notebook demonstrating the toolbox is available here: |sysid_colab| `README <https://github.com/google-deepmind/mujoco/blob/main/python/mujoco/sysid/README.md>`__ for details.
Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`, |br| A Colab notebook demonstrating the toolbox is available here: |sysid_colab|
:github:user:`qiayuanl`, :github:user:`spjardim` and :github:user:`gizemozd`. |br| Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`,
:github:user:`qiayuanl`, :github:user:`spjardim` and :github:user:`gizemozd`.
.. |sysid_colab| image:: https://colab.research.google.com/assets/colab-badge.png .. |sysid_colab| image:: https://colab.research.google.com/assets/colab-badge.png
:target: https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/mujoco/sysid/sysid.ipynb :target: https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/mujoco/sysid/sysid.ipynb
- Actuators and sensors now support arbitrary delays via history buffers, and sensors values can be computed at
intervals larger than the simulation timestep. Using a delay or interval introduces a new ``mjData.history`` variable 3. Actuators and sensors now support arbitrary delays via history buffers, and sensor values can be computed at
to the :ref:`Physics state<siPhysicsState>`. See :ref:`Delays<CDelay>` for details. intervals larger than the simulation timestep. Using a delay or interval introduces a new ``mjData.history`` variable
to the :ref:`Physics state<siPhysicsState>`. See :ref:`Delays<CDelay>` for details.
.. image:: images/changelog/poncho.png .. image:: images/changelog/poncho.png
:width: 45% :width: 45%
:align: right :align: right
:target: https://github.com/google-deepmind/mujoco/blob/main/model/flex/poncho.xml :target: https://github.com/google-deepmind/mujoco/blob/main/model/flex/poncho.xml
- Added new :ref:`flexvert<equality-flexvert>` equality constraints that enable cloth simulations with coarser meshes. 4. Added new :ref:`flexvert<equality-flexvert>` equality constraints that enable cloth simulations with coarser meshes.
This adds a new option ``vert`` to flexcomp edge :ref:`equality<flexcomp-edge-equality>` and the new equality type This adds a new attribute value ``vert`` to flexcomp edge :ref:`equality<flexcomp-edge-equality>` and the new
:ref:`flexvert<equality-flexvert>`. equality type :ref:`flexvert<equality-flexvert>`. Uses the method described in
- Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast`` `Chen, Kry and Vouga, 2019 <https://arxiv.org/abs/1911.05204>`__.
:ref:`integrators<geIntegration>`. This method extracts the flex degrees of freedom and solves them as a dense block, 5. Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast``
enabling increased stability for stiff flex objects without reducing the timestep. It is compatible with the :ref:`integrators<geIntegration>`. This method extracts the flex degrees of freedom and solves them as a dense block,
``trilinear`` and ``quadratic`` :ref:`dof<body-flexcomp-dof>` types. enabling increased stability for stiff flex objects without reducing the timestep. It is compatible with the
``trilinear`` and ``quadratic`` :ref:`dof<body-flexcomp-dof>` types.
.. container:: custom-clear
.. raw:: html
<div style="clear: both;"></div>
.. image:: images/XMLreference/rfcamera.png .. image:: images/XMLreference/rfcamera.png
:width: 45% :width: 45%
:align: right :align: right
:target: https://github.com/google-deepmind/mujoco/blob/main/test/engine/testdata/sensor/rfcamera.xml :target: https://github.com/google-deepmind/mujoco/blob/main/test/engine/testdata/sensor/rfcamera.xml
- Rangefinder sensors can now be attached to a camera using the :ref:`ragefinder/camera<sensor-rangefinder-camera>` 6. Rangefinder sensors can now be attached to a camera using the :ref:`rangefinder/camera<sensor-rangefinder-camera>`
attribute. In this case, the sensor will cast multiple ray, one for each pixel. attribute. In this case, the sensor respects the :ref:`camera/resolution<body-camera-resolution>` attribute and casts
- :ref:`Rangefinders<sensor-rangefinder>` can now report various kinds of information besides ray distances, multiple rays, one for each pixel.
including surface normals. 7. :ref:`Rangefinders<sensor-rangefinder>` can now report various kinds of information besides ray distances,
including surface normals and intersection points.
.. container:: custom-clear .. container:: custom-clear
@@ -62,89 +60,90 @@ General
.. admonition:: Breaking API changes .. admonition:: Breaking API changes
:class: attention :class: attention
- Ray-cast functions now optionally compute the surface normal at the ray intersection. This is a breaking change due 8. Ray-cast functions now optionally compute the surface normal at the ray intersection. This is a breaking change
to the addition of the ``mjtNum normal[3]`` argument. The modified functions are :ref:`mj_ray`, :ref:`mj_multiRay`, due to the addition of the ``mjtNum normal[3]`` argument. The modified functions are :ref:`mj_ray`,
:ref:`mju_rayGeom`, :ref:`mj_rayFlex`, :ref:`mj_rayHfield` and :ref:`mj_rayMesh`. :ref:`mj_multiRay`, :ref:`mju_rayGeom`, :ref:`mj_rayFlex`, :ref:`mj_rayHfield` and :ref:`mj_rayMesh`.
**Migration:** In C/C++, pass ``NULL`` to the ``normal`` argument. In Python, in all functions except **Migration:** In C/C++, pass ``NULL`` to the ``normal`` argument. In Python, in all functions except
:ref:`mj_multiRay`, it defaults to ``None``, so no action is required. :ref:`mj_multiRay`, it defaults to ``None``, so no action is required.
- ``mju_rayFlex`` has been renamed to :ref:`mj_rayFlex` for consistency with other functions that take 9. ``mju_rayFlex`` has been renamed to :ref:`mj_rayFlex` for consistency with other functions that take
``mjModel*`` and ``mjData*`` arguments. ``mjModel*`` and ``mjData*`` arguments.
- The ``mjModel.cam_orthographic`` field has been renamed to ``cam_projection``, with the semantic of a new enum type 10. The ``mjModel.cam_orthographic`` field has been renamed to ``cam_projection``, with the semantic of a new enum
:ref:`mjtProjection`. This will allow for more projection types in the future like fisheye cameras. type :ref:`mjtProjection`. This will allow for more projection types in the future like fisheye cameras.
Relatedly, the ``camera/orthographic`` MJCF attribute for cameras has been renamed to Relatedly, the ``camera/orthographic`` MJCF attribute for cameras has been renamed to
:ref:`camera/projection<body-camera-projection>` and now accepts the values ``orthographic`` and ``perspective``. :ref:`camera/projection<body-camera-projection>` and now accepts the values ``orthographic`` and ``perspective``.
**Migration:** Replace ``orthographic = "false/true"`` with ``projection="perspective/orthographic"``, **Migration:** Replace ``orthographic = "false/true"`` with ``projection="perspective/orthographic"``,
respectively. respectively.
- Removed ``getdir`` from the ``mjpResourceProvider`` struct. All Resource Providers now use the same shared 11. Removed ``getdir`` from the ``mjpResourceProvider`` struct. All Resource Providers now use the same shared
implementation. implementation.
- When combining the ``margin`` and ``gap`` :ref:`parameters<CContact>` of two geoms to obtain the parameters 12. When combining the ``margin`` or ``gap`` :ref:`parameters<CContact>` of two geoms to obtain the parameters
of a contact, the respective values are now **summed** rather than than taking the maximum. This allows geom of a contact, the respective values are now **summed** rather than taking the maximum. This allows geom
margins to be a proper "inflation" of the geom. margins to be a proper "inflation" of the geom.
- Camera frustum visualization is now triggered by setting :ref:`resolution<body-camera-resolution>` to values larger 13. Camera frustum visualization is now triggered by setting :ref:`resolution<body-camera-resolution>` to values larger
than 1. Relatedly, frustum visualization also works for :ref:`orthographic<body-camera-projection>` cameras. than 1. Relatedly, frustum visualization also works for :ref:`orthographic<body-camera-projection>` cameras.
See :ref:`rangefinder<sensor-rangefinder>` for details. See :ref:`rangefinder<sensor-rangefinder>` for details.
- Cameras now have an :ref:`output<body-camera-output>` attribute, parsed into the ``mjModel.cam_output`` bitfield. 14. Cameras now have an :ref:`output<body-camera-output>` attribute, parsed into the ``mjModel.cam_output`` bitfield.
Unused by the renderer, it serves as a convenient location to store a camera's supported output types. Unused by the renderer, it serves as a convenient location to store a camera's supported output types.
- Added :ref:`mj_mountVFS` and :ref:`mj_unmountVFS` functions for mounting a custom VFS provider. Mounting Allows 15. Added :ref:`mj_mountVFS` and :ref:`mj_unmountVFS` functions for mounting a custom VFS provider. Mounting allows
providers to be used to open/read/close resources dynamically at arbitrary paths. providers to be used to open/read/close resources dynamically at arbitrary paths.
- The optimization whereby sequential :ref:`collision sensors<collision-sensors>` with identical attributes shared 16. The optimization whereby sequential :ref:`collision sensors<collision-sensors>` with identical attributes shared
computation has been removed. This results in a (likely minor) performance regression for models which exploited computation has been removed. This results in a (likely minor) performance regression for models which exploited
this optimization. To recover the performance, use the :ref:`fromto<sensor-fromto>` and compute the other values this optimization. To recover the performance, use the :ref:`fromto<sensor-fromto>` and compute the other values
manually. If ``from = fromto[0:3]`` and ``to = fromto[3:6]`` then ``distance = norm(to-from)`` and manually. If ``from = fromto[0:3]`` and ``to = fromto[3:6]`` then ``distance = norm(to-from)`` and
``normal = normalize(to-from)``. ``normal = normalize(to-from)``.
- Non-breaking ABI changes: 17. :doc:`OpenUSD <OpenUSD/index>`:
- The type of the ``sig`` (signature) argument of :ref:`mj_stateSize` and related functions has been changed from - Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending)
``unsigned int`` to ``int``. Before this change, invalid negative arguments passed to this function would result in - OpenUSD can now be built with the
a silent implicit cast, now negativity will trigger an error. `third_party_deps/openusd <https://github.com/google-deepmind/mujoco/tree/main/cmake/third_party_deps/openusd>`__
- Added a :ref:`depth<mjtRndFlag>` rendering flag. CMake utility project.
- Allocating sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes. - ``USD_DIR`` is no longer used by the MuJoCo CMake project, instead use ``pxr_DIR`` if you have a pre-built USD
library.
- Users no longer have to set ``PXR_PLUGINPATH_NAME`` environment variable, MuJoCo should load USD plugins
automatically.
18. Non-breaking ABI changes:
- :doc:`OpenUSD <OpenUSD/index>`: - The type of the ``sig`` (signature) argument of :ref:`mj_stateSize` and related functions has been changed from
``unsigned int`` to ``int``. Before this change, invalid negative arguments passed to this function would result
- Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending) in a silent implicit cast; now, negativity will trigger an error.
- OpenUSD can now be built with the - Added a :ref:`depth<mjtRndFlag>` rendering flag.
`third_party_deps/openusd <https://github.com/google-deepmind/mujoco/tree/main/cmake/third_party_deps/openusd>`__ - Allocation sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes.
CMake utility project.
- ``USD_DIR`` is no longer used by the MuJoCo CMake project, instead use ``pxr_DIR`` if you have a pre-built USD
library.
- Users no longer have to set ``PXR_PLUGINPATH_NAME`` environment variable, MuJoCo should load USD plugins
automatically.
MJX MJX
^^^ ^^^
- Added ``actuator_length``, ``cdof`` and ``cdof_dof`` fields to ``mjx.Data``. 19. Added ``actuator_length``, ``cdof`` and ``cdof_dof`` fields to ``mjx.Data``.
- Add ``graph_mode`` argument to ``put_model`` to support multiple Warp graph capture modes. 20. Add ``graph_mode`` argument to ``put_model`` to support multiple Warp graph capture modes.
Documentation Documentation
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- General improvements to the :ref:`Programming/Simulation<Simulation>` chapter. Notably, the main discussion of 21. General improvements to the :ref:`Programming/Simulation<Simulation>` chapter. Notably, the main discussion of
:ref:`state<siStateControl>` has been moved there, and the section on :ref:`mjModel changes<siChange>` has been :ref:`state<siStateControl>` has been moved there, and the section on :ref:`mjModel changes<siChange>` has been
expanded. expanded.
- The usability of the :ref:`MJCF schema<CSchema>` is improved with a collapsible dropdown menu with links to elements 22. The usability of the :ref:`MJCF schema<CSchema>` is improved with a collapsible dropdown menu with links to elements
and attributes. and attributes.
23. MuJoCo version numbering is now based on Semantic Versioning, see
`VERSIONING.md <https://github.com/google-deepmind/mujoco/blob/main/VERSIONING.md>`__.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
- Fixed a bug in :ref:`implicit integrator<geIntegrators>` derivatives where actuator velocity derivatives were 24. Fixed a bug in :ref:`implicit integrator<geIntegrators>` derivatives where actuator velocity derivatives were
incorrectly computed when the force was clamped by :ref:`forcerange<actuator-general-forcerange>`. incorrectly computed when the force was clamped by :ref:`forcerange<actuator-general-forcerange>`.
- Fixed a bug in :ref:`implicit integrator<geIntegrators>` derivatives where actuator velocity derivatives did not 25. Fixed a bug in :ref:`implicit integrator<geIntegrators>` derivatives where actuator velocity derivatives did not
account for the :ref:`actearly<actuator-general-actearly>` flag. account for the :ref:`actearly<actuator-general-actearly>` flag.
- Multi threaded mesh processing, enabled by the :ref:`usethread<compiler-usethread>` compiler flag (on by default), was 26. Multi-threaded mesh processing, enabled by the :ref:`usethread<compiler-usethread>` compiler flag (on by default),
in fact disabled by the flag. Fixing this bug speeds up compilation of mesh-heavy models by (up to) the number of was in fact disabled by the flag. Fixing this bug speeds up compilation of mesh-heavy models by (up to) the number
available cores. of available cores.
- The ``vertid`` argument of :ref:`mj_rayFlex` and :ref:`mju_raySkin` was marked as nullable but was not; it is now 27. The ``vertid`` argument of :ref:`mj_rayFlex` and :ref:`mju_raySkin` was marked as nullable but was not; it is now
nullable. nullable.
- Fixed :ref:`gravcomp<body-gravcomp>` being ignored for bodies with no joints nested inside jointed parent bodies 28. Fixed :ref:`gravcomp<body-gravcomp>` being ignored for bodies with no joints nested inside jointed parent bodies
(:issue:`3066`, reported by :github:user:`Alex108306`). (:issue:`3066`, reported by :github:user:`Alex108306`).
Version 3.4.0 (December 5, 2025) Version 3.4.0 (December 5, 2025)
-------------------------------- --------------------------------
+1 -2
View File
@@ -11,8 +11,7 @@ MuJoCo Warp (MJWarp)
MuJoCo Warp (MJWarp) is an implementation of MuJoCo written in `Warp <https://nvidia.github.io/warp/>`__ and optimized MuJoCo Warp (MJWarp) is an implementation of MuJoCo written in `Warp <https://nvidia.github.io/warp/>`__ and optimized
for `NVIDIA <https://nvidia.com>`__ hardware and parallel simulation. MJWarp lives in the for `NVIDIA <https://nvidia.com>`__ hardware and parallel simulation. MJWarp lives in the
`google-deepmind/mujoco_warp <https://github.com/google-deepmind/mujoco_warp>`__ GitHub repository and is currently in `google-deepmind/mujoco_warp <https://github.com/google-deepmind/mujoco_warp>`__ GitHub repository.
beta.
MJWarp is developed and maintained as a joint effort by `NVIDIA <https://nvidia.com>`__ and MJWarp is developed and maintained as a joint effort by `NVIDIA <https://nvidia.com>`__ and
`Google DeepMind <https://deepmind.google/>`__. `Google DeepMind <https://deepmind.google/>`__.