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
+4
View File
@@ -486,6 +486,7 @@ MjContactWrapper::MjWrapper()
X(frame),
X(friction),
X(solref),
X(solreffriction),
X(solimp),
X(H) {}
@@ -495,6 +496,7 @@ MjContactWrapper::MjWrapper(raw::MjContact* ptr, py::handle owner)
X(frame),
X(friction),
X(solref),
X(solreffriction),
X(solimp),
X(H) {}
#undef X
@@ -1735,6 +1737,7 @@ This is useful for example when the MJB is not available as a file on disk.)"));
X(frame);
X(friction);
X(solref);
X(solreffriction);
X(solimp);
X(H);
#undef X
@@ -1766,6 +1769,7 @@ This is useful for example when the MJB is not available as a file on disk.)"));
X(mjtNum, includemargin);
XN(mjtNum, friction);
XN(mjtNum, solref);
XN(mjtNum, solreffriction);
XN(mjtNum, solimp);
X(mjtNum, mu);
XN(mjtNum, H);
+1
View File
@@ -503,6 +503,7 @@ class MjWrapper<raw::MjContact> : public WrapperBase<raw::MjContact> {
X(frame);
X(friction);
X(solref);
X(solreffriction);
X(solimp);
X(H);
#undef X