proposing-side-grasps
One strategy for the propose stage: horizontal entry, swept around the object.
Why this is its own skill
It is the alternative that exists so a top-down refusal has somewhere to go.
proposing-short-axis-grasps declines by measuring a width; it cannot offer a
side entry, because approaching horizontally is a different strategy, not a
different number. A policy with only one propose rung answers a structural
refusal by re-tuning parameters that cannot help.
When to use
- Overhead access is blocked — a shelf plate, a lid, a bin rim above the target.
- The object is flat and wide on top but narrow in profile.
- The top-down rung declined.
When NOT to use
- The object stands against a wall or in a corner and only one azimuth is open.
This skill will happily rank a blocked side first; the clearance gate in
selecting-reachable-graspis what makes that safe, so do not use this rung without a selector. - The graspable feature is a concave interior — a box's silhouette says nothing about concavity.
Recommended subgraph state flow
describe → get_obb → propose → select → END
describe—tool: robot.describe_gripper.get_obb—tool: sim.get_object_obb(orgeometry.filter_and_compute_obbon the vision body).propose—script: scripts/<sg>/propose_side_grasps.py, inputstarget_obb,gripper. Router onroute.select— build a pose per candidate withrobot.grasp_frame(approach=…, close_heading_deg=…)and walk them withselecting-reachable-grasp. Its clearance gate is what turns "ranked by margin" into "reachable in this scene".
Required end states
| End state | Meaning |
|---|---|
proposed |
Candidates, widest margin first. Continue to select. |
declined |
Wider than the jaws from every azimuth. The remaining option is a part of the object narrower than its whole box. |