diff --git a/xr_rm_teleop/models/dual_rm75/Dual_arm.urdf b/xr_rm_teleop/models/dual_rm75/Dual_arm.urdf index 216751a..2cbffb8 100644 --- a/xr_rm_teleop/models/dual_rm75/Dual_arm.urdf +++ b/xr_rm_teleop/models/dual_rm75/Dual_arm.urdf @@ -514,7 +514,7 @@ - + @@ -523,7 +523,7 @@ - + diff --git a/xr_rm_teleop/test/test_placo_transforms.py b/xr_rm_teleop/test/test_placo_transforms.py index a3ddb4d..ae40541 100644 --- a/xr_rm_teleop/test/test_placo_transforms.py +++ b/xr_rm_teleop/test/test_placo_transforms.py @@ -95,6 +95,17 @@ def test_dual_urdf_has_expected_joints_meshes_and_tcp_frames() -> None: assert joint.find("origin").attrib["xyz"] == xyz +def test_left_scissor_mesh_matches_physical_mount_rotation() -> None: + root = ElementTree.parse(DUAL_URDF_PATH).getroot() + link = root.find("link[@name='scissor_scissor_link']") + + assert link is not None + assert link.find("visual/origin").attrib["rpy"] == "0 0 -1.5708" + assert link.find("collision/origin").attrib["rpy"] == "0 0 -1.5708" + tcp_joint = root.find("joint[@name='scissor_scissor_tcp_fixed']") + assert tcp_joint.find("origin").attrib["rpy"] == "0 0 0" + + def _dual_placo_solver( arm: str, joint_degrees: list[float],