drive-joint-value-reasonable#

Code

DJ.006

Validator

CheckPrim

Compatibility

Tags

Summary#

Drive joint parameters must be within reasonable ranges for stable simulation. The joint parameters should not be excessively big and should be natural numbers.

Description#

Joint drive parameters including stiffness, damping, target positions, and forces must be configured within reasonable ranges to ensure simulation stability and realistic behavior. Values that are too extreme can cause instability or unrealistic motion.

Why is it required?#

  • To ensure simulation stability and convergence

  • To provide realistic joint behavior

  • To prevent numerical issues and simulation artifacts

Examples#

# Valid: Reasonable drive parameters
def PhysicsRevoluteJoint "RevoluteJoint" (
    prepend apiSchemas = ["PhysicsDriveAPI"]
)
{
    rel physics:body0 = </Base>
    rel physics:body1 = </Arm>
    uniform token physics:axis = "Y"
    
    float drive:angular:physics:stiffness = 1000.0  # Reasonable stiffness (not too high)
    float drive:angular:physics:damping = 10.0 # Reasonable damping (provides stability)
}

# Invalid: Extreme values that can cause instability
# float drive:angular:physics:stiffness = 1000000.0  # Too high
# float drive:angular:physics:damping = 0.0          # No damping

How to comply#

  • Use appropriate stiffness values (typically 100-10000)

  • Include sufficient damping for stability (typically 1-100)

  • Set realistic target positions within joint limits

  • Configure reasonable maximum force limits

For mimic joints:

  • Enforce drive stiffness == 0.0 and drive damping == 0.0

For More Information#