Prepare changelog for release
PiperOrigin-RevId: 869124525 Change-Id: I7ea6f3c1cf163e98b1bc0b8ed87f8e44afd59ab5
This commit is contained in:
committed by
Copybara-Service
parent
14116336e0
commit
54b8b68b23
+88
-89
@@ -8,47 +8,45 @@ Upcoming version (not yet released)
|
||||
Significant new features
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- Added 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`,
|
||||
:github:user:`qiayuanl`, :github:user:`spjardim` and :github:user:`gizemozd`.
|
||||
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.
|
||||
|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<siPhysicsState>`. See :ref:`Delays<CDelay>` 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<siPhysicsState>`. See :ref:`Delays<CDelay>` 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-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``
|
||||
: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>
|
||||
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.
|
||||
|
||||
.. 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,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<body-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<body-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<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
|
||||
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<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
|
||||
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.
|
||||
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<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:
|
||||
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.
|
||||
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.
|
||||
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<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)``.
|
||||
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.
|
||||
- Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending)
|
||||
- OpenUSD can now be built with the
|
||||
`third_party_deps/openusd <https://github.com/google-deepmind/mujoco/tree/main/cmake/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 <OpenUSD/index>`:
|
||||
|
||||
- Parsing has been moved out of experimental into a mjpDecoder plugin. (documentation pending)
|
||||
- OpenUSD can now be built with the
|
||||
`third_party_deps/openusd <https://github.com/google-deepmind/mujoco/tree/main/cmake/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<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
|
||||
: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
|
||||
and attributes.
|
||||
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.
|
||||
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
|
||||
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
|
||||
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
|
||||
nullable.
|
||||
- Fixed :ref:`gravcomp<body-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<geIntegrators>` derivatives where actuator velocity derivatives were
|
||||
incorrectly computed when the force was clamped by :ref:`forcerange<actuator-general-forcerange>`.
|
||||
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.
|
||||
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.
|
||||
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)
|
||||
--------------------------------
|
||||
|
||||
@@ -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/>`__.
|
||||
|
||||
Reference in New Issue
Block a user