diff --git a/data/.lfs/yam_description.tar.gz b/data/.lfs/yam_description.tar.gz index 2ff8ba61d2..18464de268 100644 --- a/data/.lfs/yam_description.tar.gz +++ b/data/.lfs/yam_description.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb8c04381e29ceb1340e818bc706ba866d706c37a254d5637babc7168a5de850 -size 5759450 +oid sha256:db9a2160e414830eb1c2203b573ec7557563d3f963667c19752d7da7e3e940f1 +size 5388932 diff --git a/dimos/robot/manipulators/openyam/blueprints/teleop.py b/dimos/robot/manipulators/openyam/blueprints/teleop.py index 2df9ee0508..7d4b12ed3a 100644 --- a/dimos/robot/manipulators/openyam/blueprints/teleop.py +++ b/dimos/robot/manipulators/openyam/blueprints/teleop.py @@ -52,7 +52,7 @@ def _eef_twist_task(*, priority: int = 10) -> TaskConfig: type="eef_twist", joint_names=list(OPENYAM_ARM_JOINTS), priority=priority, - params={"robot_model": _openyam_model, "target_frame": "yam_hand_tcp"}, + params={"robot_model": _openyam_model, "target_frame": "gripper_tip"}, ) @@ -107,7 +107,7 @@ def _gripper_task() -> TaskConfig: bindings=[ { "hand": "right", - "target_frame": "yam_hand_tcp", + "target_frame": "gripper_tip", } ], params={ diff --git a/dimos/robot/manipulators/openyam/config.py b/dimos/robot/manipulators/openyam/config.py index 1dbbd61b22..b1d8add730 100644 --- a/dimos/robot/manipulators/openyam/config.py +++ b/dimos/robot/manipulators/openyam/config.py @@ -37,7 +37,7 @@ OPENYAM_GRIPPER_JOINT = "arm/gripper" OPENYAM_JOINTS = [*OPENYAM_ARM_JOINTS, OPENYAM_GRIPPER_JOINT] OPENYAM_PACKAGE = LfsPath("yam_description") -OPENYAM_MODEL_PATH = OPENYAM_PACKAGE / "urdf/yam_gripper.urdf.xacro" +OPENYAM_MODEL_PATH = OPENYAM_PACKAGE / "i2rt/yam.urdf" OPENYAM_PACKAGE_PATHS: dict[str, Path] = {"yam_description": OPENYAM_PACKAGE} @@ -79,18 +79,22 @@ def make_openyam_model_config( *, home_joints: list[float] | None = None, ) -> RobotModelConfig: - """Build a planning config for the gripper-equipped OpenYAM.""" + """Build the canonical visualization and planning config for OpenYAM.""" model_joint_names = joint_names(OPENYAM_DOF, prefix="yam_joint") + model = RobotModel.from_file( + OPENYAM_MODEL_PATH, + package_paths=OPENYAM_PACKAGE_PATHS, + ).with_renamed_joints(dict(zip(joint_names(OPENYAM_DOF), model_joint_names, strict=True))) return RobotModelConfig( - model=RobotModel.from_file(OPENYAM_MODEL_PATH, package_paths=OPENYAM_PACKAGE_PATHS), + model=model, joint_names=model_joint_names, - base_link="yam_base_link", + base_link="base", planning_groups=[ PlanningGroupDefinition( name="manipulator", joint_names=tuple(model_joint_names), - base_link="yam_base_link", - tip_link="yam_hand_tcp", + base_link="base", + tip_link="gripper_tip", ) ], auto_convert_meshes=True, diff --git a/dimos/robot/manipulators/openyam/test_openyam.py b/dimos/robot/manipulators/openyam/test_openyam.py index 08616ee721..6845cd67be 100644 --- a/dimos/robot/manipulators/openyam/test_openyam.py +++ b/dimos/robot/manipulators/openyam/test_openyam.py @@ -36,6 +36,7 @@ OPENYAM_GRIPPER_JOINT, OPENYAM_HARDWARE_ID, OPENYAM_JOINTS, + OPENYAM_MODEL_PATH, make_openyam_model_config, openyam_hardware, ) @@ -56,9 +57,11 @@ def _coordinator_kwargs(blueprint: Blueprint) -> dict[str, Any]: def test_make_openyam_model_config_uses_canonical_arm_joints() -> None: config = make_openyam_model_config() + assert OPENYAM_MODEL_PATH.parts[-2:] == ("i2rt", "yam.urdf") + assert config.model.source_path == OPENYAM_MODEL_PATH assert config.joint_names == OPENYAM_ARM_JOINTS - assert config.base_link == "yam_base_link" - assert config.planning_groups[0].tip_link == "yam_hand_tcp" + assert config.base_link == "base" + assert config.planning_groups[0].tip_link == "gripper_tip" assert config.gripper_hardware_id == "arm" @@ -186,6 +189,6 @@ def test_quest_teleop_routes_pose_and_gripper_to_separate_tasks() -> None: teleop = next(task for task in tasks if task.type == "teleop_ik") gripper = next(task for task in tasks if task.type == "gripper") - assert teleop.params["bindings"] == [{"hand": "right", "target_frame": "yam_hand_tcp"}] + assert teleop.params["bindings"] == [{"hand": "right", "target_frame": "gripper_tip"}] assert gripper.joint_names == [OPENYAM_GRIPPER_JOINT] assert gripper.stream_bind == {"gripper_command": "right_gripper_command"}