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 adalah benchmark manipulasi dengan augmentasi memori yang dibangun di atas ManiSkill (SAPIEN). Benchmark ini mengevaluasi kemampuan robot untuk mempertahankan dan menggunakan informasi sepanjang satu episode — menghitung, permanensi objek, referensi, dan imitasi.

  • 16 tugas di 4 suite keterampilan memori
  • 1.600 demo pelatihan (100 per tugas, 50 val, 50 test)
  • Dataset: lerobot/robomme — LeRobot v3.0, 768K frame pada 10 fps
  • Simulator: ManiSkill / SAPIEN, lengan Panda, hanya Linux

RoboMME benchmark tasks overview

Tugas

SuiteTugas
Penjumlahan (memori temporal)BinFill, PickXtimes, SwingXtimes, StopCube
Permanence (memori spasial)VideoUnmask, VideoUnmaskSwap, ButtonUnmask, ButtonUnmaskSwap
Referensi (memori objek)PickHighlight, VideoRepick, VideoPlaceButton, VideoPlaceOrder
Imitasi (memori prosedural)MoveCube, InsertPeg, PatternLock, RouteStick

Instalasi

RoboMME membutuhkan Linux (ManiSkill/SAPIEN menggunakan rendering Vulkan). Docker disarankan untuk mengisolasi konflik dependensi.

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'

Catatan dependensi: mani-skill (ditarik oleh robomme) mengunci gymnasium==0.29.1 dan numpy<2.0.0, yang bertentangan dengan numpy>=2.0.0 dasar lerobot. Itulah mengapa robomme bukan extra pyproject — gunakan instalasi override di atas, atau pendekatan Docker di bawah untuk sepenuhnya menghindari konflik.

Docker (disarankan)

Jalankan RoboMME dalam image simulatornya sendiri, sehingga pin numpy/gymnasium tidak pernah bertemu dengan pin kebijakan:

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

Lalu evaluasi dengan --env.type=robomme --env.server.endpoint=tcp/127.0.0.1:7448 (lihat Simulasi: lokal atau disajikan).

Menjalankan Evaluasi

Default (satu tugas, satu episode)

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

Evaluasi multi-tugas

Evaluasi beberapa tugas dalam satu eksekusi dengan memisahkan nama tugas menggunakan koma. Gunakan task_ids untuk mengontrol episode mana yang dievaluasi per tugas. Rekomendasi: 50 episode per tugas untuk split pengujian.

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

Opsi CLI utama untuk env.type=robomme

OpsiDefaultDeskripsi
env.taskPickXtimesSalah satu dari 16 nama tugas di atas (dipisahkan koma)
env.dataset_splittesttrain, val, atau test
env.action_spacejoint_anglejoint_angle (8-D) atau ee_pose (7-D)
env.episode_length300Langkah maksimum per episode
env.task_idsnullDaftar indeks episode untuk dievaluasi (null = [0])

Dataset

Dataset lerobot/robomme berada dalam format LeRobot v3.0 dan dapat dimuat secara langsung:

from lerobot.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset("lerobot/robomme")

Fitur dataset

FiturBentukDeskripsi
image(256, 256, 3)Kamera depan RGB
wrist_image(256, 256, 3)Kamera pergelangan tangan RGB
actions(8,)Sudut sendi + penjepit
state(8,)Posisi sendi + status penjepit
simple_subgoalstrAnotasi bahasa tingkat tinggi
grounded_subgoalstrAnotasi bahasa berdasar
episode_indexintID Episode
frame_indexintFrame dalam episode

Penyelarasan kunci fitur (pelatihan)

Env wrapper mengekspos kameranya di bawah pixels/<camera_name>, yang dinamai oleh RoboMMEEnvConfig.front_camera_name dan RoboMMEEnvConfig.wrist_camera_name (secara default camera1 dan camera2). Policy menerimanya sebagai observation.images.camera1 dan observation.images.camera2, serta state (agent_pos) sebagai observation.state.

Kolom mentah dataset tidak cocok dengan kunci kebijakan tersebut, sehingga berikan --rename_map saat fine-tuning:

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

Override --env.front_camera_name / --env.wrist_camera_name jika Anda melatih dengan nama kunci yang berbeda, sehingga observasi evaluasi cocok dengan kunci yang digunakan saat pelatihan policy.

Ruang Aksi

TipeDimDeskripsi
joint_angle87 sudut sendi + 1 gripper (−1 tertutup, +1 terbuka, absolut)
ee_pose7xyz + roll/pitch/yaw + gripper

Atur melalui --env.action_space=joint_angle (default) atau --env.action_space=ee_pose.

Catatan Platform

  • Hanya Linux: ManiSkill memerlukan SAPIEN/Vulkan. macOS dan Windows tidak didukung.
  • GPU disarankan: Rendering dapat dilakukan dengan CPU tetapi lambat; CUDA + Vulkan memberikan kecepatan penuh.
  • konflik gymnasium / numpy: Lihat catatan instalasi di atas. Citra Docker menangani ini secara otomatis.
  • Fork ManiSkill: robomme bergantung pada fork ManiSkill tertentu (YinpeiDai/ManiSkill), yang ditarik secara otomatis melalui paket robomme.
Update on GitHub