Grasping a full-3D linear feature

SkillProductivity

Fit the full 3D axis of an elongated segmented feature and grasp it with a perpendicular, inclination-aware parallel-jaw pose. Use for handles, rods, shafts, tools, utensils, and other linear parts whose pitch or roll matters; use grasping-short-axis instead when an upright OBB and vertical approach are sufficient.

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 Grasping a full-3D linear feature skill

What this skill tells your AI

The instructions your AI receives, as published by graph-robots/open-robot-skills in skills/grasping-linear-feature/SKILL.md and read by ahel’s review.

Use this skill when a segmented graspable part may be inclined in 3D. The point cloud is reduced to a robust principal axis by geometry.fit_linear_feature. The canonical script then builds a gripper frame with its local Y axis along the feature and its local Z approach axis perpendicular to it. The approach is chosen as close to world-down as the perpendicular constraint permits.

Recommended flow:

open → fit_axis → compute_grasp → pregrasp → descend → observe → close → grasped

surface_inset moves the fingertip target from the feature center along the approach direction; standoff places the pregrasp back along the same line. Keep both configurable because gripper geometry and point-cloud completeness vary across platforms.

Two strategies, and when each one is honest

axis_aware_grasp_pose.py uses the fitted axis in full 3D. That is right when the cloud actually constrains the axis in 3D — a part seen from more than one side, or one whose inclination the depth image resolves.

axis_grasp_top_down.py is for the case it does not: a single view from above sees the upper surface and nothing else, so the axis's z component is fitted to noise and an approach tilted by it tilts by noise. This script keeps only the XY projection of the axis, approaches straight down, and takes the grasp height from a bin_floor_z the caller passes plus a grasp_z_offset rather than from the cloud — because the cloud's z is the top of the object, not where the pads should meet it. Both scripts return the same three outputs and both command a wrist roll, so both need a backend that solves the roll.

This skill generates and executes a grasp pose; it does not decide which semantic part to grasp or verify object identity. Upstream perception should provide a point cloud containing only the selected linear feature.

Signals

GitHub stars
41
Forks
7
Last commit
Sep 2026

ahel review

  • S4info
    community integration — published by graph-robots, not linear

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
grasping-linear-feature
Source
github.com/graph-robots/open-robot-skills