Skip to the lesson
FixTheRobot Home / VLA / Phase 8 / 8.4

VLA · Phase 8 · VLA Evaluation and Generalization

8.4 — Perception, Grounding and Action Failures

Telling apart a model that misread the scene, misunderstood the instruction or moved wrongly.

  • Roadmap phase 8
  • VLA Evaluation and Generalization
  • About 12 minutes to read

A failed trial can have three very different causes. This lesson shows tests that tell them apart: oracle replacement, a confusion table of chosen objects and a tally of failures by phase.

Claims about papers, models and textbooks carry numbered references, listed with what each one is cited for in the References. Code marked “Toy model” is our own illustration, not the cited system.

Learning objectives

After this lesson, you should be able to:

  • Define perception, grounding and action failures.
  • Find the bottleneck stage with an oracle experiment.
  • Read a confusion table for systematic bias.
  • Tally action failures by motion phase.
  1. Perception: did it see the scene correctly?
  2. Grounding: did it pick the right target for the words?
  3. Action: did it carry out the motion?
  4. Replace one stage at a time with an oracle
  5. Fix the stage that helps most
Three failure types.

The one-sentence idea

Isolate the stage, then fix that stage.

Stages multiply: one weak stage caps everything.

Three places a VLA can go wrong

Following the pipeline of lesson 1.4, a task can fail at three stages. Perception: the model misread the scene (did not see the object, or saw it in the wrong place). Grounding: the model saw the scene but misunderstood which thing the instruction refers to (picked the wrong object). Action: the model knew the right target but moved wrongly (a clumsy grasp, a collision, a slip). Lesson 7.6 sorted failures by labelling videos; this lesson gives you tools to test which stage is at fault.

The three map onto the axes of STAR-Gen:[1] perception errors show up under visual perturbations, grounding errors under semantic ones, and action errors under behavioural ones. The same study reports that current VLAs struggle with several kinds of semantic generalisation,[1] so grounding is a place to look hard.

The oracle experiment

To find the weakest stage, replace one stage at a time with a perfect one (an oracle) and see how much the end result improves. The stage whose repair helps most is the bottleneck. In a toy pipeline where each stage has its own accuracy:

import numpy as np
rng = np.random.default_rng(0)

accuracy = {"perception": 0.90, "grounding": 0.80, "action": 0.70}       # how often each stage is right, on its own

def run(perfect=(), trials=20000):
    wins = 0
    for _ in range(trials):
        ok = all(stage in perfect or rng.random() < acc for stage, acc in accuracy.items())
        wins += ok
    return wins / trials

print("real pipeline:             ", round(run(), 3))
for stage in accuracy:
    print(f"with a perfect {stage:<10}:", round(run(perfect=(stage,)), 3))

Output:

real pipeline:              0.503
with a perfect perception: 0.568
with a perfect grounding : 0.627
with a perfect action    : 0.729

Toy model. Three independent stages with invented accuracies. In a real VLA the stages are not separable modules, so oracles must be approximated, for example by giving the policy the object’s true position, or telling it the target by an unambiguous label.

Fixing the weakest stage (action, at 0.70) improves the result most, and fixing perception gains least. Because the stages multiply, the end-to-end rate (about 0.5) is lower than any single stage's.

Grounding errors have patterns

When a policy goes to the wrong object, the way it is wrong is informative. A confusion table of instructed object versus chosen object exposes systematic bias, such as always preferring the leftmost object or confusing similar colours:

import numpy as np
rng = np.random.default_rng(0)

objects = ["red cup", "red box", "blue cup"]
counts = np.zeros((3, 3), dtype=int)                       # rows: instructed; columns: chosen

for _ in range(600):
    want = rng.integers(3)
    # invented behaviour: "red cup" and "red box" are confused with each other 30% of the time; "blue cup" is rarely confused
    if want == 0:   probs = [0.70, 0.25, 0.05]
    elif want == 1: probs = [0.30, 0.65, 0.05]
    else:           probs = [0.02, 0.03, 0.95]
    counts[want, rng.choice(3, p=probs)] += 1

print(f"{'instructed':<12}" + "".join(f"{o:>10}" for o in objects))
for i, o in enumerate(objects):
    print(f"{o:<12}" + "".join(f"{n:>10}" for n in counts[i]))

Output:

instructed     red cup   red box  blue cup
red cup            132        49         6
red box             62       139        15
blue cup             5         4       188

The two red objects are confused with each other, not with the blue one: the model understands colour but not the object type. The remedy is targeted: more data or instructions that contrast red cups with red boxes, not “more data” in general.

Action failures: right target, wrong motion

Action failures are the ones where the gripper went to the right place but the grasp, the force or the path failed. Typical signs: the policy hovers (indecision between modes, lesson 3.4), collides with something near the target, or closes the gripper too early. Recording where in the motion the failure occurs is more useful than a yes/no: during approach, grasp, lift or place. A tally by phase is a start:

from collections import Counter

failure_phase = ["approach", "grasp", "grasp", "lift", "grasp", "place", "grasp", "approach", "grasp", "lift"]
for phase, n in Counter(failure_phase).most_common():
    print(f"{phase:<9} {n} of {len(failure_phase)} failures")

Output:

grasp     5 of 10 failures
approach  2 of 10 failures
lift      2 of 10 failures
place     1 of 10 failures

If half of the failures (5 of 10 here) are at the grasp, look at the gripper, the contact data and the grasp demonstrations, not at the language or the vision.

Common misconceptions

Misconception 1 “More data fixes every failure.”

Correction Targeted data for the failing stage helps most.

Misconception 2 “Wrong object means bad vision.”

Correction It is often grounding: the scene was understood, the words were not.

Misconception 3 “Each stage can be checked separately in a VLA.”

Correction Not exactly; oracles approximate the separation.

Engineering takeaways

  1. Perception, grounding, action.
  2. Oracles reveal the bottleneck.
  3. Confusion tables show bias.
  4. Tally by phase.

Find the stage, then the fix.

Knowledge check

Try each question first, then reveal the explanation.

Question 1

A robot picks the blue cup when told “red cup”. Which failure?

Explanation

Grounding (or perception of colour); test with an oracle.

Question 2

Stage accuracies 0.9, 0.8, 0.7 multiply to?

Explanation

About 0.50.

Question 3

What does a failure tally by motion phase tell you?

Explanation

Where in the motion to look for the cause.

References

Numbered notes in the text, like [1], point here. Each entry says what it is cited for and how that was checked. Papers and books can be revised or misread, so follow the links before relying on a detail. Code marked “Toy model” is our own illustration of an idea, not the code of the cited system.

  1. Gao, J., Belkhale, S., Dasari, S., Balakrishna, A., Shah, D. and Sadigh, D. (2025). A taxonomy for evaluating generalist robot policies. arXiv; later versions retitled “…generalist robot manipulation policies” (IEEE RA-L). arXiv:2503.01238

    Cited for:

    • Proposes a taxonomy for generalisation in robot manipulation with three axes that follow the policy’s input and output modalities: visual (perturb the images), semantic (perturb the language) and behavioural (perturb the actions). Checked against the paper’s abstract.
    • Reports that current vision-language-action models struggle with several kinds of semantic generalisation even though they are pre-trained on Internet-scale language data. Checked against the paper’s abstract.

What’s next

Next: whether a policy can recover from mistakes and cope with disturbances.

Next lesson

8.5 — Recovery and robustness

Whether a policy can correct mistakes and cope with disturbances.

Back to the VLA roadmap