Update changelog.rst for version 2.3.3
PiperOrigin-RevId: 517932202 Change-Id: I55063e9bc5da2d424b1ad303834d8f11cb0a0fa9
This commit is contained in:
committed by
Copybara-Service
parent
33a2ce73d4
commit
e58d53e747
+50
-50
@@ -2,83 +2,83 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Upcoming version (not yet released)
|
Version 2.3.3 (March 20, 2023)
|
||||||
-----------------------------------
|
------------------------------
|
||||||
|
|
||||||
General
|
General
|
||||||
^^^^^^^
|
^^^^^^^
|
||||||
|
|
||||||
- Improvements to implicit integration:
|
1. Improvements to implicit integration:
|
||||||
|
|
||||||
- The derivatives of the RNE algorithm are now computed using sparse math, leading to significant speed
|
- The derivatives of the RNE algorithm are now computed using sparse math, leading to significant speed
|
||||||
improvements for large models when using the :ref:`implicit integrator<geIntegration>`.
|
improvements for large models when using the :ref:`implicit integrator<geIntegration>`.
|
||||||
- A new integrator called ``implicitfast`` was added. It is similar to the existing implicit integrator, but skips the
|
- A new integrator called ``implicitfast`` was added. It is similar to the existing implicit integrator, but skips the
|
||||||
derivatives of Coriolis and centripetal forces. See the :ref:`numerical integration<geIntegration>` section for a
|
derivatives of Coriolis and centripetal forces. See the :ref:`numerical integration<geIntegration>` section for a
|
||||||
detailed motivation and discussion. The implicitfast integrator is recommended for all new models and will
|
detailed motivation and discussion. The implicitfast integrator is recommended for all new models and will
|
||||||
become the default integrator in a future version.
|
become the default integrator in a future version.
|
||||||
|
|
||||||
The table below shows the compute cost of the 627-DoF `humanoid100
|
The table below shows the compute cost of the 627-DoF `humanoid100
|
||||||
<https://github.com/deepmind/mujoco/blob/main/model/humanoid100/humanoid100.xml>`_ model using different integrators.
|
<https://github.com/deepmind/mujoco/blob/main/model/humanoid100/humanoid100.xml>`_ model using different integrators.
|
||||||
"implicit (old)" uses dense RNE derivatives, "implicit (new)" is after the sparsification mentioned above.
|
"implicit (old)" uses dense RNE derivatives, "implicit (new)" is after the sparsification mentioned above.
|
||||||
Timings were measured on a single core of an AMD 3995WX CPU.
|
Timings were measured on a single core of an AMD 3995WX CPU.
|
||||||
|
|
||||||
.. csv-table::
|
.. csv-table::
|
||||||
:header: "timing", "Euler", "implicitfast", "implicit (new)", "implicit (old)"
|
:header: "timing", "Euler", "implicitfast", "implicit (new)", "implicit (old)"
|
||||||
:widths: auto
|
:widths: auto
|
||||||
:align: left
|
:align: left
|
||||||
|
|
||||||
one step (ms), 0.5, 0.53, 0.77, 5.0
|
one step (ms), 0.5, 0.53, 0.77, 5.0
|
||||||
steps/second, 2000, 1900, 1300, 200
|
steps/second, 2000, 1900, 1300, 200
|
||||||
|
|
||||||
.. image:: images/computation/midphase.gif
|
.. image:: images/computation/midphase.gif
|
||||||
:align: right
|
:align: right
|
||||||
:width: 350px
|
:width: 350px
|
||||||
|
|
||||||
- Added a collision mid-phase for pruning geoms in body pairs, see :ref:`documentation<coSelection>` for more details.
|
2. Added a collision mid-phase for pruning geoms in body pairs, see :ref:`documentation<coSelection>` for more details.
|
||||||
This is based on static AABB bounding volume hierarchy (a BVH binary tree) in the body inertial frame. The GIF on the
|
This is based on static AABB bounding volume hierarchy (a BVH binary tree) in the body inertial frame. The GIF on
|
||||||
right is cut from `this longer video <https://youtu.be/e0babIM8hBo>`_.
|
the right is cut from `this longer video <https://youtu.be/e0babIM8hBo>`_.
|
||||||
- The ``mjd_transitionFD`` function no longer triggers sensor calculation unless explicitly requested.
|
#. The ``mjd_transitionFD`` function no longer triggers sensor calculation unless explicitly requested.
|
||||||
- Corrected the spelling of the ``inteval`` attribute to ``interval`` in the :ref:`mjLROpt` struct.
|
#. Corrected the spelling of the ``inteval`` attribute to ``interval`` in the :ref:`mjLROpt` struct.
|
||||||
- Mesh texture and normal mappings are now 3-per-triangle rather than 1-per-vertex. Mesh vertices are no longer
|
#. Mesh texture and normal mappings are now 3-per-triangle rather than 1-per-vertex. Mesh vertices are no longer
|
||||||
duplicated in order to circumvent this limitation as they previously were.
|
duplicated in order to circumvent this limitation as they previously were.
|
||||||
- The non-zeros for the sparse constraint Jacobian matrix are now precounted and used for matrix memory allocation.
|
#. The non-zeros for the sparse constraint Jacobian matrix are now precounted and used for matrix memory allocation.
|
||||||
For instance, the constraint Jacobian matrix from the `humanoid100
|
For instance, the constraint Jacobian matrix from the `humanoid100
|
||||||
<https://github.com/deepmind/mujoco/blob/main/model/humanoid100/humanoid100.xml>`_ model, which previously required
|
<https://github.com/deepmind/mujoco/blob/main/model/humanoid100/humanoid100.xml>`_ model, which previously required
|
||||||
~500,000 ``mjtNum``'s, now only requires ~6000. Very large models can now load and run with the CG solver.
|
~500,000 ``mjtNum``'s, now only requires ~6000. Very large models can now load and run with the CG solver.
|
||||||
- Modified :ref:`mju_error` and :ref:`mju_warning` to be variadic functions (support for printf-like arguments). The
|
#. Modified :ref:`mju_error` and :ref:`mju_warning` to be variadic functions (support for printf-like arguments). The
|
||||||
functions :ref:`mju_error_i`, :ref:`mju_error_s`, :ref:`mju_warning_i`, and :ref:`mju_warning_s` are now deprecated.
|
functions :ref:`mju_error_i`, :ref:`mju_error_s`, :ref:`mju_warning_i`, and :ref:`mju_warning_s` are now deprecated.
|
||||||
- Implemented a performant ``mju_sqrMatTDSparse`` function that doesn't require dense memory allocation.
|
#. Implemented a performant ``mju_sqrMatTDSparse`` function that doesn't require dense memory allocation.
|
||||||
- Added ``mj_stackAllocInt`` to get correct size for allocating ints on mjData stack. Reducing stack memory usage
|
#. Added ``mj_stackAllocInt`` to get correct size for allocating ints on mjData stack. Reducing stack memory usage
|
||||||
by 10% - 15%.
|
by 10% - 15%.
|
||||||
|
|
||||||
|
|
||||||
Python bindings
|
Python bindings
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Fixed IPython history corruption when using ``viewer.launch_repl``. The ``launch_repl`` function now provides seamless
|
10. Fixed IPython history corruption when using ``viewer.launch_repl``. The ``launch_repl`` function now provides
|
||||||
continuation of an IPython interactive shell session, and is no longer considered experimental feature.
|
seamless continuation of an IPython interactive shell session, and is no longer considered experimental feature.
|
||||||
- Added ``viewer.launch_passive`` which launches the interactive viewer in a passive, non-blocking mode. Calls to
|
#. Added ``viewer.launch_passive`` which launches the interactive viewer in a passive, non-blocking mode. Calls to
|
||||||
``launch_passive`` return immediately, allowing user code to continue execution, with the viewer automatically
|
``launch_passive`` return immediately, allowing user code to continue execution, with the viewer automatically
|
||||||
reflecting any changes to the physics state. (Note that this functionality is currently in experimental/beta stage,
|
reflecting any changes to the physics state. (Note that this functionality is currently in experimental/beta stage,
|
||||||
and is not yet described in our :ref:`viewer documentation<PyViewer>`.)
|
and is not yet described in our :ref:`viewer documentation<PyViewer>`.)
|
||||||
- Added the ``mjpython`` launcher for macOS, which is required for ``viewer.launch_passive`` to function there.
|
#. Added the ``mjpython`` launcher for macOS, which is required for ``viewer.launch_passive`` to function there.
|
||||||
- Removed ``efc_`` fields from joint indexers. Since the introduction of arena memory, these fields now have dynamic
|
#. Removed ``efc_`` fields from joint indexers. Since the introduction of arena memory, these fields now have dynamic
|
||||||
sizes that change between time steps depending on the number of active constraints, breaking strict correspondence
|
sizes that change between time steps depending on the number of active constraints, breaking strict correspondence
|
||||||
between joints and ``efc_`` rows.
|
between joints and ``efc_`` rows.
|
||||||
- Added a number of missing fields to the bindings of ``mjVisual`` and ``mjvPerturb`` structs.
|
#. Added a number of missing fields to the bindings of ``mjVisual`` and ``mjvPerturb`` structs.
|
||||||
|
|
||||||
Simulate
|
Simulate
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
- Implemented a workaround for `broken VSync <https://github.com/glfw/glfw/issues/2249>`_ on macOS so that the frame
|
15. Implemented a workaround for `broken VSync <https://github.com/glfw/glfw/issues/2249>`_ on macOS so that the frame
|
||||||
rate is correctly capped when the Vertical Sync toggle is enabled.
|
rate is correctly capped when the Vertical Sync toggle is enabled.
|
||||||
|
|
||||||
.. image:: images/changelog/contactlabel.png
|
.. image:: images/changelog/contactlabel.png
|
||||||
:align: right
|
:align: right
|
||||||
:width: 400px
|
:width: 400px
|
||||||
|
|
||||||
- Added optional labels to contact visualization, indicating which two geoms are contacting (names if defined, ids
|
16. Added optional labels to contact visualization, indicating which two geoms are contacting (names if defined, ids
|
||||||
otherwise). This can be useful in cluttered scenes.
|
otherwise). This can be useful in cluttered scenes.
|
||||||
|
|
||||||
|br|
|
|br|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user