AFFORD-X: Affordance-Grounded Agentic Policy for Zero-Shot Robot Manipulation

Md Selim Sarowar, Sungho Kim

Corresponding author. Yeungnam University.

In preparation · CVPR 2027

Zero-shot: no demonstrations, no reward and no gradient steps. Results at seed 0, updated 15 September 2026.

The AFFORD-X framework on the Meta-World hammer scene: a language instruction and stacked RGB-D observations of the same task; solid components are in the reported configuration (task-definition intent, top-down grasp candidates on object geometry, geometric part partition, feasibility-first rule), hatched grey components (Gemini proposer, SAM3 grounding) are alternative sources; and recorded successful executions on Meta-World and LIBERO-PRO Spatial and Object
AFFORD-X on one scene (Meta-World hammer, seed 0), scored with the reported configuration. Solid components are in every reported result: the intent comes from the task definition, 16 top-down grasp candidates are generated on simulator object geometry, the functional term uses a geometric part partition, and the feasibility-first rule selects. Hatched grey components and dashed arrows (the Gemini 3.8 Flash proposer, and SAM3 part grounding on the RGB-D observation with masks lifted through depth) are alternative intent and part sources. Execute shows recorded successful rollouts on Meta-World and LIBERO-PRO Spatial and Object. Every image, score and keyframe is read from logged runs, and no module is trained.
0.00
AFFORD-X success on LIBERO-PRO Spatial Pos, n = 100, against 0.61 for random choice (privileged state)
0
Of 6 LIBERO-PRO Pos/Task cells in which AFFORD-X succeeds more often than random choice among the same candidates
+0.00
Success the feasibility gate adds to a weighted-sum ranking at L1 on LIBERO-PRO Spatial Pos, 95% interval [+0.59, +0.77]
0
Demonstrations, reward signals and gradient steps

Abstract

Direct action generation can commit to an interaction that is plausible, even stable, and still wrong for the task: a hammer held by its head, a bowl grasped where the fingers cannot close. AFFORD-X makes that choice explicit and inspectable. A typed intent names the target, the functional region and the next action, and a feasibility-first rule removes candidate interactions the embodiment cannot execute before functional affordance and task compatibility rank the rest. In every reported run the intent comes from the task definition and the parts from a geometric partition; a semantic proposer (Gemini 3.8 Flash) and SAM3 part grounding are implemented as alternative sources. No module is trained. Evaluation is counterfactual: every compared method ranks the same content-hashed candidate set, and every candidate is executed from the identical start state in the benchmark's own simulator, so a success difference is a difference in the selected interaction. With a 7-DoF Franka on LIBERO-PRO under the position and task perturbations, and with object geometry and the goal read from simulator state so that the selection layer is measured in isolation, the full decision layer succeeds in 0.57 and 0.38 of LIBERO-Goal scenes, 0.92 and 0.96 of LIBERO-Spatial scenes and every LIBERO-Object scene, above random choice among the same candidates in all six cells (10 initial states per task). The same layer is also evaluated on the 50 Meta-World MT50 tasks with a 4-DoF Sawyer. Every comparison comes with paired bootstrap intervals and rollout videos recorded during evaluation.

From Instruction to Interaction

Five stages; only the selection rule is ours, and nothing is trained. Pick a stage.

The Terms and the Rule

Feasibility decides eligibility. Function and task decide preference. The rule decides how they combine.

Three factors

r is 1 inside the embodiment's workspace and 0.1 outside; a scores alignment with the executor's top-down approach, with a floor of 0.3; c scores clearance from obstacle points against a 5 cm margin. None of them looks at the object's function.

The gate

A candidate is eligible when r·a·c ≥ 0.5. When no candidate passes, the rule abstains and the episode counts as a failure, rather than executing something the arm cannot do.

Where the region comes from

A category prior names the handle for handled tools and containers, and it is the region source in every reported run. The semantic proposer's intent can name any region. Objects without a named region score every candidate neutrally.

Where the points come from

grasp_region:<part> scores 1.0 within 3 cm of the part's points, falling to 0 at 8 cm. The reported runs take the part points from a geometric partition of the object cloud; the SAM3 path takes them from text-prompted masks lifted through depth.

Compiled from the next action

The declared next action (place, insert, pour, stack, hand over) compiles into geometric constraints over the candidate set: which part must stay clear, which face needs clearance, which approach keeps the view.

What it adds

Adding the task term on top of feasibility adds +0.07 [+0.02, +0.12] success on LIBERO-PRO Spatial Pos, with the lower bound of the paired interval above zero.

grasp_regionkeep_part_clearclearanceapproach_fromavoid_occluding

Measured as a factorial

Every level L1 to L4 runs the same rank terms under gate ∈ {none, feasibility} and combination ∈ {weighted sum, product}, so the gate and the combination rule are measured separately rather than as one package.

What decides on the Franka

On LIBERO-PRO Spatial Pos, gating a weighted sum adds +0.68 [+0.59, +0.77] at L1, while the gate changes nothing once the product rule is fixed: a product already drives an infeasible candidate to zero.

How We Measure

Identical candidates

Every method ranks the same set

Candidate sets are content-hashed and shared across methods, so a difference in success is a difference in which interaction was selected.

Simulator ground truth

Every candidate is executed

From the identical start state, in the benchmark's own simulator and success check. No method sees these outcomes; sampled re-executions check determinism.

Paired intervals

Differences on the same scenes

Every difference between methods is a scene-clustered paired bootstrap interval (10,000 resamples), and weights and thresholds are fixed in the experiment config before the run.

Runs are immutable directories with resolved configs, code hashes, package versions and a file manifest, and suites launch from frozen source snapshots. Rollout videos are recorded while the selected candidates execute, and each is checked against the method's selection. In the current LIBERO-PRO runs, none of the 1,288 recorded rollouts disagrees with its unrecorded simulator outcome.

Replay a Real Selection

The hammer scene from the figure, with its 16 logged candidates, their terms and their simulator outcomes. Change the rule and see which candidate is executed and whether it succeeds.

The Meta-World hammer scene from the perception camera, with the red-handled hammer on the table beside the box

Part source

Combination rule

Terms

Bars are each candidate's final score, normalised to the selected one; gated candidates score zero.

What this is. Logged data, not a worked example. Terms and outcomes are read from the SAM3-grounded 11-task run; each selection was computed with the engine's decision specs and checked against the selections that run recorded. Stability and simulator outcomes never enter the gate.

What the Selection Looks Like

Candidate scores, the selected interaction and its execution, taken from rollout videos recorded during evaluation. Click to enlarge.

Four scenes, one per row: LIBERO-PRO Spatial and Goal under the position perturbation and two Meta-World MT50 tasks. The first column shows every candidate interaction coloured by the AFFORD-X decision score, with gated candidates crossed out and the selected interaction ringed; the next columns show contact, execution and task completion.
Left: candidate interactions projected into the video camera; crosses are removed by the feasibility gate, the rest are coloured by the AFFORD-X score, the green ring is the selected interaction and the orange diamond the candidate stability ranking would choose. Right: the selection at contact, during execution and at task completion. Each row is the first scene, in sorted order, in which AFFORD-X and stability ranking select different candidates, the recorded AFFORD-X rollout succeeds and the stability-ranked one fails.

Browse Successful Rollouts

One recorded AFFORD-X rollout per LIBERO-PRO cell and per MT50 difficulty tier: the first scene, in sorted order, in which the full decision layer's selection succeeded. Pick a clip, or use the arrow keys.

LIBERO-PRO Goal, Spatial and Object, Pos and Task

A 7-DoF Franka, 10 benchmark initial states per task and every method on the same candidates. Candidate geometry and the goal come from simulator state, so these runs measure the selection layer in isolation. Rates with 95% Wilson intervals; hover a bar.

Success on identical candidate sets.
MethodGoal PosGoal TaskSpatial PosSpatial TaskObject PosObject Task

Spatial · feasibility decides

Within 0.08 of the best candidate

Stability ranking picks the point nearest the centre of mass, which on these bowls is rejected as infeasible or fails in execution, and it succeeds in no Spatial scene. The full layer reaches 0.92 under Pos and 0.96 under Task, against 0.61 and 0.71 for random choice among the same candidates.

Goal · above random in both cells

0.57 under Pos, 0.38 under Task

The full decision layer more than doubles random choice under Pos (0.25) and adds 0.15 over it under Task (0.23), on identical candidate sets.

Object · every scene

1.00 under Pos and Task

The full layer succeeds in all 100 scenes of each cell, against 0.48 and 0.44 for random choice among the same candidates.

succeeds AFFORD-X, full decision layer, LIBERO-PRO Spatial Pos, task 0, initial state 0.
fails Stability ranking (L0) on the same scene and candidate set.

The Feasibility Gate in 3D

On LIBERO-PRO the gate keeps a grasp when reach × approach × collision is at least 0.5, and reach drops to 0.1 outside the Franka workspace, a box fixed to the robot base (x −0.10 to 0.75 m, y −0.50 to 0.50 m, z 0.005 to 0.90 m). Each cell shows one scene, chosen before looking at outcomes as the first in task and initial-state order where the gate removes some grasps and keeps others.

In the five scenes the gate removes 2 to 7 of 12 grasps, and 27 of the 28 removals lie outside the workspace; the one removed inside it, in LIBERO-Spatial Pos, has a collision term of 0.497. The gate removes some grasps in 41 of 80 Goal Pos, 99 of 100 Spatial Pos, 80 of 80 Spatial Task, 30 of 100 Object Pos and 10 of 100 Object Task scenes. Open the viewer on its own page.

Rollouts in 4D

One recorded AFFORD-X rollout per benchmark, replayed from the same reset with a depth camera. SAM3 tracks the object through every frame, each mask is lifted through that frame's depth, and the gripper and arm come from the simulator's geometry map. This is a visualization: no reported result reads these frames.

Meta-World MT50, 50 Tasks

The official MT50 tasks and variations with seed 0, five episodes per task, a 4-DoF Sawyer and no perturbations. Rates over 250 episodes with 95% Wilson intervals.

Success by difficulty tier (number of tasks), episode-weighted
succeeds AFFORD-X, full decision layer, MT50 button-press, episode 0.
fails Stability ranking (L0) on the same scene and candidate set.

Handle Points in 3D

The functional term scores a grasp by its distance to the nearest handle point: 1 within 3 cm, falling to 0 at 8 cm. Every reported result takes those points from a geometric partition of the simulator's object cloud; the earlier 11-task Meta-World run took them from SAM3 masks lifted through the rendered depth. Among its eleven objects only the hammer and the wrench have a handle region. Pick one, orbit the scene, switch the source and read each candidate's distance and score.

On the three hammer episodes the geometric partition (54 points) gives no head grasp a functional score of 0.5 or more, and L3 selects a handle grasp in all nine scenes with either source. Both functional scores are recomputed from the points and equal the run log. Open the viewer on its own page.

BibTeX

@misc{sarowar2027affordx,
title  = {AFFORD-X: Affordance-Grounded Agentic Policy for Zero-Shot Robot Manipulation},
author = {Md Selim Sarowar and Sungho Kim},
year   = {2027},
note   = {In preparation},
url    = {https://physical-agi.github.io/AFFORD-X/}
}

Placeholder entry, to be replaced by the proceedings entry once the paper is accepted.