Add spec find_sensor, find_actuator functions.
PiperOrigin-RevId: 703054696 Change-Id: Ie384f1a31de3ecd9b22b7f4be43234d452e7bb88
This commit is contained in:
committed by
Copybara-Service
parent
f882f4b065
commit
a729acb4fa
@@ -350,6 +350,20 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
return mjs_asSite(mjs_findElement(self.ptr, mjOBJ_SITE, name.c_str()));
|
return mjs_asSite(mjs_findElement(self.ptr, mjOBJ_SITE, name.c_str()));
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
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(
|
mjSpec.def(
|
||||||
"find_default",
|
"find_default",
|
||||||
[](MjSpec& self, std::string& classname) -> const raw::MjsDefault* {
|
[](MjSpec& self, std::string& classname) -> const raw::MjsDefault* {
|
||||||
|
|||||||
@@ -584,13 +584,29 @@ class SpecsTest(absltest.TestCase):
|
|||||||
sensor1 = spec.add_sensor()
|
sensor1 = spec.add_sensor()
|
||||||
sensor2 = spec.add_sensor()
|
sensor2 = spec.add_sensor()
|
||||||
sensor3 = spec.add_sensor()
|
sensor3 = spec.add_sensor()
|
||||||
|
actuator1 = spec.add_actuator()
|
||||||
|
actuator2 = spec.add_actuator()
|
||||||
|
actuator3 = spec.add_actuator()
|
||||||
sensor1.name = 'sensor1'
|
sensor1.name = 'sensor1'
|
||||||
sensor2.name = 'sensor2'
|
sensor2.name = 'sensor2'
|
||||||
sensor3.name = 'sensor3'
|
sensor3.name = 'sensor3'
|
||||||
|
actuator1.name = 'actuator1'
|
||||||
|
actuator2.name = 'actuator2'
|
||||||
|
actuator3.name = 'actuator3'
|
||||||
self.assertLen(spec.sensors, 3)
|
self.assertLen(spec.sensors, 3)
|
||||||
|
self.assertLen(spec.actuators, 3)
|
||||||
self.assertEqual(spec.sensors[0].name, 'sensor1')
|
self.assertEqual(spec.sensors[0].name, 'sensor1')
|
||||||
self.assertEqual(spec.sensors[1].name, 'sensor2')
|
self.assertEqual(spec.sensors[1].name, 'sensor2')
|
||||||
self.assertEqual(spec.sensors[2].name, 'sensor3')
|
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):
|
def test_body_list(self):
|
||||||
main_xml = """
|
main_xml = """
|
||||||
|
|||||||
Reference in New Issue
Block a user