مرجع تثبيت SDK الكامل موجود في الأجهزة/dk1/البرمجيات. تغطي هذه الوحدة خطوات التكوين الخاصة بكلتا اليدين والتي تتجاوز تثبيت SDK أحادي الذراع الذي ربما تكون قد قمت به لـ OpenArm.

قم بتثبيت DK1 SDK

DK1 SDK منفصل عن OpenArm SDK. لا تحاول تشغيل أذرع DK1 مع حزمة OpenArm - يختلف بروتوكول البرنامج الثابت.

# Create an isolated virtual environment for DK1 work python3 -m venv ~/dk1-env المصدر ~/dk1-env/bin/activate # Install the DK1 SDK and bimanual extensions تثبيت النقطة dk1-sdk[ثنائي] # Verify the install بيثون -c "استيراد dk1؛ طباعة (dk1.__version__)" # Expected: 0.4.0 or higher

قم بتكوين إقران القائد/التابع

يقرأ SDK ملف تكوين YAML الذي يخبره بالجهاز التسلسلي الذي هو الرائد وأي الأجهزة هي الذراعين التابعين. يجب عليك تحديد مسارات الجهاز بالترتيب الصحيح — لا يكتشف SDK تعيين الدور تلقائيًا.

# Generate the default bimanual config file إنشاء dk1-config --mode ثنائي يدوي --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths نانو ~/dk1-config.yaml

الحقول الرئيسية في dk1-config.yaml:

القائد: الجهاز: /dev/ttyUSB2 # the leader controller arm معدل الباود: 1000000 Follower_left: الجهاز: /dev/ttyUSB0 # left follower arm معدل الباود: 1000000 Follower_right: الجهاز: /dev/ttyUSB1 # right follower arm معدل الباود: 1000000 مزامنة: التردد_ هرتز: 50 # joint state sync rate الكمون_التسامح_ms: 5 # max allowed sync lag
تعيين مسار الجهاز: التعيين من الذراع الجسدي إلى /dev/ttyUSBN يعتمد على ترتيب منفذ USB، والذي يمكن أن يتغير بين عمليات إعادة التشغيل. لإنشاء أسماء مستعارة مستقرة، استخدم udev القواعد المرتبطة بالرقم التسلسلي للجهاز. يجري udevadm info /dev/ttyUSB0 للعثور على المسلسل لكل ذراع وإنشاء القواعد فيه /etc/udev/rules.d/99-dk1.rules. يتم تناول هذا بالتفصيل في الأجهزة/dk1/البرمجيات.

اختبار اتصال بايثون – كلا الذراعين

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

من dk1 استيراد BimanualRobot الروبوت = BimanualRobot(config_path = "~/dk1-config.yaml") روبوت.اتصال() # Print joint states for both arms — should update at 50Hz لأني في النطاق (10): الحالة = robot.get_joint_states() طباعة (f"يسار: {[f'{j:.2f}' لـ j في الحالة.left]}") طباعة (f"يمين: {[f'{j:.2f}' لـ j في الحالة.right]}") طباعة ("---") قطع الاتصال ()

يؤدي التشغيل الناجح إلى طباعة 10 أزواج من صفائف الحالة المشتركة بقيم ثابتة ومتسقة. إذا رأيت قيم NaN، أو خطأ مهلة، أو أقل من 6 قيم مشتركة لكل ذراع، فتحقق من تعيينات مسار الجهاز في ملف التكوين الخاص بك.

التحقق من المزامنة

أهم فحص في هذه الوحدة هو التحقق من أن حركة القائد تنتج استجابة متزامنة للتابع دون أي تأخير ملموس:

من dk1 import BimanualRobot, LeaderFollowerSession الروبوت = BimanualRobot(config_path = "~/dk1-config.yaml") جلسة = LeaderFollowerSession(روبوت) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately بداية الجلسة () الإدخال ("اضغط على Enter للإيقاف ...") جلسة توقف ()

حرك الذراع القائد ببطء عبر قوس بزاوية 30 درجة على مفصل واحد. يجب أن يتحرك كلا الذراعين التابعين في انسجام تام دون أي تأخير واضح. إذا تأخر أحد المتابعين عن الآخر بأكثر من نصف ثانية، فتحقق من ذلك latency_tolerance_ms الإعداد والتحقق من اتصال USB للذراع البطيء.

الأخطاء والإصلاحات الشائعة

خطأ سبب يصلح
SerialException: device not found مسار الجهاز خاطئ في التكوين، أو USB غير متصل يجري ls /dev/ttyUSB* وتحديث مسارات التكوين. تحقق من اتصالات USB الفعلية.
SyncTimeoutError: follower_right ذراع المتابع الأيمن لا يستجيب في حدود تسامح الكمون يزيد latency_tolerance_ms إلى 10، أو حاول استخدام منفذ USB مختلف. تحقق من الكابل بحثًا عن التلف.
المشترك ينص على جميع الأصفار بعد الاتصال لم يتم تمكين الماكينات — الذراع في وضع الاستعداد يتصل robot.enable_servos() قبل قراءة الحالات المشتركة، أو تمكينها عبر واجهة مستخدم الويب أولاً.
أحد المرايا التابعة والآخر ثابت يتم إقران القائد بمتابع واحد فقط في التكوين التحقق من كليهما follower_left و follower_right تم تعيينها في تكوين YAML.

اكتملت الوحدة الثانية عندما...

تم تثبيت DK1 SDK و dk1.__version__ إرجاع 0.4.0 أو أعلى. يطبع اختبار الاتصال قيم الحالة المشتركة المستقرة لكلا الذراعين عند 50 هرتز. عندما تبدأ جلسة القائد/التابع وتحريك ذراع القائد، فإن ذراعي التابع يعكسان الحركة دون أي تأخير ملحوظ. لقد قمت بالتحقق من ذلك من خلال 3 حركات مشتركة مختلفة على الأقل على الذراع القائد.