LeRobot documentation

RoboColosseum

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

RoboColosseum

RoboColosseum هو معيار موزّع في العالم الحقيقي لتقييم سياسات الروبوتات العامة على روبوتات مادية مُنفَّذة في بيئات حقيقية. تُجرى التقييمات على إعدادات قياسية: روبوتات Unitree G1 البشرية، وYAM ذات اليدَين، وأذرع Franka في إعداد DROID، وSO-101. يُنشر كل تشغيل تقييم، بما في ذلك حالات الفشل، على Hugging Face Hub بتنسيق LeRobot.

يتناول هذا الصفحة كيفية إعداد سياسة LeRobot لمساري التقييم الخاصين بها وكيفية ربطها بأجهزة RoboColosseum الروبوتية. لتقييم سياسة ما، قدّم طلبًا على موقع RoboColosseum.

RoboColosseum benchmark overview

نظرة عامة

خاصيةالقيمة
التجسيداتSO-101، Franka (DROID)، YAM ثنائي اليد، Unitree G1
مسار الضبط الدقيق20 مهمة، 5 لكل تجسيد. يتم ضبط كل سياسة بدقة على نفس 100 عرض توضيحي للمهمة، ثم تقوم بـ 25 محاولة.
فتح المسارتتعرض سياستان مجهولتان للتجربة على نفس التعليمات الجديدة في نفس المشهد؛ يختار المقيّم التنفيذ الأفضل أو يُعلن تعادلًا. يتم تجميد نقطة الفحص.
التقييمعلى الروبوتات المادية في RoboColosseum

الإعداد المادي

RoboColosseum robot platforms: Bimanual YAM, SO-101, Franka in the DROID configuration and Unitree G1

تستخدم كل المواقع نفس تكوين العتاد للتجسيد. من اليسار إلى اليمين في الشكل: YAM ثنائي اليد، وSO-101، وFranka في تكوين DROID، وUnitree G1. أسماء الكاميرات هي مفاتيح observation.images.* في مجموعات بيانات Fine-tune Track.

التجسيدروبوتالكاميرات
SO-101ذراع متتبعة SO-101 على طاولة متنقلة قابلة للتعديل في الارتفاعfront: كاميرا Intel RealSense D435 مثبتة على ذراع مفصلي؛ wrist: كاميرا المعصم
Franka (DROID)ذراع Franka Panda ذات 7 درجات حرية مزودة بمقبض Robotiq 2F-85 على مكتب واقف محمول، في تكوين DROIDleft_image، right_image: كاميرتان ستيريو قابلتان للتعديل من نوع ZED 2؛ wrist: كاميرا ستيريو صغيرة من نوع ZED Mini تُركَّب على المعصم
YAM ثنائي اليدذراعان من نوع YAM من طقم MolmoAct2 YAM على طاولة متنقلة قابلة للتعديل في الارتفاعtop: كاميرا Intel RealSense D435 مثبتة على عمود؛ left، right: كاميرات Intel RealSense D405 معصمية
Unitree G1الإنسان الآلي Unitree G1 مزوّد بمقبضين متوازيين من نوع Unitree Dex-1head: كاميرا رأسية ستيريو؛ left_wrist، right_wrist: كاميرات معصم Intel RealSense D405

تحتوي محطات SO-101 وBimanual YAM أيضًا على حاسوب محمول مزوّد بوحدة معالجة رسومية RTX 5090 ومحطة طاقة محمولة بقوة 700 واط. يتم تنفيذ استنتاج السياسة محليًا على ذلك الحاسوب المحمول أو عن بُعد عبر نقطة نهاية تستضيفها الخادم.

المهام المتاحة

يتضمن مسار الضبط الدقيق 20 مهمة، بمعدل 5 مهام لكل تجسيد. كل مهمة هي مجموعة بيانات LeRobot v3.0 مستقلة على Hub، سُجّلت عبر 100 حلقة:

المهمةالتجسيدالتعليم
so101-cube-drawerSO-101ضع المكعب الأزرق الموجود على الطاولة في الدرج المفتوح، ثم أغلق الدرج.
so101-remove-screwdriverSO-101أخرج المِفكّ الأسود من الصندوق وضعه على الطاولة.
so101-stack-bowlsSO-101التقط الوعاء البلاستيكي الأبيض الموجود على اليمين وضعه فوق الوعاء البلاستيكي الأبيض الموجود على اليسار.
so101-stack-cubesSO-101ضع المكعب الأزرق فوق المكعب الأحمر، ثم ضع المكعب الأبيض فوق المكعب الأزرق.
so101-upright-bottleSO-101التقط زجاجة العصير الساقطة وضعها بشكل مستقيم على الطاولة.
droid-close-laptopFranka (DROID)إغلاق الحاسوب المحمول
droid-mug-on-coasterFranka (DROID)فنجان على حامل
droid-open-drawerFranka (DROID)فتح الدرج
droid-put-marker-penFranka (DROID)ضع القلم في حامل الأقلام
droid-towel-in-basketFranka (DROID)منشفة في سلة
yam-cupsYAM ثنائي اليدرتّب الأكواب فوق بعضها.
yam-drawerYAM ثنائي اليدضع الكوب في الدرج.
yam-dustpanYAM ثنائي اليدنظّف الجدول.
yam-microwaveYAM ثنائي اليدافتح الميكروويف وأخرج الوعاء.
yam-trayYAM ثنائي اليدنظّف الجدول.
g1-carry-boxUnitree G1صندوق الحمل
g1-fold-towelUnitree G1طوي منشفة
g1-hang-keysUnitree G1مفاتيح معلقة
g1-load-clothes-washing-machineUnitree G1load clothes washing machine
g1-plate-into-rackUnitree G1من الصفيحة إلى الرف

تُكتب تعليمات Open Track من قِبل المُقيِّم في الموقع.

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

حمّل جميع مجموعات بيانات المسار Fine-tune Track العشرين في ./data/RoboColosseum، بمجلد واحد لكل مهمة. الحجم الإجمالي للمجموعة الكاملة حوالي 35 غيغابايت: SO-101 بمقدار 1.4 غيغابايت، وFranka بمقدار 4.6 غيغابايت، وBimanual YAM بمقدار 5.9 غيغابايت، وUnitree G1 بمقدار 22.7 غيغابايت.

for task in so101-cube-drawer so101-remove-screwdriver so101-stack-bowls so101-stack-cubes so101-upright-bottle \
            droid-close-laptop droid-mug-on-coaster droid-open-drawer droid-put-marker-pen droid-towel-in-basket \
            yam-cups yam-drawer yam-dustpan yam-microwave yam-tray \
            g1-carry-box g1-fold-towel g1-hang-keys g1-load-clothes-washing-machine g1-plate-into-rack; do
  hf download "RoboColosseum/${task}" --repo-type dataset --local-dir "./data/RoboColosseum/${task}"
done

لتحميل بعض المهام فقط، احتفظ بأسمائها فقط في القائمة. كل مجلد هو مجموعة بيانات LeRobot مستقلة بذاتها. حمّل واحدة عن طريق تمرير مجلدها كـroot:

from lerobot.datasets import LeRobotDataset

dataset = LeRobotDataset(
    "RoboColosseum/so101-stack-bowls",
    root="./data/RoboColosseum/so101-stack-bowls",
)

بدون root، يتم تنزيل مجموعة البيانات من Hub عند أول استخدام.

التثبيت

قم بتثبيت خادم السياسة على الجهاز الذي يعمل عليه نموذجك:

git clone https://github.com/RoboColosseum/robocolosseum-policy-server.git
cd robocolosseum-policy-server
uv sync --extra demo

تقوم مواقع الروبوتات بتثبيت عميل الروبوت على الحاسوب المتصل بالروبوت، حيث يكون <robot_type> إما so101 أو franka أو yam:

git clone https://github.com/RoboColosseum/robocolosseum-client.git
cd robocolosseum-client
uv sync --extra <robot_type>
Both need Python 3.10 or newer and [uv](https://docs.astral.sh/uv/). The Robot Client also needs FFmpeg to export recordings. On SO-101, the Robot Client drives the arm with LeRobot's `so101_follower` driver, which needs Python 3.12: follow the Client's [SO-101 guide](https://github.com/RoboColosseum/robocolosseum-client/blob/main/docs/so101.md) instead.

التقييم

تُنفَّذ التقييمات على روبوتات RoboColosseum. بعد أن تقدّم بطلب، يتصل فريق RoboColosseum بسياساتك بأحد طريقتين: إما أن تستضيف خادم سياسة على جهاز الاستدلال الخاص بك، أو أن تسلّم نقطة تحقق يقومون هم بتشغيلها على جهاز ملاصق للروبوت.

تستخدم تجارب Open Track برنامجين:

مكوّنيعمل علىما يفعلهالمستودع
خادم السياسةجهاز الاستدلال الخاص بكيستقبل ملاحظات الروبوت، يشغّل نموذجك ويعيد الإجراءاتrobocolosseum-policy-server
عميل الروبوتحاسوب الروبوتيتحكم في الروبوت، وينفّذ الإجراءات ويسجّل التجربةrobocolosseum-client

استضافة سياستك

في شاشة إتمام عملية الشراء لخادم السياسة، أنشئ التكوين وقم بإعداد عنوان URL الخاص بالموجّه ورمز خادم السياسة الذي تستلمه من فريق RoboColosseum:

cp configs/policy.yaml.example configs/policy.yaml
url: wss://router.example.com:8443
token: pol_replace_with_token_from_router_ui

تحقق من الاتصال دون إرسال أي إجراءات. عندما يطابق Router عميل الروبوت Robot Client مع خادمك، يتم عرض تعليمات المهمة وحالة المفاصل والمقبض والصور الملتقطة بالكاميرا (تُفتح الصور في نوافذ OpenCV، لذا يتطلب ذلك عرضًا رسوميًا):

uv run --extra demo python examples/test_policy.py --no-enable-action

ثم اربط نموذجك بـ SDK لخادم السياسة. احفظ هذا الملف باسم serve_policy.py في جذر المستودع:

from colosseum_policy_server import ColosseumPolicySDK
from your_policy import load_model  # Replace with your own model loader.


def main():
    model = load_model()

    with ColosseumPolicySDK.from_yaml("configs/policy.yaml") as sdk:
        print("Connected to Router. Waiting for observations...", flush=True)
        while True:
            obs = sdk.get_obs()
            actions = model.infer(obs)
            sdk.send_action(actions, observation=obs)


if __name__ == "__main__":
    main()

يحوّل model.infer(obs) الملاحظة (obs.instruction، obs.state.head_image، obs.state.left_image، obs.state.right_image، obs.state.joints، obs.state.gripper) إلى مدخلات نموذجك، ويعيد مصفوفة NumPy ذات الشكل (horizon, action_dim) في فضاء الإجراءات المتفق عليه مع العميل. افتراضيًا، يكون هذا joint_position بتردد 15 هرتز وبحد أقصى 16 خطوة لكل شريحة. ابدأ الخادم وأبقِه يعمل بينما يستخدم المقيّمون سياستك:

uv run python serve_policy.py

إعداد روبوت

في شاشة إتمام الطلب في Robot Client، أنشئ التكوين وعدّله لروبوتك:

cp configs/robot.yaml.example configs/robot.yaml

ثم ابدأ العميل:

.venv/bin/colosseum-robot configs/robot.yaml

اتبع التعليمات لإدخال تعليمات أو اختيار مهمة، ثم نفّذ التجربة وأرسل التقييم. تُسجَّل كل تجربة وتُصدَّر بتنسيق LeRobot.

تقييم كود التتبع

كود الضبط الدقيق والتقييم المستخدم لكل تجسيد في مسار الضبط الدقيق متاح للعامة: SO-101، Franka (DROID)، Bimanual YAM وUnitree G1.

التدريب

مسار الضبط الدقيق

الدراسة على مجموعة بيانات مهمة تم تنزيلها باستخدام --dataset.root:

lerobot-train \
  --dataset.repo_id=RoboColosseum/so101-stack-bowls \
  --dataset.root=./data/RoboColosseum/so101-stack-bowls \
  --policy.type=<policy_type> \
  --policy.repo_id=${HF_USER}/<policy_type>_robocolosseum_so101-stack-bowls \
  --output_dir=./outputs/<policy_type>_robocolosseum_so101-stack-bowls

يعتمد تكوين السياسة الدقيق، وتعيين الكاميرات، وتمثيل الإجراء، وصفة التدريب على السياسة التي يتم تكييفها. إذا كانت سياستك تتوقع أسماء كاميرات مختلفة، فقم بتعيينها باستخدام --rename_map.

ملاحظة: تم ضبط الأساسيات G0.5 و LingBot-VLA 2.0 باستخدام أكوادها الأصلية، GalaxeaVLA @ 89f2322 و lingbot-vla-v2 @ be969b8.

فتح المسار

تقيّم المسار المفتوح نقطة تجميد على مهام واقعية. لا يتم إجراء أي تدريب على بيانات التقييم الخاصة بمسار RoboColosseum المفتوح.

إذا لم يدعم خط عملك بعد تجسيد الهدف، فقم أولاً بتكييفه على بيانات روبوت عامة لذلك التجسيد، ثم قم بتجميد نقطة التفتيش الناتجة قبل التقييم. مجموعات البيانات العامة الموصى بها للتشغيل الأولي:

الجسد المستهدفبيانات الإقلاع العامة
SO-100 / SO-101allenai/MolmoAct2-SO100_101-Dataset
Franka (DROID)DROID
YAM ثنائي اليدallenai/MolmoAct2-BimanualYAM-Dataset

allenai/MolmoAct2-SO100_101-Dataset يتضمن مجموعات بيانات LeRobot الخاصة بـ SO-100 و SO-101 المستخدمة في تدريب MolmoAct2، مع تعليقات لغوية لكل حلقة. حمّل قائمة المستودعات المصدرية باستخدام:

hf download allenai/MolmoAct2-SO100_101-Dataset repo_list.json \
  --repo-type dataset \
  --local-dir ./data/molmoact2_so100_101

كل عنصر في repo_list.json هو معرّف مجموعة بيانات على Hub مُسبق بـ lerobot: (على سبيل المثال lerobot:<user>/<dataset>). اختر مجموعات البيانات المتوافقة مع SO-100 / SO-101 من القائمة ودرّب عليها. تستخدم العديد منها صيغة LeRobot v2.1: حوّلها إلى v3.0 قبل التحميل (انظر استخدام LeRobotDataset).

يُصدر DROID بتنسيق RLDS. قم بتحويله إلى مجموعة بيانات LeRobot باتباع مثال DROID في نقل مجموعات البيانات الكبيرة، ثم درّب على المجموعة المحوّلة باستخدام lerobot-train.

يعمل مجموعة بيانات Bimanual YAM مع lerobot-train مباشرةً:

lerobot-train \
  --dataset.repo_id=allenai/MolmoAct2-BimanualYAM-Dataset \
  --policy.type=<policy_type> \
  --policy.repo_id=${HF_USER}/<policy_type>_bimanual_yam \
  --output_dir=./outputs/<policy_type>_bimanual_yam

لا تجعل مرحلة الإقلاع السياسة متوافقة مع التجسيد المستهدف فحسب. تبقى نقطة التفتيش المُرسلة إلى المسار المفتوح مجمّدة أثناء التقييم.

إرسال إلى لوحة الصدارة

تُنشر النتائج على لوحة صدارة RoboColosseum. لتقييم سياسة معينة، قدّم طلبًا على موقع RoboColosseum. بروتوكول كل مسار:

  • مسار الضبط الدقيق: يتم ضبط كل سياسة بدقة على نفس 100 عرض توضيحي للمهمة، ثم تُجري 25 محاولة. يتم الإبلاغ عن النجاحات الكاملة والتقدم المحرز في المعالم.
  • مسار مفتوح: يرى المقيّمون سياستين مجهولتي الهوية تحاولان تنفيذ نفس التعليمات على نفس الروبوت والمشهد، ويختارون التنفيذ الأفضل أو يصرّحون بالتعادل. تُحسب التقييمات من جميع المقارنات على ذلك الروبوت وتُعرض مع درجة عدم اليقين الخاصة بها.
Update on GitHub