Configuração de Software e Driver
Instale o driver USB CDC, transmita dados de pressão de 64 nós em Python, visualize mapas de calor de contato e integre com os pipelines de gravação Orca Hand.
Instale o Pacote juqiao-glove
A luva se comunica via USB CDC serial — sem módulos de kernel, sem drivers personalizados. O pacote Python envolve pyserial e lida com o protocolo de quadro binário.
Verifique a instalação:
Detectando a Porta USB
Conecte a luva via cabo USB-C de 1,5 m. O dispositivo é enumerado como uma porta serial CDC-ACM.
| OS | Nome da porta típica | Notas |
|---|---|---|
| Linux | /dev/ttyACM0 | Adicione o usuário a dialout grupo se a permissão for negada |
| macOS | /dev/tty.usbmodem* | Usar ls /dev/tty.usb* para encontrar o nome exato |
| Windows | COM3 (variável) | Verifique o Gerenciador de Dispositivos → Portas (COM e LPT) |
Detectar automaticamente a luva a partir do Python:
Ou especifique a porta explicitamente:
API de streaming Python
A luva transmite a 200 Hz. Cada quadro contém um array de pressão de 64 elementos (ADC de 16 bits, normalizado de 0.0 a 1.0) mais um timestamp.
Referência do Objeto Quadro
| Atributo | Tipo | Descrição |
|---|---|---|
| frame.timestamp | flutuante | Tempo de recebimento do lado do host (segundos, época Unix) |
| frame.pressures | np.ndarray (64,) | Pressão normalizada por nó, 0.0 (nenhum) a 1.0 (máx) |
| frame.pressures_raw | np.ndarray (64,) | Contagens brutas de ADC de 16 bits (0–65535) |
| frame.contact_mask | np.ndarray (64,) bool | Verdadeiro onde a pressão excede o limite (padrão 0.05) |
| frame.contact_nodes | Lista[você] | Índices dos nós atualmente em contato |
| frame.grasp_region | str ou Nenhum | Região heurística: "palma", "polegar", "indicador", "médio", "anel", "mínimo", Nenhum |
| quadro.sequência | int | Contador de quadros (reinicia em 65535); use para detectar quadros perdidos |
Layout do Sensor de 64 Nós
Os 64 taxéis estão dispostos como uma matriz de fibra tecida cobrindo a palma e todos os cinco segmentos dos dedos. Os índices dos nós seguem uma ordem consistente de linha principal vista dorsal.
Visualização do Mapa de Calor de Pressão
A [viz] extra instala um renderizador de mapa de calor matplotlib ao vivo útil para calibração e depuração.
Para ambientes sem interface gráfica ou revisão de dados, salve os quadros como um vídeo:
Interface ROS2
A juqiao_glove_ros2 pacote publica um customizado TactileArray mensagem a 200 Hz. Compatível com ROS2 Humble e Iron.
Inicie o nó do driver:
Tópicos publicados:
| Tópico | Tipo de mensagem | Táxons | Descrição |
|---|---|---|---|
| /juqiao_glove/tactile_array | juqiao_glove_ros2/TactileArray | 200 Hz | Matriz de pressão completa de 64 nós |
| /juqiao_glove/contact_mask | std_msgs/UInt8MultiArray | 200 Hz | Contato binário por nó (0 ou 1) |
| /juqiao_glove/grasp_region | std_msgs/String | 200 Hz | Heurística de região ativa ou string vazia |
| /juqiao_glove/status | diagnostic_msgs/DiagnosticStatus | 1 Hz | Versão do firmware, taxa de queda de quadros |
Lançamento combinado da Mão Orca + Luva
Ao usar a luva junto com a Mão Orca para gravação sincronizada:
Calibração de Base
A luva é enviada com calibração de fábrica. Recalibre se notar desvio de base (nós lendo não zero em repouso) ou após armazenamento prolongado.
Carregar calibração em tempo de execução:
Ajuste de Limite
O limite de contato padrão é 0.05 (5% da escala total). Ajuste por tarefa:
Problemas Comuns
sudo usermod -aG dialout $USER então faça logout e login novamente. Alternativamente: sudo chmod 666 /dev/ttyACM0 (reinicializa ao desconectar).dmesg | tail -20 (Linux) ou ls /dev/tty.usb* (macOS) para verificar se o sistema operacional enumerou o dispositivo. Tente uma porta USB ou cabo diferente (o conector é USB-C, mas deve ser um cabo de dados, não apenas de carga).glove.info() para confirmar se o firmware responde. Se sim, verifique se o arquivo de calibração não está subtraindo demais. Exclua ~/.juqiao_glove_cal.json e recalibre com a luva deitada plana.glove.calibrate_baseline(). Pode ocorrer após mudanças de temperatura ou armazenamento prolongado. Se a deriva > 0.4 com a luva plana, o tecido sensível pode precisar de substituição (entre em contato com o suporte da Juqiao).on_frame callback retorne rapidamente — faça processamento pesado em uma thread separada.ros2 launch juqiao_glove_ros2 glove.launch.py port:=/dev/ttyACM0. Verifique os logs do nó: ros2 node info /juqiao_glove_driver. Certifique-se de que o dialout conserto do grupo foi aplicado ao usuário que está executando o nó ROS2.