Margin and gap redesign (breaking change)
PiperOrigin-RevId: 914329812 Change-Id: I905665e4c1965bdb8b90587e5b1277cfbfe5cce0
This commit is contained in:
committed by
Copybara-Service
parent
7f5be412a0
commit
a4e49f2dff
@@ -321,8 +321,8 @@ class MjcPhysicsCollisionAPI : public UsdAPISchemaBase {
|
||||
// --------------------------------------------------------------------- //
|
||||
// MARGIN
|
||||
// --------------------------------------------------------------------- //
|
||||
/// Distance threshold below which contacts are detected and included in the
|
||||
/// global array mjData.contact.
|
||||
/// Geometric inflation of the geom surface for the purpose of contact force
|
||||
/// generation.
|
||||
///
|
||||
/// | ||
|
||||
/// | -- | -- |
|
||||
@@ -346,11 +346,8 @@ class MjcPhysicsCollisionAPI : public UsdAPISchemaBase {
|
||||
// --------------------------------------------------------------------- //
|
||||
// GAP
|
||||
// --------------------------------------------------------------------- //
|
||||
/// This attribute is used to enable the generation of inactive contacts,
|
||||
/// i.e., contacts that are ignored by the constraint solver but are included
|
||||
/// in mjData.contact for the purpose of custom computations. When this value
|
||||
/// is positive, geom distances between margin and margin-gap correspond to
|
||||
/// such inactive contacts.
|
||||
/// Additional contact detection buffer beyond margin. Contacts are detected
|
||||
/// at distance margin + gap but forces are only generated at distance margin.
|
||||
///
|
||||
/// | ||
|
||||
/// | -- | -- |
|
||||
|
||||
@@ -130,7 +130,7 @@ struct mjContact_ { // result of collision detection functions
|
||||
mjtNum frame[9]; // normal is in [0-2], points from geom[0] to geom[1]
|
||||
|
||||
// contact parameters set by mj_collideGeoms
|
||||
mjtNum includemargin; // include if dist<includemargin=margin-gap
|
||||
mjtNum includemargin; // margin for force generation
|
||||
mjtNum friction[5]; // tangent1, 2, spin, roll1, 2
|
||||
mjtNum solref[mjNREF]; // constraint solver reference, normal direction
|
||||
mjtNum solreffriction[mjNREF]; // constraint solver reference, friction directions
|
||||
|
||||
@@ -899,8 +899,8 @@ struct mjModel_ {
|
||||
mjtNum* geom_pos; // local position offset rel. to body (ngeom x 3)
|
||||
mjtNum* geom_quat; // local orientation offset rel. to body (ngeom x 4)
|
||||
mjtNum* geom_friction; // friction for (slide, spin, roll) (ngeom x 3)
|
||||
mjtNum* geom_margin; // detect contact if dist<margin (ngeom x 1)
|
||||
mjtNum* geom_gap; // include in solver if dist<margin-gap (ngeom x 1)
|
||||
mjtNum* geom_margin; // geometric inflation for contact (ngeom x 1)
|
||||
mjtNum* geom_gap; // additional contact detection buffer (ngeom x 1)
|
||||
mjtNum* geom_fluid; // fluid interaction parameters (ngeom x mjNFLUID)
|
||||
mjtNum* geom_user; // user data (ngeom x nuser_geom)
|
||||
float* geom_rgba; // rgba when material is omitted (ngeom x 4)
|
||||
@@ -967,8 +967,8 @@ struct mjModel_ {
|
||||
mjtNum* flex_solref; // constraint solver reference: contact (nflex x mjNREF)
|
||||
mjtNum* flex_solimp; // constraint solver impedance: contact (nflex x mjNIMP)
|
||||
mjtNum* flex_friction; // friction for (slide, spin, roll) (nflex x 3)
|
||||
mjtNum* flex_margin; // detect contact if dist<margin (nflex x 1)
|
||||
mjtNum* flex_gap; // include in solver if dist<margin-gap (nflex x 1)
|
||||
mjtNum* flex_margin; // geometric inflation for contact (nflex x 1)
|
||||
mjtNum* flex_gap; // additional contact detection buffer (nflex x 1)
|
||||
mjtByte* flex_internal; // internal flex collision enabled (nflex x 1)
|
||||
int* flex_selfcollide; // self collision mode (mjtFlexSelf) (nflex x 1)
|
||||
int* flex_activelayers; // number of active element layers, 3D only (nflex x 1)
|
||||
@@ -1137,8 +1137,8 @@ struct mjModel_ {
|
||||
mjtNum* pair_solref; // solver reference: contact normal (npair x mjNREF)
|
||||
mjtNum* pair_solreffriction; // solver reference: contact friction (npair x mjNREF)
|
||||
mjtNum* pair_solimp; // solver impedance: contact (npair x mjNIMP)
|
||||
mjtNum* pair_margin; // detect contact if dist<margin (npair x 1)
|
||||
mjtNum* pair_gap; // include in solver if dist<margin-gap (npair x 1)
|
||||
mjtNum* pair_margin; // geometric inflation for contact (npair x 1)
|
||||
mjtNum* pair_gap; // additional contact detection buffer (npair x 1)
|
||||
mjtNum* pair_friction; // tangent1, 2, spin, roll1, 2 (npair x 5)
|
||||
|
||||
// excluded body pairs for collision detection
|
||||
|
||||
@@ -314,7 +314,7 @@ typedef struct mjsGeom_ { // geom specification
|
||||
mjtNum solref[mjNREF]; // solver reference
|
||||
mjtNum solimp[mjNIMP]; // solver impedance
|
||||
double margin; // margin for contact detection
|
||||
double gap; // include in solver if dist < margin-gap
|
||||
double gap; // additional contact detection buffer
|
||||
|
||||
// inertia inference
|
||||
double mass; // used to compute density
|
||||
@@ -433,7 +433,7 @@ typedef struct mjsFlex_ { // flex specification
|
||||
mjtNum solref[mjNREF]; // solver reference
|
||||
mjtNum solimp[mjNIMP]; // solver impedance
|
||||
double margin; // margin for contact detection
|
||||
double gap; // include in solver if dist<margin-gap
|
||||
double gap; // additional contact detection buffer
|
||||
|
||||
// other properties
|
||||
int dim; // element dimensionality
|
||||
@@ -597,7 +597,7 @@ typedef struct mjsPair_ { // pair specification
|
||||
mjtNum solreffriction[mjNREF]; // solver reference, frictional directions
|
||||
mjtNum solimp[mjNIMP]; // solver impedance
|
||||
double margin; // margin for contact detection
|
||||
double gap; // include in solver if dist<margin-gap
|
||||
double gap; // additional contact detection buffer
|
||||
double friction[5]; // full contact friction
|
||||
mjString* info; // message appended to errors
|
||||
} mjsPair;
|
||||
|
||||
Reference in New Issue
Block a user