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 هو معيار تقييم للتلاعب يعتمد على الذاكرة، مبني على ManiSkill (SAPIEN). يقيّم قدرة الروبوت على الاحتفاظ بالمعلومات واستخدامها عبر حلقة كاملة — بما في ذلك العدّ، وثبات الكائنات، والإشارة، والمحاكاة.

  • 16 مهمة عبر 4 مجموعات مهارات الذاكرة
  • 1,600 عرض تدريب (100 لكل مهمة، 50 للتحقق، 50 للاختبار)
  • مجموعة البيانات: lerobot/robomme — LeRobot v3.0، 768 ألف إطار بمعدل 10 إطارات في الثانية
  • المحاكي: ManiSkill / SAPIEN، ذراع Panda، يعمل على نظام Linux فقط

RoboMME benchmark tasks overview

المهام

Suiteالمهام
العدّ (الذاكرة الزمنية)BinFill, PickXtimes, SwingXtimes, StopCube
الثبات (الذاكرة المكانية)VideoUnmask, VideoUnmaskSwap, ButtonUnmask, ButtonUnmaskSwap
مرجع (ذاكرة الكائنات)PickHighlight, VideoRepick, VideoPlaceButton, VideoPlaceOrder
المحاكاة (الذاكرة الإجرائية)MoveCube، InsertPeg، PatternLock، RouteStick

التثبيت

يتطلب RoboMME نظام Linux (حيث يستخدم ManiSkill/SAPIEN عرض Vulkan). يُنصح باستخدام Docker لعزل تعارضات الاعتماديات.

أصلي (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'

ملاحظة حول الاعتماديات: يُثبّت mani-skill (الذي يجلبه robomme) الإصدار gymnasium==0.29.1 وnumpy<2.0.0، مما يتعارض مع الإصدار الأساسي لـ lerobot وهو numpy>=2.0.0. ولهذا السبب، لا يُعدّ robomme إضافة في pyproject — استخدم تثبيت التجاوز المذكور أعلاه، أو اتبع نهج Docker أدناه لتجنّب التعارضات بالكامل.

Docker (موصى به)

شغّل RoboMME في صورة محاكي خاصة به، حتى لا تتعارض إصدارات numpy/gymnasium المثبتة فيه مع إصدارات السياسة:

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

ثم قيّم باستخدام --env.type=robomme --env.server.endpoint=tcp/127.0.0.1:7448 (انظر المحاكاة: محلية أو مُقدَّمة).

تشغيل التقييم

الافتراضي (مهمة واحدة، حلقة واحدة)

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

التقييم متعدد المهام

قيّم مهام متعددة في تشغيل واحد عن طريق فصل أسماء المهام بفواصل. استخدم task_ids للتحكم في الحلقات التي يتم تقييمها لكل مهمة. يُوصى بـ 50 حلقة لكل مهمة في مجموعة الاختبار.

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

خيارافتراضيالوصف
env.taskPickXtimesأي من أسماء المهام الستة عشر المذكورة أعلاه (مفصولة بفواصل)
env.dataset_splittesttrain أو val أو test
env.action_spacejoint_anglejoint_angle (8 أبعاد) أو ee_pose (7 أبعاد)
env.episode_length300الحد الأقصى لعدد الخطوات في كل حلقة
env.task_idsnullقائمة بمؤشرات الحلقات التي سيتم تقييمها (null = [0])

مجموعة البيانات

مجموعة البيانات lerobot/robomme موجودة بتنسيق LeRobot v3.0 ويمكن تحميلها مباشرة:

from lerobot.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset("lerobot/robomme")

خصائص مجموعة البيانات

ميزةالشكلالوصف
image(256, 256, 3)كاميرا أمامية RGB
wrist_image(256, 256, 3)كاميرا معصم RGB
actions(8,)زوايا المفاصل + القابض
state(8,)مواضع المفاصل + حالة الماسك
simple_subgoalstrالتعليق بلغة عالية المستوى
grounded_subgoalstrالتعليق اللغوي الموثق
episode_indexintمعرف الحلقة
frame_indexintالإطار داخل الحلقة

محاذاة مفاتيح الميزات (التدريب)

تُعرّض غلاف البيئة كاميراته تحت pixels/<camera_name>، حيث تُسمّى بواسطة RoboMMEEnvConfig.front_camera_name وRoboMMEEnvConfig.wrist_camera_name (وcamera1 وcamera2 افتراضياً). يستقبلها السياسة كـobservation.images.camera1 وobservation.images.camera2، والحالة (agent_pos) كـobservation.state.

لا تتطابق الأعمدة الخام في مجموعة البيانات مع مفاتيح السياسة تلك، لذا مرّر --rename_map عند الضبط الدقيق:

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

استبدل --env.front_camera_name / --env.wrist_camera_name إذا كنت تتدرب على أسماء مفاتيح مختلفة، حتى تتطابق ملاحظات التقييم مع المفاتيح التي تم تدريب السياسة عليها.

مساحات الإجراءات

النوعالأبعادالوصف
joint_angle87 زوايا مفاصل + 1 قابض (−1 مغلق، +1 مفتوح، مطلق)
ee_pose7xyz + roll/pitch/yaw + gripper

يُعيَّن عبر --env.action_space=joint_angle (الافتراضي) أو --env.action_space=ee_pose.

ملاحظات المنصة

  • لنكس فقط: يتطلب ManiSkill استخدام SAPIEN/Vulkan. لا يتم دعم macOS و Windows.
  • يُوصى باستخدام وحدة معالجة رسومية: يمكن تنفيذ العرض على وحدة المعالجة المركزية لكنه بطيء؛ بينما يوفر كل من CUDA وVulkan السرعة الكاملة.
  • تعارض بين gymnasium و numpy: راجع ملاحظة التثبيت أعلاه. يتعامل صورة Docker مع هذا تلقائيًا.
  • نسخة مشتقة من ManiSkill: يعتمد robomme على نسخة مشتقة محددة من ManiSkill (YinpeiDai/ManiSkill)، يتم جلبها تلقائيًا عبر حزمة robomme.
Update on GitHub