LeRobot documentation

RoboCasa365

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboCasa365

The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/robocasa.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

RoboCasa365 é um framework de simulação em larga escala para treinar e avaliar robôs generalistas em tarefas cotidianas de cozinha. Ele oferece 365 tarefas diversas de manipulação em 2.500 ambientes de cozinha, mais de 3.200 ativos de objetos e mais de 600 horas de dados de demonstração humana, em um manipulador móvel PandaOmron de 12 graus de liberdade (braço Franka em uma base holonômica).

RoboCasa365 benchmark overview

Tarefas disponíveis

RoboCasa365 organiza suas 365 tarefas em duas famílias e três grupos de benchmarks upstream que o LeRobot expõe como atalhos de primeira classe --env.task:

FamíliaTarefasDescrição
Atômico~65Tarefas de habilidade única: pegar e posicionar, manipulação de portas/gavetas, controle de eletrodomésticos
Composto~300Tarefas em várias etapas em mais de 60 categorias: culinária, limpeza, organização, etc.

Exemplos de tarefas atômicas: CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.

Categorias de tarefas compostas: assar, ferver, preparar, picar, limpar a mesa, descongelar alimentos, carregar a máquina de lavar louça, fazer chá, aquecer alimentos no micro-ondas, lavar louça, entre outras.

--env.task aceita três formas:

  • um único nome de tarefa (CloseFridge)
  • uma lista separada por vírgulas (CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • um atalho de grupo de benchmark — atomic_seen, composite_seen, composite_unseen, pretrain50, pretrain100, pretrain200, pretrain300 — que se expande automaticamente para a lista de tarefas upstream e define automaticamente o split do dataset (target ou pretrain).

Instalação

RoboCasa e sua dependência robosuite não são publicados no PyPI, e o próprio setup.py do RoboCasa fixa lerobot==0.3.3, o que conflita com o lerobot deste repositório. Portanto, o LeRobot não expõe um extra robocasa — instale os dois pacotes manualmente como clones editáveis (usando --no-deps no robocasa para pular a fixação de lerobot que é ofuscada):

# 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 padrão, o env amostra objetos apenas do registro lightwheel (o que o --type objs_lw fornece), o que evita uma falha de Probabilities contain NaN quando os pacotes objaverse / aigen não estão no disco. Se você baixou o conjunto completo de ativos, habilite o registro completo em tempo de execução:

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

Avaliação

Todos os trechos de avaliação abaixo espelham o comando de CI (veja .github/workflows/benchmark_tests.yml). O argumento --rename_map mapeia as chaves nativas de câmera do RoboCasa para o layout de entrada de três câmeras (camera1 / camera2 / camera3) no qual a política smolvla_robocasa liberada foi treinada: robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Esse pareamento deve corresponder ao mapeamento da política no momento do treinamento (veja rename_map no train_config.json do checkpoint); a troca de duas chaves de câmera é aceita silenciosamente, pois as três visualizações compartilham a mesma forma.

Por padrão, cada tarefa usa o horizonte de rollout registrado pelo RoboCasa. Defina --env.episode_length=<steps> para aplicar o mesmo horizonte explícito a todas as tarefas selecionadas.

Avaliação de tarefa única (recomendada para iteração 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"}'

Avaliação multi-tarefa

Passe uma lista de tarefas separadas por vírgulas:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,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"}'

Avaliação por grupo de benchmarks

Execute um grupo upstream inteiro (por exemplo, todas as 18 tarefas atomic_seen com 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"}'

Episódios de avaliação recomendados

20 episódios por tarefa para benchmarking reproduzível. Corresponde ao protocolo usado nos resultados publicados.

Entradas e saídas da política

Observações (os nomes brutos das câmeras do RoboCasa são preservados literalmente):

  • observation.state — estado proprioceptivo de 16 dimensões (posição da base, quaterniô da base, posição relativa do efetuador final, quaterniô relativo do efetuador final, qpos do garra)
  • observation.images.robot0_agentview_left — visão do agente esquerdo, 256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — visão da câmera do pulso, 256×256 HWC uint8
  • observation.images.robot0_agentview_right — visão do agente direito, 256×256 HWC uint8

Ações:

  • Controle contínuo em Box(-1, 1, shape=(12,)) — movimento base (4D) + modo de controle (1D) + posição do efetuador final (3D) + rotação do efetuador final (3D) + garra (1D).

Treinamento

Exemplo de tarefa única

Um conjunto de dados de tarefa única pronto para uso está no Hub: pepijn223/robocasa_CloseFridge.

Ajuste fino de um SmolVLA base em 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

Avalie o checkpoint resultante:

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

Reproduzindo resultados publicados

O checkpoint liberado lerobot/smolvla_robocasa é avaliado com os comandos da seção Avaliação. O CI executa uma avaliação de fumaça com 10 tarefas atômicas (um episódio cada) em cada PR que afeta o benchmark, escolhendo tarefas centradas em fixtures que não exigem o pacote de assets do objaverse.

Update on GitHub