LeRobot documentation

RoboMME

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboMME

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/robomme.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)).

RoboMME là một benchmark thao tác có bổ trợ bộ nhớ được xây dựng trên ManiSkill (SAPIEN). Nó đánh giá khả năng của robot trong việc giữ và sử dụng thông tin xuyên suốt một episode — đếm, tính bền vững của vật thể, tham chiếu và bắt chước.

  • 16 tác vụ trong 4 bộ kỹ năng bộ nhớ
  • 1.600 demo huấn luyện (100 cho mỗi tác vụ, 50 val, 50 test)
  • Bộ dữ liệu: lerobot/robomme — LeRobot v3.0, 768K khung hình ở 10 fps
  • Trình mô phỏng: ManiSkill / SAPIEN, cánh tay Panda, chỉ hỗ trợ Linux

RoboMME benchmark tasks overview

Nhiệm vụ

BộNhiệm vụ
Đếm (bộ nhớ thời gian)BinFill, PickXtimes, SwingXtimes, StopCube
Tính bền vững (bộ nhớ không gian)VideoUnmask, VideoUnmaskSwap, ButtonUnmask, ButtonUnmaskSwap
Tham chiếu (bộ nhớ đối tượng)PickHighlight, VideoRepick, VideoPlaceButton, VideoPlaceOrder
Bắt chước (trí nhớ thủ tục)MoveCube, InsertPeg, PatternLock, RouteStick

Cài đặt

RoboMME yêu cầu Linux (ManiSkill/SAPIEN sử dụng Vulkan rendering). Khuyến nghị sử dụng Docker để cách ly các xung đột phụ thuộc.

Native (Linux)

uv pip install --override <(printf 'gymnasium==0.29.1\nnumpy==1.26.4\n') \
  -e '.[smolvla,av-dep]' \
  'robomme @ git+https://github.com/RoboMME/robomme_benchmark.git@main'

Ghi chú về phụ thuộc: mani-skill (được kéo theo bởi robomme) cố định gymnasium==0.29.1 và numpy<2.0.0, gây xung đột với numpy>=2.0.0 cơ bản của lerobot. Đó là lý do robomme không phải là một extra trong pyproject — hãy sử dụng lệnh cài đặt ghi đè ở trên, hoặc cách tiếp cận Docker ở dưới để tránh hoàn toàn các xung đột.

Docker (được khuyến nghị)

Chạy RoboMME trong image mô phỏng riêng của nó, để các phiên bản numpy/gymnasium của nó không bao giờ xung đột với phiên bản của policy:

lerobot-env-server --config_path=docker/sim/configs/robomme.yaml --docker=true

Sau đó, đánh giá với --env.type=robomme --env.server.endpoint=tcp/127.0.0.1:7448 (xem Mô phỏng: cục bộ hoặc được phục vụ).

Chạy đánh giá

Mặc định (một tác vụ, một phiên)

lerobot-eval \
    --policy.path=<your_policy_repo> \
    --env.type=robomme \
    --env.task=PickXtimes \
    --env.dataset_split=test \
    --env.task_ids=[0] \
    --eval.batch_size=1 \
    --eval.n_episodes=1

Đánh giá đa nhiệm

Đánh giá nhiều tác vụ trong một lần chạy bằng cách phân tách tên tác vụ bằng dấu phẩy. Sử dụng task_ids để kiểm soát các episode được đánh giá cho từng tác vụ. Khuyến nghị: 50 episode cho mỗi tác vụ đối với tập test.

lerobot-eval \
    --policy.path=<your_policy_repo> \
    --env.type=robomme \
    --env.task=PickXtimes,BinFill,StopCube,MoveCube,InsertPeg \
    --env.dataset_split=test \
    --env.task_ids=[0,1,2,3,4,5,6,7,8,9] \
    --eval.batch_size=1 \
    --eval.n_episodes=50

Các tùy chọn CLI chính cho env.type=robomme

Tùy chọnMặc địnhMô tả
env.taskPickXtimesBất kỳ tên tác vụ nào trong 16 tên tác vụ ở trên (phân tách bằng dấu phẩy)
env.dataset_splittesttrain, val hoặc test
env.action_spacejoint_anglejoint_angle (8-D) hoặc ee_pose (7-D)
env.episode_length300Số bước tối đa mỗi tập
env.task_idsnullDanh sách các chỉ số tập để đánh giá (null = [0])

Bộ dữ liệu

Bộ dữ liệu lerobot/robomme ở định dạng LeRobot v3.0 và có thể được nạp trực tiếp:

from lerobot.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset("lerobot/robomme")

Đặc điểm của bộ dữ liệu

Tính năngHình dạngMô tả
image(256, 256, 3)Camera RGB phía trước
wrist_image(256, 256, 3)Camera RGB cổ tay
actions(8,)Góc khớp + kẹp
state(8,)Vị trí khớp + trạng thái gắp
simple_subgoalstrGhi chú ngôn ngữ cấp cao
grounded_subgoalstrGhi chú ngôn ngữ có cơ sở
episode_indexintID tập
frame_indexintKhung trong tập

Căn chỉnh khóa tính năng (đào tạo)

Env wrapper phơi bày các camera của nó dưới pixels/<camera_name>, được đặt tên bởi RoboMMEEnvConfig.front_camera_name và RoboMMEEnvConfig.wrist_camera_name (mặc định là camera1 và camera2). Policy nhận chúng dưới dạng observation.images.camera1 và observation.images.camera2, và trạng thái (agent_pos) dưới dạng observation.state.

Các cột thô của tập dữ liệu không khớp với các khóa chính sách đó, vì vậy hãy truyền --rename_map khi tinh chỉnh:

--rename_map='{"image": "observation.images.camera1", "wrist_image": "observation.images.camera2", "state": "observation.state", "actions": "action"}'

Ghi đè --env.front_camera_name / --env.wrist_camera_name nếu bạn huấn luyện với các tên khóa khác nhau, để các quan sát trong đánh giá khớp với các tên khóa mà chính sách đã được huấn luyện.

Không gian hành động

LoạiChiềuMô tả
joint_angle87 góc khớp + 1 kẹp (−1 đóng, +1 mở, tuyệt đối)
ee_pose7xyz + roll/pitch/yaw + gripper

Được đặt thông qua --env.action_space=joint_angle (mặc định) hoặc --env.action_space=ee_pose.

Ghi chú về nền tảng

  • Chỉ hỗ trợ Linux: ManiSkill yêu cầu SAPIEN/Vulkan. macOS và Windows không được hỗ trợ.
  • Khuyến nghị GPU: Việc render có thể chạy trên CPU nhưng chậm; CUDA + Vulkan cho tốc độ đầy đủ.
  • xung đột giữa gymnasium và numpy: Xem ghi chú cài đặt ở trên. Ảnh Docker xử lý điều này tự động.
  • Fork ManiSkill: robomme phụ thuộc vào một fork cụ thể của ManiSkill (YinpeiDai/ManiSkill), được kéo vào tự động thông qua gói robomme.
Update on GitHub