Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
25 changes: 25 additions & 0 deletions src/vla_sim/objectives/close_gripper.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<root BTCPP_format="4" main_tree_to_execute="Close Gripper">
<BehaviorTree
ID="Close Gripper"
_description="Close the gripper"
_favorite="false"
>
<Control ID="Sequence" name="root">
<Action
ID="MoveGripperAction"
gripper_command_action_name="/robotiq_gripper_controller/gripper_cmd"
position="0.7"
timeout="15.000000"
/>
</Control>
</BehaviorTree>
<TreeNodesModel>
<SubTree ID="Close Gripper">
<MetadataFields>
<Metadata runnable="true" />
<Metadata subcategory="Grasping" />
</MetadataFields>
</SubTree>
</TreeNodesModel>
</root>
25 changes: 25 additions & 0 deletions src/vla_sim/objectives/open_gripper.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<root BTCPP_format="4" main_tree_to_execute="Open Gripper">
<BehaviorTree
ID="Open Gripper"
_description="Open the gripper"
_favorite="false"
>
<Control ID="Sequence" name="root">
<Action
ID="MoveGripperAction"
gripper_command_action_name="/robotiq_gripper_controller/gripper_cmd"
position="0.0"
timeout="15.000000"
/>
</Control>
</BehaviorTree>
<TreeNodesModel>
<SubTree ID="Open Gripper">
<MetadataFields>
<Metadata runnable="true" />
<Metadata subcategory="Grasping" />
</MetadataFields>
</SubTree>
</TreeNodesModel>
</root>
Loading