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 — это масштабная симуляционная платформа для обучения и бенчмаркинга универсальных роботов в повседневных кухонных задачах. Она включает 365 разнообразных задач манипулирования в 2500 кухонных средах, более 3200 объектов и более 600 часов данных человеческих демонстраций, на мобильном манипуляторе PandaOmron с 12 степенями свободы (манипулятор Franka на голономной базе).
- Статья: RoboCasa: крупномасштабное моделирование повседневных задач для универсальных роботов
- GitHub: robocasa/robocasa
- Сайт проекта: robocasa.ai
- Предобученная политика:
lerobot/smolvla_robocasa - Однозадачный набор данных (CloseFridge):
pepijn223/robocasa_CloseFridge
Доступные задачи
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_objaverseRoboCasa 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 uint8observation.images.robot0_eye_in_hand— вид с камеры на запястье, 256×256 HWC uint8observation.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.