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, ManiSkill (SAPIEN) üzerine kurulu, bellek destekli bir manipülasyon benchmark'ıdır. Bir robotun bir bölüm boyunca bilgiyi koruma ve kullanma yeteneğini — sayma, nesne kalıcılığı, referans ve taklit — değerlendirir.
- 4 bellek becerisi paketi içinde 16 görev
- 1.600 eğitim demosu (görev başına 100, 50 doğrulama, 50 test)
- Veri seti:
lerobot/robomme— LeRobot v3.0, 10 fps'de 768K kare - Simülatör: ManiSkill / SAPIEN, Panda kol, yalnızca Linux
![]()
Görevler
| Suite | Görevler |
|---|---|
| Sayma (zaman belleği) | BinFill, PickXtimes, SwingXtimes, StopCube |
| Kalıcılık (uzamsal bellek) | VideoUnmask, VideoUnmaskSwap, ButtonUnmask, ButtonUnmaskSwap |
| Referans (nesne belleği) | PickHighlight, VideoRepick, VideoPlaceButton, VideoPlaceOrder |
| Taklit (prosedürel bellek) | MoveCube, InsertPeg, PatternLock, RouteStick |
Kurulum
RoboMME, Linux gerektirir (ManiSkill/SAPIEN, Vulkan işleme kullanır). Bağımlılık çakışmalarını izole etmek için Docker önerilir.
Yerel (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'Bağımlılık notu:
robommetarafından çekilenmani-skill,gymnasium==0.29.1venumpy<2.0.0sürümlerini sabitler; bu da lerobot’un temelnumpy>=2.0.0gereksinimiyle çelişir. Bu nedenlerobommebir pyproject extra’sı değildir — çakışmaları tamamen önlemek için yukarıdaki geçersiz kılma kurulumunu veya aşağıdaki Docker yaklaşımını kullanın.
Docker (önerilen)
RoboMME'yi kendi simülatör görüntüsünde çalıştırın, böylece numpy/gymnasium sabitlemeleri asla politikanınkilerle çakışmasın:
lerobot-env-server --config_path=docker/sim/configs/robomme.yaml --docker=trueArdından --env.type=robomme --env.server.endpoint=tcp/127.0.0.1:7448 ile değerlendirin (bkz. Simülasyon: yerel veya sunulan).
Değerlendirme Çalıştırma
Varsayılan (tek görev, tek bölüm)
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Çok görevli değerlendirme
Görev adlarını virgülle ayırarak tek çalıştırmada birden fazla görevi değerlendirin. Görev başına hangi bölümlerin değerlendirileceğini kontrol etmek için task_ids kullanın. Önerilen: test bölünmesi için görev başına 50 bölüm.
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=50env.type=robomme için ana CLI seçenekleri
| Seçenek | Varsayılan | Açıklama |
|---|---|---|
env.task | PickXtimes | Yukarıdaki 16 görev adından herhangi biri (virgülle ayrılmış) |
env.dataset_split | test | train, val veya test |
env.action_space | joint_angle | joint_angle (8-B) veya ee_pose (7-B) |
env.episode_length | 300 | Bölüm başına maksimum adım |
env.task_ids | null | Değerlendirilecek bölüm dizinlerinin listesi (null = [0]) |
Veri seti
lerobot/robomme veri seti LeRobot v3.0 biçiminde olup doğrudan yüklenebilir:
from lerobot.datasets.lerobot_dataset import LeRobotDataset
dataset = LeRobotDataset("lerobot/robomme")Veri seti özellikleri
| Özellik | Biçim | Açıklama |
|---|---|---|
image | (256, 256, 3) | Ön kamera RGB |
wrist_image | (256, 256, 3) | Bilek kamerası RGB |
actions | (8,) | Birleşik açıları + kavrama |
state | (8,) | Birleşik konumlar + kavrama durumu |
simple_subgoal | str | Yüksek düzey dil anotasyonu |
grounded_subgoal | str | Temellendirilmiş dil anotasyonu |
episode_index | int | Bölüm Kimliği |
frame_index | int | Bölüm içinde kare |
Özellik anahtarı hizalama (eğitim)
Env sarmalayıcısı, kameralarını pixels/<camera_name> altında, RoboMMEEnvConfig.front_camera_name ve RoboMMEEnvConfig.wrist_camera_name ile adlandırılmış olarak (camera1 ve camera2 varsayılan olarak) açığa çıkarır. Politika, bunları observation.images.camera1 ve observation.images.camera2 olarak, durumu (agent_pos) ise observation.state olarak alır.
Veri setinin ham sütunları bu politika anahtarlarıyla eşleşmediğinden, ince ayar sırasında --rename_map parametresini iletin:
--rename_map='{"image": "observation.images.camera1", "wrist_image": "observation.images.camera2", "state": "observation.state", "actions": "action"}'Farklı anahtar adlarına karşı eğitim yapıyorsanız, değerlendirme gözlemlerinin politikanın eğitim gördüğü anahtarlarla eşleşmesi için --env.front_camera_name / --env.wrist_camera_name değerlerini geçersiz kılın.
Eylem Uzayları
| Tür | Boyut | Açıklama |
|---|---|---|
joint_angle | 8 | 7 eklem açısı + 1 kavrama (−1 kapalı, +1 açık, mutlak) |
ee_pose | 7 | xyz + roll/pitch/yaw + gripper |
--env.action_space=joint_angle (varsayılan) veya --env.action_space=ee_pose ile ayarlanır.
Platform Notları
- Sadece Linux: ManiSkill, SAPIEN/Vulkan gerektirir. macOS ve Windows desteklenmez.
- GPU önerilir: Render işlemi CPU ile yapılabilir ancak yavaştır; CUDA + Vulkan tam hız sağlar.
- gymnasium / numpy çakışması: Yukarıdaki kurulum notuna bakın. Docker görüntüsü bunu otomatik olarak ele alır.
- ManiSkill çatallaması:
robomme,robommepaketi aracılığıyla otomatik olarak çekilen belirli bir ManiSkill çatallamasına (YinpeiDai/ManiSkill) bağımlıdır.