הגדרת תוכנה ומנהלי התקנים
התקן את Paxini SDK, הזרם נתוני לחץ ב-Python, הדמיית מפות חום של אנשי קשר, הוסף אינטגרציה אופציונלית של ROS2 וסנכרן עם זרוע הרובוט שלך לצינורות איסוף נתונים מלאים.
התקן את Paxini SDK
ה-Paxini Gen3 מתקשר באמצעות USB HID - אין צורך במודולי ליבה או מנהלי התקנים של ספקים. Python SDK עוטף את פרוטוקול HID ברמה נמוכה וחושף ממשק API של סטרימינג נקי.
אמת את ההתקנה:
זיהוי החיישן
חבר את חיישן Gen3 למחשב שלך באמצעות USB-C. השתמש בכלי השירות לגילוי המכשיר של ה-SDK כדי לוודא שהוא מזוהה:
עבור הגדרות ריבוי חיישנים (למשל, חמש אצבעות על רכזת USB):
sudo python -m paxini.install_udev פעם אחת כדי להתקין את הכלל, ואז נתק וחבר מחדש את החיישן.
Python Streaming API
ממשק API הליבה הוא זרם מבוסס התקשרות חוזרת. כל מסגרת מספקת א TactileFrame אובייקט המכיל את מערך הלחץ המלא ומטא נתונים.
כל שיטות ה-API הציבוריות:
| שיטה / נכס | תֵאוּר | מחזיר |
|---|---|---|
| sensor.start() | התחל בסטרימינג; לא חוסם | אַף לֹא אֶחָד |
| sensor.stop() | עצור את הזרם בצורה נקייה | אַף לֹא אֶחָד |
| sensor.stream() | מחולל מניב אובייקטי TactileFrame ב-Hz מוגדר | Generator[TactileFrame] |
| sensor.latest() | מחזירה את המסגרת העדכנית ביותר מבלי לחסום | TactileFrame |
| sensor.set_rate(hz) | הגדר קצב דגימה (50–500 הרץ עבור USB-C, 50–200 הרץ עבור BLE) | אַף לֹא אֶחָד |
| sensor.calibrate() | כיול אפס היסט נגד עומס המנוחה הנוכחי | אַף לֹא אֶחָד |
| חיישן.טורי | מחרוזת מספר סידורי של המכשיר | str |
| חיישן.variant | "קצה האצבע" | "רפידת אצבע" | "כַּף הַיָד" | str |
פורמט נתונים מישוש
כֹּל TactileFrame מכיל:
| שָׂדֶה | סוּג | תֵאוּר |
|---|---|---|
| frame.timestamp_ns | int | חותמת זמן ננו-שנייה (מונוטונית, שעון מארח) |
| frame.pressure_map | np.ndarray (H, W) float32 | לחץ בק"פ לטקסל. הצורה משתנה לפי גרסה: קצה האצבע הוא 8×8, כף היד היא 16×12. |
| frame.contact_mask | np.ndarray (H, W) bool | נכון כאשר הלחץ חורג מסף המגע (ברירת מחדל: 5 kPa) |
| frame.contact_area_mm2 | לָצוּף | סכום שטחי טקסל פעילים במ"מ |
| frame.total_force_n | לָצוּף | כוח נורמלי משולב על פני כל הטקסלים, בניוטונים |
| frame.contact_centroid | (לצוף, לצוף) | (שורה, קול) מרכז של אזור המגע בקואורדינטות טקסל |
| frame.in_contact | bool | נכון אם total_force_n חורג מסף מגע (ברירת מחדל: 0.05 N) |
| frame.seq | int | מספר רצף של פריים מונוטוני |
הדמיית מפת חום חיה
ה-SDK שולח מכשיר חזותי חי מוכן להפעלה. הפעל אותו ישירות משורת הפקודה:
או להטמיע בסקריפט משלך באמצעות ה paxini.viz מודול:
ממשק ROS2
גשר ROS2 מפרסם א sensor_msgs/Image (מפת לחץ) ומנהג paxini_msgs/TactileFrame נושא לכל חיישן. דורש ROS2 Humble או Jazzy.
עבור הגדרות ריבוי חיישנים, כל מכשיר מפרסם תחת המספר הסידורי שלו. אתה יכול למפות מחדש נושאים בקובץ ההשקה שלך באמצעות מיפוי מחדש של ROS2 רגיל.
שילוב זרוע רובוט
כדי לסנכרן נתוני Paxini עם מצב מפרק זרוע הרובוט, השתמש ב- paxini.sync מודול. זה חותמת את כל מסגרות החיישנים מול שעון משותף ומספקת API חוסם שמניב זוגות מסונכרנים (arm_state, tactile_frame):
MultiSourceSync מחלקה מטפלת באינטרפולציה כאשר שיעורי הזרוע והחיישנים שונים.
3 הבעיות המובילות
החיישן אינו מזוהה. בדוק לפי הסדר: (1) נסה כבל USB-C אחר - חלק מהכבלים נטענים בלבד ואינם נושאים נתונים. (2) ב-Linux, הפעל sudo python -m paxini.install_udev לאחר מכן נתק/נתק את החיישן. (3) ודא שנורית החיישן מוצקה (לא מהבהבת) - מהבהב אומר שהיא במצב עדכון קושחה; החזק את לחצן האיפוס למשך 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__), ופלט השגיאה המדויק.