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 là một khung mô phỏng quy mô lớn để huấn luyện và đánh giá robot đa năng trong các tác vụ nhà bếp hàng ngày. Nó cung cấp 365 tác vụ thao tác đa dạng trên 2.500 môi trường nhà bếp, hơn 3.200 tài nguyên đối tượng và hơn 600 giờ dữ liệu diễn giải của con người, trên robot thao tác di động PandaOmron 12-DOF (cánh tay Franka trên cơ sở toàn hướng).
- Bài báo: RoboCasa: Large-Scale Simulation of Everyday Tasks for Generalist Robots
- GitHub: robocasa/robocasa
- Trang web dự án: robocasa.ai
- Chính sách được huấn luyện trước:
lerobot/smolvla_robocasa - Bộ dữ liệu đơn nhiệm vụ (CloseFridge):
pepijn223/robocasa_CloseFridge
Các tác vụ khả dụng
RoboCasa365 tổ chức 365 tác vụ của mình thành hai nhóm và ba nhóm benchmark thượng nguồn mà LeRobot phơi bày dưới dạng các lối tắt --env.task cấp một:
| Họ | Nhiệm vụ | Mô tả |
|---|---|---|
| Atomic | ~65 | Nhiệm vụ kỹ năng đơn lẻ: nhặt và đặt, thao tác cửa/tủ, điều khiển thiết bị |
| Composite | ~300 | Các tác vụ nhiều bước trên 60+ danh mục: nấu ăn, dọn dẹp, sắp xếp, v.v. |
Ví dụ về tác vụ nguyên tử: CloseFridge, OpenDrawer, OpenCabinet, TurnOnMicrowave, TurnOffStove, NavigateKitchen, PickPlaceCounterToStove.
Thể loại tác vụ tổng hợp: nướng, luộc, pha chế, thái, dọn bàn, rã đông thực phẩm, xếp máy rửa chén, pha trà, hâm thực phẩm bằng lò vi sóng, rửa chén, và nhiều hơn nữa.
--env.task chấp nhận ba dạng:
- một tên tác vụ duy nhất (
CloseFridge) - một danh sách phân tách bằng dấu phẩy (
CloseFridge,OpenBlenderLid,PickPlaceCoffee) - một đường tắt nhóm benchmark —
atomic_seen,composite_seen,composite_unseen,pretrain50,pretrain100,pretrain200,pretrain300— tự động mở rộng thành danh sách task upstream và tự động đặtsplitcủa dataset (targethoặcpretrain).
Cài đặt
RoboCasa và thư viện phụ thuộc robosuite không được phát hành trên PyPI, và setup.py của chính RoboCasa đã cố định lerobot==0.3.3, gây xung đột với lerobot của kho này. Do đó, LeRobot không tiết lộ một extra robocasa — hãy cài đặt hai gói này thủ công dưới dạng bản clone có thể chỉnh sửa (sử dụng --no-deps cho robocasa để bỏ qua chốt lerobot bị che khuất của nó):
# 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)
Các bộ đăng ký đối tượng
Mặc định, env chỉ lấy mẫu các đối tượng từ registry lightwheel (điều mà --type objs_lw cung cấp), giúp tránh lỗi Probabilities contain NaN khi các gói objaverse / aigen không có trên đĩa. Nếu bạn đã tải xuống bộ tài sản đầy đủ, hãy bật registry đầy đủ khi chạy:
--env.obj_registries='[objaverse,lightwheel]'Đánh giá
Tất cả các đoạn mã eval bên dưới đều mô phỏng lệnh CI (xem .github/workflows/benchmark_tests.yml). Tham số --rename_map ánh xạ các khóa camera gốc của RoboCasa sang bố cục đầu vào ba camera (camera1 / camera2 / camera3) mà chính sách smolvla_robocasa đã phát hành được huấn luyện: robot0_agentview_left → camera1, robot0_agentview_right → camera2, robot0_eye_in_hand → camera3. Sự ghép cặp này phải khớp với ánh xạ tại thời điểm huấn luyện của chính sách (xem rename_map trong train_config.json của checkpoint); việc hoán đổi hai khóa camera sẽ được chấp nhận một cách im lặng, vì cả ba góc nhìn đều có cùng hình dạng.
Mặc định, mỗi tác vụ sử dụng chân trời rollout được đăng ký bởi RoboCasa. Đặt --env.episode_length=<steps> để áp dụng chân trời tường minh giống nhau cho mọi tác vụ được chọn.
Đánh giá đơn nhiệm vụ (khuyến nghị cho việc lặp lại nhanh)
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"}'Đánh giá đa nhiệm
Truyền vào một danh sách các tác vụ được phân tách bằng dấu phẩy:
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"}'Đánh giá nhóm benchmark
Chạy toàn bộ nhóm upstream (ví dụ: tất cả 18 tác vụ atomic_seen với 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"}'Các tập đánh giá được khuyến nghị
20 episodes cho mỗi tác vụ để benchmark có thể tái lập. Phù hợp với giao thức được sử dụng trong các kết quả đã công bố.
Đầu vào và đầu ra của Policy
Quan sát (tên camera RoboCasa thô được giữ nguyên văn):
observation.state— trạng thái cảm nhận bản thân 16 chiều (vị trí gốc, quaternion gốc, vị trí đầu cuối tương đối, quaternion đầu cuối tương đối, qpos kẹp)observation.images.robot0_agentview_left— góc nhìn của tác nhân bên trái, 256×256 HWC uint8observation.images.robot0_eye_in_hand— góc nhìn từ camera cổ tay, 256×256 HWC uint8observation.images.robot0_agentview_right— góc nhìn của tác nhân bên phải, 256×256 HWC uint8
Thao tác:
- Điều khiển liên tục trong
Box(-1, 1, shape=(12,))— chuyển động cơ bản (4D) + chế độ điều khiển (1D) + vị trí đầu cuối (3D) + xoay đầu cuối (3D) + kẹp (1D).
Huấn luyện
Ví dụ về tác vụ đơn
Một bộ dữ liệu đơn nhiệm sẵn sàng sử dụng có trên Hub: pepijn223/robocasa_CloseFridge.
Tinh chỉnh một SmolVLA cơ bản trên 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Đánh giá checkpoint kết quả:
lerobot-eval \
--policy.path=${HF_USER}/smolvla_robocasa_CloseFridge \
--env.type=robocasa \
--env.task=CloseFridge \
--eval.batch_size=1 \
--eval.n_episodes=20Tái tạo các kết quả đã công bố
Checkpoint đã phát hành lerobot/smolvla_robocasa được đánh giá bằng các lệnh trong phần Đánh giá. CI chạy một smoke eval gồm 10 atomic-task (mỗi task một episode) trên mọi PR chạm vào benchmark, chọn các task tập trung vào fixture không yêu cầu gói tài sản objaverse.