Fix set_to_muscle() to accept tuple arguments.

Correct argument types for timeconst and range parameters in pybind11
python bindings from C arrays to std::array.

Fixes #3282, #3282, #3318

Thanks to @Abzaek for original PRs

PiperOrigin-RevId: 932423401
Change-Id: Ic30ba076913693f5c0e545789690e8b0fa444390
This commit is contained in:
Yuval Tassa
2026-06-15 06:29:02 -07:00
committed by Copybara-Service
parent b1f4656d1a
commit 4e10f20be6
2 changed files with 43 additions and 9 deletions
+32
View File
@@ -1602,6 +1602,38 @@ class SpecsTest(absltest.TestCase):
self.assertEqual(actuator.gaintype, mujoco.mjtGain.mjGAIN_DCMOTOR)
self.assertEqual(actuator.biastype, mujoco.mjtBias.mjBIAS_DCMOTOR)
actuator = spec.add_actuator()
actuator.set_to_muscle(tausmooth=0.1)
self.assertEqual(actuator.dyntype, mujoco.mjtDyn.mjDYN_MUSCLE)
self.assertEqual(actuator.gaintype, mujoco.mjtGain.mjGAIN_MUSCLE)
self.assertEqual(actuator.biastype, mujoco.mjtBias.mjBIAS_MUSCLE)
self.assertEqual(actuator.dynprm[2], 0.1)
actuator.set_to_muscle(
timeconst=[0.02, 0.05],
tausmooth=0.2,
range=[0.8, 1.2],
force=5.0,
scale=250.0,
lmin=0.6,
lmax=1.7,
vmax=1.8,
fpmax=1.4,
fvmax=1.5,
)
self.assertEqual(actuator.dynprm[0], 0.02)
self.assertEqual(actuator.dynprm[1], 0.05)
self.assertEqual(actuator.dynprm[2], 0.2)
self.assertEqual(actuator.gainprm[0], 0.8)
self.assertEqual(actuator.gainprm[1], 1.2)
self.assertEqual(actuator.gainprm[2], 5.0)
self.assertEqual(actuator.gainprm[3], 250.0)
self.assertEqual(actuator.gainprm[4], 0.6)
self.assertEqual(actuator.gainprm[5], 1.7)
self.assertEqual(actuator.gainprm[6], 1.8)
self.assertEqual(actuator.gainprm[7], 1.4)
self.assertEqual(actuator.gainprm[8], 1.5)
def test_bad_contact_sensor(self):
test_cases = [
dict(