Description
ModelBuilder.add_mjcf() silently drops MuJoCo <damper> actuator shortcuts. A damper is a controllable viscous actuator with F = -kv * velocity * control, so replacing it with a motor or passive joint damping would not preserve behavior.
Expected behavior
Import the target, inherited kv, gear, and ranges; expand the shortcut to affine gain [0, 0, -kv], no bias, direct control, and a required nonnegative control range; then reconstruct it with MjsActuator.set_to_damper().
Validation
Compare compiled fields and generalized force against native MuJoCo. For kv=4, transmission velocity 3, and control 0.5, both models should produce -6. Reject missing or negative control ranges clearly.
Description
ModelBuilder.add_mjcf()silently drops MuJoCo<damper>actuator shortcuts. A damper is a controllable viscous actuator withF = -kv * velocity * control, so replacing it with a motor or passive joint damping would not preserve behavior.Expected behavior
Import the target, inherited
kv, gear, and ranges; expand the shortcut to affine gain[0, 0, -kv], no bias, direct control, and a required nonnegative control range; then reconstruct it withMjsActuator.set_to_damper().Validation
Compare compiled fields and generalized force against native MuJoCo. For
kv=4, transmission velocity3, and control0.5, both models should produce-6. Reject missing or negative control ranges clearly.