Skip to main content

Manipulation candidates

Grasp and placement poses are generated by deterministic C++ geometry, then handed to MoveIt for collision-checked planning. The planner does not invent grasps.

world snapshot
→ grasp_candidates (grasp_center → tool0, bounded yaw batch)
→ MotionPort / MoveIt validation
→ placement_candidates (pre-insert / insert / retreat)
→ MotionPort / MoveIt validation

Grasps​

grasp_candidates.hpp targets grasp_center, converts goals to tool0, and produces a bounded yaw batch. Candidates make no reachability claim until MoveIt says so.

Placements​

placement_candidates.hpp produces pre-insert, insert, and retreat poses for the chosen lane mouth. Gravity-fed shelves largely remove deep-insert requirements; still treat truncation and corridor padding as real failure modes when debugging.

PreInsert itself is still a free-space OMPL segment under a survey-derived AABB path constraint (held radius + planner padding + lane side clearance). A short Cartesian carry-start first moves one product-clearance span away from the stock tray at retract X/Z/orientation; PreInsert then owns the reorientation and rail traverse. See Motion planning.

What the ports prove​

After candidates are selected, Ports own execution evidence:

  • Motion: nothing commanded vs arm may have moved
  • Gripper: jaw metres verified against the 0.5 mm attachment band
  • Attachment: Gazebo + scene + semantics under the chosen scope

This project​

PiecePath
Grasp candidatesrestocker_task_executor/…/grasp_candidates.hpp
Placement candidates…/placement_candidates.hpp
Task selection…/task_selection.cpp

References​