جمع البيانات
تم تصميم 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 متر)، وتأكد من وصول الذراع إلى موضعه الأصلي بحرية، واختبر التوقف الإلكتروني قبل التسجيل. يرى صفحة السلامة.
إظهار واجهة 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
الصفحة الرئيسية الذراع
قم بتشغيل روتين التوجيه لتعيين الموضع المرجعي قبل كل جلسة. يجب أن يصل الذراع إلى موضعه الأصلي دون تحميل على المؤثر النهائي.
python3 -m openarm_can.scripts.home --interface can0
التحقق من خلاصات الكاميرا
تأكد من بث جميع الكاميرات قبل بدء تشغيل 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()
"
قم بإعداد مشهد المهمة
ضع الأشياء في مواضع بداية ثابتة. تعد التهيئة المتسقة للمشهد أمرًا بالغ الأهمية لتعميم السياسة. قم بتصوير أو وضع علامة على تكوين البداية.
ابدأ تسجيل 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 لإعداد موضع التقريب الخاص بك قبل بدء التسجيل.
مراجعة وإعادة الحلقات
بعد التسجيل، قم بإعادة تشغيل الحلقات المشبوهة قبل الانتهاء من مجموعة البيانات. احذف الحلقات ذات الجودة الرديئة على الفور.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/openarm-pick-place-v1 \
--episode_index=0
ادفع إلى 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/
└── ...
مخطط بيانات الحلقة
حلقات الفشل كبيانات
تم تصميم 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
تعمق أكثر: قراءة كاملة نظرة عامة على خط أنابيب جمع البيانات في مكتبة الروبوتات لمعالجة شاملة لبنية الحلقة، وإصدار مجموعة البيانات، والمحاذاة من محاكاة إلى حقيقية، وتكوين مجموعة بيانات متعددة المهام.