LeRobot documentation
RoboCasa365
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).
- Artículo: RoboCasa: Simulación a gran escala de tareas cotidianas para robots generalistas
- GitHub: robocasa/robocasa
- Sitio web del proyecto: robocasa.ai
- Política preentrenada:
lerobot/smolvla_robocasa - Conjunto de datos de una sola tarea (CloseFridge):
pepijn223/robocasa_CloseFridge
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:
| Familia | Tareas | Descripción |
|---|---|---|
| Atómico | ~65 | Tareas de una sola habilidad: recoger y colocar, manipulación de puertas/gavetas, control de electrodomésticos |
| Compuesto | ~300 | Tareas 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 elsplitdel dataset (targetopretrain).
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_objaverseRoboCasa 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 uint8observation.images.robot0_eye_in_hand— vista de la cámara de muñeca, 256×256 HWC uint8observation.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=10000Evalú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=20Reproducció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.