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
| Piece | Path |
|---|---|
| Grasp candidates | restocker_task_executor/…/grasp_candidates.hpp |
| Placement candidates | …/placement_candidates.hpp |
| Task selection | …/task_selection.cpp |
References
- Literature: Bohg et al., data-driven grasp survey
- Literature: Team Delft APC · Costanzo et al., shelf replenishment
- This project: Ports