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

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

قبل التسجيل

اتصالات الأجهزة للتسجيل ثنائي اليدين

يتطلب التسجيل ثنائي اليد اتصالات أكثر من الإعداد بذراع واحدة. تحقق من كل اتصال قبل بدء تشغيل LeRobot، حيث يؤدي فقدان الاتصال في منتصف الجلسة إلى إفساد الحلقة.

🥇

ذراع القائد (دايناميكسيل XL330)

USB-C من الذراع القائد إلى الكمبيوتر المضيف. يتم تحريك هذا الذراع بواسطة يد المشغل. استخدم كابلًا قصيرًا (1 متر) لتجنب انقطاع الاتصال العرضي أثناء الاتصال عن بعد. يؤكد: ls /dev/ttyACM0

🥈

ذراع التابع (DM4340 + الطاقة)

USB-C من الذراع التابع إلى الكمبيوتر المضيف بالإضافة إلى مصدر طاقة التيار المستمر. يتطلب الذراع التابع طاقة خارجية - لا يعمل مطلقًا على طاقة USB وحدها. يؤكد: ls /dev/ttyACM1

📷

كاميرا المعصم (ذراع المتابعة)

قم بتركيب كاميرا ويب USB على المؤثر النهائي للذراع التابع. هذه هي كاميرا التلاعب الأساسية. الاتصال عبر USB 3.0. يؤكد: ls /dev/video0

📖

الكاميرا العلوية / مساحة العمل

كاميرا ثابتة فوق مساحة العمل اليدوية بارتفاع 70 سم تقريبًا، بزاوية 30 درجة لأسفل. يلتقط كلا الذراعين في وقت واحد. منفذ USB 3.0 الثاني. يؤكد: ls /dev/video2

الحرجة: التزامن ثنائي. مع وجود ذراعين وكاميرتين، تعد المزامنة أهم عامل لجودة البيانات بالنسبة لـ DK1. يقوم LeRobot بوضع الطوابع الزمنية على جميع التدفقات من ساعة الكمبيوتر المضيف. لتقليل انحراف الطابع الزمني: (1) استخدم وحدات تحكم ناقل USB منفصلة للكاميرات والأذرع، (2) استخدم لوحات وصل USB 3.0 مع ساعات مستقرة، (3) اضبط حاكم وحدة المعالجة المركزية على وضع الأداء. الهدف: <5 مللي ثانية من الانحراف بين جميع التدفقات الأربعة. يمكن أن يؤدي عدم التزامن لمدة 10 مللي ثانية بين حالات الذراع اليمنى واليسرى إلى فشل تدريب ACT في المهام الغنية بالاتصال.

تسجيل سير العمل

إجراء تسجيل التشغيل عن بعد للقائد/التابع

اتبع هذه الخطوات لكل جلسة تسجيل DK1. يحتوي الإجراء اليدوي على بضع خطوات إضافية مقارنة بالجمع بذراع واحدة.

1

فحص السلامة قبل الجلسة

قم بمسح مساحة العمل المشتركة بين الذراعين (1.5 م × 1 م). تأكد من وصول كلا الذراعين إلى مساحة العمل المشتركة دون تصادم. اختبار التوقف الإلكتروني قبل التسجيل. يرى صفحة السلامة.

2

ربط والتحقق من كلا الذراعين

# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)

# Quick connection test
python -m lerobot.scripts.control_robot \
  --robot.type=bi_dk1_follower \
  --robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
  --control.type=none
3

التحقق من خلاصات الكاميرا

يجب أن تكون كلتا الكاميرتين متدفقتين قبل بدء تشغيل LeRobot. ستنتج الكاميرا المفقودة بصمت حلقات ذات إطارات صور فارغة.

python3 -c "
import cv2
for i in [0, 2]:
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        ret, frame = cap.read()
        print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
    else:
        print(f'Camera {i}: FAILED')
    cap.release()
"
4

حرك الذراعين إلى وضع البداية

قم بتحريك الذراع القائد يدويًا إلى وضع البداية. الذراع التابع سوف يعكس ذلك. أمسك الذراع القائد بثبات لمدة 2-3 ثوانٍ لتأكيد المزامنة قبل بدء فترة الإحماء.

5

قم بإعداد مشهد المهمة

ضع الأشياء في مواضع بداية ثابتة لكلا الذراعين. تصوير تكوين البداية. بالنسبة للمهام اليدوية، حدد المواضع الدقيقة باستخدام الشريط - يعد تناسق المشهد أكثر أهمية لأن مساري الذراعين يجب أن يكونا متوافقين.

6

ابدأ تسجيل LeRobot يدويًا

source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
  --robot.type=bi_dk1_follower \
  --robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick up block with left arm, place in bin with right arm" \
  --control.warmup_time_s=5 \
  --control.reset_time_s=15

استخدام أطول reset_time_s للمهام اليدوية - إعادة ضبط الذراعين ويستغرق المشهد وقتًا أطول من إعدادات الذراع الواحدة.

7

مراجعة وإعادة الحلقات

بعد كل دفعة مكونة من 10 حلقات، قم بإعادة العرض والمراجعة قبل المتابعة. انتبه إلى تنسيق الذراعين - سيظهر الفارق بين الذراعين الأيسر والأيمن على شكل ارتعاش في حركات التابع.

python -m lerobot.scripts.visualize_dataset \
  --repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --episode_index=0
8

ادفع إلى HuggingFace Hub

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/dk1-bimanual-pick-place-v1
تنسيق مجموعة البيانات

تنسيق مجموعة بيانات LeRobot للدليلين (DK1)

يعمل مخطط مجموعة البيانات ثنائي اليد DK1 على مضاعفة حقول الحالة المشتركة مقارنةً بالتسجيل أحادي الذراع. تحتوي كل حلقة على ملاحظات متزامنة من ذراعي القائد والتابع بالإضافة إلى جميع الكاميرات.

هيكل الدليل

your-username/dk1-bimanual-pick-place-v1/
├── meta/
│   ├── info.json          # Dataset metadata, fps, shapes, robot_type
│   ├── episodes.jsonl     # Per-episode metadata (task, length, outcome)
│   └── stats.json         # Min/max/mean/std for all fields
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet
│       └── ...
└── videos/
    └── chunk-000/
        ├── observation.images.wrist_cam/
        │   ├── episode_000000.mp4
        │   └── ...
        └── observation.images.overhead_cam/
            └── ...

مخطط بيانات الحلقة (ثنائي)

الحقول في كل حلقة ملف باركيه — DK1 ثنائي اليد (bi_dk1_follower)
مراقبة.حالة تعويم32[16] مواضع مفصل ذراع التابع: 7 DOF + المقبض × 2 ذراع = 16 قيمة
Observation.state_left تعويم32[8] ذراع التابع الأيسر: 7 مواضع مشتركة + 1 قابض (راد)
Observation.state_right تعويم32[8] ذراع التابع الأيمن: 7 مواضع مشتركة + 1 قابض (راد)
فعل تعويم32[16] مواضع الهدف لكلا ذراعي التابع (من ذراع القائد)
action_left تعويم32[8] المواقف المستهدفة للذراع اليسرى من القائد
action_right تعويم32[8] المواقف المستهدفة للذراع اليمنى من القائد
Observation.images.wrist_cam مسار الفيديو كاميرا مثبتة على المعصم على المؤثر النهائي للذراع التابع
Observation.images.overhead_cam مسار الفيديو كاميرا علوية ثابتة تعرض مساحة العمل الكاملة لليدين
الطابع الزمني float64 الطابع الزمني لاستضافة PC Unix. يتم أخذ عينات من كلا الذراعين في هذا الطابع الزمني.
Arm_sync_delta_ms float32 خاص بـ DK1: قراءة دلتا الوقت بين حالة الذراع اليسرى واليمنى. ضع علامة على الحلقات التي يتجاوز فيها هذا 10 مللي ثانية.
next.done منطقي صحيح في الإطار الأخير من الحلقة
ضمان الجودة

قائمة التحقق من الجودة للعروض التوضيحية ثنائية اليد

تحتوي مجموعات البيانات ثنائية اليد على متطلبات جودة أكثر صرامة من البيانات أحادية الذراع. يعد ضعف التنسيق بين الأسلحة هو السبب الرئيسي لفشل التدريب على سياسة DK1.

  • 1
    دلتا تزامن الذراع أقل من 10 مللي ثانية تحقق من arm_sync_delta_ms المجال في كل حلقة. تشير الارتفاعات التي تزيد عن 10 مللي ثانية إلى وجود اتصال بناقل USB أو حزمة تسلسلية تم إسقاطها. حذف الحلقات ذات الدلتا العالية المستمرة.
  • 2
    لا يوجد تذبذب في ذراع المتابع أثناء الاتصال قم بمراجعة مسارات ذراع التابع عند نقاط الاتصال (الإمساك، والتسليم، والوضع). يظهر التذبذب كضوضاء عالية التردد في observation.state. تقليل مكاسب PD إذا كانت موجودة. يرى استكشاف أخطاء البرامج وإصلاحها.
  • 3
    يكمل كلا الذراعين المهمة في نفس الحلقة بالنسبة للمهام اليدوية، تكون الحلقة صالحة فقط إذا أكمل كلا الذراعين المهام الفرعية المخصصة لهما. إذا نجحت الذراع اليسرى ولكن الذراع اليمنى أسقطت الجسم، فضع علامة على الحلقة على أنها فاشلة واحذفها أو أضف إليها تعليقًا توضيحيًا.
  • 4
    لا توجد إطارات الكاميرا المفقودة يجب أن يحتوي كلا تدفقي الكاميرا على العدد المتوقع من الإطارات. تؤدي الإطارات المفقودة من أي من الكاميرتين إلى إتلاف مدخلات السياسة الحركية. تحقق مع lerobot.scripts.visualize_dataset.
  • 5
    تمت إعادة تعيين مشهد المهمة بشكل متماثل بين الحلقات يجب إعادة ضبط مساحة عمل كلا الذراعين لكل حلقة. يجب أن يتطابق موضع الكائن وتكوين بدء الذراع وزوايا الكاميرا. استخدم تكوين البداية الذي تم تصويره كمرجع.
  • 6
    طول الحلقة ثابت يجب أن تكون جميع الحلقات الناجحة ضمن ±25% من متوسط ​​الطول. غالبًا ما يكون للمهام اليدوية تباينًا أعلى من المهام ذات الذراع الواحدة، ولكن يجب التخلص من القيم المتطرفة (3 × المتوسط).
  • 7
    إحصائيات مجموعة البيانات متماثلة لكلا الذراعين في meta/stats.json، تحقق من ذلك action_left و action_right الإحصائيات معقولة بالنسبة لهندسة مهمتك. إذا أظهر أحد الذراعين صفر تباين، فهذا يعني أن هذا الذراع لم يكن يتحرك — تحقق من تعيينات المنافذ.
  • 8
    أسلوب عرض Teleop ثابت يجب أن تستخدم جميع العروض التوضيحية نفس مسار النهج واستراتيجية الفهم وتقنية التسليم. تنتج الاستراتيجيات المختلطة توزيعات عمل متعددة الوسائط تربك تدريب ACT. استخدم عامل تشغيل واحد لكل إصدار مهمة.
الخطوة التالية

تدريب ACT على مجموعة البيانات ثنائية اليد الخاصة بك

بمجرد اجتياز مجموعة البيانات الخاصة بك لقائمة التحقق من الجودة، قم بتدريب ACT أو سياسة النشر مباشرة مع LeRobot. يوصى باستخدام ACT للمهام اليدوية DK1 - حيث يتعامل تنبؤ الإجراء المجزأ مع التنسيق بين الأذرع بشكل أفضل من سياسات الخطوة الواحدة.

تدريب ACT (موصى به للاستخدام اليدوي)

python -m lerobot.scripts.train \
  --policy.type=act \
  --dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --policy.chunk_size=100 \
  --policy.n_action_steps=100 \
  --training.num_epochs=5000 \
  --training.batch_size=8 \
  --output_dir=outputs/dk1-act-bimanual

تدريب سياسة النشر (للمهام الغنية باتصالات)

python -m lerobot.scripts.train \
  --policy.type=diffusion \
  --dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --training.num_epochs=8000 \
  --output_dir=outputs/dk1-diffusion-bimanual

تعمق أكثر: قراءة كاملة نظرة عامة على خط أنابيب جمع البيانات في مكتبة الروبوتات لمعالجة شاملة لبنية الحلقة، وإصدار مجموعة البيانات، واستراتيجيات المزامنة، وتكوين مجموعة البيانات ثنائية المهام متعددة المهام.

مجموعة البيانات جاهزة؟ ابدأ التدريب.

ادفع مجموعة البيانات اليدوية الخاصة بك إلى HuggingFace وابدأ التدريب على ACT.