LeRobot documentation
RoboCasa365
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).
- Artigo: RoboCasa: Simulação em grande escala de tarefas diárias para robôs generalistas
- GitHub: robocasa/robocasa
- Site do projeto: robocasa.ai
- Política pré-treinada:
lerobot/smolvla_robocasa - Conjunto de dados de tarefa única (CloseFridge):
pepijn223/robocasa_CloseFridge
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ília | Tarefas | Descrição |
|---|---|---|
| Atômico | ~65 | Tarefas de habilidade única: pegar e posicionar, manipulação de portas/gavetas, controle de eletrodomésticos |
| Composto | ~300 | Tarefas 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 osplitdo dataset (targetoupretrain).
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_objaverseRoboCasa 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 uint8observation.images.robot0_eye_in_hand— visão da câmera do pulso, 256×256 HWC uint8observation.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=10000Avalie 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=20Reproduzindo 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.