Juqiao-Handschuh-Setup-Anleitung
Kompletter Weg vom Auspacken bis hin zu Live-Druckdaten und Plattformintegration. Planen Sie insgesamt weniger als 30 Minuten ein.
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.
/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.
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.
dialout Gruppe und melden Sie sich ab und wieder an: sudo usermod -aG dialout $USER
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.
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())
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-sdkmitdevice_type: "juqiao_textile_skin". - Öffnen Sie die Plattform WebSocket unter
/api/teleop/wsund 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.
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 $USERund melden Sie sich ab/an. Überprüfen Sie mitlsusbdass das Modul aufzählt. Auf älteren Kernelnmodprobe cdc_acmkann 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(). Verwendenread_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.
lsusb -v (Linux) oder Geräte-Manager (Windows), die Spezifikationsversion (zweisprachig V2.3 oder V1.0) und eine kurze Beschreibung des Symptoms.