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
^^^^^^^^^^^^^^^^^^^^^^^^
- 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.
A Colab notebook demonstrating the toolbox is available here: |sysid_colab|
Contribution by :github:user:`kevinzakka`, :github:user:`aftersomemath`, :github:user:`jonathanembleyriches`,
|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
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<siPhysicsState>`. See :ref:`Delays<CDelay>` for details.
@@ -26,29 +28,25 @@ Significant new features
:align: right
: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.
This adds a new option ``vert`` to flexcomp edge :ref:`equality<flexcomp-edge-equality>` and the new equality type
:ref:`flexvert<equality-flexvert>`.
- Added implicit integration support for deformable objects (flex) in ``implicit`` and ``implicitfast``
4. Added new :ref:`flexvert<equality-flexvert>` equality constraints that enable cloth simulations with coarser meshes.
This adds a new attribute value ``vert`` to flexcomp edge :ref:`equality<flexcomp-edge-equality>` and the new
equality type :ref:`flexvert<equality-flexvert>`. Uses the method described in
`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,
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
: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<sensor-rangefinder-camera>`
attribute. In this case, the sensor will cast multiple ray, one for each pixel.
- :ref:`Rangefinders<sensor-rangefinder>` 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<sensor-rangefinder-camera>`
attribute. In this case, the sensor respects the :ref:`camera/resolution<body-camera-resolution>` attribute and casts
multiple rays, one for each pixel.
7. :ref:`Rangefinders<sensor-rangefinder>` can now report various kinds of information besides ray distances,
including surface normals and intersection points.
.. container:: custom-clear
@@ -62,51 +60,43 @@ 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.
- ``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.
- 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.
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<body-camera-projection>` and now accepts the values ``orthographic`` and ``perspective``.
**Migration:** Replace ``orthographic = "false/true"`` with ``projection="perspective/orthographic"``,
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.
- When combining the ``margin`` and ``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
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 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<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.
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.
- 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.
- 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
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
``normal = normalize(to-from)``.
- 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.
- Allocating sizes in :ref:`mjModel` now use 64-bit rather than 32-bit integers to accommodate larger scenes.
- :doc:`OpenUSD <OpenUSD/index>`:
17. :doc:`OpenUSD <OpenUSD/index>`:
- Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending)
- OpenUSD can now be built with the
@@ -116,34 +106,43 @@ General
library.
- Users no longer have to set ``PXR_PLUGINPATH_NAME`` environment variable, MuJoCo should load USD plugins
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
^^^
- 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<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
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.
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
^^^^^^^^^
- 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>`.
- 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.
- Multi threaded mesh processing, enabled by the :ref:`usethread<compiler-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
26. Multi-threaded mesh processing, enabled by the :ref:`usethread<compiler-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.
- 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`).
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
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
beta.
`google-deepmind/mujoco_warp <https://github.com/google-deepmind/mujoco_warp>`__ GitHub repository.
MJWarp is developed and maintained as a joint effort by `NVIDIA <https://nvidia.com>`__ and
`Google DeepMind <https://deepmind.google/>`__.