LeRobot documentation
RoboMME
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
![]()
Tugas
| Suite | Tugas |
|---|---|
| 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 olehrobomme) menguncigymnasium==0.29.1dannumpy<2.0.0, yang bertentangan dengannumpy>=2.0.0dasar lerobot. Itulah mengaparobommebukan 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=trueLalu 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=1Evaluasi 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=50Opsi CLI utama untuk env.type=robomme
| Opsi | Default | Deskripsi |
|---|---|---|
env.task | PickXtimes | Salah satu dari 16 nama tugas di atas (dipisahkan koma) |
env.dataset_split | test | train, val, atau test |
env.action_space | joint_angle | joint_angle (8-D) atau ee_pose (7-D) |
env.episode_length | 300 | Langkah maksimum per episode |
env.task_ids | null | Daftar 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
| Fitur | Bentuk | Deskripsi |
|---|---|---|
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_subgoal | str | Anotasi bahasa tingkat tinggi |
grounded_subgoal | str | Anotasi bahasa berdasar |
episode_index | int | ID Episode |
frame_index | int | Frame 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
| Tipe | Dim | Deskripsi |
|---|---|---|
joint_angle | 8 | 7 sudut sendi + 1 gripper (−1 tertutup, +1 terbuka, absolut) |
ee_pose | 7 | xyz + 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:
robommebergantung pada fork ManiSkill tertentu (YinpeiDai/ManiSkill), yang ditarik secara otomatis melalui paketrobomme.