perceiving-functional-features
SkillMonitoring & opsLocates a language-described functional part of a rigid object or fixture from calibrated RGB-D and fits a typed loop, shaft, tip, aperture, surface, or region feature with a metric centre, axis, and radius, either inside an already-segmented parent or end to end from a described object, protruding shaft, directed tip, or lidded aperture. Use when a manipulation step depends on where a specific part is rather than on the whole object, such as a tool loop to hang, a shaft to hang it on, an insertion tip, or an opening to insert into.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the perceiving-functional-features skill
What this skill tells your AI
The instructions your AI receives, as published by graph-robots/open-robot-skills in skills/perceiving-functional-features/SKILL.md and read by ahel’s review.
Use when manipulation depends on a loop, shaft, tip, aperture, surface, or
region rather than on a whole object. Every script localizes geometry from a
calibrated RGB-D camera and returns a FunctionalFeature (kind, pose
whose local Z is the feature axis, axis, confidence, and the radius or
length the mating skill needs). None of them computes mating poses or moves
the robot.
Four of the scripts take an Observation and pick one camera by name
(camera_name, default overhead). perceive_feature instead takes
cameras -- the Observation's cameras list -- because it searches
every view; the type registry names no bare list of frames, so the shape is
stated here rather than under required_inputs.
Which script
perceive_feature-- the part of an already segmented parent. Inputsparent_cloud,parent_mask,feature_description,feature_type(loop, aperture, surface, region, shaft, tip). Candidates outside the parent's 3D bounds are rejected. Outputsfeature,feature_mask,feature_cloud.perceive_object_feature-- object and its planar feature end to end.candidatesis a JSON list of rows{kind, object_description, feature_description, feature_type, feature_score_min}; each object description is segmented, the strongest wins, its cloud is optionally completed down to the support surface (complete_to_support), and the row's feature (when described) is segmented, centred, and fitted as a planar loop with the camera position fixing the normal sign. Wheninstructionnames one of the candidate kinds only those rows are tried. Outputstarget_kind,target_obb,target_mask,target_cloud,feature_center,feature_pose,functional_feature. A row whosefeature_descriptionis empty yields the OBB centre as a point feature for a downstream landmark rule to refine; object-specific landmark rules belong to the graph, not to this script.perceive_protruding_shaft-- a thin shaft protruding from a mounting plane (a hook, peg, or pin). Detector boxes forfixture_descriptionare gated bylabel_keywordandaspect_min, refined by SAM3, then the full protrusion is recovered from depth inside the box with the mounting plane as the far-X plane of the ROI (the shaft protrudes toward decreasing world X).shaft_length_min/maxandtransverse_maxreject look-alikes. Outputsfixture_obb/mask/cloud,shaft_tip,fixture_axis(plane to tip), andfixture_featurewithradius_outer,usable_length, andseating_margin. Withrequired: falsea miss returnsroute: not_foundand empty outputs instead of raising.perceive_directed_tip-- an elongated object's insertion tip. The long axis is directed by a visible marker at one end (direction_marker_description, optional) or by the narrower end; the tip is the cloud's extreme along that axis. Outputstarget_obb/mask/cloud,insertion_pose(local Z through the tip),marker_center, and atipfunctional_featurewithradius_outer.perceive_aperture-- an opening in a lid. The lid plane is fitted from the fixture cloud; the aperture centre and radius come from intersecting calibrated rays through the opening's 2D mask with that plane, since depth inside a hole is the interior, not the rim. Outputsaperture_center,fixture_axis(inward),aperture_radius,rim_z, the two masks and clouds, and anaperturefixture_featurewithradius_inner.
Boundaries
- Descriptions and score floors are inputs; no object class, CAD landmark, or world coordinate is assumed. Object-specific refinements (CAD offsets, a handle-to-tip axis, the mating relation) are graph glue downstream.
- A script raises on a failed gate; the graph routes that to
not_found. Onlyperceive_protruding_shaft(required=false)returns the route. - This skill localizes geometry. Registration, mating poses, and motion are other skills.
Signals
- GitHub stars
- 41
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
perceiving-functional-features- Source
- github.com/graph-robots/open-robot-skills