جمع البيانات يدويا
تم تصميم 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.5 م × 1 م). تأكد من وصول كلا الذراعين إلى مساحة العمل المشتركة دون تصادم. اختبار التوقف الإلكتروني قبل التسجيل. يرى صفحة السلامة.
ربط والتحقق من كلا الذراعين
# 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
التحقق من خلاصات الكاميرا
يجب أن تكون كلتا الكاميرتين متدفقتين قبل بدء تشغيل 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()
"
حرك الذراعين إلى وضع البداية
قم بتحريك الذراع القائد يدويًا إلى وضع البداية. الذراع التابع سوف يعكس ذلك. أمسك الذراع القائد بثبات لمدة 2-3 ثوانٍ لتأكيد المزامنة قبل بدء فترة الإحماء.
قم بإعداد مشهد المهمة
ضع الأشياء في مواضع بداية ثابتة لكلا الذراعين. تصوير تكوين البداية. بالنسبة للمهام اليدوية، حدد المواضع الدقيقة باستخدام الشريط - يعد تناسق المشهد أكثر أهمية لأن مساري الذراعين يجب أن يكونا متوافقين.
ابدأ تسجيل 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 للمهام اليدوية - إعادة ضبط الذراعين ويستغرق المشهد وقتًا أطول من إعدادات الذراع الواحدة.
مراجعة وإعادة الحلقات
بعد كل دفعة مكونة من 10 حلقات، قم بإعادة العرض والمراجعة قبل المتابعة. انتبه إلى تنسيق الذراعين - سيظهر الفارق بين الذراعين الأيسر والأيمن على شكل ارتعاش في حركات التابع.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
ادفع إلى 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.
-
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
تعمق أكثر: قراءة كاملة نظرة عامة على خط أنابيب جمع البيانات في مكتبة الروبوتات لمعالجة شاملة لبنية الحلقة، وإصدار مجموعة البيانات، واستراتيجيات المزامنة، وتكوين مجموعة البيانات ثنائية المهام متعددة المهام.