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
+50 -51
View File
@@ -8,16 +8,18 @@ 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.
2. Added a new **System Identification** toolbox (Python), see
`README <https://github.com/google-deepmind/mujoco/blob/main/python/mujoco/sysid/README.md>`__ for details. `README <https://github.com/google-deepmind/mujoco/blob/main/python/mujoco/sysid/README.md>`__ for details.
A Colab notebook demonstrating the toolbox is available here: |sysid_colab| |br| A Colab notebook demonstrating the toolbox is available here: |sysid_colab|
Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`, |br| Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`,
:github:user:`qiayuanl`, :github:user:`spjardim` and :github:user:`gizemozd`. :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
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 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. to the :ref:`Physics state<siPhysicsState>`. See :ref:`Delays<CDelay>` for details.
@@ -26,29 +28,25 @@ Significant new features
: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>`__.
5. Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast``
:ref:`integrators<geIntegration>`. This method extracts the flex degrees of freedom and solves them as a dense block, :ref:`integrators<geIntegration>`. 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 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. ``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,51 +60,43 @@ 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
``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<mjtRndFlag>` rendering flag.
- Allocating sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes.
- :doc:`OpenUSD <OpenUSD/index>`:
- Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending) - Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending)
- OpenUSD can now be built with the - OpenUSD can now be built with the
@@ -116,34 +106,43 @@ General
library. library.
- Users no longer have to set ``PXR_PLUGINPATH_NAME`` environment variable, MuJoCo should load USD plugins - Users no longer have to set ``PXR_PLUGINPATH_NAME`` environment variable, MuJoCo should load USD plugins
automatically. automatically.
18. Non-breaking ABI changes:
- 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<mjtRndFlag>` rendering flag.
- Allocation sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes.
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/>`__.