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
|
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)
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|||||||
@@ -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/>`__.
|
||||||
|
|||||||
Reference in New Issue
Block a user