VLA: robots that see, understand, and act|INEMA.CLUB-PRO

Lesson 2 · 16 min

Eye, brain, and hand: inside a VLA

Every VLA has three parts: one that sees, one that understands, and one that turns the decision into movement. The movement part is where models differ the most, and where the clock gets tight: the arm waits for a command every few milliseconds.

Start the lesson
Close-up of the wrist camera and the gripper of a robotic arm about to pick up a cup.

In this lesson you will

  1. 1The three parts: visual encoder, backbone, and action head
  2. 2Three ways to generate action: bins, FAST, and flow matching
  3. 3Why the model returns a piece of actions (chunk)
  4. 4The slow/fast hierarchy: S2, S1, and S0

Goal: explain the path from image + sentence → actions and why action chunking and flow matching exist.

01The path from camera to motor

Scroll the page: each step lights up a part of the diagram.

Scroll the page: each step below lights up its part of the diagram.

  1. 1/5

    Visual encoder

    Turns each image into a sequence of vectors that the rest of the model understands. It usually comes ready-made from a pretrained VLM.

  2. 2/5

    Backbone

    A VLM that takes the image tokens, the instruction, and the robot's state. 2026 examples: GR00T N1.7 uses Cosmos-Reason2-2B; RDT2 uses Qwen2.5-VL-7B. This is where the "understands" in the course title comes from.

  3. 3/5

    Action head

    Turns the backbone's decision into motor numbers. You can pick values from a list (bins), write the compressed trajectory as tokens (FAST), or generate the continuous action with flow matching or diffusion.

  4. 4/5

    Action chunk

    Instead of one action at a time, the model returns a chunk of N actions. The controller executes that chunk while the model computes the next one.

  5. 5/5

    The whole path

    The camera becomes tokens, the backbone combines them with the sentence and the state, the action head returns a chunk of actions, and the motor executes while the next chunk is computed.

In most 2026 VLAs the backbone is a pretrained VLM, and what changes from one model to another is the action head.

02Three ways to generate the action

Click each one. The difference is speed and precision.

1. Bins

Each joint has its range of motion divided into little boxes (bins), and the model picks a box the way it would pick a word. Models like OpenVLA (7B, Jun/2024) follow this idea.

It's simple, but it gives one action at a time, and precision is limited by the size of the box.

03The control time budget

A ten-line script that answers: is there time for the model to think before the chunk runs out?

orcamento.py
# orcamento.py: how much time each chunk of actions covers
hz = 50            # control frequency (commands per second)
chunk = 25         # actions the model returns at once
inferencia_ms = 180  # time for the model to generate a chunk

periodo_ms = 1000 / hz
dura_chunk_ms = chunk * periodo_ms
acoes_na_espera = inferencia_ms / periodo_ms

print(f"control period: {periodo_ms:.0f} ms")
print(f"a chunk of {chunk} actions covers: {dura_chunk_ms:.0f} ms")
print(f"actions that go by while the model thinks: {acoes_na_espera:.0f}")
print("is there time to think before the chunk runs out?", "yes" if inferencia_ms < dura_chunk_ms else "no")
Terminal
python3 orcamento.py
Example from the repository
$ python3 orcamento.py
control period: 20 ms
a chunk of 25 actions covers: 500 ms
actions that go by while the model thinks: 9
is there time to think before the chunk runs out? yes

The 180 ms is the time of one MolmoAct 2 action call as reported by Ai2 (May/2026). On your robot, measure yours.

04Practice: your time budget

Do the math before running the script, then check it.

E1 · Run the script

5 min

Copy orcamento.py, run it, and check that the output matches the one in the box.

Done when: your terminal shows 20 ms, 500 ms, 9, and "yes".

E2 · Chunk too short

10 min

Change chunk to 8 and keep 50 Hz and 180 ms. Before running, write down on paper: how much the chunk covers, how many actions go by during the wait, and whether there is enough time.

Done when: your paper and your terminal say the same thing: 160 ms, 9 actions, and "no" (the chunk ends before the next inference).

E3 · The smallest chunk that works

5 min

Still at 50 Hz and 180 ms, find the smallest chunk that gives enough time.

Done when: you got to 10 actions (200 ms, greater than 180 ms) and you can explain why 9 is not enough.

05Test what you learned

The explanation appears after your answer.

Question 1 of 4

A controller at 50 Hz with a chunk of 25 actions. How long does the chunk cover?skill

06Summary

Eye, brain, and handVisual encoder, backbone (a VLM), and action head.
The hand is where it changesBins, FAST, or flow matching/diffusion: a list, compressed tokens, or continuous.
The clock rulesA chunk of N actions at 50 Hz covers N × 20 ms, and it has to last longer than the inference.

Sources for this lesson

Previous lessonNext lesson