إعداد البرامج وبرامج التشغيل
قم بتثبيت Paxini SDK، ودفق بيانات الضغط في Python، وتصور خرائط حرارة الاتصال، وأضف تكامل ROS2 الاختياري، وقم بالمزامنة مع ذراع الروبوت الخاص بك للحصول على خطوط أنابيب كاملة لجمع البيانات.
قم بتثبيت Paxini SDK
يتصل Paxini Gen3 عبر USB HID - لا يتطلب الأمر وحدات kernel أو برامج تشغيل خاصة بالموردين. يغلف Python SDK بروتوكول HID منخفض المستوى ويكشف عن واجهة برمجة التطبيقات المتدفقة النظيفة.
التحقق من التثبيت:
الكشف عن المستشعر
قم بتوصيل مستشعر Gen3 بجهاز الكمبيوتر الخاص بك عبر USB-C. استخدم الأداة المساعدة لاكتشاف جهاز SDK للتأكد من التعرف عليه:
بالنسبة لإعدادات أجهزة الاستشعار المتعددة (على سبيل المثال، خمسة أصابع على لوحة وصل USB):
sudo python -m paxini.install_udev مرة واحدة لتثبيت القاعدة، ثم افصل المستشعر وأعد توصيله.
واجهة برمجة تطبيقات تدفق بايثون
واجهة برمجة التطبيقات الأساسية هي دفق يعتمد على رد الاتصال. يقدم كل إطار أ إطار اللمس كائن يحتوي على مجموعة الضغط الكاملة والبيانات الوصفية.
جميع طرق واجهة برمجة التطبيقات العامة:
| الطريقة / الملكية | وصف | المرتجعات |
|---|---|---|
| بداية الاستشعار () | ابدأ البث؛ غير مانع | لا أحد |
| توقف الاستشعار () | أوقف الدفق بشكل نظيف | لا أحد |
| تيار الاستشعار () | مولد ينتج كائنات TactileFrame عند هرتز تم تكوينه | مولد [إطار اللمس] |
| الأحدث () | إرجاع الإطار الأحدث دون حظر | إطار اللمس |
| الاستشعار.set_rate (هرتز) | ضبط معدل العينة (50–500 هرتز لـ USB-C، 50–200 هرتز لـ BLE) | لا أحد |
| الاستشعار.معايرة () | معايرة الإزاحة الصفرية ضد حمل الراحة الحالي | لا أحد |
| الاستشعار.التسلسلي | سلسلة الرقم التسلسلي للجهاز | شارع |
| البديل | "الإصبع" | "لوحة الأصابع" | "نخل" | شارع |
تنسيق البيانات اللمسية
كل إطار اللمس يتضمن:
| مجال | يكتب | وصف |
|---|---|---|
| frame.timestamp_ns | كثافة العمليات | الطابع الزمني بالنانو ثانية (رتابة، الساعة المضيفة) |
| frame.pressure_map | np.ndarray (H, W) float32 | الضغط بالكيلو باسكال لكل تاكسل. يختلف الشكل حسب النوع: طرف الإصبع 8×8، راحة اليد 16×12. |
| frame.contact_mask | np.ndarray (H, W) منطقي | صحيح عندما يتجاوز الضغط عتبة الاتصال (الافتراضي: 5 كيلو باسكال) |
| fram.contact_area_mm2 | يطفو | مجموع مناطق التاكسيل النشطة بالملليمتر المربع |
| frame.total_force_n | يطفو | القوة العمودية المتكاملة عبر جميع التاكسيات، بوحدة نيوتن |
| fram.contact_centroid | (تطفو، تعويم) | (الصف، العمود) النقطه الوسطى لمنطقة الاتصال في إحداثيات التاكسيل |
| frame.in_contact | منطقي | صحيح إذا تجاوز Total_force_n عتبة الاتصال (الافتراضي: 0.05 N) |
| frame.seq | كثافة العمليات | زيادة رقم تسلسل الإطار بشكل رتيب |
التصور المباشر للخريطة الحرارية
تشحن SDK متخيلًا مباشرًا جاهزًا للتشغيل. قم بتشغيله مباشرة من سطر الأوامر:
أو قم بتضمين البرنامج النصي الخاص بك باستخدام ملف paxini.viz الوحدة النمطية:
واجهة روس2
ينشر جسر ROS2 أ Sensor_msgs/Image (خريطة الضغط) والعرف paxini_msgs/TactileFrame الموضوع لكل جهاز استشعار. يتطلب ROS2 متواضع أو جازي.
بالنسبة لإعدادات أجهزة الاستشعار المتعددة، يتم نشر كل جهاز تحت رقمه التسلسلي. يمكنك إعادة تعيين المواضيع في ملف التشغيل الخاص بك باستخدام إعادة تعيين ROS2 القياسية.
تكامل ذراع الروبوت
لمزامنة بيانات Paxini مع حالة مفصل ذراع الروبوت، استخدم paxini.sync وحدة. إنه يضع طوابع زمنية على جميع إطارات المستشعر مقابل ساعة مشتركة ويوفر واجهة برمجة تطبيقات للحظر تنتج أزواجًا متزامنة (arm_state، tactile_frame):
MultiSourceSync يتعامل الفصل مع الاستيفاء عندما تختلف معدلات الذراع والمستشعر.
أهم 3 قضايا
لم يتم اكتشاف المستشعر. تحقق بالترتيب: (1) جرّب كابل USB-C مختلفًا — بعض الكابلات مشحونة فقط ولا تحمل بيانات. (2) في نظام التشغيل Linux، قم بتشغيل sudo python -m paxini.install_udev ثم افصل/أعد توصيل المستشعر. (3) تأكد من أن مؤشر LED للمستشعر ثابت (لا يومض) - يومض يعني أنه في وضع تحديث البرنامج الثابت؛ اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ للخروج.
يحتاج المستشعر إلى المعايرة أو تم ضبط العتبة على مستوى مرتفع جدًا. يجري sensor.calibrate() مع تفريغ المستشعر (بدون اتصال). إذا استمرت المشكلة، فتأكد من أن متغير المستشعر يطابق الحامل الخاص بك - سيُظهر مستشعر راحة اليد المثبت على طرف الإصبع قيم ضغط منخفضة جدًا نظرًا لمساحة التاكسيل الأكبر. قم أيضًا بتأكيد إصدار البرنامج الثابت 1.2+ باستخدام python -m paxini.discover.
تتباعد ساعة واجهة الذراع والطابع الزمني للمستشعر بأكثر من max_dt_ms. يحدث هذا عادةً بسبب قيام مجموعة SDK بإرجاع حالة مشتركة قديمة (على سبيل المثال، تخزينها مؤقتًا بمعدل أقل). يزيد max_dt_ms إلى 10.0 كاختبار أول، ثم تحقق من سبب انخفاض معدل تحديث حالة الذراع عن المتوقع. بالنسبة لأذرع USB، تأكد من أن معدل استقصاء USB لا يتم التحكم فيه بواسطة إدارة الطاقة (sudo powertop على لينكس).
لا تزال عالقة؟ مشاركة في موضوع أسئلة المنتدى مع نظام التشغيل لديك، إصدار SDK (paxini.__version__)، وإخراج الخطأ الدقيق.