VLA: robots que ven, entienden y actúan|INEMA.CLUB-PRO

Clase 4 · 16 min

Datos: el combustible que falta

Texto para entrenar un LLM hay de sobra en internet. Datos de robot, no: alguien tiene que mover el brazo, grabar la cámara y anotar la tarea. En 2026 la respuesta pasó a ser video de personas trabajando, filmado en primera persona. En esta clase abres un dataset de robot de verdad.

Comenzar la lección
Una persona moviendo un brazo líder mientras el brazo seguidor copia el movimiento sobre la mesa, con una cámara grabando.

En esta lección vas a

  1. 1Cómo la teleoperación genera un episodio
  2. 2Los acervos abiertos y qué cambió con el video humano
  3. 3El formato LeRobotDataset v3: Parquet, MP4 y metadatos
  4. 4Cargar un dataset del Hub y leer episodios y fps

Objetivo: explicar de dónde vienen los datos de robot (teleoperación, OXE/DROID, video humano) y abrir un LeRobotDataset v3.

01El embudo de los datos

Del más caro y preciso al más barato y abundante. Haz clic en cada etapa.

Episodio = un intento de principio a fin. fps = cuántos cuadros por segundo se grabaron.

En la práctica, los modelos de 2026 mezclan las cuatro fuentes: mucho video humano en el preentrenamiento, teleoperación de tu robot en el ajuste fino.

02Por dentro de un LeRobotDataset v3

El formato que LeRobot usa desde la versión 0.4.

1. Pocos archivos grandes

Los datos de tabla (estado, acción, índices) quedan en Parquet. El video de cada cámara queda en MP4 concatenado y fragmentado. Los metadatos quedan en JSON y Parquet.

Sigues leyendo por episodio: la biblioteca oculta dónde se guarda cada cuadro.

03Abrir un dataset del Hub

Sin cuenta y sin token: lerobot/pusht es público. Primero instala LeRobot (Python 3.12).

Terminal · instalar (Linux o Mac)
python3.12 -m venv .venv
source .venv/bin/activate
pip install "lerobot[training]==0.6.1"
abrir_dataset.py
from lerobot.datasets import LeRobotDataset

ds = LeRobotDataset("lerobot/pusht")
print("episódios:", ds.num_episodes)
print("fps:", ds.fps)
print("quadros:", ds.num_frames)
print("chaves:", list(ds.features))

# dónde empieza y termina el episodio 0
ini = ds.meta.episodes["dataset_from_index"][0]
fim = ds.meta.episodes["dataset_to_index"][0]
print("episódio 0: quadros", ini, "a", fim - 1, f"({(fim - ini) / ds.fps:.1f} s)")

quadro = ds[ini]
print("estado:", quadro["observation.state"])
print("ação:", quadro["action"])
print("imagem:", tuple(quadro["observation.image"].shape))
Terminal
python abrir_dataset.py
meta.py · solo los metadatos (no descarga los videos)
from lerobot.datasets import LeRobotDatasetMetadata

for repo in ["lerobot/libero", "lerobot/aloha_mobile_cabinet"]:
    m = LeRobotDatasetMetadata(repo)
    print(repo, "episódios:", m.total_episodes, "fps:", m.fps, "câmeras:", m.camera_keys)
Ejemplo del repositorio
$ python abrir_dataset.py
Warning: You are sending unauthenticated requests to the HF Hub. ...
episódios: 206
fps: 10
quadros: 25650
chaves: ['observation.image', 'observation.state', 'action', 'episode_index', 'frame_index', 'timestamp', 'next.reward', 'next.done', 'next.success', 'index', 'task_index']
episódio 0: quadros 0 a 160 (16.1 s)
estado: tensor([222.,  97.])
ação: tensor([233.,  71.])
imagem: (3, 96, 96)

$ python meta.py
lerobot/libero episódios: 1693 fps: 10.0 câmeras: ['observation.images.image', 'observation.images.image2']
lerobot/aloha_mobile_cabinet episódios: 85 fps: 50 câmeras: ['observation.images.cam_high', 'observation.images.cam_left_wrist', 'observation.images.cam_right_wrist']

LeRobot 0.6.1, Python 3.12. El aviso de "unauthenticated requests" es normal sin cuenta: solo limita la velocidad. La primera vez descarga el dataset (tardó 12 s aquí); después queda en la caché.

04Práctica: tu primer dataset de robot

Corre en cualquier computador con Python 3.12. No necesita GPU.

E1 · Abrir PushT

15 min

Instala LeRobot en un venv, copia abrir_dataset.py y ejecútalo.

Listo cuando: la terminal imprime episódios: 206 y fps: 10.

E2 · Ver un episodio

10 min

Abre huggingface.co/datasets/lerobot/pusht en el navegador y mira el episodio 0 en el visualizador. Compáralo con la duración que calculó el script.

Listo cuando: confirmas que el episodio 0 dura cerca de 16 s y sabes decir qué empuja el agente.

E3 · Comparar con otros datasets

10 min

Ejecuta meta.py: lee solo los metadatos de dos datasets más grandes, sin descargar los videos. Compara fps y número de cámaras con PushT.

Listo cuando: la terminal muestra ALOHA a 50 fps con 3 cámaras y anotaste el nombre de sus 3 cámaras.

05Prueba lo que aprendiste

La explicación aparece después de tu respuesta.

Pregunta 1 de 4

¿Qué es un episodio en un dataset de robot?competencia

06Resumen

Cuatro fuentesTeleoperación, acervos abiertos, video humano y simulación.
2026 = video humanoEs lo que más escala en el preentrenamiento; la teleoperación ajusta al robot.
LeRobotDataset v3Parquet + MP4 + metadatos, leído por episodio, con un import.

Fuentes de esta clase

Clase anteriorSiguiente clase