Mano de teleoperación
Especificaciones de la mano Wuji
Especificaciones técnicas completas para la mano hábil Wuji: sensores, formato de transmisión JSONL y parámetros del agente de la plataforma.
Mecánica y Sensado
| Dedos | 5 — pulgar, índice, medio, anular, meñique |
| Articulaciones por dedo | 4 |
| Posiciones totales de las articulaciones | 20 (matriz 5×4, flotante, radianes) |
| Mapa de presión táctil | 24 filas × 32 columnas (768 valores, flotante [0, 1]) |
| Canales IMU | 6 ejes (acelerómetro de 3 ejes + giroscopio de 3 ejes), hasta 16 ranuras en la transmisión |
| Canal EMF | Flexión por dedo + guiñada de la parte posterior de la mano (dictado por el nombre del dedo) |
| Lados de la mano | Izquierda, derecha o detectada automáticamente desde el primer marco |
Interfaz y SDK
| ID de vendedor USB | 0x0483 (predeterminado; pase --usb-vid para anular) |
| Paquete SDK | wujihandpy (Python) |
| instalar | pip install wujihandpy numpy |
| Aplicación de estudio | Wuji Studio v0.7.0 (Linux amd64 .deb / .tar.gz / .zip) |
| Script de transmisión | wuji_hand_sdk_stream.py (emite JSONL como salida estándar) |
| Módulo de agente | wuji_glove_agent.py (puente de plataforma a través de WebSocket) |
| Transmisión simulada | mock_wuji_stream.py (JSONL sintético, no se necesita hardware) |
Parámetros de transmisión y agente
| Frecuencia de transmisión predeterminada | 30 Hz (configurable con --hz) |
| Formato de transmisión | JSONL — un objeto JSON por línea a stdout |
| Tipo de dispositivo de la plataforma | wuji_hand |
| Módulo de agente | wuji_glove_agent |
| URL de WebSocket de backend | ws://127.0.0.1:8000 (predeterminado; anular con --backend) |
| Frecuencia de telemetría | 30 Hz (configurable con --telemetría-hz) |
| Política de reconexión | Retroceso exponencial: 1 s mínimo, 10 s máximo |
Campos de marco JSONL (por marco)
| campo | Tipo | Forma / Rango | Descripción |
|---|---|---|---|
| ts | flotante | Segundos Unix | Marca de tiempo (time.time()) |
| lado_de_la_mano | str | "izquierda" | "derecha" | A qué mano pertenece este marco |
| dobles | diccionario | 5 claves, [0, 1] | Doblado normalizado por dedo (pulgar, índice, medio, anular, meñique) |
| posición_actual_de_la_articulación_5x4 | lista[lista[flotante]] | 5×4, radianes | Posiciones de las articulaciones en bruto de wujihandpy, 5 dedos × 4 articulaciones |
| mapa_de_presión_24x32 | lista[lista[flotante]] | 24×32, [0, 1] | Distribución de presión táctil en la superficie de la mano |
| imu | Lista [flotadora] | hasta 16 valores | IMU de 6 ejes: [ax, ay, az, gx, gy, gz, ...] (slots restantes en cero) |
| emf | diccionario | por_dedo + dorso_de_la_mano | Lecturas del sensor EMF; cada entrada es un float o un dict con las claves "doblar"/"ángulo" |
La bends los valores se derivan de joint_actual_position_5x4 promediando los 4 ángulos de las articulaciones por dedo y normalizando del rango [0, π/2] a [0, 1].
wuji_glove_agent.py — Banderas clave
| Bandera | Predeterminado | Descripción |
|---|---|---|
| --backend | ws://127.0.0.1:8000 | URL base de WebSocket de plataforma |
| --session | (requerido) | ID de sesión de Teleop de la plataforma |
| --node-id | wuji-glove-node | Identificador para este nodo de dispositivo en la sesión |
| --guante | automático | Lado de la mano: izquierda, derecha o automático (leído del primer marco) |
| --tipo-de-dispositivo | wuji_hand | Tipo de dispositivo registrado con la plataforma |
| --telemetry-hz | 30.0 | Tasa de reenvío de telemetría a la plataforma |
| --wuji-cmd | python3 wuji_hand_sdk_stream.py --hand-side right --hz 30 | Comando de Shell que genera puntos de referencia JSONL en la salida estándar |
| --reconectar-min-s | 1.0 | Tiempo mínimo de retroceso para reconectar (segundos) |
| --reconectar-max-s | 10.0 | Tiempo máximo de reconexión (segundos) |