Dynamically allocate contact and efc_ arrays on a new memory arena.
- Add private function `mj_arenaAlloc`. This is used internally to allocate memory from the arena. - Add private function `mj_nefc` to count constraints. This function returns a tight upper bound on `d->nefc`. The number of counted constraints can be slightly bigger than exact `d->nefc` in the case of constraints with empty Jacobian, as when placing a frictional tendon between two world sites. - Add new `memory` attribute to the `size` XML element for specification of arena memory size. This attribute is mutually exclusive with `nstack` and `njmax` specifications, which are now deprecated (but left around for the time being for legacy compatibility). - Move `d->stack` to the end of the new arena space. The stack now grows in reverse from the end. PiperOrigin-RevId: 479341539 Change-Id: Ie019c202e0908577ffc6f833a37920858116f667
This commit is contained in:
committed by
Copybara-Service
parent
4d85a464cc
commit
58fd72f53d
+14
-3
@@ -9,9 +9,17 @@ Upcoming version (not yet released)
|
||||
General
|
||||
^^^^^^^
|
||||
|
||||
.. youtube:: RHnXD6uO3Mg
|
||||
:align: right
|
||||
:height: 150px
|
||||
- The ``contact`` array and arrays prefixed with ``efc_`` in ``mjData`` were moved out of the ``buffer`` into a new
|
||||
``arena`` memory space. These arrays are no longer allocated with fixed sizes when ``mjData`` is created.
|
||||
Instead, the exact memory requirement is determined during each call to :ref:`mj_forward` (specifically,
|
||||
in :ref:`mj_collision` and :ref:`mj_makeConstraint`) and the arrays are allocated from the ``arena`` space. The
|
||||
``stack`` now also shares its available memory with ``arena``. This change reduces the memory footprint of ``mjData``
|
||||
in models that do not use the PGS solver, and will allow for significant memory reductions in the future.
|
||||
See the :ref:`Memory allocation <CSize>` section for details.
|
||||
|
||||
.. youtube:: RHnXD6uO3Mg
|
||||
:align: right
|
||||
:height: 150px
|
||||
|
||||
- Added colab notebook tutorial showing how to balance the humanoid on one leg with a Linear Quadratic Regulator. The
|
||||
notebook uses MuJoCo's native Python bindings, and includes a draft ``Renderer`` class, for easy rendering in Python.
|
||||
@@ -59,6 +67,9 @@ Python bindings
|
||||
`named accessor <https://mujoco.readthedocs.io/en/latest/python.html#named-access>`_ objects. These provide more
|
||||
Pythonic API access to ``mj_name2id`` and ``mj_id2name`` respectively.
|
||||
|
||||
- The length of ``MjData.contact`` is now ``ncon`` rather than ``nconmax``, allowing it to be straightforwardly used as
|
||||
an iterator without needing to check ``ncon``.
|
||||
|
||||
|
||||
Version 2.2.2 (September 7, 2022)
|
||||
---------------------------------
|
||||
|
||||
Reference in New Issue
Block a user