executing-feature-mating
SkillDev toolsExecutes a supplied feature-mating plan for an already-held rigid object - collision-aware planner legs tracked to millimetre precision, Cartesian servo for short corrections and fixture crossings, contact-controlled seating - then releases and retreats along the fixture axis or straight up. Use when the goal is a constrained mate such as a loop over a shaft, a shaft into an aperture, or a handle seated on a support; use transporting-objects for ordinary container drops.
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 executing-feature-mating skill
What this skill tells your AI
The instructions your AI receives, as published by graph-robots/open-robot-skills in skills/executing-feature-mating/SKILL.md and read by ahel’s review.
Execute a previously computed feature-mating plan for an already-grasped rigid object, then release it. The upstream localization/planning node supplies ordered poses; this skill does not locate a fixture or compute mating poses and does not depend on object names, task names, simulator state, or evaluator predicates.
Use this instead of transporting-objects when the goal is a constrained mate,
not a drop into a volume or onto a broad surface. Examples are putting a loop
over a rod, inserting a rod through a loop, or lowering a handle gap onto a
support point.
Recommended subgraphs
execute_placement_plan -> seated
release_and_retract -> released
The two scripts are usually two subgraphs so the graph can settle, verify, or re-observe between engagement and release; a single subgraph running both in order is also valid.
execute_placement_plan
Runs scripts/execute_placement_plan.py with
placement_plan = Ref("in.placement_plan"). The plan carries its collision
world and attached-object spheres, and every waypoint is a typed record
{pose, mode, allow_start_contact?, allow_goal_contact?, contact_margin?}:
planned_joint— collision-aware transit viamotion.plan_to_pose.planned_linear— orientation-locked straight leg viamotion.plan_linear.cartesian_cross— a short local segment across a fixture mouth, driven by the robot's Cartesian servo so an incidental touch does not stop it.contact_seat— the final intended-contact leg viarobot.move_cartesian_until_contact, which stops when the target is reached or measured TCP progress stalls.
Before each planned leg the script reads robot.get_ee_pose: a waypoint within
1.5 mm and 2 degrees is skipped (the planner would otherwise be asked for a
zero-motion problem its start-contact check can reject), and a planned_joint
correction of at most 3 cm with matching orientation is served through
robot.go_to_pose_cartesian rather than a fresh joint-space trajectory that
can make a loosely held object slip. Larger legs are planned with up to three
attempts (the sampled planner can miss a narrow corridor on one seed) and
executed with a 2 mm tracking tolerance and a 60-step-per-waypoint budget. A
planner refusal raises; route it through on_error: blocked. Output:
final_pose: Se3Pose, the last waypoint pose.
release_and_retract
Runs scripts/release_and_retract.py with final_pose (the mate pose the
object was released at) and, for a fixture mate, retreat_axis: Vec3 (the
fixture axis), attached_object: AttachedObject and relation: string. It
opens the gripper (open_settle_steps, default 80), retreats and then waits
settle_steps (default 120) so a freshly released object stops swinging before
the graph reports success.
- With
retreat_axis: the retreat runs along the axis (reversed forshaft_into_aperture,tip_through_apertureandinsert_through, where the feature went into the fixture) bymax(retract_m or 0.08, farthest attached sphere + 1 cm)and lifts by half that distance so the open fingers clear the released object. - Without
retreat_axis: a plain vertical retreat ofretract_m(or 0.08 m when unset), still never less than the attached extent plus 1 cm.
Boundaries
- This skill does not infer fixture geometry or choose feature landmarks.
- Do not query
sim.*, cameras, rewards, or goal predicates inside this skill. - Preserve the waypoint order. Insertion plans encode clearance first, mating second, seating third; shortcutting between them can cross solid geometry.
- Never fall back to unchecked robot motion after a collision-aware planner rejects a waypoint.
- Use
transporting-objectsfor bins, baskets, and unconstrained surface drops.
Signals
- GitHub stars
- 41
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
executing-feature-mating- Source
- github.com/graph-robots/open-robot-skills