diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 5ae174987b..fc17a63eb8 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -62,6 +62,7 @@ Guidelines for modifications: * Lionel Gulich * Louis Le Lay * Lorenz Wellhausen +* Manuel Schweiger * Masoud Moghani * Michael Gussert * Michael Noseworthy diff --git a/source/extensions/omni.isaac.lab/test/utils/test_configclass.py b/source/extensions/omni.isaac.lab/test/utils/test_configclass.py index bb4b3e5999..ec4a34a450 100644 --- a/source/extensions/omni.isaac.lab/test/utils/test_configclass.py +++ b/source/extensions/omni.isaac.lab/test/utils/test_configclass.py @@ -143,6 +143,16 @@ class BasicDemoTorchCfg: some_tensor: torch.Tensor = torch.Tensor([1, 2, 3]) +@configclass +class BasicActuatorCfg: + """Dummy configuration class for ActuatorBase config.""" + + joint_names_expr: list[str] = ["some_string"] + joint_parameter_lookup: torch.Tensor = torch.Tensor([1, 2, 3]) + stiffness: float = 1.0 + damping: float = 2.0 + + """ Dummy configuration to check type annotations ordering. """ @@ -530,6 +540,18 @@ def test_dict_conversion(self): self.assertEqual(torch_cfg_dict["some_number"], 0) self.assertTrue(torch.all(torch_cfg_dict["some_tensor"] == torch.tensor([1, 2, 3]))) + def test_actuator_cfg_dict_conversion(self): + """Test dict conversion of ActuatorConfig.""" + # create a basic actuator config with a Torch.Tensor (joint_parameter_lookup) + actuator_cfg = BasicActuatorCfg() + # return writable attributes of config object + actuator_cfg_dict_attr = actuator_cfg.__dict__ + # check if __dict__ attribute of config is not empty + self.assertTrue(len(actuator_cfg_dict_attr) > 0) + # class_to_dict utility function should return a primitive dictionary + actuator_cfg_dict = class_to_dict(actuator_cfg.joint_parameter_lookup) + self.assertTrue(isinstance(actuator_cfg_dict, dict)) + def test_dict_conversion_order(self): """Tests that order is conserved when converting to dictionary.""" true_outer_order = ["device_id", "env", "robot_default_state", "list_config"]