From 131b9114f8e62130d5f5921d257609432b0d6525 Mon Sep 17 00:00:00 2001 From: Daniel Butterfield Date: Sat, 14 Dec 2024 23:23:07 -0500 Subject: [PATCH] Remove reference to HyQ submodule which has been deleted off github, update test cases that used it --- .gitmodules | 3 - tests/testGraphParser.py | 135 +++-- urdf_files/HyQ/hyq-description | 1 - urdf_files/HyQ/hyq.pdf | Bin 14260 -> 0 bytes urdf_files/HyQ/hyq.urdf | 893 --------------------------------- 5 files changed, 67 insertions(+), 965 deletions(-) delete mode 160000 urdf_files/HyQ/hyq-description delete mode 100644 urdf_files/HyQ/hyq.pdf delete mode 100644 urdf_files/HyQ/hyq.urdf diff --git a/.gitmodules b/.gitmodules index 6df22de..efdfd5d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,9 +2,6 @@ [submodule "urdf_files/A1/unitree_ros"] path = urdf_files/A1/unitree_ros url = https://github.com/unitreerobotics/unitree_ros.git -[submodule "urdf_files/HyQ/hyq-description"] - path = urdf_files/HyQ/hyq-description - url = https://github.com/iit-DLSLab/hyq-description.git [submodule "urdf_files/Go1/unitree_ros"] path = urdf_files/Go1/unitree_ros url = https://github.com/unitreerobotics/unitree_ros.git diff --git a/tests/testGraphParser.py b/tests/testGraphParser.py index 99c8558..2982857 100644 --- a/tests/testGraphParser.py +++ b/tests/testGraphParser.py @@ -13,12 +13,11 @@ class TestNormalRobotGraph(unittest.TestCase): def setUp(self): - self.hyq_path = Path( - Path(__file__).cwd(), 'urdf_files', 'HyQ', 'hyq.urdf').absolute() + self.mini_cheetah_path = Path( + Path(__file__).cwd(), 'urdf_files', 'MiniCheetah', 'miniCheetah.urdf').absolute() - self.HyQ_URDF = NormalRobotGraph(self.hyq_path, - 'package://hyq_description/', - 'hyq-description') + self.mini_cheetah_URDF = NormalRobotGraph(self.mini_cheetah_path, + 'package://yobotics_description/', 'mini-cheetah-gazebo-urdf/yobo_model/yobotics_description') def test_constructor(self): """ @@ -26,15 +25,15 @@ def test_constructor(self): """ joint_names = [ - 'floating_base', 'lf_haa_joint', 'lf_hfe_joint', 'lf_kfe_joint', - 'lf_foot_joint', 'rf_haa_joint', 'rf_hfe_joint', 'rf_kfe_joint', - 'rf_foot_joint', 'lh_haa_joint', 'lh_hfe_joint', 'lh_kfe_joint', - 'lh_foot_joint', 'rh_haa_joint', 'rh_hfe_joint', 'rh_kfe_joint', - 'rh_foot_joint' + 'floating_base', + 'FL_hip_joint', 'FL_thigh_joint', 'FL_calf_joint', 'FL_foot_fixed', + 'FR_hip_joint', 'FR_thigh_joint', 'FR_calf_joint', 'FR_foot_fixed', + 'RL_hip_joint', 'RL_thigh_joint', 'RL_calf_joint', 'RL_foot_fixed', + 'RR_hip_joint', 'RR_thigh_joint', 'RR_calf_joint', 'RR_foot_fixed', ] edge_names_copy = copy.deepcopy(joint_names) - for i, node in enumerate(self.HyQ_URDF.nodes): + for i, node in enumerate(self.mini_cheetah_URDF.nodes): self.assertTrue(node.name in edge_names_copy) edge_names_copy.remove(node.name) self.assertEqual(0, len(edge_names_copy)) @@ -44,28 +43,28 @@ def test_constructor(self): # Additionally, links with multiple children joints get one # edge for each child. desired_edges = [ - RobotGraph.Edge('trunk_to_lf_haa_joint', "floating_base", - "lf_haa_joint", None), - RobotGraph.Edge('trunk_to_lh_haa_joint', "floating_base", - "lh_haa_joint", None), - RobotGraph.Edge('trunk_to_rf_haa_joint', "floating_base", - "rf_haa_joint", None), - RobotGraph.Edge('trunk_to_rh_haa_joint', "floating_base", - "rh_haa_joint", None), - RobotGraph.Edge('lf_hipassembly', "lf_haa_joint", "lf_hfe_joint", None), - RobotGraph.Edge('lf_upperleg', "lf_hfe_joint", "lf_kfe_joint", None), - RobotGraph.Edge('lf_lowerleg', "lf_kfe_joint", "lf_foot_joint", None), - RobotGraph.Edge('rf_hipassembly', "rf_haa_joint", "rf_hfe_joint", None), - RobotGraph.Edge('rf_upperleg', "rf_hfe_joint", "rf_kfe_joint", None), - RobotGraph.Edge('rf_lowerleg', "rf_kfe_joint", "rf_foot_joint", None), - RobotGraph.Edge('lh_hipassembly', "lh_haa_joint", "lh_hfe_joint", None), - RobotGraph.Edge('lh_upperleg', "lh_hfe_joint", "lh_kfe_joint", None), - RobotGraph.Edge('lh_lowerleg', "lh_kfe_joint", "lh_foot_joint", None), - RobotGraph.Edge('rh_hipassembly', "rh_haa_joint", "rh_hfe_joint", None), - RobotGraph.Edge('rh_upperleg', "rh_hfe_joint", "rh_kfe_joint", None), - RobotGraph.Edge('rh_lowerleg', "rh_kfe_joint", "rh_foot_joint", None) + RobotGraph.Edge('trunk_to_FL_hip_joint', "floating_base", + "FL_hip_joint", None), + RobotGraph.Edge('trunk_to_FR_hip_joint', "floating_base", + "FR_hip_joint", None), + RobotGraph.Edge('trunk_to_RL_hip_joint', "floating_base", + "RL_hip_joint", None), + RobotGraph.Edge('trunk_to_RR_hip_joint', "floating_base", + "RR_hip_joint", None), + RobotGraph.Edge('FL_hip', "FL_hip_joint", "FL_thigh_joint", None), + RobotGraph.Edge('FL_thigh', "FL_thigh_joint", "FL_calf_joint", None), + RobotGraph.Edge('FL_calf', "FL_calf_joint", "FL_foot_fixed", None), + RobotGraph.Edge('FR_hip', "FR_hip_joint", "FR_thigh_joint", None), + RobotGraph.Edge('FR_thigh', "FR_thigh_joint", "FR_calf_joint", None), + RobotGraph.Edge('FR_calf', "FR_calf_joint", "FR_foot_fixed", None), + RobotGraph.Edge('RL_hip', "RL_hip_joint", "RL_thigh_joint", None), + RobotGraph.Edge('RL_thigh', "RL_thigh_joint", "RL_calf_joint", None), + RobotGraph.Edge('RL_calf', "RL_calf_joint", "RL_foot_fixed", None), + RobotGraph.Edge('RR_hip', "RR_hip_joint", "RR_thigh_joint", None), + RobotGraph.Edge('RR_thigh', "RR_thigh_joint", "RR_calf_joint", None), + RobotGraph.Edge('RR_calf', "RR_calf_joint", "RR_foot_fixed", None) ] - for i, edge in enumerate(self.HyQ_URDF.edges): + for i, edge in enumerate(self.mini_cheetah_URDF.edges): match_found = False for j, desired_edge in enumerate(desired_edges): if edge.name == desired_edge.name: @@ -89,7 +88,7 @@ def test_constructor(self): ] edge_names_copy = copy.deepcopy(joint_names) num_matches = 0 - for i, node in enumerate(self.HyQ_URDF.nodes): + for i, node in enumerate(self.mini_cheetah_URDF.nodes): for j, node_des in enumerate(edge_names_copy): if (node.name == node_des): self.assertEqual(node.get_node_type(), des_node_type[j]) @@ -103,15 +102,15 @@ def test_constructor(self): # is stored for one of the Nodes. # ================== node_found = False - for i, node in enumerate(self.HyQ_URDF.nodes): - if node.name == "rh_kfe_joint": + for i, node in enumerate(self.mini_cheetah_URDF.nodes): + if node.name == "RL_hip_joint": # Test name information joint: urchin.Joint= node.joint - self.assertEqual("rh_kfe_joint", joint.name) + self.assertEqual("RL_hip_joint", joint.name) # Test joint information - np.testing.assert_array_equal(np.array([[1.0, 0.0, 0.0, 0.35], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]), joint.origin) - self.assertEqual(0.1, joint.dynamics.damping) + np.testing.assert_array_equal(np.array([[1.0, 0.0, 0.0, -0.196], [0.0, 1.0, 0.0, 0.049664], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]), joint.origin) + self.assertEqual(0.0, joint.dynamics.damping) self.assertEqual(0.0, joint.dynamics.friction) node_found = True @@ -120,16 +119,16 @@ def test_constructor(self): self.assertTrue(node_found) edge_found = False - for i, edge in enumerate(self.HyQ_URDF.edges): - if edge.name == "lh_hipassembly": + for i, edge in enumerate(self.mini_cheetah_URDF.edges): + if edge.name == "FL_calf": # Test name information link: urchin.Link = edge.link - self.assertEqual("lh_hipassembly", link.name) + self.assertEqual("FL_calf", link.name) # Test inertial information - np.testing.assert_array_equal(np.array([[1.0, 0.0, 0.0, 0.04263], [0.0, 1.0, 0.0, -0.0], [0.0, 0.0, 1.0, -0.16931], [0.0, 0.0, 0.0, 1.0]]), link.inertial.origin) - self.assertEqual(2.93, link.inertial.mass) - np.testing.assert_array_equal(np.array([[0.05071, 4e-05, 0.00159], [4e-05, 0.05486, -5e-05], [0.00159, -5e-05, 0.00571]]), link.inertial.inertia) + np.testing.assert_array_equal(np.array([[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]), link.inertial.origin) + self.assertEqual(0.064, link.inertial.mass) + np.testing.assert_array_equal(np.array([[0.000214698666667, 0.0, 0.0], [0.0, 0.000214698666667, 0.0], [0.0, 0.0, 2.73066666667e-06]]), link.inertial.inertia) edge_found = True break @@ -141,21 +140,21 @@ def test_get_connections_to_link(self): Check that we can properly find the connections to the links in the library. """ - edge_parent, edge_children = self.HyQ_URDF.get_connections_to_link( + edge_parent, edge_children = self.mini_cheetah_URDF.get_connections_to_link( urchin.Link("base_link", None, None, None)) self.assertEqual(edge_parent, None) self.assertSequenceEqual(edge_children, ["floating_base"]) - edge_parent, edge_children = self.HyQ_URDF.get_connections_to_link( + edge_parent, edge_children = self.mini_cheetah_URDF.get_connections_to_link( urchin.Link("trunk", None, None, None)) self.assertEqual(edge_parent, "floating_base") self.assertSequenceEqual( edge_children, - ["lf_haa_joint", "rf_haa_joint", "lh_haa_joint", "rh_haa_joint"]) + ["RL_hip_joint", "FL_hip_joint", "RR_hip_joint", "FR_hip_joint"]) - edge_parent, edge_children = self.HyQ_URDF.get_connections_to_link( - urchin.Link("lf_foot", None, None, None)) - self.assertEqual(edge_parent, "lf_foot_joint") + edge_parent, edge_children = self.mini_cheetah_URDF.get_connections_to_link( + urchin.Link("FL_foot", None, None, None)) + self.assertEqual(edge_parent, "FL_foot_fixed") self.assertSequenceEqual(edge_children, []) def test_create_updated_urdf_file(self): @@ -165,14 +164,14 @@ def test_create_updated_urdf_file(self): """ # Delete the urdf file - hyq_path_updated = self.hyq_path.parent / "hyq_updated.urdf" - os.remove(str(hyq_path_updated)) - self.assertFalse(os.path.exists(hyq_path_updated)) + mini_cheetah_path_updated = self.mini_cheetah_path.parent / "miniCheetah_updated.urdf" + os.remove(str(mini_cheetah_path_updated)) + self.assertFalse(os.path.exists(mini_cheetah_path_updated)) # Rebuild it - RobotGraph(self.hyq_path, 'package://hyq_description/', - 'hyq-description') - self.assertTrue(os.path.exists(hyq_path_updated)) + RobotGraph(self.mini_cheetah_path, 'package://yobotics_description/', + 'mini-cheetah-gazebo-urdf/yobo_model/yobotics_description') + self.assertTrue(os.path.exists(mini_cheetah_path_updated)) def test_get_node_name_to_index_dict(self): """ @@ -180,11 +179,11 @@ def test_get_node_name_to_index_dict(self): are unique. """ - key = list(self.HyQ_URDF.get_node_name_to_index_dict()) + key = list(self.mini_cheetah_URDF.get_node_name_to_index_dict()) get_nodes_index = [] for key in key: - index = self.HyQ_URDF.get_node_name_to_index_dict()[key] + index = self.mini_cheetah_URDF.get_node_name_to_index_dict()[key] get_nodes_index.append(index) self.assertTrue(pd.Index(get_nodes_index).is_unique) @@ -195,12 +194,12 @@ def test_get_node_index_to_name_dict(self): index_to_name dict and the name_to_index dict are consistent. """ - index_to_name = list(self.HyQ_URDF.get_node_index_to_name_dict()) - name_to_index = list(self.HyQ_URDF.get_node_name_to_index_dict()) + index_to_name = list(self.mini_cheetah_URDF.get_node_index_to_name_dict()) + name_to_index = list(self.mini_cheetah_URDF.get_node_name_to_index_dict()) get_nodes_index = [] for key in name_to_index: - index = self.HyQ_URDF.get_node_name_to_index_dict()[key] + index = self.mini_cheetah_URDF.get_node_name_to_index_dict()[key] get_nodes_index.append(index) self.assertEqual(index_to_name, get_nodes_index) @@ -210,7 +209,7 @@ def test_get_edge_index_matrix(self): Check the dimensionality of the edge matrix. """ - edge_matrix = self.HyQ_URDF.get_edge_index_matrix() + edge_matrix = self.mini_cheetah_URDF.get_edge_index_matrix() self.assertEqual(edge_matrix.shape[0], 2) self.assertEqual(edge_matrix.shape[1], 32) @@ -220,7 +219,7 @@ def test_get_num_nodes(self): Check that the number of nodes are correct. """ - self.assertEqual(self.HyQ_URDF.get_num_nodes(), 17) + self.assertEqual(self.mini_cheetah_URDF.get_num_nodes(), 17) def test_get_edge_connections_to_name_dict(self): """ @@ -230,13 +229,13 @@ def test_get_edge_connections_to_name_dict(self): """ connections_to_name = list( - self.HyQ_URDF.get_edge_connections_to_name_dict()) + self.mini_cheetah_URDF.get_edge_connections_to_name_dict()) name_to_connections = list( - self.HyQ_URDF.get_edge_name_to_connections_dict()) + self.mini_cheetah_URDF.get_edge_name_to_connections_dict()) result = [] for key in name_to_connections: - connections = self.HyQ_URDF.get_edge_name_to_connections_dict( + connections = self.mini_cheetah_URDF.get_edge_name_to_connections_dict( )[key] for i in range(connections.shape[1]): real_reshaped = np.squeeze(connections[:, i].reshape(1, -1)) @@ -252,12 +251,12 @@ def test_get_edge_name_to_connections_dict(self): """ name_to_connections = list( - self.HyQ_URDF.get_edge_name_to_connections_dict()) + self.mini_cheetah_URDF.get_edge_name_to_connections_dict()) all_connections = [] # Get all connections from dictionary for key in name_to_connections: - connections = self.HyQ_URDF.get_edge_name_to_connections_dict( + connections = self.mini_cheetah_URDF.get_edge_name_to_connections_dict( )[key] for i in range(connections.shape[1]): real_reshaped = np.squeeze(connections[:, i].reshape(1, -1)) diff --git a/urdf_files/HyQ/hyq-description b/urdf_files/HyQ/hyq-description deleted file mode 160000 index f95d651..0000000 --- a/urdf_files/HyQ/hyq-description +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f95d651be787ea5369b7fa354f3e896eae741067 diff --git a/urdf_files/HyQ/hyq.pdf b/urdf_files/HyQ/hyq.pdf deleted file mode 100644 index 07da419ba768a97e7985afd75ceb22a9e858f8bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14260 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 B2i5=p diff --git a/urdf_files/HyQ/hyq.urdf b/urdf_files/HyQ/hyq.urdf deleted file mode 100644 index 95feec8..0000000 --- a/urdf_files/HyQ/hyq.urdf +++ /dev/null @@ -1,893 +0,0 @@ - - - - - - - - - /hyq - gazebo_ros_control/DefaultRobotHWSim - true - 0.004 - - - /hyq - trunk - ground_truth - world - 0 0 0 - 0 0 0 - 0 - true - 250.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.5 - 1.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - true - - - true - - - true - - - 1000000.0 - 100.0 - 1.5 - 1.5 - 1 0 0 - 1.0 - 0.00 - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - lf_lowerleg_collision - - - - /hyq/lf_shin_bumper - - - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - lf_lowerleg_fixed_joint_lump__lf_foot_collision_1 - - - - /hyq/lf_foot_bumper - hyq - - - Gazebo/Black - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - true - - - true - - - true - - - 1000000.0 - 100.0 - 1.5 - 1.5 - 1 0 0 - 1.0 - 0.00 - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - rf_lowerleg_collision - - - - /hyq/rf_shin_bumper - - - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - rf_lowerleg_fixed_joint_lump__rf_foot_collision_1 - - - - /hyq/rf_foot_bumper - hyq - - - Gazebo/Black - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - true - - - true - - - true - - - 1000000.0 - 100.0 - 1.5 - 1.5 - 1 0 0 - 1.0 - 0.00 - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - lh_lowerleg_collision - - - - /hyq/lh_shin_bumper - - - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - lh_lowerleg_fixed_joint_lump__lh_foot_collision_1 - - - - /hyq/lh_foot_bumper - hyq - - - Gazebo/Black - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - - transmission_interface/SimpleTransmission - - hardware_interface/EffortJointInterface - - - 1 - - - - true - - - true - - - true - - - 1000000.0 - 100.0 - 1.5 - 1.5 - 1 0 0 - 1.0 - 0.00 - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - rh_lowerleg_collision - - - - /hyq/rh_shin_bumper - - - - - 1000000.0 - 100.0 - 1.0 - 1.0 - 1.0 - 1 - - true - 250.0 - - rh_lowerleg_fixed_joint_lump__rh_foot_collision_1 - - - - /hyq/rh_foot_bumper - hyq - - - Gazebo/Black - -