LeRobot documentation

RoboMME

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
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, 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

RoboMME benchmark tasks overview

Görevler

SuiteGö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: robomme tarafından çekilen mani-skill, gymnasium==0.29.1 ve numpy<2.0.0 sürümlerini sabitler; bu da lerobot’un temel numpy>=2.0.0 gereksinimiyle çelişir. Bu nedenle robomme bir 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=true

Ardı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=50

env.type=robomme için ana CLI seçenekleri

SeçenekVarsayılanAçıklama
env.taskPickXtimesYukarıdaki 16 görev adından herhangi biri (virgülle ayrılmış)
env.dataset_splittesttrain, val veya test
env.action_spacejoint_anglejoint_angle (8-B) veya ee_pose (7-B)
env.episode_length300Bölüm başına maksimum adım
env.task_idsnullDeğ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

ÖzellikBiçimAçı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_subgoalstrYüksek düzey dil anotasyonu
grounded_subgoalstrTemellendirilmiş dil anotasyonu
episode_indexintBölüm Kimliği
frame_indexintBö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ürBoyutAçıklama
joint_angle87 eklem açısı + 1 kavrama (−1 kapalı, +1 açık, mutlak)
ee_pose7xyz + 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, robomme paketi aracılığıyla otomatik olarak çekilen belirli bir ManiSkill çatallamasına (YinpeiDai/ManiSkill) bağımlıdır.
Update on GitHub