जुकियाओ टैक्टाइल ग्लव सेटअप गाइड

अनबॉक्सिंग से लेकर लाइव प्रेशर डेटा और प्लेटफ़ॉर्म इंटीग्रेशन तक का पूरा रास्ता। कुल 30 मिनट से कम की योजना बनाएं।

1

दस्ताने पहनें और अधिग्रहण मॉड्यूल को कनेक्ट करें

जुकियाओ दस्ताने कलाई पर एक रिबन केबल कनेक्टर के साथ बुने हुए कपड़ा दस्ताने के रूप में आता है। अधिग्रहण मॉड्यूल एक अलग छोटा पीसीबी संलग्नक है जो एनालॉग-टू-डिजिटल रूपांतरण और यूएसबी संचार को संभालता है।

  • दस्ताना पहनें जैसा कि आप एक मानक दस्ताने में करते हैं, जिसमें FPC कनेक्टर कलाई पर स्थित होता है।
  • रिबन केबल को सीट दें: दस्ताने के कलाई कनेक्टर से एफपीसी रिबन केबल को संरेखित करें और इसे अधिग्रहण मॉड्यूल के रिबन रिसेप्टेकल में मजबूती से दबाएं। एक हल्का सा क्लिक सुरक्षित सीट का संकेत देता है। यदि नोड्स शून्य रीडिंग दिखाते हैं, तो रिबन पूरी तरह से नहीं बैठा है - नीचे समस्या निवारण देखें।
  • मॉड्यूल माउंट करें: अधिग्रहण मॉड्यूल को कलाई के पट्टा या फोरआर्म माउंट पर क्लिप या वेल्क्रो करें ताकि यह टेलीऑपरेशन के दौरान कलाई की गति में हस्तक्षेप न करे।
  • यूएसबी कनेक्ट करें: आपूर्ति किए गए यूएसबी केबल का उपयोग करके अधिग्रहण मॉड्यूल को अपने होस्ट पीसी में प्लग करें।
Linux और macOS पर ड्राइवर की आवश्यकता नहीं है। अधिग्रहण मॉड्यूल USB CDC ACM सीरियल डिवाइस के रूप में प्रस्तुत होता है। लिनक्स पर इसकी गणना इस प्रकार की जाती है /dev/ttyUSB0 या /dev/ttyACM0; macOS पर जैसे /dev/tty.usbserial-*. विंडोज़ पर, यदि डिवाइस COM पोर्ट के रूप में स्वचालित रूप से गणना नहीं करता है, तो शामिल CP210x या CH340 ड्राइवर स्थापित करें।
2

पायथन एसडीके स्थापित करें (पाइसीरियल)

किसी स्वामित्व विक्रेता SDK की आवश्यकता नहीं है. अधिग्रहण मॉड्यूल एक मानक सीरियल पोर्ट पर फ़्रेमयुक्त बाइनरी पैकेट स्ट्रीम करता है - 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

आपको अधिग्रहण मॉड्यूल के कॉन्फ़िगर किए गए नमूना दर पर बाइनरी डेटा की एक धारा देखनी चाहिए। यदि टर्मिनल शांत है, तो यूएसबी कनेक्शन और मॉड्यूल एलईडी की जांच करें - इसे नमूना दर पर पल्स करना चाहिए।

लिनक्स अनुमति समस्या? यदि आपको लिनक्स पर अनुमति अस्वीकृत त्रुटि मिलती है, तो अपने उपयोगकर्ता को इसमें जोड़ें dialout समूह बनाएं और लॉग आउट करें और वापस आएं: sudo usermod -aG dialout $USER
3

पायथन फ़्रेम रीडर चलाएँ

अधिग्रहण मॉड्यूल निश्चित-लंबाई वाले बाइनरी फ़्रेम भेजता है। प्रत्येक फ्रेम 2-बाइट स्टार्ट डिलीमीटर से शुरू होता है 0xAA 0x55, इसके बाद 1-बाइट चैनल गिनती एन, एन × 2 बाइट्स बड़े-एंडियन 16-बिट दबाव मान और 2-बाइट सीआरसी16 चेकसम। कुल फ़्रेम लंबाई = 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 नोड्स को जवाब देना चाहिए। यदि कोई क्षेत्र कोई प्रतिक्रिया नहीं दिखाता है, तो ग्लव कनेक्टर और मॉड्यूल दोनों पर रिबन केबल सीटिंग की दोबारा जांच करें।

कोई हार्डवेयर नहीं? नकली मोड का प्रयोग करें. भौतिक सेंसर के बिना सॉफ़्टवेयर विकास के लिए, लूपबैक डिवाइस या मॉक स्क्रिप्ट का उपयोग करके सीरियल स्ट्रीम का अनुकरण करें जो वैध-प्रारूप फ़्रेम उत्सर्जित करता है। प्लेटफ़ॉर्म ब्रिज स्रोत की परवाह किए बिना समान JSONL प्रारूप को स्वीकार करता है।
4

शून्य-बिंदु अंशांकन

फैब्रिक सेंसर तापमान भिन्नता और बार-बार संपीड़न से बेसलाइन ऑफसेट के अधीन हैं। सटीक रीडिंग के लिए प्रत्येक सत्र की शुरुआत में अंशांकन करें।

  • दस्ताने को आराम दें बिना किसी दबाव के सपाट सतह पर - अंशांकन के दौरान इसे तब तक न पहनें जब तक कि आप अपना हाथ पूरी तरह से स्थिर और आराम से न पकड़ सकें।
  • खिड़कियाँ: Juqiao कॉन्फ़िगरेशन टूल खोलें, अपना COM पोर्ट चुनें, क्लिक करें जोड़ना, फिर नेविगेट करें कैलिब्रेट → शून्य. सभी नोड बेसलाइन वर्तमान विश्राम मानों पर सेट हैं।
  • लिनक्स/मैकओएस: V2.3 प्रोटोकॉल दस्तावेज़ के अनुसार सॉफ़्टवेयर शून्य कमांड भेजें, या अपनी पायथन ब्रिज स्क्रिप्ट में बेसलाइन घटाव लागू करें (आराम पर 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())
यदि दस्ताना गर्म हो जाए तो पुन: अंशांकन करें। कैलिब्रेट करने से पहले ऑपरेटिंग तापमान पर 1-2 मिनट वार्म-अप की अनुमति दें। लंबे रिकॉर्डिंग सत्र (> 30 मिनट) के लिए, एपिसोड के बीच एक ताज़ा अंशांकन चलाएँ।
5

प्लेटफार्म एकीकरण - निडर प्लेटफार्म

निडर मंच पर platform.roboticscenter.ai टेलीऑपरेशन सत्र में एक स्पर्श नोड के रूप में जुकियाओ सेंसर का समर्थन करता है। दबाव फ़्रेम को रोबोट संयुक्त स्थिति, कैमरा स्ट्रीम और अन्य सेंसर तौर-तरीकों के साथ समकालिक रूप से रिकॉर्ड किया जाता है।

पंजीकरण क्रम:

  • के माध्यम से एक टेलिओप सत्र प्रारंभ करें 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

टेलीमेट्री फ्रेम प्रारूप वेबसॉकेट प्लेटफॉर्म पर भेजा गया:

{
  "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 के साथ युग्मित करना: एक विशिष्ट टेलीऑपरेशन सेटअप में, होस्ट पीसी पर तीन अलग-अलग प्रक्रियाएं चलती हैं और प्रत्येक एक ही सत्र आईडी के साथ पंजीकृत होती है - रोबोट आर्म कंट्रोल ब्रिज, जुकियाओ सीरियल ब्रिज, और कलाई और दृश्य दृश्यों के लिए कैमरा ब्रिज। प्लेटफ़ॉर्म का उपयोग करके सभी स्ट्रीम को समय-संरेखित किया जाता है ts प्रति प्रदर्शन एक एकल एपिसोड JSONL फ़ाइल को फ़ील्ड और संग्रहीत करता है। प्लेबैक के दौरान, ग्लोववर्कबेंच पैनल हाथ के संयुक्त प्रक्षेपवक्र के साथ स्पर्श दबाव हीटमैप प्रस्तुत करता है।

द्वि-मैन्युअल सेटअप. द्वि-मैनुअल टेलीऑपरेशन के लिए, अलग-अलग का उपयोग करके दो ग्लव नोड्स पंजीकृत करें member_id मूल्य - juqiao-glove-right और juqiao-glove-left. प्रत्येक दस्ताने का अपना अधिग्रहण मॉड्यूल और यूएसबी कनेक्शन होता है। प्लेटफ़ॉर्म संदेश संख्या को 200 हर्ट्ज़ पर आधा करने के लिए दोनों दस्तानों को प्रति टिक एक JSON ऑब्जेक्ट में बैचें।

सत्र निर्माण, वेबसॉकेट हैंडशेक और एपिसोड डाउनलोड को कवर करने वाले पूर्ण एपीआई संदर्भ के लिए, देखें प्लेटफ़ॉर्म एसडीके एपीआई संदर्भ.

!

समस्या निवारण

  • Linux पर कोई सीरियल डिवाइस नहीं: दौड़ना sudo usermod -aG dialout $USER और लॉग आउट/इन करें। के साथ सत्यापित करें lsusb मॉड्यूल गणना करता है। पुरानी गुठलियों पर, modprobe cdc_acm आवश्यकता हो सकती है.
  • सभी दबाव रीडिंग शून्य हैं: यूएसबी को डिस्कनेक्ट करें, एफपीसी रिबन को दोनों सिरों (दस्ताना कनेक्टर और मॉड्यूल) पर दोबारा लगाएं, फिर दोबारा कनेक्ट करें। मॉड्यूल एलईडी की जांच करें - इसे कॉन्फ़िगर किए गए नमूना दर पर पल्स करना चाहिए।
  • अनलोड किए गए नोड्स पर बड़ी बेसलाइन ऑफसेट: सत्र से पहले कमरे के तापमान पर शून्य-बिंदु अंशांकन चलाएँ। दस्ताने को पहनने के बाद 1-2 मिनट तक स्थिर रहने दें।
  • फ़्रेम सिंक त्रुटियाँ / विकृत डेटा: पुष्टि करें कि बॉड दर 921600 है। सीरियल बफ़र को खोलकर फ्लश करें: ser.reset_input_buffer(). उपयोग read_until(HEADER) स्टार्टअप पर निश्चित-लंबाई पढ़ने के बजाय पुन: सिंक करने के लिए।
  • सेंसर नोड्स धीरे-धीरे प्रतिक्रिया करते हैं या "चिपचिपा" महसूस करते हैं: सत्र से पहले दस्ताने को उसकी गति की पूरी श्रृंखला में कई बार धीरे से मोड़ें। लगातार समस्याएँ फाइबर की थकान का संकेत दे सकती हैं - प्रतिस्थापन के लिए जुकियाओ प्रिसिजन से संपर्क करें।
  • प्लेटफ़ॉर्म ब्रिज 200 हर्ट्ज़ पर फ़्रेम गिराता है: एकल-दस्ताने सत्रों के लिए नमूना दर को 100 हर्ट्ज तक कम करें। द्वि-मैन्युअल सेटअप के लिए, संदेश संख्या को आधा करने के लिए दोनों दस्तानों को प्रति टिक एक JSON ऑब्जेक्ट में बैच करें।
अभी भी अटके हुए हैं? संपर्क एसवीआरसी समर्थन और अपने ओएस और पायथन संस्करण का आउटपुट शामिल करें lsusb -v (लिनक्स) या डिवाइस मैनेजर (विंडोज़), विशिष्ट संस्करण (V2.3 या V1.0 द्विभाषी), और लक्षण का संक्षिप्त विवरण।

सेटअप पूरा हो गया?

संपूर्ण विशिष्टताओं की जाँच करें या एपिसोड की रिकॉर्डिंग शुरू करने के लिए प्लेटफ़ॉर्म खोलें।