جمع البيانات

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

قبل التسجيل

اتصالات الأجهزة للتسجيل

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

📷

كاميرا المعصم

قم بتركيب كاميرا ويب USB أو Intel RealSense D435i على حافة المستجيب النهائي. اتصل عبر USB 3.0 بمعدل 30+ إطارًا في الثانية. يؤكد: ls /dev/video*

📖

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

كاميرا ثابتة فوق مساحة العمل للحصول على عرض عالمي. قم بالتركيب على ارتفاع 60 سم تقريبًا فوق الطاولة، بزاوية 30 درجة لأسفل. منفذ USB 3.0 الثاني.

🔌

CAN Bus (التحكم في الذراع)

متصل بالفعل من الإعداد. يؤكد: ip link show can0. يجب أن تكون واجهة CAN جاهزة قبل بدء تشغيل LeRobot.

👤

جهاز تيليوب

3D SpaceMouse، أو OpenArm ثانٍ كذراع قائد، أو لوحة ألعاب. القائد المتابع مع ذراعي OpenArms يقدم عروضًا توضيحية بأعلى جودة.

ملاحظة مزامنة الكاميرا: يقوم LeRobot بوضع الطوابع الزمنية لجميع التدفقات على مستوى الكمبيوتر المضيف. بالنسبة لإعدادات الكاميرات المتعددة، استخدم لوحات وصل USB 3.0 (وليس لوحات وصل USB 2.0) لتقليل انحراف زمن الاستجابة بين إطارات الكاميرا وقراءات الحالة المشتركة. الهدف: <5 مللي ثانية من الانحراف بين التدفقات.

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

سير عمل التسجيل خطوة بخطوة

اتبع هذه الخطوات لكل جلسة تسجيل. كل خطوة مبنية على الأخيرة — لا تتجاوز الخطوات.

1

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

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

2

إظهار واجهة CAN و ROS2

sudo ip link set up can0
source /opt/ros/humble/setup.bash
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=false can_interface:=can0
3

الصفحة الرئيسية الذراع

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

python3 -m openarm_can.scripts.home --interface can0
4

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

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

# Quick camera check (press Q to exit)
python3 -c "
import cv2
for i in range(4):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f'Camera {i}: OK')
    cap.release()
"
5

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

ضع الأشياء في مواضع بداية ثابتة. تعد التهيئة المتسقة للمشهد أمرًا بالغ الأهمية لتعميم السياسة. قم بتصوير أو وضع علامة على تكوين البداية.

6

ابدأ تسجيل LeRobot

source ~/.venvs/openarm/bin/activate
python -m lerobot.scripts.control_robot \
  --robot.type=openarm \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/openarm-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick up the red cube and place it in the bin" \
  --control.warmup_time_s=5 \
  --control.reset_time_s=10

سيطالبك LeRobot قبل كل حلقة. استخدم Warmup_time_s لإعداد موضع التقريب الخاص بك قبل بدء التسجيل.

7

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

بعد التسجيل، قم بإعادة تشغيل الحلقات المشبوهة قبل الانتهاء من مجموعة البيانات. احذف الحلقات ذات الجودة الرديئة على الفور.

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

ادفع إلى HuggingFace Hub

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

تنسيق مجموعة بيانات LeRobot

يقوم LeRobot بتخزين مجموعات البيانات بتنسيق مجموعة بيانات HuggingFace باستخدام ملفات Parquet للبيانات الجدولية وملفات MP4/PNG لتدفقات الصور. كل حلقة عبارة عن سلسلة من الملاحظات والإجراءات ذات الطابع الزمني.

هيكل الدليل

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

مخطط بيانات الحلقة

الحقول في كل حلقة ملف الباركيه
مراقبة.حالة تعويم32[8] المواضع المشتركة بالراديان (8 DOF)
سرعة المراقبة تعويم32[8] السرعات المشتركة في راد / ثانية
مراقبة. جهد تعويم32[8] عزم الدوران المشترك في نيوتن متر
الملاحظة.الصور.* مسار الفيديو إشارة إلى الإطار في ملف فيديو MP4
فعل تعويم32[8] استهداف المواضع المشتركة من جهاز teleop
الطابع الزمني float64 الطابع الزمني لنظام Unix بالثواني
frame_index int64 رقم الإطار داخل الحلقة
الحلقة_index int64 رقم الحلقة ضمن مجموعة البيانات
next.done منطقي صحيح في الإطار الأخير من الحلقة
Task_index int64 قم بالفهرسة في جدول البحث الخاص بوصف المهمة

حلقات الفشل كبيانات

تم تصميم OpenArm لتسجيل المحاولات الفاشلة بأمان، وليس النجاحات فقط. تعد مسارات الفشل - الانزلاق، وسوء الفهم، والاصطدام، ومحاولات التعافي - بيانات من الدرجة الأولى بالغة الأهمية لتعميم السياسات بشكل قوي. لا تقم بحذف حلقات الفشل تلقائيًا. بدلاً من ذلك، قم بتعليقها باستخدام success الحقل في البيانات الوصفية للحلقة واترك لإطار التدريب أن يقرر ما إذا كان سيتم استخدامها أم لا.

ضمان الجودة

قائمة مراجعة الجودة للبيانات المجمعة

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

  • 1
    طول الحلقة ثابت يجب أن تكون جميع الحلقات لنفس المهمة ضمن ±30% من متوسط ​​الطول. تشير القيم المتطرفة عادةً إلى توقف المشغل مؤقتًا، أو عدم الإمساك به، أو مقاطعة التسجيل.
  • 2
    لا توجد إطارات الكاميرا المفقودة تأكد من أن كل حلقة تحتوي على العدد المتوقع من الإطارات لكل بث. يجري lerobot.scripts.visualize_dataset على 3-5 حلقات للتحقق من جودة الفيديو.
  • 3
    المواقف المشتركة ضمن الحدود الآمنة يؤكد observation.state لا يتجاوز أبدا الحدود المشتركة في المواصفات. تشير الارتفاعات عالية السرعة إلى تسرب CAN أو خلل في التحكم - احذف تلك الحلقات.
  • 4
    تمت إعادة تعيين مشهد المهمة بين الحلقات يجب أن تبدأ كل حلقة بالكائن في نفس الموضع الأولي. إذا تخطيت عملية إعادة التعيين، فسوف تتعلم السياسة من الشروط الأولية غير المتسقة وسيتم تعميمها بشكل سيئ.
  • 5
    اكتملت تغطية الكاميرا يجب أن تُظهر كاميرا المعصم دائمًا المؤثر النهائي والجسم الذي يتم التلاعب به. يجب أن تظهر الكاميرا العلوية مساحة العمل الكاملة. أعد ضبط التثبيتات إذا ترك الكائن الإطار في منتصف الحلقة.
  • 6
    أسلوب العرض متسق يجب على جميع المشغلين استخدام نفس مسار النهج وأسلوب الفهم. الاستراتيجيات المختلطة تربك التدريب على السياسات. استخدم عامل تشغيل واحدًا لكل إصدار مهمة، أو قم بتسمية الحلقات حسب المشغل.
  • 7
    تبدو إحصائيات مجموعة البيانات معقولة يفحص meta/stats.json بعد التسجيل. تحقق من أن متوسط ​​الإجراء يقترب من الصفر (غير عالق عند الحدود المشتركة)، وأن الإجراء القياسي كبير بما يكفي لإظهار التباين عبر الحلقات.
  • 8
    تم توثيق معدل النجاح سجل معدل نجاح الإنسان أثناء التجميع. يعد معدل النجاح الذي يتراوح بين 60 و70% نموذجيًا للمهام الغنية بالاتصالات. قد يشير النجاح المنخفض إلى أن المهمة صعبة للغاية؛ أعلى قد يعني أن المهمة سهلة للغاية بحيث لا توفر إشارة تدريب مفيدة.
الخطوة التالية

تدريب سياسة من مجموعة البيانات الخاصة بك

بمجرد اجتياز مجموعة البيانات الخاصة بك لقائمة التحقق من الجودة، يمكنك تدريب ACT أو سياسة النشر مباشرة مع LeRobot.

تدريب أكت

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

سياسة نشر القطار

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

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

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

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