Perceiving Relational Correspondences

SkillDev tools

Perceives multiple source and destination instances and resolves language-conditioned one-to-one or many-to-one correspondences. Use when an instruction relates instances by spatial order, proximity, appearance, labels, or a shared destination and downstream manipulation needs stable candidate IDs, masks, point clouds, and OBBs. Do not use for single-instance localization or for functional-feature fitting.

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 Perceiving Relational Correspondences skill

What this skill tells your AI

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

Resolve which source goes with which destination independently of grasping, feature fitting, and motion planning.

Contract

Require instruction, source_description, and destination_description. Accept optional cardinality, source_workspace_description, destination_workspace_description, and completed_source_ids.

match_candidates also returns pairs, a list of pair records; it is not listed under produces_outputs because the type registry names no bare list of records (the same rule verifying-a-cable-route follows). Its shape is the schema.

Return a PairSet containing stable candidate IDs and, for every selected pair, the source/destination mask, point cloud, OBB, relation, and confidence. Exit as paired, finished, ambiguous, not_found, or cardinality_mismatch. See the schema.

Procedure

  1. Propose all source and destination instances with Grounding DINO; segment each tight proposal with SAM3 and recover world-frame geometry from RGB-D.
  2. Assign stable IDs from category plus quantized world centroid. Never use detector list order as identity.
  3. Ask the VLM to select candidate IDs and a relation operator from the instruction. The VLM may select IDs; it must not invent pixels or 3-D poses.
  4. Validate IDs, cardinality, uniqueness, mask/cloud support, and the claimed relation deterministically. Reject an unverifiable answer as ambiguous.
  5. Preserve the complete PairSet while manipulation iterates over it. Refresh geometry for a selected ID when needed, but do not recompute semantic ranks after moving an earlier object.

Supported relation operators should remain domain-neutral: corresponding order along an inferred axis, nearest, matching appearance/label, explicit ID, and shared destination. Do not encode words such as left, tool names, or hook names as fixed world-axis branches; language interpretation chooses the operator and direction, while geometry validates it.

Keep functional-feature perception in a later skill. A destination mask can identify the correct fixture instance without claiming where its shaft, hole, or seating pose is.

Use the canonical subgraph as the composition boundary and scripts/match_candidates.py for deterministic assignment and validation after candidates have been perceived. For iterative manipulation, scripts/select_next_source.py accepts declarative source_categories, metric source_workspace, correspondence_axis, and arm_partition inputs. Those task-domain declarations belong in the graph; the script intentionally contains no category names, workcell coordinates, or fixed meaning for left/right.

select_next_source.py returns a geometry-derived stable source_id, the selected instance mask, the continuous correspondence anchor, and an arm ID. Pass completed_source_ids when retry logic retains a PairSet; otherwise a pickup-workspace gate can exclude already placed instances.

Signals

GitHub stars
44
Forks
7
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
perceiving-relational-correspondences
Source
github.com/graph-robots/open-robot-skills