El algoritmo de reconocimiento de gestos de deslizamiento y toque dentro del firmware del lápiz de lectura B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6, con puntuación de plantillas, ajuste de umbrales y criterios de aceptación OEM.

Publicado el: jul. 13, 2023 - 96 Vistas

Algoritmo de Reconocimiento de Gestos del Lápiz de Lectura: Cómo los Deslizamientos y Toques se Convierten en Comandos de Interfaz

Audiencia:Este artículo es para ingenieros de firmware, diseñadores de UX y gerentes de productos OEM que necesitan entender el algoritmo de reconocimiento de gestos que se ejecuta en los bolígrafos de lectura B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6. Asumimos que está diseñando una IU de menú personalizada o evaluando cómo agregar gestos a una aplicación de diccionario existente, y necesita saber qué tasa de reconocimiento, latencia y carga de CPU esperar.

Un gesto del bolígrafo de lectura es una secuencia de muestras táctiles capturadas durante 30 ms a 500 ms. El firmware convierte esas muestras en un código de gesto discreto (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) que la capa de aplicación asigna a una acción de IU. La conversión es lo suficientemente pequeña para ejecutarse en cualquiera de los 11 modelos pero ajustada de manera diferente por modelo porque la resolución del sensor, la tasa de muestreo y el presupuesto de CPU host varían. Este artículo cubre el algoritmo, los números de ajuste y los modos de falla que los compradores deben planificar.

1. El Vocabulario de Gestos

En los 11 modelos que enviamos, el vocabulario de gestos es consistente:

Gesto Ventana de muestra Utilizado en
TAP 30 ms a 250 ms toque + liberación Los 11 modelos (vía sustituto de botón en modelos de zona)
LONG_PRESS 600 ms a 2000 ms toque continuo K7, KF1, L5, Q8, T2
DOUBLE_TAP Dos toques en 300 ms L5, Q8, T2
SWIPE_LEFT \/ RIGHT 50 ms a 250 ms arrastre continuo, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP \/ DOWN Igual, dirección vertical L5, Q8, T2 (solo)
CIRCLE Trayectoria de bucle cerrado, circunferencia ≥ 12 mm Q8, T2 (característica premium)

Los modelos de zona simple (B1, B2, F8, P2, Q6, Y6) no ejecutan gestos en absoluto porque no tienen sensor táctil 2D. Sustituyen 4 a 8 zonas de botón discretas. Este artículo se centra en los modelos de matriz.

2. La Pipeline del Algoritmo

El algoritmo de reconocimiento de gestos se ejecuta en cuatro etapas. Cada etapa tiene un presupuesto de CPU estricto; si alguna etapa supera su presupuesto, el gesto se descarta (no se emite comando) en lugar de ser mal reconocido.

Etapa 1: Adquisición de muestra. El controlador táctil informa coordenadas a 80 Hz a 120 Hz. El MCU host los lee a través de I2C a 100 kHz a 400 kHz en K7\/KF1\/L5, y a través de SPI a 10 MHz en Q8\/T2. Cada muestra es una tupla (x, y, t).

Etapa 2: Rebote y rechazo de valores atípicos. Dos muestras dentro de 4 mm y 20 ms se fusionan en una. Una muestra que se desvía más de 12 mm del centroide se descarta como un valor atípico. Esta etapa toma 0.4 ms por muestra en el L5.

Etapa 3: Extracción de características. Del flujo de muestras limpiadas calculamos 7 características: desplazamiento total, longitud total de la trayectoria, velocidad media, velocidad máxima, ángulo de dirección dominante, curvatura y duración. Estas son las entradas al clasificador.

Etapa 4: Clasificación. Usamos un marcador de coincidencia de plantilla para los 6 swipes direccionales y una máquina de estados para los gestos basados en tiempo (TAP, LONG_PRESS, DOUBLE_TAP). La máquina de estados y el coincidencia de plantilla juntos consumen 1.6 ms por gesto en el L5.

Presupuesto total por gesto en el L5: 0.4 + 1.6 + clasificador de etapa 4 = 2.4 ms, más sobrecarga de manejo de interrupciones, deja un margen de 6 ms antes de que se supere el presupuesto inter-trama de 8.3 ms.

3. El Coincidencia de Plantilla para Swipes

Cada uno de los 6 swipes direccionales (izquierda, derecha, arriba, abajo, más las dos diagonales en T2) tiene una plantilla. La plantilla es una polilínea de 16 puntos de la trayectoria de muestra esperada, normalizada a una longitud de 12 mm y centrada en el origen. Durante el reconocimiento, normalizamos el flujo de muestra de entrada de la misma manera (traducir centroide al origen, escalar a 12 mm, remuestrear a 16 puntos) y calculamos la distancia euclidiana media entre entrada y plantilla en cada punto.

La puntuación de coincidencia es 1 - (distancia_media \/ 12). Una puntuación de 1.0 es una coincidencia perfecta; una puntuación de 0.0 es ortogonal. El clasificador devuelve la plantilla con mayor puntuación, siempre que esa puntuación supere 0.78. Cualquier cosa por debajo de 0.78 se clasifica como "desconocido" y se ignora.

El umbral 0.78 se ajustó en un conjunto de datos de 1,200 gestos recopilados de 30 niños de 4 a 9 años en nuestras dos instalaciones. Medimos una tasa de verdaderos positivos de 96.4% y una tasa de falsos positivos de 0.6% en el L5 con este umbral. Ajustar a 0.82 reduce los falsos positivos a 0.2% pero reduce los verdaderos positivos a 91.7%; aflojar a 0.72 aumenta los falsos positivos a 2.4% y los verdaderos positivos a 98.6%.


Gesture Template Matcher — Score Distribution (Q8, 1,200-Gesture Test Set)

4. La Máquina de Estados para Gestos Basados en Tiempo

TAP, LONG_PRESS y DOUBLE_TAP dependen del tiempo y no se pueden clasificar solo por la forma de la muestra. Usamos una máquina de estados finita con 5 estados:

  • IDLE: sin contacto presente.
  • TOUCH_DOWN: primera muestra recibida, transición a PRESS.
  • PRESS: contacto sostenido, iniciar temporizador de presión larga.
  • RELEASE: contacto liberado, evaluar TAP vs LONG_PRESS vs DOUBLE_TAP.
  • WAIT_DOUBLE: liberado, esperando hasta 300 ms para un segundo toque.

Las transiciones se rigen por 4 umbrales:

  • LONG_PRESS_TIME: 600 ms (configurable 400 a 2000 ms).
  • DOUBLE_TAP_GAP: 300 ms.
  • TAP_MAX_DURATION: 250 ms.
  • TAP_MAX_DISPLACEMENT: 4 mm.

La máquina de estados se implementa como un interruptor en el ISR táctil, tomando 0.06 ms por transición en el L5. La latencia total de reconocimiento para un TAP es la duración del toque más un intervalo inter-muestra, que es de 280 ms a 320 ms en el peor caso pero típicamente de 130 ms a 180 ms.

5. Costo de CPU y Memoria

La pipeline completa de gestos (coincidencia de plantilla + máquina de estados + extracción de características) en el L5 consume 1.9 MIPS de CPU a una tasa de gestos de 3 gestos por segundo. El SoC host del L5 tiene 240 MIPS de margen después de audio y OCR, por lo que el motor de gestos es esencialmente gratuito.

El costo de memoria es de 4.2 KB de código (en flash) y 1.1 KB de RAM de trabajo (para la plantilla de 16 puntos y el búfer de muestras). En el K7 y KF1, la misma pipeline cuesta 5.1 KB de código y 1.4 KB de RAM porque el MCU de menor categoría compila las plantillas con menos optimización.

El Q8 y T2 añaden un clasificador de gestos CIRCLE usando un bucle similar a la transformada de Hough de 24 puntos. Esto añade 3.4 KB de código y 0.8 KB de RAM, y funciona a 4.1 MIPS durante la clasificación. CIRCLE es una característica premium y está deshabilitada por defecto en el Q8 y solo habilitada en el T2 a menos que el comprador OEM lo solicite en el Q8.

6. Latencia: De Toque a Acción y De Swipe a Acción

Latencia de extremo a extremo desde la finalización del gesto físico hasta la emisión de la acción del host:

Gesto L5 \/ Q8 \/ T2 K7 \/ KF1
TAP 130 ms a 180 ms 180 ms a 240 ms
LONG_PRESS 620 ms a 720 ms 700 ms a 820 ms
DOUBLE_TAP 320 ms a 420 ms 400 ms a 520 ms
SWIPE (cualquier dirección) 55 ms a 65 ms 75 ms a 95 ms
CIRCLE 80 ms a 110 ms (solo T2) n/d

Estos números incluyen la tasa de informe del controlador táctil, el tiempo de transferencia I2C/SPI, la ejecución del algoritmo y el tiempo de respuesta de la aplicación host.

7. Ajuste para diferentes poblaciones de usuarios

Los umbrales predeterminados están calibrados para niños de 4 a 9 años. Para usuarios adultos (maestros, padres), los gestos son más grandes y rápidos, lo que en realidad mejora la precisión de reconocimiento al 98,5% de verdaderos positivos con el mismo umbral. Para niños menores de 4 años, el comprador OEM puede solicitar un perfil de gestos más suave mediante configuración de firmware:

  • LONG_PRESS_TIME aumentado de 600 ms a 900 ms.
  • TAP_MAX_DISPLACEMENT aumentado de 4 mm a 6 mm.
  • SWIPE_MIN_DISPLACEMENT reducido de 8 mm a 5 mm.

Este perfil se llama KIDS_PROFILE_V1 y está disponible en los 11 modelos mediante un indicador de compilación de firmware. Un programa OEM dirigido al grupo de edad de 2 a 4 años debe solicitar este perfil.

8. Prueba de aceptación para compradores OEM

Recomendamos la siguiente suite de 5 pruebas de aceptación para el reconocimiento de gestos:

  1. Tasa de reconocimiento de SWIPE_LEFT ≥ 96% en 100 pruebas realizadas por 3 probadores diferentes.
  2. Tasa de reconocimiento de SWIPE_RIGHT ≥ 96% en 100 pruebas.
  3. Tasa de falsos positivos de TAP ≤ 1% durante 1.000 segundos sin contacto.
  4. Latencia de reconocimiento de LONG_PRESS entre 600 y 800 ms.
  5. Tasa de reconocimiento de DOUBLE_TAP ≥ 92% en 100 pruebas.

Los probadores deben pertenecer al grupo de edad objetivo. Una muestra probada solo por ingenieros adultos informará una precisión inflada porque los gestos adultos son más consistentes. Nuestra validación interna utiliza 30 niños de 4 a 9 años más 10 adultos, y la tasa publicada del 96,4% de verdaderos positivos es la cifra correspondiente solo a niños.

9. Modos comunes de fallo

En programas OEM hemos observado los siguientes fallos de integración de gestos:

  1. La aplicación host sondea los gestos en un bucle de 50 ms en lugar de usar interrupciones, añadiendo 50 ms de latencia. Siempre use la interrupción de gesto, no el sondeo.
  2. La aplicación habilita DOUBLE_TAP pero olvida establecer DOUBLE_TAP_GAP en 300 ms, lo que hace que cada toque se clasifique como un doble toque.
  3. La aplicación mapea CIRCLE a "siguiente página" pero los deslizamientos de los niños son demasiado pequeños (5 mm en lugar de 12 mm) y el algoritmo los clasifica como ruido. Reduzca CIRCLE_MIN_CIRCUMFERENCE de 12 mm a 8 mm si se dirige a usuarios más jóvenes.
  4. La aplicación deshabilita LONG_PRESS pero deja el temporizador en ejecución, desperdiciando 0,04 MIPS de CPU continuamente. Establezca LONG_PRESS_ENABLE = 0 para omitir el temporizador.

Para más información sobre el sensor táctil que alimenta el motor de gestos, consulte Prueba de precisión y fluctuación táctil del lápiz de lectura. Para cómo se mapean los gestos a acciones de UI en la aplicación de diccionario de referencia, consulte Formato de archivo de diccionario del lápiz de lectura y edición. Para cómo el SoC host programa la tarea de gestos frente a OCR y audio, consulte Arquitectura del firmware del lápiz de lectura explicada. Para el lenguaje de especificaciones OEM y criterios de aceptación, consulte Plantilla de especificación OEM y ODM del lápiz de lectura. Para solicitar un informe de prueba de gestos con histogramas de 5 probadores de su lote de muestra, consulte /request-a-quote.

10. El lenguaje de especificaciones para incluir en un contrato OEM

Una especificación OEM defendible para el reconocimiento de gestos incluye:

  • Lista de vocabulario de gestos con disponibilidad modelo por modelo.
  • Umbral del matcher de plantilla (predeterminado 0,78, configurable de 0,70 a 0,85).
  • LONG_PRESS_TIME (predeterminado 600 ms).
  • DOUBLE_TAP_GAP (predeterminado 300 ms).
  • TASA_DE_VERDADEROS_POSITIVOS ≥ 96% en el conjunto de prueba de 1.200 gestos de niños.
  • TASA_DE_FALSOS_POSITIVOS ≤ 1% en la prueba de 1.000 segundos sin contacto.
  • Tabla de latencia de gesto a acción por clase de gesto.

Un proveedor que no pueda comprometerse con estos números aún no está ejecutando el algoritmo con calidad de producción. Publicamos el informe de prueba de gestos por modelo con cada lote de producción sin costo adicional.

Gesture Recognition Accuracy by Model

Lecturas relacionadas

Solicite una cotización — Obtenga una respuesta rápida de fábrica

Lectura complementaria: combinaciones de gestos y secuencias multifinger

Más allá del vocabulario de gestos simples listado en la Sección 1, el firmware de los modelos L5, Q8 y T2 admite un pequeño conjunto de combinaciones de gestos con dos dedos para usuarios avanzados:

  • TWO_FINGER_TAP: equivalente a un botón de retroceso en la aplicación de diccionario.
  • TWO_FINGER_SWIPE_LEFT: equivalente a un comando de página anterior en lectores de contenido extenso.
  • PINCH: acerca o aleja el texto del diccionario un 25% por cada ciclo de pellizco.

Estas combinaciones no están en el vocabulario predeterminado y están deshabilitadas de forma predeterminada. Los compradores OEM pueden habilitarlas mediante una bandera de compilación de firmware, a costa de 0,8 KB de código adicional y 0,3 KB de RAM adicional.

El motor de gestos también es compatible con un modo de bajo consumo "tap to wake" en los modelos L5, Q8 y T2. En este modo, el controlador táctil consulta a 8 Hz en lugar de 120 Hz, consumiendo solo 0,2 mW. Cuando se detecta un toque, el controlador cambia a 120 Hz en 12 ms. Este modo está habilitado de forma predeterminada en los modelos Q8 y T2 porque tienen baterías más grandes, y está deshabilitado en el L5 porque la batería más pequeña no puede absorber la penalización de latencia de activación en cada búsqueda en el diccionario.

En los más de 47.000 equipos enviados desde 2023, las fallas de campo relacionadas con gestos representan el 1,1% de todas las devoluciones (RMA). La causa dominante es una zona táctil bloqueada por entrada de líquido (38%), seguida de delaminación del recubrimiento en el borde del sensor (24%) y bloqueo del firmware (18%). La tasa del 1,1% es mucho más baja que la tasa de falla táctil del 4,2% porque los gestos solo se usan en los modelos premium que tienen un mejor sellado y un AQL más estricto en el sensor táctil.

Frequently Asked Questions

¿Qué modelos de bolígrafos de lectura son compatibles con gestos de deslizamiento?
Los gestos de deslizamiento (izquierda, derecha, arriba, abajo) son compatibles únicamente en K7, KF1, L5, Q8 y T2, ya que requieren una matriz táctil capacitiva 2D. Los modelos B1, B2, F8, P2, Q6 e Y6 utilizan de 4 a 8 zonas discretas de detección capacitiva y dependen de presiones físicas de botones en lugar de gestos. El T2 además es compatible con CIRCULO como función premium, y Q8 puede habilitarlo bajo solicitud OEM.
¿Cuál es la tasa de reconocimiento de gestos en L5, Q8 y T2?
El comparador de plantillas logra un 96,4% de verdaderos positivos y un 0,6% de falsos positivos en un conjunto de pruebas de 1.200 gestos recopilados de 30 niños de 4 a 9 años. El umbral es 0,78 en una puntuación de 0 a 1. Ajustar el umbral a 0,82 reduce los falsos positivos a 0,2% pero reduce los verdaderos positivos a 91,7%. Relajar a 0,72 eleva los falsos positivos a 2,4% y los verdaderos positivos a 98,6%.
¿Cuánto tiempo tarda el bolígrafo en reconocer un gesto de deslizamiento?
La latencia de extremo a extremo del deslizamiento es de 55 a 65 ms en L5, Q8 y T2, y de 75 a 95 ms en K7 y KF1. Este es el tiempo entre la última muestra del deslizamiento y que el host reciba el código del gesto a través de interrupción. Un TOQUE tarda de 130 a 180 ms porque el algoritmo debe esperar la liberación del toque. Un DOBLE_TOQUE tarda de 320 a 420 ms porque el algoritmo espera el segundo toque.
¿Se pueden ajustar los umbrales de gestos para niños pequeños?
Sí. La compilación de firmware KIDS_PROFILE_V1 aumenta LONG_PRESS_TIME de 600 ms a 900 ms, aumenta TAP_MAX_DISPLACEMENT de 4 mm a 6 mm y reduce SWIPE_MIN_DISPLACEMENT de 8 mm a 5 mm. Este perfil se recomienda para el grupo de edad de 2 a 4 años y está disponible en los 11 modelos mediante una marca de compilación de firmware sin costo adicional para pedidos OEM superiores a 5.000 unidades.
¿Cuánto CPU y memoria consume el motor de gestos?
La pipeline completa de gestos en L5 consume 1,9 MIPS a 3 gestos por segundo y utiliza 4,2 KB de flash más 1,1 KB de RAM de trabajo. En K7 y KF1, la misma pipeline consume 5,1 KB de flash y 1,4 KB de RAM porque las plantillas se compilan con menos optimización. Q8 y T2 añaden un clasificador CIRCULO que consume 3,4 KB de flash, 0,8 KB de RAM y 4,1 MIPS durante la clasificación.
Tu carrito
Su experiencia en este sitio mejorará al permitir cookies. Política de Cookies
Chat on WhatsApp