Juqiao-Handschuh-Setup-Anleitung

Kompletter Weg vom Auspacken bis hin zu Live-Druckdaten und Plattformintegration. Planen Sie insgesamt weniger als 30 Minuten ein.

1

Tragen Sie den Handschuh und schließen Sie das Erfassungsmodul an

Der Juqiao-Handschuh wird als gewebter Textilhandschuh mit einem Flachbandkabelanschluss am Handgelenk geliefert. Das Erfassungsmodul ist ein separates kleines PCB-Gehäuse, das die Analog-Digital-Umwandlung und die USB-Kommunikation übernimmt.

  • Tragen Sie den Handschuh wie bei einem Standardhandschuh, wobei der FPC-Anschluss am Handgelenk positioniert ist.
  • Legen Sie das Flachbandkabel ein: Richten Sie das FPC-Flachbandkabel am Handgelenksanschluss des Handschuhs aus und drücken Sie es fest in die Flachbandaufnahme des Erfassungsmoduls. Ein leises Klicken zeigt einen sicheren Sitz an. Wenn Knoten Nullwerte anzeigen, ist das Farbband nicht vollständig eingesetzt – siehe Fehlerbehebung unten.
  • Montieren Sie das Modul: Befestigen Sie das Erfassungsmodul mit einem Klettverschluss an einem Handgelenkband oder einer Unterarmhalterung, damit es die Bewegung des Handgelenks während der Teleoperation nicht beeinträchtigt.
  • USB anschließen: Schließen Sie das Erfassungsmodul mit dem mitgelieferten USB-Kabel an Ihren Host-PC an.
Unter Linux und macOS ist kein Treiber erforderlich. Das Erfassungsmodul präsentiert sich als serielles USB-CDC-ACM-Gerät. Unter Linux wird es wie folgt aufgelistet /dev/ttyUSB0 oder /dev/ttyACM0; auf macOS als /dev/tty.usbserial-*. Installieren Sie unter Windows den mitgelieferten CP210x- oder CH340-Treiber, wenn das Gerät nicht automatisch als COM-Port aufgeführt wird.
2

Installieren Sie das Python SDK (pyserial)

Es ist kein proprietäres Anbieter-SDK erforderlich. Das Erfassungsmodul streamt gerahmte Binärpakete über einen standardmäßigen seriellen Port – pyserial ist die einzige Abhängigkeit.

Pyserial installieren:

pip install pyserial

Stellen Sie sicher, dass der serielle Port sichtbar ist:

# Linux
ls /dev/ttyUSB* /dev/ttyACM*

# macOS
ls /dev/tty.usbserial-*

# Or use pyserial's port listing tool
python -m serial.tools.list_ports

Live-Streaming bestätigen (Sanity Check):

# Replace /dev/ttyUSB0 with your port; 921600 is the default baud rate
python -m serial.tools.miniterm /dev/ttyUSB0 921600

Sie sollten einen Binärdatenstrom mit der konfigurierten Abtastrate des Erfassungsmoduls sehen. Wenn das Terminal stumm ist, überprüfen Sie die USB-Verbindung und die Modul-LED – sie sollte mit der Abtastrate pulsieren.

Problem mit Linux-Berechtigungen? Wenn unter Linux die Fehlermeldung „Berechtigung verweigert“ angezeigt wird, fügen Sie Ihren Benutzer hinzu dialout Gruppe und melden Sie sich ab und wieder an: sudo usermod -aG dialout $USER
3

Führen Sie den Python Frame Reader aus

Das Erfassungsmodul sendet Binärrahmen fester Länge. Jeder Frame beginnt mit einem 2-Byte-Starttrennzeichen 0xAA 0x55, gefolgt von einer 1-Byte-Kanalanzahl N, N × 2 Bytes Big-Endian-16-Bit-Druckwerten und einer 2-Byte-CRC16-Prüfsumme. Gesamtrahmenlänge = 5 + 2N Bytes.

Basic Frame Reader – druckt eine Liste der Druckwerte pro Frame:

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

Drücken Sie verschiedene Teile des Handschuhs zusammen und überprüfen Sie, ob die Knotenwerte steigen und fallen. Alle 64 Knoten sollten antworten. Wenn in einem Bereich keine Reaktion erfolgt, überprüfen Sie den Sitz des Flachbandkabels sowohl am Handschuhanschluss als auch am Modul erneut.

Keine Hardware? Verwenden Sie den Mock-Modus. Für die Softwareentwicklung ohne den physischen Sensor simulieren Sie den seriellen Stream mithilfe eines Loopback-Geräts oder eines Scheinskripts, das Frames im gültigen Format ausgibt. Die Plattformbrücke akzeptiert unabhängig von der Quelle dasselbe JSONL-Format.
4

Nullpunktkalibrierung

Stoffsensoren unterliegen einem Grundlinienversatz durch Temperaturschwankungen und wiederholte Kompression. Führen Sie zu Beginn jeder Sitzung eine Kalibrierung durch, um genaue Messwerte zu erhalten.

  • Entspannen Sie den Handschuh auf einer ebenen Fläche ohne Druck – tragen Sie es während der Kalibrierung nicht, es sei denn, Sie können Ihre Hand völlig ruhig und entspannt halten.
  • Windows: Öffnen Sie das Juqiao-Konfigurationstool, wählen Sie Ihren COM-Port aus und klicken Sie Verbinden, und navigieren Sie dann zu Kalibrieren → Null. Alle Knotenbasislinien werden auf die aktuellen Ruhewerte gesetzt.
  • Linux / macOS: Senden Sie den Software-Zero-Befehl gemäß dem V2.3-Protokolldokument oder wenden Sie eine Basisliniensubtraktion in Ihrem Python-Bridge-Skript an (erfassen Sie 50 ruhende Frames und subtrahieren Sie den Mittelwert pro Kanal).
# 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())
Wenn sich der Handschuh erwärmt, führen Sie eine Neukalibrierung durch. Vor der Kalibrierung 1–2 Minuten auf Betriebstemperatur aufwärmen lassen. Führen Sie bei langen Aufnahmesitzungen (> 30 Minuten) zwischen den Episoden eine neue Kalibrierung durch.
5

Plattformintegration – Furchtlose Plattform

Die furchtlose Plattform unter platform.roboticscenter.ai unterstützt den Juqiao-Sensor als taktilen Knoten in einer Teleoperationssitzung. Druckbilder werden synchron zusammen mit den Gelenkzuständen des Roboters, Kameraströmen und anderen Sensormodalitäten aufgezeichnet.

Anmeldereihenfolge:

  • Starten Sie eine Teleop-Sitzung über POST /api/teleop/sessions/create-sdk mit device_type: "juqiao_textile_skin".
  • Öffnen Sie die Plattform WebSocket unter /api/teleop/ws und senden Sie den Registrierungs-Handshake: role: "operator", device_type: "tactile_sensor", capabilities: ["tactile", "pressure_array", "telemetry"].
  • Beim Empfang type: "ready", beginnen Sie mit der Weiterleitung von JSONL-Telemetrierahmen vom seriellen Lesegerät.

JSONL-Emitter für die Plattformbrücke:

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

Telemetrie-Frame-Format, das an die Plattform WebSocket gesendet wird:

{
  "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
}

Kopplung mit OpenArm oder DK1: In einem typischen Teleoperationsaufbau laufen drei separate Prozesse auf dem Host-PC und registrieren sich jeweils mit derselben Sitzungs-ID – die Roboterarm-Steuerbrücke, die serielle Juqiao-Brücke und Kamerabrücken für Handgelenk- und Szenenansichten. Die Plattform richtet alle Streams mithilfe des zeitlich aus ts Feld und archiviert eine einzelne Episoden-JSONL-Datei pro Demonstration. Während der Wiedergabe rendert das GloveWorkbench-Bedienfeld die Heatmap des taktilen Drucks entlang der Gelenkbahn des Arms.

Bimanuelle Einrichtung. Für die bimanuelle Teleoperation registrieren Sie zwei Handschuhknoten mithilfe von „Distinct“. member_id Werte - juqiao-glove-right Und juqiao-glove-left. Jeder Handschuh verfügt über ein eigenes Erfassungsmodul und einen USB-Anschluss. Fassen Sie beide Handschuhe pro Tick zu einem einzigen JSON-Objekt zusammen, um die Anzahl der Plattformnachrichten bei 200 Hz zu halbieren.

Eine vollständige API-Referenz zu Sitzungserstellung, WebSocket-Handshake und Episoden-Download finden Sie unter Plattform-SDK-API-Referenz.

!

Fehlerbehebung

  • Kein serielles Gerät unter Linux: Laufen sudo usermod -aG dialout $USER und melden Sie sich ab/an. Überprüfen Sie mit lsusb dass das Modul aufzählt. Auf älteren Kerneln modprobe cdc_acm kann erforderlich sein.
  • Alle Druckwerte sind Null: Trennen Sie den USB-Anschluss, setzen Sie das FPC-Band an beiden Enden (Handschuhstecker und Modul) wieder ein und schließen Sie es dann wieder an. Überprüfen Sie die Modul-LED – sie sollte mit der konfigurierten Abtastrate pulsieren.
  • Großer Basislinienversatz auf unbelasteten Knoten: Führen Sie vor der Sitzung eine Nullpunktkalibrierung bei Raumtemperatur durch. Lassen Sie den Handschuh nach dem Anziehen 1–2 Minuten lang stabilisieren.
  • Frame-Synchronisierungsfehler / verstümmelte Daten: Bestätigen Sie, dass die Baudrate 921600 beträgt. Leeren Sie den seriellen Puffer beim Öffnen: ser.reset_input_buffer(). Verwenden read_until(HEADER) beim Start zur Neusynchronisierung anstelle von Lesevorgängen mit fester Länge.
  • Sensorknoten reagieren langsam oder fühlen sich „klebrig“ an: Beugen Sie den Handschuh vor einer Sitzung mehrmals sanft über den gesamten Bewegungsbereich. Anhaltende Probleme können auf eine Faserermüdung hinweisen. Wenden Sie sich zwecks Ersatz an Juqiao Precision.
  • Plattformbrücke lässt Frames bei 200 Hz fallen: Reduzieren Sie die Abtastrate für Sitzungen mit nur einem Handschuh auf 100 Hz. Bei bimanuellen Setups bündeln Sie beide Handschuhe pro Tick in einem einzigen JSON-Objekt, um die Nachrichtenanzahl zu halbieren.
Stecken Sie immer noch fest? Kontakt SVRC-Unterstützung und geben Sie Ihr Betriebssystem und Ihre Python-Version an, die Ausgabe von lsusb -v (Linux) oder Geräte-Manager (Windows), die Spezifikationsversion (zweisprachig V2.3 oder V1.0) und eine kurze Beschreibung des Symptoms.

Einrichtung abgeschlossen?

Sehen Sie sich die vollständigen Spezifikationen an oder öffnen Sie die Plattform, um mit der Aufnahme von Episoden zu beginnen.