Add mjContact.solreffriction, mjModel.pair_solreffriction and related implementation, allowing contact reference acceleration to be different for normal and frictional contact directions. This is required for e.g. elastic frictional collisions.

PiperOrigin-RevId: 538513357
Change-Id: Id9eb910fe791cf898c712030cb2c0fc481389c91
This commit is contained in:
Yuval Tassa
2023-06-07 09:39:28 -07:00
committed by Copybara-Service
parent 83e70954d7
commit d82f5ce5a4
19 changed files with 187 additions and 59 deletions
+16
View File
@@ -1630,6 +1630,8 @@ if omitted.
.. _default-pair-solref:
.. _default-pair-solreffriction:
.. _default-pair-solimp:
.. _default-pair-gap:
@@ -4299,6 +4301,20 @@ element.
:at:`solref`, :at:`solimp`
Constraint solver parameters for contact simulation. See :ref:`CSolver`.
.. _contact-pair-solreffriction:
:at:`solreffriction`: :at-val:`real, "0 0"`
Contact reference acceleration, in the friction dimensions. This attribute has the same semantics as other
:at:`solref` attributes (described in :ref:`CSolver`), with two important distictions:
- The default :at-val:`"0 0"` means "use the same values as :at:`solref`".
- This attribute only takes effect for :ref:`elliptic friction cones<option-cone>`, since pyramidal cones mix normal
and frictional forces.
Note that as with other :at:`solreffriction` attributes, the constraint violation is identically 0. Therefore, when
using positive semantics :at:`solreffriction[1]` is ignored, while for negative semantics :at:`solreffriction[0]` is
ignored. See :ref:`CSolver` for more details.
.. _contact-pair-margin:
:at:`margin`: :at-val:`real, "0"`