From 9ffdfabac979c6802966d263ac67fa709064a22d Mon Sep 17 00:00:00 2001 From: Griswald Brooks Date: Wed, 12 Aug 2026 18:29:27 -0400 Subject: [PATCH 1/2] fix(vla_sim): add Close/Open Gripper Objective overrides Teleoperation invokes the gripper via the named "Close Gripper" / "Open Gripper" Objectives (Request Teleoperation SubTree lookup). vla_sim had no override for either, so every teleop gripper toggle fell back to moveit_pro's core placeholder, which logs an ERROR and fails on every BT tick while the control is held, and never actually moves the gripper. Add both, using the same MoveGripperAction call against /robotiq_gripper_controller/gripper_cmd already used by vla_sim's own autonomous stack_cubes_with_the_vla_policy Objective. --- src/vla_sim/objectives/close_gripper.xml | 25 ++++++++++++++++++++++++ src/vla_sim/objectives/open_gripper.xml | 25 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/vla_sim/objectives/close_gripper.xml create mode 100644 src/vla_sim/objectives/open_gripper.xml 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 @@ + + + + + + + + + + + + + + + + From 85863dbfc0719f66df13698397b583db1d9ccd84 Mon Sep 17 00:00:00 2001 From: Griswald Brooks Date: Wed, 12 Aug 2026 18:30:52 -0400 Subject: [PATCH 2/2] docs(claude): note the close/open gripper Objective override gotcha --- CLAUDE.md | 4 ++++ 1 file changed, 4 insertions(+) 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.