Add spec find_sensor, find_actuator functions.

PiperOrigin-RevId: 703054696
Change-Id: Ie384f1a31de3ecd9b22b7f4be43234d452e7bb88
This commit is contained in:
Alessio Quaglino
2024-12-05 03:41:30 -08:00
committed by Copybara-Service
parent f882f4b065
commit a729acb4fa
2 changed files with 30 additions and 0 deletions
+14
View File
@@ -350,6 +350,20 @@ PYBIND11_MODULE(_specs, m) {
return mjs_asSite(mjs_findElement(self.ptr, mjOBJ_SITE, name.c_str()));
},
py::return_value_policy::reference_internal);
mjSpec.def(
"find_actuator",
[](MjSpec& self, std::string& name) -> raw::MjsActuator* {
return mjs_asActuator(
mjs_findElement(self.ptr, mjOBJ_ACTUATOR, name.c_str()));
},
py::return_value_policy::reference_internal);
mjSpec.def(
"find_sensor",
[](MjSpec& self, std::string& name) -> raw::MjsSensor* {
return mjs_asSensor(
mjs_findElement(self.ptr, mjOBJ_SENSOR, name.c_str()));
},
py::return_value_policy::reference_internal);
mjSpec.def(
"find_default",
[](MjSpec& self, std::string& classname) -> const raw::MjsDefault* {
+16
View File
@@ -584,13 +584,29 @@ class SpecsTest(absltest.TestCase):
sensor1 = spec.add_sensor()
sensor2 = spec.add_sensor()
sensor3 = spec.add_sensor()
actuator1 = spec.add_actuator()
actuator2 = spec.add_actuator()
actuator3 = spec.add_actuator()
sensor1.name = 'sensor1'
sensor2.name = 'sensor2'
sensor3.name = 'sensor3'
actuator1.name = 'actuator1'
actuator2.name = 'actuator2'
actuator3.name = 'actuator3'
self.assertLen(spec.sensors, 3)
self.assertLen(spec.actuators, 3)
self.assertEqual(spec.sensors[0].name, 'sensor1')
self.assertEqual(spec.sensors[1].name, 'sensor2')
self.assertEqual(spec.sensors[2].name, 'sensor3')
self.assertEqual(spec.actuators[0].name, 'actuator1')
self.assertEqual(spec.actuators[1].name, 'actuator2')
self.assertEqual(spec.actuators[2].name, 'actuator3')
self.assertEqual(spec.find_sensor('sensor1'), sensor1)
self.assertEqual(spec.find_sensor('sensor2'), sensor2)
self.assertEqual(spec.find_sensor('sensor3'), sensor3)
self.assertEqual(spec.find_actuator('actuator1'), actuator1)
self.assertEqual(spec.find_actuator('actuator2'), actuator2)
self.assertEqual(spec.find_actuator('actuator3'), actuator3)
def test_body_list(self):
main_xml = """