LeRobot documentation

RoboCasa365

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboCasa365

RoboCasa365 es un marco de simulación a gran escala para el entrenamiento y la evaluación de robots generalistas en tareas cotidianas de cocina. Incluye 365 tareas de manipulación diversas en 2.500 entornos de cocina, más de 3.200 activos de objetos y más de 600 horas de datos de demostración humana, en un manipulador móvil PandaOmron de 12 GDL (brazo Franka sobre una base holonómica).

RoboCasa365 benchmark overview

Tareas disponibles

RoboCasa365 organiza sus 365 tareas en dos familias y tres grupos de benchmarks upstream que LeRobot expone como atajos de primera clase --env.task:

FamiliaTareasDescripción
Atómico~65Tareas de una sola habilidad: recoger y colocar, manipulación de puertas/gavetas, control de electrodomésticos
Compuesto~300Tareas de varios pasos en más de 60 categorías: cocina, limpieza, organización, etc.

Ejemplos de tareas atómicas: CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.

Categorías de tareas compuestas: hornear, hervir, preparar infusiones, picar, limpiar la mesa, descongelar alimentos, cargar el lavavajillas, preparar té, calentar alimentos en el microondas, lavar los platos, y más.

--env.task acepta tres formas:

  • un único nombre de tarea (CloseFridge)
  • una lista separada por comas (CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • un atajo de grupo de benchmarks — atomic_seen, composite_seen, composite_unseen, pretrain50, pretrain100, pretrain200, pretrain300 — que se expande automáticamente a la lista de tareas upstream y fija automáticamente el split del dataset (target o pretrain).

Instalación

RoboCasa y su dependencia robosuite no se publican en PyPI, y el propio setup.py de RoboCasa fija lerobot==0.3.3, lo cual entra en conflicto con el lerobot de este repositorio. Por lo tanto, LeRobot no expone un extra robocasa — instale los dos paquetes manualmente como clones editables (usando --no-deps en robocasa para omitir su fijación de lerobot que queda en la sombra):

# After following the standard LeRobot installation instructions.

git clone https://github.com/robocasa/robocasa.git ~/robocasa
git clone https://github.com/ARISE-Initiative/robosuite.git ~/robosuite
pip install -e ~/robocasa --no-deps
pip install -e ~/robosuite

# Robocasa's runtime deps (the ones its setup.py would have pulled, minus
# the bad lerobot pin).
pip install numpy numba scipy mujoco pygame Pillow opencv-python \
            pyyaml pynput tqdm termcolor imageio h5py lxml hidapi \
            tianshou gymnasium

python -m robocasa.scripts.setup_macros
# Lightweight assets (lightwheel object meshes + textures). Enough for
# the default env out of the box.
python -m robocasa.scripts.download_kitchen_assets \
  --type tex tex_generative fixtures_lw objs_lw
# Optional: full objaverse/aigen registries (~30GB) for richer object
# variety. Enable at eval time via --env.obj_registries (see below).
# python -m robocasa.scripts.download_kitchen_assets --type objs_objaverse
RoboCasa requires MuJoCo. Set the rendering backend before training or evaluation:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

Registros de objetos

Por defecto, el entorno muestrea objetos solo del registro lightwheel (lo que incluye --type objs_lw), lo que evita un error de Probabilities contain NaN cuando los paquetes de objaverse / aigen no están en el disco. Si has descargado el conjunto completo de recursos, habilita el registro completo en tiempo de ejecución:

--env.obj_registries='[objaverse,lightwheel]'

Evaluación

Todos los fragmentos de evaluación a continuación replican el comando de CI (ver .github/workflows/benchmark_tests.yml). El argumento --rename_map asigna las claves de cámara nativas de RoboCasa al esquema de entrada de tres cámaras (camera1 / camera2 / camera3) con el que se entrenó la política smolvla_robocasa publicada: robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Esta correspondencia debe coincidir con el mapeo de entrenamiento de la política (ver rename_map en el train_config.json del checkpoint); intercambiar dos claves de cámara se acepta de forma silenciosa, ya que las tres vistas comparten la misma forma.

Por defecto, cada tarea utiliza el horizonte de despliegue registrado por RoboCasa. Establezca --env.episode_length=<steps> para aplicar el mismo horizonte explícito a todas las tareas seleccionadas.

Evaluación de una sola tarea (recomendada para iteración rápida)

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Evaluación multitarea

Pase una lista de tareas separadas por comas:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,TurnOnMicrowave,TurnOffStove \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Evaluación de grupos de benchmarks

Ejecutar un grupo completo de upstream (p. ej., las 18 tareas atomic_seen con split=target):

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=atomic_seen \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_agentview_right": "observation.images.camera2", "observation.images.robot0_eye_in_hand": "observation.images.camera3"}'

Episodios de evaluación recomendados

20 episodios por tarea para un benchmarking reproducible. Coincide con el protocolo utilizado en los resultados publicados.

Entradas y salidas de la política

Observaciones (los nombres de las cámaras de RoboCasa se conservan tal cual):

  • observation.state — estado propioceptivo de 16 dimensiones (posición de la base, cuaternión de la base, posición relativa del efector final, cuaternión relativo del efector final, qpos del agarre)
  • observation.images.robot0_agentview_left — vista del agente izquierdo, 256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — vista de la cámara de muñeca, 256×256 HWC uint8
  • observation.images.robot0_agentview_right — vista del agente derecho, 256×256 HWC uint8

Acciones:

  • Control continuo en Box(-1, 1, shape=(12,)) — movimiento base (4D) + modo de control (1D) + posición del efector final (3D) + rotación del efector final (3D) + pinza (1D).

Entrenamiento

Ejemplo de una sola tarea

Hay un conjunto de datos de una sola tarea listo para usar en el Hub: pepijn223/robocasa_CloseFridge.

Ajusta un modelo base de SmolVLA en CloseFridge:

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/smolvla_robocasa_CloseFridge \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=true \
  --dataset.repo_id=pepijn223/robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --output_dir=./outputs/smolvla_robocasa_CloseFridge \
  --steps=100000 \
  --batch_size=4 \
  --env_eval_freq=5000 \
  --eval.batch_size=1 \
  --eval.n_episodes=5 \
  --save_freq=10000

Evalúe el punto de control resultante:

lerobot-eval \
  --policy.path=${HF_USER}/smolvla_robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20

Reproducción de resultados publicados

El checkpoint publicado lerobot/smolvla_robocasa se evalúa con los comandos de la sección Evaluation. CI ejecuta una evaluación de humo de 10 tareas atómicas (un episodio cada una) en cada PR que modifica el benchmark, seleccionando tareas centradas en fixtures que no requieren el paquete de assets de objaverse.

Update on GitHub