proposing-short-axis-grasps

SkillDev tools

Propose top-down grasps whose jaws close ACROSS an elongated

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the proposing-short-axis-grasps skill

What this skill tells your AI

The instructions your AI receives, as published by graph-robots/open-robot-skills in skills/proposing-short-axis-grasps/SKILL.md and read by ahel’s review.

One strategy for the propose stage of a pick: a top-down grasp across the narrow dimension of an elongated body.

Why this is its own skill

A pick has stages — propose, select, approach, close — and each has more than one strategy. Treating "grasping" as one indivisible thing is what leaves a policy with a single approach and nowhere to go when it does not fit: it can only jitter the numbers of a strategy that structurally cannot work. Proposing is separated from selecting so that a refusal here ("the short axis is wider than the hand") is a routable exit to a different rung, not a failed episode.

When to use

  • The target is longer than it is wide: a handle, spanner, screwdriver, bar.
  • Top-down access is available.
  • Any privilege tier. The box may come from sim.get_object_obb or from geometry.compute_obb over a segmented cloud — this skill cannot tell which, which is what makes it portable to the vision body.

When NOT to use

  • The top is blocked (a shelf, a lid) — use proposing-side-grasps.
  • The body is roughly cubic; there is no meaningful short axis to close across.
  • The graspable part is a concave interior (the inside of a ring, a pivot between two plates). A box has no opinion about concavity, and neither has this skill.

Recommended subgraph state flow

describe → get_obb → propose → frame → select → END
  1. describetool: robot.describe_gripper (for the jaw span).
  2. get_obbtool: sim.get_object_obb, inputs: {object_name: …}. At camera_only/none, substitute geometry.filter_and_compute_obb.
  3. proposescript: scripts/<sg>/propose_short_axis.py, inputs target_obb = Ref("get_obb.obb"), gripper = Ref("describe"). Router on route: proposedframe, declined → the subgraph's declined exit.
  4. frametool: robot.grasp_frame, inputs: {close_heading_deg: Ref("propose.close_heading_deg")}.
  5. select — hand propose.positions and frame.rotation to selecting-reachable-grasp, which walks them.

Required end states

End stateMeaning
proposedA heading and stations. Continue to select.
declinedThe hand cannot span this object's short axis. Route to another propose rung — do not retry this one with different numbers.

Signals

GitHub stars
41
Forks
7
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
proposing-short-axis-grasps
Source
github.com/graph-robots/open-robot-skills