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 — это масштабная симуляционная платформа для обучения и бенчмаркинга универсальных роботов в повседневных кухонных задачах. Она включает 365 разнообразных задач манипулирования в 2500 кухонных средах, более 3200 объектов и более 600 часов данных человеческих демонстраций, на мобильном манипуляторе PandaOmron с 12 степенями свободы (манипулятор Franka на голономной базе).

RoboCasa365 benchmark overview

Доступные задачи

RoboCasa365 организует свои 365 задач в две семейства и три группы исходных бенчмарков, которые LeRobot предоставляет в виде первоклассных сокращений --env.task:

СемействоЗадачиОписание
Атомарный~65Задачи с одним навыком: захват и размещение, манипуляции с дверцами/ящиками, управление бытовой техникой
Композитный~300Многоступенчатые задачи в более чем 60 категориях: приготовление пищи, уборка, организация и т. д.

Примеры атомарных задач: CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.

Составные категории задач: выпечка, варка, заваривание, нарезка, уборка стола, разморозка продуктов, загрузка посудомоечной машины, заваривание чая, разогрев пищи в микроволновой печи, мытье посуды и другие.

--env.task принимает три формы:

  • одно имя задачи (CloseFridge)
  • список, разделённый запятыми (CloseFridge,OpenBlenderLid,PickPlaceCoffee)
  • сокращение для группы бенчмарков — atomic_seen, composite_seen, composite_unseen, pretrain50, pretrain100, pretrain200, pretrain300 — которое автоматически раскрывается в список исходных задач и автоматически устанавливает split набора данных (target или pretrain).

Установка

RoboCasa и его зависимость robosuite не опубликованы на PyPI, а собственный setup.py RoboCasa жёстко фиксирует lerobot==0.3.3, что конфликтует с lerobot из этого репозитория. Поэтому LeRobot не предоставляет дополнительный пакет robocasa — установите оба пакета вручную в режиме редактирования (используя --no-deps для robocasa, чтобы пропустить его затенённую фиксацию lerobot):

# 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)

Реестры объектов

По умолчанию env выбирает объекты только из реестра lightwheel (то, что поставляется с --type objs_lw), что позволяет избежать сбоя Probabilities contain NaN, если пакеты objaverse / aigen отсутствуют на диске. Если вы скачали полный набор ассетов, включите полный реестр во время выполнения:

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

Оценка

Все приведённые ниже фрагменты кода для оценки повторяют команду CI (см. .github/workflows/benchmark_tests.yml). Аргумент --rename_map сопоставляет нативные ключи камер RoboCasa с входной конфигурацией из трёх камер (camera1 / camera2 / camera3), на которой обучалась опубликованная политика smolvla_robocasa: robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Это соответствие должно совпадать с маппингом, использованным при обучении политики (см. rename_map в файле train_config.json контрольной точки); перестановка двух ключей камер будет принята без предупреждения, поскольку все три вида имеют одинаковую форму.

По умолчанию каждая задача использует горизонт развёртки, зарегистрированный в RoboCasa. Установите --env.episode_length=<steps>, чтобы применить одинаковый явный горизонт для всех выбранных задач.

Оценка по одной задаче (рекомендуется для быстрой итерации)

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"}'

Оценка по нескольким задачам

Передайте список задач, разделенных запятыми:

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"}'

Оценка группы бенчмарков

Запустите всю группу upstream (например, все 18 задач atomic_seen с 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"}'

Рекомендуемые эпизоды оценки

20 эпизодов на задачу для воспроизводимого бенчмаркинга. Соответствует протоколу, использованному в опубликованных результатах.

Входы и выходы политики

Наблюдения (исходные имена камер RoboCasa сохраняются без изменений):

  • observation.state — 16-мерное проприоцептивное состояние (позиция базы, кватернион базы, относительная позиция конечного эффектора, относительный кватернион конечного эффектора, qpos захвата)
  • observation.images.robot0_agentview_left — левый вид агента, 256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — вид с камеры на запястье, 256×256 HWC uint8
  • observation.images.robot0_agentview_right — вид правого агента, 256×256 HWC uint8

Действия:

  • Непрерывное управление в Box(-1, 1, shape=(12,)) — базовое движение (4D) + режим управления (1D) + позиция исполнительного органа (3D) + ориентация исполнительного органа (3D) + захват (1D).

Обучение

Пример для одной задачи

Готовый к использованию однозадачный датасет доступен на Hub: pepijn223/robocasa_CloseFridge.

Довыучите базовую модель SmolVLA на 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

Оцените полученную контрольную точку:

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

Воспроизведение опубликованных результатов

Опубликованная контрольная точка lerobot/smolvla_robocasa оценивается с помощью команд из раздела Оценка. CI выполняет smoke-оценку из 10 атомарных задач (по одному эпизоду на каждую) для каждого PR, затрагивающего бенчмарк, выбирая задачи, ориентированные на фикстуры и не требующие пакета ассетов objaverse.

Update on GitHub