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