Remove mjDSBL_PASSIVE, split it into mjDSBL_SPRING and mjDSBL_DAMPING.

PiperOrigin-RevId: 800870384
Change-Id: I273e0ceec090901e2620febb67e57914928e94bb
This commit is contained in:
Yuval Tassa
2025-08-29 06:05:18 -07:00
committed by Copybara-Service
parent 0eea5d6dbd
commit b092563cab
39 changed files with 455 additions and 289 deletions
@@ -90,6 +90,10 @@ class "MjcSceneAPI" (
displayName = "Contact Constraints and Collision Detection Toggle"
doc = "Enables collision detection and all standard computations related to contact constraints."
)
uniform bool mjc:flag:damper = 1 (
displayName = "Damper Forces Toggle"
doc = "Enables the simulation of joint and tendon dampers."
)
uniform bool mjc:flag:energy = 0 (
displayName = "Energy Computation Toggle"
doc = "Enables the computation of potential and kinetic energy (mjData.energy[0,1])."
@@ -146,10 +150,6 @@ class "MjcSceneAPI" (
displayName = "Contact Override Mechanism Toggle"
doc = "Enables the contact override mechanism."
)
uniform bool mjc:flag:passive = 1 (
displayName = "Passive Forces Toggle"
doc = "Enables the simulation of joint and tendon spring-dampers, fluid dynamics forces, and custom passive forces."
)
uniform bool mjc:flag:refsafe = 1 (
displayName = "Solver Reference Safety Mechanism Toggle"
doc = "Enables a safety mechanism that prevents instabilities due to solref[0] being too small compared to the simulation timestep."
@@ -158,6 +158,10 @@ class "MjcSceneAPI" (
displayName = "Sensor Computations Toggle"
doc = "Enables all computations related to sensors."
)
uniform bool mjc:flag:spring = 1 (
displayName = "Spring Forces Toggle"
doc = "Enables the simulation of joint and tendon springs."
)
uniform bool mjc:flag:warmstart = 1 (
displayName = "Solver Warm-Starting Toggle"
doc = "Enables warm-starting of the constraint solver, using the solution from the previous time step to initialize the iterative optimization."
+17 -5
View File
@@ -417,14 +417,25 @@ UsdAttribute MjcPhysicsSceneAPI::CreateContactFlagAttr(
/* custom = */ false, SdfVariabilityUniform, defaultValue, writeSparsely);
}
UsdAttribute MjcPhysicsSceneAPI::GetPassiveFlagAttr() const {
return GetPrim().GetAttribute(MjcPhysicsTokens->mjcFlagPassive);
UsdAttribute MjcPhysicsSceneAPI::GetSpringFlagAttr() const {
return GetPrim().GetAttribute(MjcPhysicsTokens->mjcFlagSpring);
}
UsdAttribute MjcPhysicsSceneAPI::CreatePassiveFlagAttr(
UsdAttribute MjcPhysicsSceneAPI::CreateSpringFlagAttr(
VtValue const& defaultValue, bool writeSparsely) const {
return UsdSchemaBase::_CreateAttr(
MjcPhysicsTokens->mjcFlagPassive, SdfValueTypeNames->Bool,
MjcPhysicsTokens->mjcFlagSpring, SdfValueTypeNames->Bool,
/* custom = */ false, SdfVariabilityUniform, defaultValue, writeSparsely);
}
UsdAttribute MjcPhysicsSceneAPI::GetDamperFlagAttr() const {
return GetPrim().GetAttribute(MjcPhysicsTokens->mjcFlagDamper);
}
UsdAttribute MjcPhysicsSceneAPI::CreateDamperFlagAttr(
VtValue const& defaultValue, bool writeSparsely) const {
return UsdSchemaBase::_CreateAttr(
MjcPhysicsTokens->mjcFlagDamper, SdfValueTypeNames->Bool,
/* custom = */ false, SdfVariabilityUniform, defaultValue, writeSparsely);
}
@@ -817,7 +828,8 @@ const TfTokenVector& MjcPhysicsSceneAPI::GetSchemaAttributeNames(
MjcPhysicsTokens->mjcFlagFrictionloss,
MjcPhysicsTokens->mjcFlagLimit,
MjcPhysicsTokens->mjcFlagContact,
MjcPhysicsTokens->mjcFlagPassive,
MjcPhysicsTokens->mjcFlagSpring,
MjcPhysicsTokens->mjcFlagDamper,
MjcPhysicsTokens->mjcFlagGravity,
MjcPhysicsTokens->mjcFlagClampctrl,
MjcPhysicsTokens->mjcFlagWarmstart,
+12 -4
View File
@@ -366,12 +366,20 @@ class "MjcSceneAPI"
doc = """Enables collision detection and all standard computations related to contact constraints."""
)
uniform bool mjc:flag:passive = True (
uniform bool mjc:flag:spring = True (
customData = {
string apiName = "PassiveFlag"
string apiName = "SpringFlag"
}
displayName = "Passive Forces Toggle"
doc = """Enables the simulation of joint and tendon spring-dampers, fluid dynamics forces, and custom passive forces."""
displayName = "Spring Forces Toggle"
doc = """Enables the simulation of joint and tendon springs."""
)
uniform bool mjc:flag:damper = True (
customData = {
string apiName = "DamperFlag"
}
displayName = "Damper Forces Toggle"
doc = """Enables the simulation of joint and tendon dampers."""
)
uniform bool mjc:flag:gravity = True (
+4 -2
View File
@@ -79,6 +79,7 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcFlagClampctrl("mjc:flag:clampctrl", TfToken::Immortal),
mjcFlagConstraint("mjc:flag:constraint", TfToken::Immortal),
mjcFlagContact("mjc:flag:contact", TfToken::Immortal),
mjcFlagDamper("mjc:flag:damper", TfToken::Immortal),
mjcFlagEnergy("mjc:flag:energy", TfToken::Immortal),
mjcFlagEquality("mjc:flag:equality", TfToken::Immortal),
mjcFlagEulerdamp("mjc:flag:eulerdamp", TfToken::Immortal),
@@ -93,9 +94,9 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcFlagMulticcd("mjc:flag:multiccd", TfToken::Immortal),
mjcFlagNativeccd("mjc:flag:nativeccd", TfToken::Immortal),
mjcFlagOverride("mjc:flag:override", TfToken::Immortal),
mjcFlagPassive("mjc:flag:passive", TfToken::Immortal),
mjcFlagRefsafe("mjc:flag:refsafe", TfToken::Immortal),
mjcFlagSensor("mjc:flag:sensor", TfToken::Immortal),
mjcFlagSpring("mjc:flag:spring", TfToken::Immortal),
mjcFlagWarmstart("mjc:flag:warmstart", TfToken::Immortal),
mjcForceLimited("mjc:forceLimited", TfToken::Immortal),
mjcForceRangeMax("mjc:forceRange:max", TfToken::Immortal),
@@ -242,6 +243,7 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcFlagClampctrl,
mjcFlagConstraint,
mjcFlagContact,
mjcFlagDamper,
mjcFlagEnergy,
mjcFlagEquality,
mjcFlagEulerdamp,
@@ -256,9 +258,9 @@ MjcPhysicsTokensType::MjcPhysicsTokensType()
mjcFlagMulticcd,
mjcFlagNativeccd,
mjcFlagOverride,
mjcFlagPassive,
mjcFlagRefsafe,
mjcFlagSensor,
mjcFlagSpring,
mjcFlagWarmstart,
mjcForceLimited,
mjcForceRangeMax,
@@ -657,7 +657,8 @@ class ModelWriter {
{MjcPhysicsTokens->mjcFlagFrictionloss, mjDSBL_FRICTIONLOSS},
{MjcPhysicsTokens->mjcFlagLimit, mjDSBL_LIMIT},
{MjcPhysicsTokens->mjcFlagContact, mjDSBL_CONTACT},
{MjcPhysicsTokens->mjcFlagPassive, mjDSBL_PASSIVE},
{MjcPhysicsTokens->mjcFlagSpring, mjDSBL_SPRING},
{MjcPhysicsTokens->mjcFlagDamper, mjDSBL_DAMPER},
{MjcPhysicsTokens->mjcFlagGravity, mjDSBL_GRAVITY},
{MjcPhysicsTokens->mjcFlagClampctrl, mjDSBL_CLAMPCTRL},
{MjcPhysicsTokens->mjcFlagWarmstart, mjDSBL_WARMSTART},
+7 -3
View File
@@ -569,9 +569,13 @@ void ParseUsdPhysicsScene(mjSpec* spec,
mjc_physics_scene.GetContactFlagAttr().Get(&contact_flag);
spec->option.disableflags |= (!contact_flag ? mjDSBL_CONTACT : 0);
bool passive_flag;
mjc_physics_scene.GetPassiveFlagAttr().Get(&passive_flag);
spec->option.disableflags |= (!passive_flag ? mjDSBL_PASSIVE : 0);
bool spring_flag;
mjc_physics_scene.GetSpringFlagAttr().Get(&spring_flag);
spec->option.disableflags |= (!spring_flag ? mjDSBL_SPRING : 0);
bool damper_flag;
mjc_physics_scene.GetDamperFlagAttr().Get(&damper_flag);
spec->option.disableflags |= (!damper_flag ? mjDSBL_DAMPER : 0);
bool gravity_flag;
mjc_physics_scene.GetGravityFlagAttr().Get(&gravity_flag);