מדריך התקנה של כפפות מישוש Juqiao
השלם נתיב מ-Unboxing לנתוני לחץ חיים ושילוב פלטפורמה. תכנן פחות מ-30 דקות בסך הכל.
לבש את הכפפה וחבר את מודול הרכישה
כפפת Juqiao נשלחת ככפפת טקסטיל ארוגה עם מחבר כבל סרט בפרק כף היד. מודול הרכישה הוא מארז PCB קטן נפרד המטפל בהמרה אנלוגית לדיגיטל ותקשורת USB.
- לבש את הכפפה כמו כפפה רגילה, עם מחבר ה-FPC ממוקם על פרק כף היד.
- השב את כבל הסרט: יישר את כבל סרט ה-FPC ממחבר שורש כף היד של הכפפה ולחץ אותו בחוזקה לתוך שקע הסרט של מודול הרכישה. לחיצה קלה מעידה על מושב בטוח. אם צמתים מציגים אפס קריאות, הסרט אינו יושב במלואו - ראה פתרון בעיות להלן.
- הרכב את המודול: הצמד או סקוטש את מודול הרכישה לרצועת שורש כף היד או תושבת האמה כך שהוא לא יפריע לתנועת שורש כף היד במהלך ניתוח טלפוני.
- חבר USB: חבר את מודול הרכישה למחשב המארח שלך באמצעות כבל ה-USB המצורף.
/dev/ttyUSB0 אוֹ /dev/ttyACM0; ב-macOS as /dev/tty.usbserial-*. ב-Windows, התקן את מנהל ההתקן CP210x או CH340 הכלול אם ההתקן אינו מונה אוטומטית כיציאת COM.
התקן את Python SDK (pyserial)
אין צורך ב-SDK של ספק קנייני. מודול הרכישה מזרים מנות בינאריות ממוסגרות דרך יציאה טורית סטנדרטית - pyserial היא התלות היחידה.
התקן pyserial:
pip install pyserial
ודא שהיציאה הטורית גלויה:
# Linux ls /dev/ttyUSB* /dev/ttyACM* # macOS ls /dev/tty.usbserial-* # Or use pyserial's port listing tool python -m serial.tools.list_ports
אשר שידור חי (בדיקת שפיות):
# Replace /dev/ttyUSB0 with your port; 921600 is the default baud rate
python -m serial.tools.miniterm /dev/ttyUSB0 921600
אתה אמור לראות זרם של נתונים בינאריים בקצב הדגימה המוגדר של מודול הרכישה. אם המסוף שקט, בדוק את חיבור ה-USB ואת נורית המודול - הוא אמור לפעום בקצב הדגימה.
dialout לקבץ ולהתנתק ולהיכנס חזרה: sudo usermod -aG dialout $USER
הפעל את Python Frame Reader
מודול הרכישה שולח מסגרות בינאריות באורך קבוע. כל מסגרת מתחילה במפריד התחלה של 2 בתים 0xAA 0x55, ואחריו ספירת ערוצים של 1 בתים N, N × 2 בתים של ערכי לחץ של 16 סיביות גדולות אנדיאנים, וסכום ביקורת של 2 בתים CRC16. אורך מסגרת כולל = 5 + 2N בתים.
קורא מסגרת בסיסי - מדפיס רשימה של ערכי לחץ לכל מסגרת:
import serial, struct, time BAUD = 921600 PORT = "/dev/ttyUSB0" # /dev/tty.usbserial-* on macOS, COMx on Windows HEADER = b"\xaa\x55" def read_frame(ser: serial.Serial, n_channels: int) -> list[int] | None: # Sync to frame header buf = ser.read(2) if buf != HEADER: ser.read_until(HEADER[-1:]) return None raw = ser.read(1 + n_channels * 2 + 2) n = raw[0] if n != n_channels: return None pressures = list(struct.unpack_from(f">{n}H", raw, 1)) # CRC check omitted for brevity — validate in production return pressures with serial.Serial(PORT, BAUD, timeout=0.1) as ser: N = 64 # number of sensing nodes — confirm from spec doc while True: frame = read_frame(ser, N) if frame: print(frame) # list of N 16-bit pressure values
לחץ על חלקים שונים של הכפפה וודא שערכי הצומת עולים ויורדים. כל 64 הצמתים צריכים להגיב. אם אזור לא מראה תגובה, בדוק שוב את מושב כבל הסרט הן במחבר הכפפה והן במודול.
כיול נקודת אפס
חיישני בד כפופים לקיזוז קו הבסיס משינויי טמפרטורה ודחיסה חוזרת. כייל בתחילת כל מפגש לקריאות מדויקות.
- הרפי את הכפפה על משטח שטוח ללא לחץ - אל תלבש אותו במהלך הכיול אלא אם כן אתה יכול להחזיק את היד שלך בשקט ורגוע לחלוטין.
- חלונות: פתח את כלי התצורה של Juqiao, בחר את יציאת ה-COM שלך, לחץ לְחַבֵּר, ואז נווט אל כיול ← אפס. כל קווי הבסיס של הצומת מוגדרים לערכי המנוחה הנוכחיים.
- לינוקס / macOS: שלח את פקודת האפס של התוכנה לפי מסמך פרוטוקול V2.3, או החל חיסור בסיס בסקריפט גשר Python שלך (ללכוד 50 פריימים במנוחה והורידו את הממוצע לכל ערוץ).
# Simple software baseline subtraction (Linux/macOS alternative)
import serial, struct, numpy as np
BAUD, PORT, N = 921600, "/dev/ttyUSB0", 64
HEADER = b"\xaa\x55"
def read_frame(ser):
ser.read_until(HEADER)
raw = ser.read(1 + N * 2 + 2)
return list(struct.unpack_from(f">{N}H", raw, 1))
with serial.Serial(PORT, BAUD, timeout=0.1) as ser:
ser.reset_input_buffer()
baseline = np.mean([read_frame(ser) for _ in range(50)], axis=0)
print("Baseline captured. Starting calibrated stream...")
while True:
frame = read_frame(ser)
if frame:
calibrated = np.maximum(0, np.array(frame) - baseline)
print(calibrated.astype(int).tolist())
שילוב פלטפורמה - פלטפורמה ללא פחד
הפלטפורמה ללא מורא ב platform.roboticscenter.ai תומך בחיישן Juqiao כצומת מישוש בהפעלת טלאופציה. מסגרות לחץ מוקלטות באופן סינכרוני לצד מצבי משותף של רובוט, זרמי מצלמה ושיטות חיישנים אחרות.
רצף הרשמה:
- התחל סשן טלאופ דרך
POST /api/teleop/sessions/create-sdkעִםdevice_type: "juqiao_textile_skin". - פתח את הפלטפורמה WebSocket בכתובת
/api/teleop/wsושלח את לחיצת היד של הרישום:role: "operator",device_type: "tactile_sensor",capabilities: ["tactile", "pressure_array", "telemetry"]. - על קבלת
type: "ready", התחל להעביר מסגרות טלמטריה של JSONL מהקורא הטורי.
פולט JSONL עבור גשר הפלטפורמה:
import serial, struct, time, json, sys
PORT = "/dev/ttyUSB0"
BAUD = 921600
N_CHANNELS = 64
HEADER = b"\xaa\x55"
def read_frame(ser):
buf = ser.read_until(HEADER)
if not buf.endswith(HEADER):
return None
raw = ser.read(1 + N_CHANNELS * 2 + 2)
pressures = list(struct.unpack_from(f">{N_CHANNELS}H", raw, 1))
return pressures
with serial.Serial(PORT, BAUD, timeout=0.05) as ser:
while True:
frame = read_frame(ser)
if frame:
record = {
"ts": int(time.time() * 1000),
"device": "juqiao_textile_skin",
"variant": "high_frequency_v2.3",
"pressures": frame, # flat list, N_CHANNELS values
"n_channels": N_CHANNELS
}
print(json.dumps(record), flush=True) # JSONL for platform bridge
פורמט מסגרת טלמטריה שנשלח לפלטפורמת WebSocket:
{
"type": "telemetry",
"member_id": "juqiao-glove-right",
"device": "juqiao_textile_skin",
"variant": "high_frequency_v2.3",
"pressures": [0, 512, 1024, ...], // flat array, N_CHANNELS 16-bit values
"n_channels": 64,
"ts": 1743680400123 // Unix millisecond timestamp
}
התאמה עם OpenArm או DK1: בהגדרה טיפוסית של הפעלה טלפונית, שלושה תהליכים נפרדים פועלים במחשב המארח וכל אחד מהם רושם עם אותו מזהה הפעלה - גשר בקרת זרועות הרובוט, הגשר הטורי Juqiao וגשרי מצלמה לתצוגות פרק כף היד וסצנה. הפלטפורמה מיישרת זמן את כל הזרמים באמצעות ts שדה ומאחסן קובץ JSONL פרק בודד לכל הדגמה. במהלך השמעה, הפאנל GloveWorkbench מציג את מפת החום של לחץ המישוש לצד מסלול מפרק הזרוע.
member_id ערכים - juqiao-glove-right ו juqiao-glove-left. לכל כפפה מודול רכישה וחיבור USB משלה. אצווה את שתי הכפפות לאובייקט JSON יחיד לכל סימון כדי להפחית בחצי את ספירת ההודעות בפלטפורמה ב-200 הרץ.
לעיון ב-API מלא המכסה יצירת הפעלה, לחיצת יד של WebSocket והורדת פרקים, עיין ב- הפניה לפלטפורמת SDK API.
פתרון בעיות
- אין התקן טורי בלינוקס: לָרוּץ
sudo usermod -aG dialout $USERולהתנתק/אין. אמת עםlsusbשהמודול מונה. על גרעינים ישנים יותר,modprobe cdc_acmייתכן שיהיה צורך. - כל קריאות הלחץ הן אפס: נתק את ה-USB, השב מחדש את סרט ה-FPC בשני הקצוות (מחבר כפפה ומודול), ואז חבר מחדש. בדוק את נורית המודול - היא אמורה לפעום בקצב הדגימה המוגדר.
- היסט קו בסיס גדול בצמתים לא טעונים: הפעל כיול נקודת אפס בטמפרטורת החדר לפני הפגישה. אפשר לכפפה להתייצב במשך 1-2 דקות לאחר הנחתה.
- שגיאות סנכרון מסגרת / נתונים משובשים: ודא שקצב ההחזרה הוא 921600. שטף את המאגר הטורי בפתיחה:
ser.reset_input_buffer(). לְהִשְׁתַמֵשׁread_until(HEADER)באתחול לסנכרן מחדש במקום קריאה באורך קבוע. - צמתי חיישן מגיבים לאט או מרגישים "דביקים": כפוף בעדינות את הכפפה על פני כל טווח התנועה שלה מספר פעמים לפני הפגישה. בעיות מתמשכות עשויות להצביע על עייפות סיבים - צור קשר עם Juqiao Precision להחלפה.
- גשר פלטפורמה מפיל פריימים ב-200 הרץ: הפחת את קצב הדגימה ל-100 הרץ עבור הפעלות עם כפפה אחת. עבור הגדרות דו-ידניות, אצווה את שתי הכפפות לאובייקט JSON יחיד לכל סימון כדי לצמצם את ספירת ההודעות בחצי.
lsusb -v (Linux) או מנהל ההתקנים (Windows), גרסת המפרט (V2.3 או V1.0 דו לשוני), ותיאור קצר של הסימפטום.