
تتحول DROID و BridgeData V2 و Open X-Embodiment إلى إجراءات طرفية 7D على أذرع ذات 6 و 7 درجات حرية. يأخذ SO-100 ستة أوضاع للمفاصل. ما الذي ينتقل، وما الذي لا ينتقل، وماذا نفعل بدلاً من ذلك.
النسخة المختصرة
- •تتشارك إصدارات LeRobot الثلاثة في اصطلاح واحد: حركة طرفية 7 أبعاد [x, y, z, roll, pitch, yaw, gripper] وحالة 8 أبعاد مع فتحة حشو. يأخذ SO-100 ستة مواضع مفصلية مطلقة.
- •هذا المتجه ذو الأبعاد السبعة هو نتاج المحول: حقل حركة RLDS الخاص بـ DROID هو 6 سرعات مفصلية بالإضافة إلى موضع القابض، مع العرض الديكارتي في action_dict.
- •أربع ساعات: DROID 15 إطارًا في الثانية، BridgeData V2 5 إطارات في الثانية، شريحة google_robot 3 إطارات في الثانية، تسجيل SO-100 بسرعة 30 إطارًا في الثانية.
- •لا يمكنك دمجها مع بياناتك الخاصة. تثير validate_all_metadata خطأ عند أول اختلاف في fps أو robot_type أو features، وجميع الثلاثة تختلف.
- •ما يتم نقله هو الأوزان المدربة مسبقًا، وليس الحلقات. البيانات مفتوحة المصدر تمثل 9.1 بالمائة من مزيج التدريب المسبق لـ pi0.
- •أرخص استخدام حقيقي لها هو أداة اختبار: عينة DROID جيدة ومعروفة بحجم 2 جيجابايت و100 حلقة تثبت كفاءة خط أنابيبك قبل التسجيل لعطلة نهاية الأسبوع.
توجد مجموعة بيانات عامة بمليون مسار على سلة Google Cloud وSO-100 على المكتب بتكلفة 110 إلى 150 يورو في الأجزاء. لماذا لا يمكن للأول أن يعلم الثاني؟ يمكنه جزئيًا، ولكن لا يحدث أي نقل تقريبًا حيث يتوقع الناس، والجزء الذي يبدو الأسهل لا يعمل على الإطلاق.
ما يلي: ما هو داخل DROID، BridgeData V2 وOpen X-Embodiment، حيث يتصادم كل منها مع ذراع 5 درجات حرية منخفضة التكلفة، وما يجب فعله بدلاً من ذلك. كل رقم أدناه جاء من الورقة البحثية أو بطاقة مجموعة البيانات أو ملف المصدر الذي ينتمي إليه.
ما تحتويه مجموعات البيانات الثلاث بالفعل
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| الروبوت | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, منصة بحوالي 4,000 دولار أمريكي | 22 تجسيدًا، 60 مجموعة بيانات، 34 مختبرًا |
| النطاق | 76 ألف مسار، 350 ساعة | 60,096 مسارًا | أكثر من مليون مسار، 527 مهارة |
| التنوع | 564 مشهدًا، 84 مهمة، 50 جامع بيانات | 24 بيئة، 13 مهارة | 160,266 مهمة، 21 مؤسسة |
| التركيب | جميعها تعمل عن بعد | 50,365 تعمل عن بعد، 9,731 مبرمجة | حسب المختبر المصدر |
| معدل التحكم | 15 Hz | 5 Hz | يختلف، 3 إطارات في الثانية فما فوق |
| الكاميرات | 2 x ZED 2 خارجية، 1 x ZED Mini للمعصم | حتى 4، معظم الحلقات تستخدم الكاميرا الثابتة فقط | حسب ما استخدمه المختبر |
| التحميل الخام | 1.7 TB RLDS، 8.7 TB ستريو خام | أرشيفات JPEG | حاويات TFDS لكل مجموعة بيانات |
قليل من الناس لا يزالون يقومون بتنزيل 1.7 تيرابايت من RLDS TFRecords. أعادت منظمة المجتمع IPEC-COMMUNITY نشر معظم Open X-Embodiment في شكل مجموعة بيانات LeRobot مع فيديو AV1، حيث يبلغ حجم DROID 392 جيجابايت. هذه هي النسخة التي ستعمل بها، و meta/info.json الخاص بها هو ما يجب قراءته أولاً.
DROID
الأكثر توحيدًا من بين الثلاثة. منصة واحدة في كل مكان: روبوت Franka Panda مع قابض Robotiq 2F-85، وكاميرتي ستريو ZED 2 قابلتين للتعديل، وكاميرا ZED Mini للمعصم، يتم التحكم فيها عن بعد باستخدام وحدات تحكم Meta Quest 2، مسجلة عبر Polymetis بتردد 15 Hz في كل من مساحة المفصل و المؤثر النهائي مساحة. جاءت تسميات اللغة لاحقًا عبر tasq.ai، بحد أقصى ثلاثة لكل حلقة.
- 76 ألف مسار، 350 ساعة، 564 مشهدًا، 84 مهمة، 50 جامع بيانات في ثلاث قارات.
- النتيجة الرئيسية هي التدريب المشترك، وليس التدريب المستقل: الدفعات المختلطة بنسبة 50/50 مع العروض التوضيحية داخل النطاق تتفوق على أفضل طريقة تالية بنسبة 22 بالمائة نجاحًا مطلقًا في التوزيع، و17 بالمائة خارجه.
- IPEC-COMMUNITY/droid_lerobot: 92,233 حلقة، 27,044,326 إطارًا، franka، 15 إطارًا في الثانية، codebase_version v2.0، ثلاثة تدفقات AV1 بدقة 180x320، 392 جيجابايت.
- عينة تصحيح أخطاء بحجم 2 جيجابايت و100 حلقة موجودة على gs://gresearch/robotics/droid_100. ابدأ من هناك.
BridgeData V2
الأقرب إلى إعداد هواة: ذراع WidowX 250 بست درجات حرية، 60,096 مسارًا عبر 24 بيئة و13 مهارة بتردد 5 هرتز. لاحظ التركيب: 50,365 عرضًا توضيحيًا خبيرًا يتم التحكم فيه عن بعد بالإضافة إلى 9,731 من سياسة اختيار ووضع عشوائية مبرمجة، لذا حوالي 16 بالمائة ليس عرضًا توضيحيًا بشريًا، وهو أمر مهم لجودة التعلم بالمحاكاة جودة. التنزيل المعتاد، IPEC-COMMUNITY/bridge_orig_lerobot، يبلغ عن 53,192 حلقة و1,893,026 إطارًا بمعدل 5 إطارات في الثانية، robot_type widowx: أقل من 60,096 المذكورة في الورقة، لذا اقرأ العدد من meta/info.json بدلاً من الاقتباس من أي منهما.
Open X-Embodiment
ليس مجموعة بيانات بالمعنى التقليدي: 60 مجموعة بيانات روبوتية موجودة من 34 مختبرًا تم تجميعها في مجموعة RLDS واحدة تغطي 22 تجسيدًا وأكثر من مليون مسار. تقع BridgeData V2 بداخلها باسم bridge_orig؛ ويتم تحويل شريحة google_robot، fractal20220817_data، إلى 87,212 حلقة بمعدل 3 إطارات في الثانية.
يحمل التجميع تحذيرًا تذكره الورقة البحثية صراحةً. لتجارب RT-X، يقوم المؤلفون بتحويل كل مصدر إلى حركة طرفية بـ 7 درجات حرية (7-DoF)، لكنهم لا يقومون بمحاذاة إطارات الإحداثيات عبر مجموعات البيانات، ويسمحون لقيم الحركة بأن تكون مواضع أو سرعات مطلقة أو نسبية، وفقًا لنظام التحكم الأصلي لكل روبوت. استنتاجهم: قد يؤدي نفس متجه الحركة إلى حركات مختلفة جدًا لروبوتات مختلفة.

عدم التطابق، في أربعة أجزاء
عادة ما يُعامل عدم تطابق التجسيد كمشكلة غامضة واحدة. لكنها أربع مشاكل، تفشل كل منها بطريقة مختلفة، واثنتان منها لا يمكن إصلاحهما بالبرمجة النصية.
1. درجات الحرية
يحتوي SO-100 على خمسة مفاصل ذراع بالإضافة إلى قابض. إذا تم عدها كمحركات، فهي ذراع ذات 6 درجات حرية، وورقة SmolVLA تسميها كذلك؛ وإذا تم عدها كآلية تحديد موضع، فهي ذات 5 درجات حرية، وLeRobot تسميها كذلك في وثيقة التوثيق الخاصة بها للحركية العكسية، والتي تصف الحركية العكسية ذات التوجيه المرن (soft-orientation IK) على SO-101 ذي 5 درجات حرية حيث يتتبع المعصم التوجيه جزئيًا فقط. يحتوي Franka على سبعة مفاصل تحديد موضع. تحدد هذه الفجوة الأوضاع الممكنة: لا تستطيع الذراع ذات 5 درجات حرية عمومًا الوصول إلى موضع وتوجيه عشوائيين في آن واحد، لذا يعيد المُحلل أقرب ما يمكنه الوصول إليه، وهي حركة مختلفة عن تلك التي تم عرضها. خلفية: درجات الحرية.
# src/lerobot/robots/so_follower/so_follower.py
motors = {
"shoulder_pan": Motor(1, "sts3215", norm_mode_body),
"shoulder_lift": Motor(2, "sts3215", norm_mode_body),
"elbow_flex": Motor(3, "sts3215", norm_mode_body),
"wrist_flex": Motor(4, "sts3215", norm_mode_body),
"wrist_roll": Motor(5, "sts3215", norm_mode_body),
"gripper": Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position" -> a 6-D ABSOLUTE JOINT POSITION command
# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
return {
"observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/wrist_image_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/joint_position": np.random.rand(7), # seven Franka joints
"observation/gripper_position": np.random.rand(1),
"prompt": "do something",
}
# state = concat(joint_position, gripper_pos) -> 8-Dلذا، فإن نقطة فحص DROID الجاهزة ليست اختصارًا. تشحن Physical Intelligence نموذج pi05_droid على gs://openpi-assets/checkpoints/pi05_droid، ويحذر نفس ملف README الذي يثني على اتساع نطاقه من أن نقاط الفحص الخبيرة هذه قد لا تتوافق مع إعدادك. حالته هي ثمانية أرقام لمفاصل Franka ومفاتيح صورها هي exterior_image_1_left و wrist_image_left. لا يوجد علم يحول ذلك إلى أمر SO-100 بستة محركات.
2. ما يعنيه متجه الإجراء فعليًا
أعمق من الأبعاد. في تحويلات LeRobot، تشير الثلاثة جميعها إلى أين يجب أن يذهب القابض، في الفضاء الديكارتي. يشير SO-100 إلى أين يجب أن تذهب ستة محركات مؤازرة. يتطلب التحويل نموذجًا حركيًا ومحللًا، وليس إعادة تشكيل.
| الخاصية | OXE, DROID و Bridge بصيغة LeRobot | SO-100 في LeRobot |
|---|---|---|
| متجه الإجراء | 7-D: x, y, z, roll, pitch, yaw, gripper | 6-D: موضع هدف واحد لكل محرك |
| متجه الحالة | 8-D، مع خانة حشو (يستخدم google_robot رباعي الأبعاد) | 6-D، واحد لكل محرك |
| الإطار | ديكارتي، غير متوافق عبر مجموعات البيانات | فضاء المفصل، معايرة لكل ذراع |
| مطلق أو نسبي | إما هذا أو ذاك، يقرره المختبر المصدر | مواضع الهدف المطلقة |
| الوحدات | معايرة لكل مجموعة بيانات، ثم مقسمة | درجات افتراضيًا (use_degrees=True)، وإلا -100 إلى 100 |
| فشل صامت | قراءة دلتا كقيمة مطلقة | ذراع غير معاير |
يوثق ملف README الخاص بـ openx2lerobot حالة موحدة بثمانية أبعاد وإجراء بسبعة أبعاد لكل مجموعة بيانات يقوم بتحويلها، وهذا هو مصدر خانة pad. يختلف مخطط RLDS الخاص بـ DROID: فـ action على المستوى الأعلى هو متجه سباعي يتكون من 6 سرعات للمفاصل بالإضافة إلى موضع واحد للمقبض، مع وجود cartesian_position وcartesian_velocity وjoint_position وjoint_velocity تحت action_dict. يقرأ openpi عرض مساحة المفصل، بينما يقدم لك بناء LeRobot العرض الديكارتي. لا يمثل أي منهما ست زوايا سيرفو مطلقة.
يقدم LeRobot القطعة المفقودة: يحتوي تابع SO على معالج حركيات بخطوات InverseKinematicsEEToJoints و ForwardKinematicsJointsToEE. مفاتيحه هي ee.x و ee.y و ee.z بالإضافة إلى متجه دوران ee.wx و ee.wy و ee.wz و ee.gripper_pos، لذا حتى ترميز الاتجاه يختلف عن زوايا الانحدار والانعراج والدوران الموجودة في الملفات. تتطلب خطوة IK وزنًا للاتجاه (orientation_weight)، الافتراضي 0.01، ويشير وصفها إلى تعيينه على 0.0 لـ IK المعتمد على الموضع فقط للأذرع ذات التشغيل الناقص. يمكنك بناء الجسر، لكن النصف المتعلق بالاتجاه من كل إجراء مستعار يبقى تقريبيًا.
3. معدل التحكم
يعمل DROID بمعدل 15 هرتز، و BridgeData V2 بمعدل 5 هرتز، وشريحة google_robot بمعدل 3 إطارات في الثانية؛ يصف مؤلفو pi0 الجزء مفتوح المصدر من مزيجهم بأنه تحكم منخفض التردد يتراوح بين 2 و 10 هرتز. إعدادات DatasetRecordConfig الافتراضية لـ LeRobot هي 30 إطارًا في الثانية، و episode_time_s 60، و reset_time_s 60، و num_episodes 50. ، المدربة على بيانات 5 هرتز، تعلمت أن إجراءً واحدًا يغطي 200 مللي ثانية. عند إعادة تشغيله بمعدل 30 هرتز، تزحف الذراع؛ وإعادة أخذ العينات بشكل ساذج يؤدي إلى تشويه الإطار الذي يغلق فيه المقبض. كما يتفاعل بشكل سيء مع : قطعة مكونة من 100 خطوة تستغرق 20 ثانية عند 5 هرتز، و 3.3 ثانية عند 30 هرتز.
4. الكاميرات
BridgeData V2 عشوائية وضعيتي كاميرا كل 50 مسارًا، وتشير صفحة المشروع الخاصة به إلى أن معظم البيانات تحمل فقط المنظر الثابت على أي حال. استخدم DROID حوامل ZED 2 قابلة للتعديل بالإضافة إلى ZED Mini للمعصم. لديك كاميرتا ويب USB موضوعتان بالعين. وضع الكاميرا ليس متغيرًا مزعجًا لـ ؛ بل هو جزء كبير مما ركز عليه المشفر البصري، ولا يوجد شيء في تنسيق الملف يخبرك أن الأوضاع تختلف.
تتلاءم الأجزاء معًا بشكل جيد بما يكفي للتشغيل. يتم تحميل مجموعة البيانات، ويبدأ التدريب، وينخفض الخسارة، وتظهر نقاط الحفظ، ولا توجد أخطاء. ثم لا تقوم السياسة بأي شيء يمكن التعرف عليه على الذراع وتقضي يومًا في البحث عن خطأ في نص التدريب الخاص بك. لا يوجد خطأ: لقد تعلم النموذج توزيع حركة ديكارتي لروبوت غير موجود في غرفتك. ابدأ من انخفاض الخسارة، السياسة لا تفعل شيئًا، وليس من المعلمات الفائقة الخاصة بك.
ماذا يحدث عندما تحاول دمج البيانات على أي حال
الخطة الواضحة هي الدمج: بضعة آلاف من حلقات DROID بالإضافة إلى حلقاتك الخمسين. يرفض LeRobot، ويذكر الرفض الأشياء الثلاثة المختلفة.
- 1اسحب عينة الـ 100 حلقة، وليس الـ 1.7 تيرابايت الكاملة
2 جيجابايت كافية لرؤية الهيكل.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2حوّل RLDS إلى صيغة LeRobot
يغلف openx2lerobot تحويلات OXE القياسية ويضيف نوع الروبوت وتردد التحكم. يضع ملف README هذا في convert.sh.
bashgit clone https://github.com/Tavish9/any4lerobot.git cd any4lerobot/openx2lerobot python openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 3اقرأ meta/info.json قبل أي شيء آخر
يحدد هذا الملف ما إذا كان بقية يومك سيعمل بشكل صحيح.
bashpython -c "import json;d=json.load(open('meta/info.json'));\ print(d['codebase_version'], d['robot_type'], d['fps']);\ print(d['features']['action']['shape'], d['features']['observation.state']['shape'])" - 4جرب الدمج واقرأ الخطأ
تقوم عملية الدمج بتحميل كل مجموعة بيانات، ثم تتحقق validate_all_metadata من fps ونوع الروبوت والميزات مقابل الأول في القائمة، وترفع خطأ عند أول عدم تطابق.
bashlerobot-edit-dataset \ --new_repo_id you/mixed \ --operation.type merge \ --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']" # ValueError: Same fps is expected, but got fps=30 instead of 15.
تأتي القيم المرجعية من أي مجموعة بيانات أدرجتها أولاً، ولهذا السبب تشكو الرسالة من 30 إطارًا في الثانية لديك بدلاً من 15 إطارًا في الثانية لـ DROID. أصلح fps وستصطدم بفحص robot_type؛ أصلح ذلك وستصطدم بفحص الميزات، 7 مقابل 6 للإجراء. لا يوجد ترتيب يمر، ويتم تشغيل نفس الحماية في وقت التسجيل عبر sanity_check_dataset_robot_compatibility.
في الإصدار الرئيسي الحالي من LeRobot، يتم تسجيل so100_follower و so101_follower كلاهما على SOFollowerRobotConfig مشترك واحد، لذا فإن السلسلة النصية من تسجيل حقيقي ليست بالضرورة هي التي تتوقعها. اقرأها من ملفك الخاص meta/info.json، وتعامل مع الفحص الذي اضطررت لتعطيله كفحص كان يخبرك بشيء.
إذًا، ما الذي ينتقل فعليًا؟
الأوزان، وليست الحلقات. كل سياسة عامة حديثة استوعبت جزءًا منه في التدريب المسبق، وعندما تقوم بـ من فإنك ترثه وقد تم تسويته بالفعل من قبل أشخاص لديهم القدرة الحاسوبية للقيام بذلك بشكل صحيح. ورقة pi0 صريحة بشأن النسبة: 9.1 بالمائة من مزيج تدريبها المسبق، محسوبة بالخطوات الزمنية، هي بيانات مفتوحة المصدر بما في ذلك OXE و Bridge v2 و DROID. هذا الرقم خاص بـ pi0؛ ويختلف مزيج كل بائع.
- الأسس البصرية واللغوية: لقد رأى المشفّر آلاف المطابخ والأكواب ويعرف ما يشير إليه "المكعب الأحمر".
- أساس مسبق لهيكل التلاعب: الاقتراب، الإغلاق، الرفع، النقل، التحرير، مستقل عن التجسيد حتى عندما لا تكون الأرقام كذلك.
- مجموعة بيانات معروفة وجيدة للاختبار. إذا لم تتمكن مهمتك من تجاوز 100 حلقة من DROID، فالمشكلة في إعدادك.
- نقاط مرجعية: في مجالات مجموعات البيانات صغيرة النطاق، حقق RT-1-X معدل نجاح متوسط أعلى بنسبة 50 بالمائة من الطريقة الأصلية أو RT-1، وتفوق RT-2-X على RT-2 بحوالي 3 أضعاف في المهارات الناشئة.
- لا توجد إشراف عملي قابل للاستخدام. الهدف الديكارتي سباعي الأبعاد ليس أمرًا مفصليًا سداسي الأبعاد.
- لا يوجد نقل لوضعية الكاميرا، ولا شيء في البيانات يخبرك أن الوضعيات تختلف.
- لا يوجد نقل للتوقيت: مصادر 3 و 5 و 15 إطارًا في الثانية مقابل مسجل 30 إطارًا في الثانية.
- لا يوجد نقل للمقبض. يختلف Robotiq 2F-85 والفك المطبوع على STS3215 في القوة والمدى والديناميكيات.
- لم يكن الحجم وحده كافيًا حتى لمؤلفيه: في مجالات مجموعات البيانات الكبيرة، لم يتفوق RT-1-X على RT-1 المدرب على تلك المجموعة وحدها.
- لا يوجد تقليل في عدد الحلقات الخاصة بك التي تحتاجها.
| طبقة النموذج | هل ينتقل؟ | لماذا |
|---|---|---|
| مشفّر الرؤية | نعم، بقوة | الكائنات والمشاهد مستقلة عن التجسيد |
| التأريض اللغوي | نعم | التعليمات نصية، وليست هندسية |
| الاندماج متعدد الوسائط | غالبًا | يهتم بالكائن المذكور في المطالبة |
| مشفّر الإحساس العميق | لا | يختلف بُعد الإدخال ودلالات المفصل |
| رأس الإجراء | لا | مدرب على مساحة ديكارتية سباعية الأبعاد لست فيها |
| إحصائيات التطبيع | لا، وخطير | الإحصائيات الخارجية تحول كل أمر |
هذا هو السبب في أن SmolVLA يتصرف بشكل مختلف على ذراع منخفضة التكلفة. تختار ورقته البحثية 481 مجموعة بيانات مجتمعية من Hugging Face، تم تصفيتها حسب نوع التجسيد، وعدد الحلقات، وجودة البيانات، وتغطية الإطارات: 22.9 ألف حلقة، 10.6 مليون إطار، تم تقييمها على أذرع SO-100 و SO-101 حقيقية. الصغير والمتطابق يتفوق على الكبير وغير المتطابق. قارن على ACT مقابل SmolVLA.
ثلاثة مسارات جديرة بالاهتمام
المسار أ: الضبط الدقيق من نقطة تحقق استوعبت البيانات بالفعل
يجب على معظم الناس اتباع هذا المسار. لا تلمس أبدًا DROID أو Open X-Embodiment: اختر سياسة استوعب تدريبها المسبق بيانات التجسيد المتقاطع بالفعل، سجل حلقاتك الخاصة، ثم قم بالضبط الدقيق.
| السياسة | المعلمات | الحد الأدنى للحلقات | تنسيق مجموعة البيانات | فئة وحدة معالجة الرسوميات | الاستدلال | نقطة التحقق الأساسية |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 مليار، ~40 مليون مدرب في الضبط الدقيق | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 مللي ثانية لكل خطوة | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 مليار | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 مللي ثانية | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 مليار، بنية PaliGemma الأساسية | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 مللي ثانية | lerobot/pi05_base |
| SmolVLA | ~450 مليون | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 مللي ثانية | lerobot/smolvla_base |
| ACT | ~80 مليون | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 مللي ثانية | none, from scratch |
ACT هي الحالة الحدية الصادقة: لا يوجد نموذج أساسي، لذا لا تصل إليه أي من البيانات العامة. وهذا ليس عيبًا تلقائيًا، فبمعدل 20 مللي ثانية لكل خطوة عمل، هو الوحيد من بين الخمسة الذي يمكنه إغلاق حلقة سريعة، كما توضح صفحة ACT يوضح. اختر حسب المهمة باستخدام مقارنة الخمسة جميعًا، GR00T N1.7 مقابل Pi0.5، ونتائج 332 اختبار أداء عبر 85 نموذجًا في الساحة.
المسار ب: استخدام DROID كأداة اختبار
عينة الـ 100 حلقة هي أفضل 2 جيجابايت ستقوم بتنزيلها هذا الشهر، وليست للتدريب. إنها مجموعة بيانات تعلم أنها صحيحة. قم بتشغيل المحول واللّودر ووظيفة GPU قصيرة عليها؛ أي شيء يفشل هو خطأ في البنية التحتية تم العثور عليه بينما كان إصلاحه رخيصًا. تقوم NVIDIA بنفس الشيء على نطاق واسع: بطاقة GR00T N1.7 تسرد أربعة متغيرات مدربة لاحقًا، لـ Bridge و Fractal في SimplerEnv، و DROID و LIBERO.
المسار ج: سجل بياناتك الخاصة، بعناية
ثلاثون إلى خمسين تبدو صغيرة مقارنة بـ 76,000 حتى تتذكر أن حلقاتك هي الوحيدة التي تتضمن ذراعك وكاميراتك وطاولتك. بافتراضات LeRobot الافتراضية، 50 حلقة تعادل 100 دقيقة من وقت التشغيل الفعلي. انظر ، و.

طريقتان للانتقال من البيانات العامة إلى سياسة عمل فعالة
All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check the version against your trainer
The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --dataset.repo_id=you/so100_pick_block \ --dataset.num_episodes=50 \ --dataset.single_task="Pick up the red block and put it in the bowl" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.
The platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

تكلفة كل مسار
| المسار | التخزين | الوقت البشري | تكلفة GPU | احتمالية تحريك ذراعك |
|---|---|---|---|---|
| DROID المحول وحده | 392 GB | أيام تحويل | 4 to 12 USD | منخفض جدًا، مساحة عمل خاطئة |
| DROID مدمج مع حلقاتك | both | blocked by validate_all_metadata | n/a | لا شيء، لا يعمل |
| SmolVLA، 30 إلى 50 حلقة خاصة | a few GB | 100 دقيقة تسجيل | 1 to 3 USD | عالية |
| GR00T N1.7، 50 حلقة خاصة | a few GB | 100 دقيقة تسجيل | 4 to 12 USD | عالية |
| ACT من الصفر، 50 حلقة خاصة | a few GB | 100 دقيقة تسجيل | 1 to 3 USD | عالية، 20 مللي ثانية استدلال |
| عينة DROID كأداة اختبار | 2 GB | فترة ما بعد الظهر | تشغيل قصير واحد | عالية، كتحقق |
عدم التماثل هو بيت القصيد: المسار الذي يستعير أكبر قدر من البيانات هو الأكثر تكلفة والأقل احتمالاً لتحريك ذراعك. أقل من ساعتين من التحكم عن بعد الخاص بك يتفوق على تيرابايت من بيانات Franka لشخص آخر. ليس لديك ذراع روبوت بعد؟ /live يبث SO-100 ماديًا بدون تسجيل. ثم تدريب سياستك الأولى، وSmolVLA على SO-100 للدليل المحدد.
قم بتنزيل عينة DROID بحجم 2 جيجابايت واستخدمها لإثبات كفاءة مسار عملك. تجاهل 1.7 تيرابايت الأخرى. سجل 50 حلقة من مهمة واحدة بكاميرات ثابتة. قم بضبط SmolVLA أولاً، لأنه عند 30 حلقة كحد أدنى على بطاقة 24 جيجابايت، يكون الأرخص للتكرار عليه، ثم جرب GR00T N1.7 على نفس البيانات. قارن على مهمتك، وليس على معيار.
سجل مجموعات بيانات تتطابق بالفعل مع ذراعك
يكتب عميل سطح المكتب مجموعات بيانات بتنسيق LeRobot مباشرة من جلسة تحكم عن بعد: الذراع الصحيحة، معدل الإطارات الصحيح، مساحة الإجراء الصحيحة. لا يوجد تحويل RLDS، ولا إعادة تعيين.
احصل على عميل سطح المكتبهل يمكنني تدريب سياسة على DROID وتشغيلها على SO-100 الخاص بي؟▾
ليس بشكل مباشر. في بنية LeRobot، تكون إجراءات DROID عبارة عن أوامر طرفية 7-D على Franka Panda بمعدل 15 fps؛ في RLDS الخام، تكون 6 سرعات مفصلية بالإضافة إلى موضع قابض. يتطلب SO-100 ستة مواضع مفصلية مطلقة. ستحتاج إلى طبقة حركية عكسية، وحتى عندئذٍ لا يمكن لمعصم بخمس درجات حرية (5-DoF) إعادة إنتاج أوضاع عشوائية بست درجات حرية (6-DoF).
هل يمكنني مزج حلقات DROID أو Bridge مع حلقاتي الخاصة بـ SO-100؟▾
لا. تتطلب validate_all_metadata معدل إطارات (fps) ونوع روبوت (robot_type) ومخطط ميزات (feature schema) متطابقة وترفع ValueError عند أول عدم تطابق. تختلف الثلاثة جميعًا: 15 أو 5 fps مقابل 30، franka أو widowx مقابل ذراعك، أشكال الإجراءات 7 مقابل 6. إعادة كتابة البيانات الوصفية لتجاوز الفحص لا يصلح الدلالات.
هل Open X-Embodiment عديم الفائدة لذراع منخفضة التكلفة إذن؟▾
لا، لكن قيمتها تصل إليك من خلال الأوزان المدربة مسبقًا، وليس الحلقات. مجموعات البيانات مفتوحة المصدر بما في ذلك OXE و Bridge v2 و DROID تشكل 9.1 بالمائة من مزيج التدريب المسبق لـ pi0، وتشحن NVIDIA متغيرات GR00T N1.7 مدربة لاحقًا على Bridge و Fractal و DROID و LIBERO. ما لا يمكنك فعله هو إلحاق تلك الحلقات بتسجيلك الخاص.
أي سياسة تستفيد أكثر من بيانات التجسيد المتقاطع العامة؟▾
تحمل Pi0.5 ونماذج GR00T أكبر قدر من التدريب المسبق للتجسيد المتقاطع، لكن SmolVLA غالبًا ما تعمل بشكل أفضل على ذراع منخفضة التكلفة: مجموعة تدريبها المسبق هي 481 مجموعة بيانات مجتمعية، 22.9K حلقات و 10.6M إطارات، تم تقييمها على أذرع SO-100 و SO-101 حقيقية. ACT هو العكس: لا يوجد نموذج أساسي، 20 ms لكل خطوة عمل.
كم عدد حلقاتي الخاصة التي أحتاجها بالفعل؟▾
30 لـ SmolVLA، 50 لـ GR00T N1.7، GR00T N1.5، Pi0.5 و ACT. بافتراض الإعدادات الافتراضية لـ LeRobot وهي 60 s لكل حلقة و 60 s لإعادة الضبط، فإن 50 حلقة تعادل 100 دقيقة من الوقت الفعلي. البيانات المستعارة للتجسيد المتقاطع لا تخفض هذه الأرقام.
Sources
- DROID: مجموعة بيانات واسعة النطاق لمعالجة الروبوتات في البيئات الحقيقية
- وثائق DROID: أحجام التنزيل ومخطط حلقة RLDS
- BridgeData V2: مجموعة بيانات لتعلم الروبوتات على نطاق واسع
- صفحة مشروع BridgeData V2: التركيب وتغطية الكاميرا
- Open X-Embodiment: مجموعات بيانات تعلم الروبوتات ونماذج RT-X
- صفحة مشروع Open X-Embodiment
- google-deepmind/open_x_embodiment: قائمة مجموعات البيانات ونقاط فحص RT-1-X
- any4lerobot: محول openx2lerobot وحالته الموحدة 8-D، وإجراء 7-D
- IPEC-COMMUNITY/droid_lerobot: meta/info.json وحجم المستودع
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: شريحة google_robot بمعدل 3 إطارات في الثانية
- huggingface/lerobot: SO follower، معالج الحركيات، إعدادات التجميع والتسجيل
- openpi: مدخلات سياسة DROID ونقطة فحص pi05_droid
- pi0: نموذج تدفق الرؤية-اللغة-الفعل للتحكم العام بالروبوتات
- SmolVLA: نموذج رؤية-لغة-فعل لربوتات ميسورة التكلفة وفعالة
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started