From 54b8b68b230964f36e30551ff6e9fbef41814c49 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Thu, 12 Feb 2026 03:15:44 -0800 Subject: [PATCH] Prepare changelog for release PiperOrigin-RevId: 869124525 Change-Id: I7ea6f3c1cf163e98b1bc0b8ed87f8e44afd59ab5 --- doc/changelog.rst | 177 +++++++++++++++++++++---------------------- doc/mjwarp/index.rst | 3 +- 2 files changed, 89 insertions(+), 91 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index e5dc43c9..f154a38b 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -8,47 +8,45 @@ Upcoming version (not yet released) Significant new features ^^^^^^^^^^^^^^^^^^^^^^^^ -- Added new System Identification toolbox (Python), see - `README `__ for details. - A Colab notebook demonstrating the toolbox is available here: |sysid_colab| - Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`, - :github:user:`qiayuanl`, :github:user:`spjardim` and :github:user:`gizemozd`. +1. :doc:`MuJoCo Warp ` is now officially released. +2. Added a new **System Identification** toolbox (Python), see + `README `__ for details. + |br| A Colab notebook demonstrating the toolbox is available here: |sysid_colab| + |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 :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 - to the :ref:`Physics state`. See :ref:`Delays` for details. + +3. Actuators and sensors now support arbitrary delays via history buffers, and sensor values can be computed at + intervals larger than the simulation timestep. Using a delay or interval introduces a new ``mjData.history`` variable + to the :ref:`Physics state`. See :ref:`Delays` for details. .. image:: images/changelog/poncho.png :width: 45% :align: right :target: https://github.com/google-deepmind/mujoco/blob/main/model/flex/poncho.xml -- Added new :ref:`flexvert` equality constraints that enable cloth simulations with coarser meshes. - This adds a new option ``vert`` to flexcomp edge :ref:`equality` and the new equality type - :ref:`flexvert`. -- Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast`` - :ref:`integrators`. This method extracts the flex degrees of freedom and solves them as a dense block, - enabling increased stability for stiff flex objects without reducing the timestep. It is compatible with the - ``trilinear`` and ``quadratic`` :ref:`dof` types. - -.. container:: custom-clear - - .. raw:: html - -
+4. Added new :ref:`flexvert` equality constraints that enable cloth simulations with coarser meshes. + This adds a new attribute value ``vert`` to flexcomp edge :ref:`equality` and the new + equality type :ref:`flexvert`. Uses the method described in + `Chen, Kry and Vouga, 2019 `__. +5. Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast`` + :ref:`integrators`. This method extracts the flex degrees of freedom and solves them as a dense block, + enabling increased stability for stiff flex objects without reducing the timestep. It is compatible with the + ``trilinear`` and ``quadratic`` :ref:`dof` types. .. image:: images/XMLreference/rfcamera.png :width: 45% :align: right :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` - attribute. In this case, the sensor will cast multiple ray, one for each pixel. -- :ref:`Rangefinders` can now report various kinds of information besides ray distances, - including surface normals. +6. Rangefinder sensors can now be attached to a camera using the :ref:`rangefinder/camera` + attribute. In this case, the sensor respects the :ref:`camera/resolution` attribute and casts + multiple rays, one for each pixel. +7. :ref:`Rangefinders` can now report various kinds of information besides ray distances, + including surface normals and intersection points. .. container:: custom-clear @@ -62,89 +60,90 @@ General .. admonition:: Breaking API changes :class: attention - - Ray-cast functions now optionally compute the surface normal at the ray intersection. This is a breaking change due - to the addition of the ``mjtNum normal[3]`` argument. The modified functions are :ref:`mj_ray`, :ref:`mj_multiRay`, - :ref:`mju_rayGeom`, :ref:`mj_rayFlex`, :ref:`mj_rayHfield` and :ref:`mj_rayMesh`. + 8. Ray-cast functions now optionally compute the surface normal at the ray intersection. This is a breaking change + due to the addition of the ``mjtNum normal[3]`` argument. The modified functions are :ref:`mj_ray`, + :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 - :ref:`mj_multiRay`, it defaults to ``None``, so no action is required. + **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. - - ``mju_rayFlex`` has been renamed to :ref:`mj_rayFlex` for consistency with other functions that take - ``mjModel*`` and ``mjData*`` arguments. + 9. ``mju_rayFlex`` has been renamed to :ref:`mj_rayFlex` for consistency with other functions that take + ``mjModel*`` and ``mjData*`` arguments. - - The ``mjModel.cam_orthographic`` field has been renamed to ``cam_projection``, with the semantic of a new enum 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 - :ref:`camera/projection` and now accepts the values ``orthographic`` and ``perspective``. + 10. The ``mjModel.cam_orthographic`` field has been renamed to ``cam_projection``, with the semantic of a new enum + 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 + :ref:`camera/projection` and now accepts the values ``orthographic`` and ``perspective``. - **Migration:** Replace ``orthographic = "false/true"`` with ``projection="perspective/orthographic"``, - respectively. + **Migration:** Replace ``orthographic = "false/true"`` with ``projection="perspective/orthographic"``, + respectively. - - Removed ``getdir`` from the ``mjpResourceProvider`` struct. All Resource Providers now use the same shared - implementation. - - When combining the ``margin`` and ``gap`` :ref:`parameters` 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 - margins to be a proper "inflation" of the geom. + 11. Removed ``getdir`` from the ``mjpResourceProvider`` struct. All Resource Providers now use the same shared + implementation. + 12. When combining the ``margin`` or ``gap`` :ref:`parameters` of two geoms to obtain the parameters + 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. -- Camera frustum visualization is now triggered by setting :ref:`resolution` to values larger - than 1. Relatedly, frustum visualization also works for :ref:`orthographic` cameras. - See :ref:`rangefinder` for details. -- Cameras now have an :ref:`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. -- 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. -- The optimization whereby sequential :ref:`collision sensors` with identical attributes shared - 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` and compute the other values - manually. If ``from = fromto[0:3]`` and ``to = fromto[3:6]`` then ``distance = norm(to-from)`` and - ``normal = normalize(to-from)``. -- Non-breaking ABI changes: +13. Camera frustum visualization is now triggered by setting :ref:`resolution` to values larger + than 1. Relatedly, frustum visualization also works for :ref:`orthographic` cameras. + See :ref:`rangefinder` for details. +14. Cameras now have an :ref:`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. +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. +16. The optimization whereby sequential :ref:`collision sensors` with identical attributes shared + 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` and compute the other values + manually. If ``from = fromto[0:3]`` and ``to = fromto[3:6]`` then ``distance = norm(to-from)`` and + ``normal = normalize(to-from)``. +17. :doc:`OpenUSD `: - - 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 in - a silent implicit cast, now negativity will trigger an error. - - Added a :ref:`depth` rendering flag. - - Allocating sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes. + - Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending) + - OpenUSD can now be built with the + `third_party_deps/openusd `__ + 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. +18. Non-breaking ABI changes: -- :doc:`OpenUSD `: - - - Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending) - - OpenUSD can now be built with the - `third_party_deps/openusd `__ - 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. + - 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 + in a silent implicit cast; now, negativity will trigger an error. + - Added a :ref:`depth` rendering flag. + - Allocation sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes. MJX ^^^ -- 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. +19. Added ``actuator_length``, ``cdof`` and ``cdof_dof`` fields to ``mjx.Data``. +20. Add ``graph_mode`` argument to ``put_model`` to support multiple Warp graph capture modes. Documentation ^^^^^^^^^^^^^ -- General improvements to the :ref:`Programming/Simulation` chapter. Notably, the main discussion of - :ref:`state` has been moved there, and the section on :ref:`mjModel changes` has been - expanded. -- The usability of the :ref:`MJCF schema` is improved with a collapsible dropdown menu with links to elements - and attributes. +21. General improvements to the :ref:`Programming/Simulation` chapter. Notably, the main discussion of + :ref:`state` has been moved there, and the section on :ref:`mjModel changes` has been + expanded. +22. The usability of the :ref:`MJCF schema` is improved with a collapsible dropdown menu with links to elements + and attributes. +23. MuJoCo version numbering is now based on Semantic Versioning, see + `VERSIONING.md `__. Bug fixes ^^^^^^^^^ -- Fixed a bug in :ref:`implicit integrator` derivatives where actuator velocity derivatives were - incorrectly computed when the force was clamped by :ref:`forcerange`. -- Fixed a bug in :ref:`implicit integrator` derivatives where actuator velocity derivatives did not - account for the :ref:`actearly` flag. -- Multi threaded mesh processing, enabled by the :ref:`usethread` compiler flag (on by default), was - in fact disabled by the flag. Fixing this bug speeds up compilation of mesh-heavy models by (up to) the number of - available cores. -- The ``vertid`` argument of :ref:`mj_rayFlex` and :ref:`mju_raySkin` was marked as nullable but was not; it is now - nullable. -- Fixed :ref:`gravcomp` being ignored for bodies with no joints nested inside jointed parent bodies - (:issue:`3066`, reported by :github:user:`Alex108306`). +24. Fixed a bug in :ref:`implicit integrator` derivatives where actuator velocity derivatives were + incorrectly computed when the force was clamped by :ref:`forcerange`. +25. Fixed a bug in :ref:`implicit integrator` derivatives where actuator velocity derivatives did not + account for the :ref:`actearly` flag. +26. Multi-threaded mesh processing, enabled by the :ref:`usethread` compiler flag (on by default), + was in fact disabled by the flag. Fixing this bug speeds up compilation of mesh-heavy models by (up to) the number + of available cores. +27. The ``vertid`` argument of :ref:`mj_rayFlex` and :ref:`mju_raySkin` was marked as nullable but was not; it is now + nullable. +28. Fixed :ref:`gravcomp` being ignored for bodies with no joints nested inside jointed parent bodies + (:issue:`3066`, reported by :github:user:`Alex108306`). Version 3.4.0 (December 5, 2025) -------------------------------- diff --git a/doc/mjwarp/index.rst b/doc/mjwarp/index.rst index 15cae19d..93e6e611 100644 --- a/doc/mjwarp/index.rst +++ b/doc/mjwarp/index.rst @@ -11,8 +11,7 @@ MuJoCo Warp (MJWarp) MuJoCo Warp (MJWarp) is an implementation of MuJoCo written in `Warp `__ and optimized for `NVIDIA `__ hardware and parallel simulation. MJWarp lives in the -`google-deepmind/mujoco_warp `__ GitHub repository and is currently in -beta. +`google-deepmind/mujoco_warp `__ GitHub repository. MJWarp is developed and maintained as a joint effort by `NVIDIA `__ and `Google DeepMind `__.