diff --git a/CLAUDE.md b/CLAUDE.md index d3e56985b..dc3de155c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -56,3 +56,7 @@ Every objective XML file must include a `MetadataFields` block inside the `TreeN - `runnable` — set to `"true"` for top-level objectives the user can run, `"false"` for subtrees only called by other objectives - `subcategory` — groups the objective in the UI (e.g., `"AprilTag"`, `"Grasping"`, `"MuJoCo Simulation"`) + +### A gripper config needs `close_gripper.xml` / `open_gripper.xml`, or teleop gripper silently fails + +Teleoperation drives the gripper by looking up Objectives named exactly `"Close Gripper"` / `"Open Gripper"` (the `Request Teleoperation` SubTree in moveit_pro core). If a config package doesn't provide those overrides in its `objectives/` directory, the lookup falls back to moveit_pro's core placeholder, which logs `[ERROR] LogMessage Error: This robot configuration does not have a \`Close Gripper\` Objective configured to override this default.` on every BT tick for as long as the control is held, and the gripper never moves — even if some other Objective in the same config already drives the gripper directly via `MoveGripperAction` (that path bypasses the named-Objective lookup entirely). Any new config with a gripper needs both files; see `moveit_pro_kinova_configs/kinova_gen3_base_config/objectives/{close,open}_gripper.xml` for the reference pattern. diff --git a/src/vla_sim/objectives/close_gripper.xml b/src/vla_sim/objectives/close_gripper.xml new file mode 100644 index 000000000..28280fc86 --- /dev/null +++ b/src/vla_sim/objectives/close_gripper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + diff --git a/src/vla_sim/objectives/open_gripper.xml b/src/vla_sim/objectives/open_gripper.xml new file mode 100644 index 000000000..4b310d17b --- /dev/null +++ b/src/vla_sim/objectives/open_gripper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + +