Configuración de Software y Controlador
Instalar el controlador USB CDC, transmitir datos de presión de 64 nodos en Python, visualizar mapas de calor de contacto e integrar con los pipelines de grabación de Orca Hand.
Instalar el paquete juqiao-glove
El guante se comunica a través de USB CDC serial — sin módulos del kernel, sin controladores personalizados. El paquete de Python envuelve pyserial y maneja el protocolo de marco binario.
Verifica la instalación:
Detectando el puerto USB
Conecta el guante a través del cable USB-C de 1.5 m. El dispositivo se enumera como un puerto serie CDC-ACM.
| OS | Nombre de puerto típico | Notas |
|---|---|---|
| Linux | /dev/ttyACM0 | Agregar usuario a dialout grupo si se deniega el permiso |
| macOS | /dev/tty.usbmodem* | para usar ls /dev/tty.usb* para encontrar el nombre exacto |
| Windows | COM3 (varía) | Verifica el Administrador de dispositivos → Puertos (COM y LPT) |
Detección automática del guante desde Python:
O especifica el puerto explícitamente:
API de transmisión de Python
El guante transmite a 200 Hz. Cada cuadro contiene un arreglo de presión de 64 elementos (ADC de 16 bits, normalizado de 0.0 a 1.0) más una marca de tiempo.
Referencia del Objeto Cuadro
| Atributo | Tipo | Descripción |
|---|---|---|
| marco.marca de tiempo | flotante | Tiempo de recepción del lado del host (segundos, época Unix) |
| marco.presiones | np.ndarray (64,) | Presión normalizada por nodo, 0.0 (ninguna) a 1.0 (máx) |
| marco.presiones_raw | np.ndarray (64,) | Cuentas ADC crudas de 16 bits (0–65535) |
| marco.contact_mask | np.ndarray (64,) bool | Verdadero donde la presión excede el umbral (por defecto 0.05) |
| marco.contact_nodes | Lista [usted] | Índices de nodos actualmente en contacto |
| marco.grasp_region | str o Ninguno | Región heurística: "palma", "pulgar", "índice", "medio", "Cancelar", "meñique", Ninguno |
| marco.secuencia | int | Contador de marcos (se reinicia en 65535); usar para detectar marcos perdidos |
Diseño del sensor de 64 nodos
Los 64 taxeles están dispuestos como una matriz de fibra tejida que cubre la palma y los cinco segmentos de los dedos. Los índices de los nodos siguen un orden consistente de fila mayor en vista dorsal.
Visualización del mapa de calor de presión
La [viz] extra instala un renderizador de mapa de calor en vivo de matplotlib útil para calibración y depuración.
Para entornos sin cabeza o revisión de datos, guarda los fotogramas como un video:
Interfaz ROS2
La juqiao_glove_ros2 el paquete publica un TactileArray mensaje a 200 Hz. Compatible con ROS2 Humble e Iron.
Inicie el nodo del controlador:
Temas publicados:
| Él | Tipo de mensaje | Frecuencia | Descripción |
|---|---|---|---|
| /juqiao_glove/tactile_array | juqiao_glove_ros2/TactileArray | 200 Hz | Matriz de presión completa de 64 nodos |
| /juqiao_glove/contact_mask | std_msgs/UInt8MultiArray | 200 Hz | Contacto binario por nodo (0 o 1) |
| /juqiao_glove/grasp_region | std_msgs/String | 200 Hz | Heurística de región activa o cadena vacía |
| /juqiao_glove/status | diagnostic_msgs/DiagnosticStatus | 1 Hz | Versión del firmware, tasa de caída de fotogramas |
Lanzamiento combinado de la mano Orca + guante
Al usar el guante junto con la mano Orca para grabación sincronizada:
Calibración de referencia
El guante se envía con calibración de fábrica. Recalibre si nota deriva de referencia (nodos leyendo valores no cero en reposo) o después de un almacenamiento prolongado.
Cargar calibración en tiempo de ejecución:
Ajuste de umbral
El umbral de contacto predeterminado es 0.05 (5% de la escala completa). Ajuste según la tarea:
Problemas Comunes
sudo usermod -aG dialout $USER luego cierra sesión y vuelve a iniciar. Alternativamente: sudo chmod 666 /dev/ttyACM0 (se reinicia al desconectar).dmesg | tail -20 (Linux) o ls /dev/tty.usb* (macOS) para verificar que el sistema operativo enumeró el dispositivo. Prueba un puerto USB o cable diferente (el conector es USB-C pero debe ser un cable de datos, no solo de carga).glove.info() para confirmar que el firmware responde. Si lo hace, verifica que el archivo de calibración no esté restando en exceso. Elimina ~/.juqiao_glove_cal.json y recalibra con el guante plano.glove.calibrate_baseline(). Puede ocurrir después de cambios de temperatura o almacenamiento prolongado. Si la deriva > 0.4 con el guante plano, el tejido sensorial puede necesitar reemplazo (contacta al soporte de Juqiao).on_frame callback regrese rápidamente — realiza el procesamiento pesado en un hilo separado.ros2 launch juqiao_glove_ros2 glove.launch.py port:=/dev/ttyACM0. Verificar los registros del nodo: ros2 node info /juqiao_glove_driver. Asegurarse de que dialout se aplicó la corrección del grupo al usuario que ejecuta el nodo ROS2.