Add vertex equality option.
PiperOrigin-RevId: 860299454 Change-Id: I7befd8e5f4c8bac6d74684a96a9cc3cee9ae1e29
This commit is contained in:
committed by
Copybara-Service
parent
a5de40b400
commit
7da271c687
+29
-3
@@ -3820,9 +3820,10 @@ element is used to adjust the properties of all edges in the flex.
|
||||
|
||||
.. _flexcomp-edge-equality:
|
||||
|
||||
:at:`equality`: :at-val:`[true, false], "false"`
|
||||
When enabled, an equality constraint of :ref:`type flex<equality-flex>` is added to the model, referencing the
|
||||
automatically-generated flex by name.
|
||||
:at:`equality`: :at-val:`[false, true, vert], "false"`
|
||||
The type of equality constraint applied to this edge. If **false**, no equality constraint is applied. If **true**,
|
||||
then edge constraints are enforced. If **vert**, an averaged constraint is used, see
|
||||
:ref:`flexvert<equality-flexvert>`.
|
||||
|
||||
.. _flexcomp-edge-solref:
|
||||
.. _flexcomp-edge-solimp:
|
||||
@@ -4801,6 +4802,31 @@ as there are edges in the specified flex.
|
||||
Name of the flex whose edges are being constrained.
|
||||
|
||||
|
||||
.. _equality-flexvert:
|
||||
|
||||
:el-prefix:`equality/` |-| **flexvert** |m|
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This element constrains the trace and the derminant of the strain tensor to that of the identity matrix as in Chen, Kry,
|
||||
and Vouga, "Locking-free Simulation of Isometric Thin Plates", 2019. The strain tensor is computed per triangle and
|
||||
averaged over all triangles adjacent to a vertex. This reduces the number of constraints from 2T to 2V, freeing
|
||||
V degrees of freedom to avoid locking. It is only supported for dimension 2, i.e., cloth-like flexes.
|
||||
|
||||
.. _equality-flexvert-name:
|
||||
.. _equality-flexvert-class:
|
||||
.. _equality-flexvert-active:
|
||||
.. _equality-flexvert-solref:
|
||||
.. _equality-flexvert-solimp:
|
||||
|
||||
:at:`name`, :at:`class`, :at:`active`, :at:`solref`, :at:`solimp`
|
||||
Same as in :ref:`connect <equality-connect>` element.
|
||||
|
||||
.. _equality-flexvert-flex:
|
||||
|
||||
:at:`flex`: :at-val:`string, required`
|
||||
Name of the flex whose vertices are being constrained.
|
||||
|
||||
|
||||
.. _equality-distance:
|
||||
|
||||
:el-prefix:`equality/` |-| **distance** |m|
|
||||
|
||||
@@ -2021,6 +2021,30 @@
|
||||
:ref:`solimp<equality-flex-solimp>`
|
||||
|
||||
|
||||
.. dropdown:: flexvert |m|
|
||||
|
||||
.. grid:: 2 3 4 4
|
||||
:gutter: 0
|
||||
|
||||
.. grid-item::
|
||||
:ref:`name<equality-flexvert-name>`
|
||||
|
||||
.. grid-item::
|
||||
:ref:`class<equality-flexvert-class>`
|
||||
|
||||
.. grid-item::
|
||||
:ref:`flex<equality-flexvert-flex>`
|
||||
|
||||
.. grid-item::
|
||||
:ref:`active<equality-flexvert-active>`
|
||||
|
||||
.. grid-item::
|
||||
:ref:`solref<equality-flexvert-solref>`
|
||||
|
||||
.. grid-item::
|
||||
:ref:`solimp<equality-flexvert-solimp>`
|
||||
|
||||
|
||||
.. dropdown:: tendon |m|
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,15 @@ Upcoming version (not yet released)
|
||||
General
|
||||
^^^^^^^
|
||||
|
||||
.. 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>`.
|
||||
|
||||
.. image:: images/XMLreference/rfcamera.png
|
||||
:width: 45%
|
||||
:align: right
|
||||
@@ -65,6 +74,7 @@ General
|
||||
- Allcating 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``.
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 608 KiB |
@@ -603,6 +603,7 @@ typedef enum mjtEq_ { // type of equality constraint
|
||||
mjEQ_JOINT, // couple the values of two scalar joints with cubic
|
||||
mjEQ_TENDON, // couple the lengths of two tendons with cubic
|
||||
mjEQ_FLEX, // fix all edge lengths of a flex
|
||||
mjEQ_FLEXVERT, // fix all vertex lengths of a flex
|
||||
mjEQ_DISTANCE // unsupported, will cause an error if used
|
||||
} mjtEq;
|
||||
typedef enum mjtWrap_ { // type of tendon wrap object
|
||||
|
||||
Reference in New Issue
Block a user