Het swipe- en tap-gebarenherkenningsalgoritme in de firmware van de B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 en Y6 leespennen, met template scoring, drempelafstemming en OEM-acceptatiecriteria.

Geplaatst op: jul. 13, 2023 - 94 Weergaven

Gestenherkenningsalgoritme voor leespennen: hoe swipes en taps UI-commando's worden

Doelgroep: Dit artikel is bedoeld voor firmware-ingenieurs, UX-designers en OEM-productmanagers die het gebaarherkenningsalgoritme moeten begrijpen dat draait op de B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 en Y6 lees pennen. We gaan ervan uit dat u een aangepaste menu-UI ontwerpt of evalueert hoe u gebaren kunt toevoegen aan een bestaande woordenboektoepassing, en u moet weten welke herkenningspercentage, latentie en CPU-belasting u kunt verwachten.

Een lees pen gebaar is een reeks aanraakmonsters vastgelegd over 30 ms tot 500 ms. De firmware zet die monsters om in een discrete gebaarcode (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) die de toepassingslaag toewijst aan een UI-actie. De conversie is klein genoeg om op elk van de 11 modellen te draaien maar verschillend afgestemd per model omdat de sensorresolutie, samplefrequentie en host-CPU-budget allemaal variëren. Dit artikel behandelt het algoritme, de afstemgetallen en de faalmodi waar kopers rekening mee moeten houden.

1. Het Gebarenwoordenboek

Over de 11 modellen die we leveren is het gebarenwoordenboek consistent:

Gebaar Monstervenster Gebruikt op
TAP 30 ms tot 250 ms aanraking + loslaten Alle 11 modellen (via knopvervanging op zonemodellen)
LONG_PRESS 600 ms tot 2000 ms continue aanraking K7, KF1, L5, Q8, T2
DOUBLE_TAP Twee tikken binnen 300 ms L5, Q8, T2
SWIPE_LEFT / RIGHT 50 ms tot 250 ms continue sleepbeweging, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP / DOWN Zelfde, verticale richting L5, Q8, T2 (alleen)
CIRCLE Gesloten lus pad, ≥ 12 mm omtrek Q8, T2 (premiumfunctie)

De eenvoudige-zone-modellen (B1, B2, F8, P2, Q6, Y6) voeren helemaal geen gebaren uit omdat ze geen 2D-aanraaksensor hebben. Ze vervangen 4 tot 8 discrete knopzones. Dit artikel focust op de matrixmodellen.

2. De Algoritme Pijplijn

Het gebaarherkenningsalgoritme draait in vier fasen. Elke fase heeft een hard CPU-budget; als een fase haar budget overschrijdt wordt het gebaar verworpen (geen commando uitgegeven) in plaats van verkeerd herkend.

Fase 1: Monsterverkrijging. De aanraakcontroller meldt coördinaten bij 80 Hz tot 120 Hz. De host-MCU leest ze via I2C bij 100 kHz tot 400 kHz op K7/KF1/L5, en via SPI bij 10 MHz op Q8/T2. Elk monster is een tuple (x, y, t).

Fase 2: Ontdenderen en uitbijterverwerping. Twee monsters binnen 4 mm en 20 ms worden samengevoegd tot één. Een monster dat meer dan 12 mm afwijkt van het lopend zwaartepunt wordt verworpen als uitbijter. Deze fase kost 0,4 ms per monster op de L5.

Fase 3: Kenmerkextractie. Uit de opgeschoonde monsterstroom berekenen we 7 kenmerken: totale verplaatsing, totale padlengte, gemiddelde snelheid, pieksnelheid, dominante richtingshoek, kromming en duur. Dit zijn de invoerwaarden voor de classifier.

Fase 4: Classificatie. We gebruiken een sjabloonmatching scorer voor de 6 directionele veeggebaren en een toestandsmachine voor de tijdgebaseerde gebaren (TAP, LONG_PRESS, DOUBLE_TAP). De toestandsmachine en sjabloonmatcher verbruiken samen 1,6 ms per gebaar op de L5.

Totaal budget per gebaar op de L5: 0,4 + 1,6 + fase 4 classifier = 2,4 ms, plus interrupt-afhandeling overhead, laat een marge van 6 ms over voordat het inter-framebudget van 8,3 ms wordt overschreden.

3. De Sjabloonmatcher voor Veegebaren

Elk van de 6 directionele veeggebaren (links, rechts, omhoog, omlaag, plus de twee diagonalen op T2) heeft een sjabloon. De sjabloon is een 16-punts veelhoek van de verwachte monstertraject, genormaliseerd naar een lengte van 12 mm en gecentreerd op de oorsprong. Tijdens herkenning normaliseren we de invoer monsterstroom op dezelfde manier (verplaats zwaartepunt naar oorsprong, schaal naar 12 mm, hersampel naar 16 punten) en berekenen we de gemiddelde Euclidische afstand tussen invoer en sjabloon bij elk punt.

De matchingsscore is 1 - (gemiddelde_afstand / 12). Een score van 1,0 is een perfecte match; een score van 0,0 is orthogonaal. De classifier retourneert de hoogst scorende sjabloon, mits die score hoger is dan 0,78. Alles onder 0,78 wordt geclassificeerd als "onbekend" en genegeerd.

De drempelwaarde 0,78 werd afgestemd op een dataset van 1.200 gebaren verzameld van 30 kinderen van 4 tot 9 jaar oud in onze twee faciliteiten. We maten een ware-positief percentage van 96,4% en een vals-positief percentage van 0,6% op de L5 met deze drempelwaarde. Aanscherpen naar 0,82 verlaagt vals-positief naar 0,2% maar verlaagt ware-positief naar 91,7%; versoepelen naar 0,72 verhoogt vals-positief naar 2,4% en ware-positief naar 98,6%.


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

4. De Toestandsmachine voor Tijdgebaseerde Gebaren

TAP, LONG_PRESS en DOUBLE_TAP zijn tijdafhankelijk en kunnen niet worden geclassificeerd uit alleen monstervorm. We gebruiken een eindige toestandsmachine met 5 toestanden:

  • IDLE: geen aanraking aanwezig.
  • TOUCH_DOWN: eerste monster ontvangen, overgang naar PRESS.
  • PRESS: aanraking gehouden, start de lang-druk timer.
  • RELEASE: aanraking losgelaten, evalueer TAP vs LONG_PRESS vs DOUBLE_TAP.
  • WAIT_DOUBLE: losgelaten, wachten tot maximaal 300 ms op een tweede tik.

Overgangen worden bepaald door 4 drempelwaarden:

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

De toestandsmachine is geïmplementeerd als een switch in de touch ISR, kost 0,06 ms per overgang op de L5. Totale herkenningslatentie voor een TAP is de tikduur plus één inter-monsterinterval, wat 280 ms tot 320 ms is in het worst case maar typisch 130 ms tot 180 ms.

5. CPU- en Geheugenkosten

De volledige gebaarpijplijn (sjabloonmatcher + toestandsmachine + kenmerkextractie) op de L5 verbruikt 1,9 MIPS aan CPU bij een gebaarfrequentie van 3 gebaren per seconde. De host-SoC van de L5 heeft 240 MIPS aan headroom na audio en OCR, dus de gebaarmotor is essentially free.

Geheugenkosten zijn 4,2 KB code (in flash) en 1,1 KB werkend RAM (voor het 16-punts sjabloon en de monsterbuffer). Op de K7 en KF1 kost dezelfde pijplijn 5,1 KB code en 1,4 KB RAM omdat de lagere-MCU de sjablonen compileert met minder optimalisatie.

De Q8 en T2 voegen een CIRCLE gebaar-classifier toe met behulp van een 24-punts Hough-transformatie-achtige lus. Dit voegt 3,4 KB code en 0,8 KB RAM toe, en draait op 4,1 MIPS tijdens classificatie. CIRCLE is een premiumfunctie en is standaard uitgeschakeld op de Q8 en alleen ingeschakeld op de T2, tenzij de OEM-koper dit aanvraagt voor Q8.

6. Latentie: Tik-naar-Actie en Veeg-naar-Actie

End-to-end latentie van fysieke gebaarvoltooiing tot host-actie uitgegeven:

Gebaar L5 / Q8 / T2 K7 / KF1
TAP 130 ms tot 180 ms 180 ms tot 240 ms
LONG_PRESS 620 ms tot 720 ms 700 ms tot 820 ms
DOUBLE_TAP 320 ms tot 420 ms 400 ms tot 520 ms
SWIPE (willekeurige richting) 55 ms tot 65 ms 75 ms tot 95 ms
CIRCLE 80 ms tot 110 ms (alleen T2) n/b

Deze cijfers omvatten de rapportagefrequentie van de touch controller, de I2C/SPI-overdrachtstijd, de algoritme-uitvoering en de reactietijd van de hosttoepassing.

7. Afstemming voor Verschillende Gebruikersgroepen

De standaard drempelwaarden zijn afgestemd op kinderen van 4 tot 9 jaar. Voor volwassen gebruikers (leerkrachten, ouders) zijn de gebaren groter en sneller, wat de herkenningsnauwkeurigheid daadwerkelijk verbetert tot 98,5% echte positieven bij dezelfde drempel. Voor kinderen jonger dan 4 jaar kan de OEM-koper via firmware-configuratie een zachter gebarenprofiel aanvragen:

  • LONG_PRESS_TIME verhoogd van 600 ms naar 900 ms.
  • TAP_MAX_DISPLACEMENT verhoogd van 4 mm naar 6 mm.
  • SWIPE_MIN_DISPLACEMENT verlaagd van 8 mm naar 5 mm.

Dit profiel heet KIDS_PROFILE_V1 en is beschikbaar op alle 11 modellen via een firmware build flag. Een OEM-programma gericht op de 2-tot-4 leeftijdsgroep moet dit profiel aanvragen.

8. Acceptatietest voor OEM Kopers

We raden de volgende 5-test acceptatiesuite aan voor gebarenherkenning:

  1. SWIPE_LEFT herkenningspercentage ≥ 96% op 100 trials door 3 verschillende testers.
  2. SWIPE_RIGHT herkenningspercentage ≥ 96% op 100 trials.
  3. TAP vals-positief percentage ≤ 1% over 1.000 niet-touch seconden.
  4. LONG_PRESS herkenningslatentie tussen 600 en 800 ms.
  5. DOUBLE_TAP herkenningspercentage ≥ 92% op 100 trials.

Testers moeten afkomstig zijn uit de doel leeftijdsgroep. Een steekproef die alleen door volwassen ingenieurs is getest, zal vertekende nauwkeurigheid rapporteren omdat volwassen gebaren consistenter zijn. Onze interne validatie gebruikt 30 kinderen van 4 tot 9 jaar plus 10 volwassenen, en het gepubliceerde percentage van 96,4% echte positieven is het aantal alleen voor kinderen.

9. Veelvoorkomende Foutmodi

In OEM-programma's hebben we de volgende gebarenintegratiefouten gezien:

  1. De hosttoepassing pollt voor gebaren in een 50 ms lus in plaats van interrupts te gebruiken, wat 50 ms latentie toevoegt. Gebruik altijd de gebaarinterrupt, geen polling.
  2. De toepassing schakelt DOUBLE_TAP in maar vergeet DOUBLE_TAP_GAP in te stellen op 300 ms, waardoor elke tik wordt geclassificeerd als een dubbele tik.
  3. De toepassing wijst CIRCLE toe aan "volgende pagina" maar de swipegebaren van de kinderen zijn te klein (5 mm in plaats van 12 mm) en het algoritme classificeert ze als ruis. Verlaag CIRCLE_MIN_CIRCUMFERENCE van 12 mm naar 8 mm als u zich richt op jongere gebruikers.
  4. De toepassing schakelt LONG_PRESS uit maar laat de timer draaien, waardoor 0,04 MIPS aan CPU continu wordt verspild. Stel LONG_PRESS_ENABLE = 0 in om de timer over te slaan.

Voor meer over de touch sensor die de gebarenengine voedt, zie Leespen Touch Nauwkeurigheid en Jitter Test. Voor hoe gebaren worden toegewezen aan UI-acties in de referentie woordenboektoepassing, zie Leespen Woordenboek Bestandsindeling en Editie. Voor hoe de host SoC de gebarentaak plant ten opzichte van OCR en audio, zie Leespen Firmware Architectuur Uitgelegd. Voor OEM-specificatietaal en acceptatiecriteria, zie Leespen OEM en ODM Specificatiesjabloon. Om een gebarentestrapport met 5-tester histogrammen van uw monsterbatch aan te vragen, zie /request-a-quote.

10. De Specificatietaal voor in een OEM Contract

Een verdedigbare OEM-specificatie voor gebarenherkenning omvat:

  • Gebarenwoordenschat lijst met model-voor-model beschikbaarheid.
  • Template matcher drempel (standaard 0,78, configureerbaar 0,70 tot 0,85).
  • LONG_PRESS_TIME (standaard 600 ms).
  • DOUBLE_TAP_GAP (standaard 300 ms).
  • TRUE_POSITIVE_RATE ≥ 96% op de 1.200-gebaren kind-leeftijds testset.
  • FALSE_POSITIVE_RATE ≤ 1% op de 1.000-seconden geen-touch test.
  • Gebaar-naar-actie latentietabel per gebaarklasse.

Een leverancier die zich niet kan committeren aan deze cijfers voert het algoritme nog niet uit op productiekwaliteit. We publiceren het per-model gebarentestrapport bij elke productiebatch zonder extra kosten.

Gesture Recognition Accuracy by Model

Gerelateerde Lectuur

Vraag een offerte aan — Ontvang een snelle fabrieksreactie

Aanvullende informatie: gebaarcombinaties en multi-vinger-sequenties

Naast de enkele gebaren uit sectie 1 ondersteunt de L5, Q8 en T2 firmware een kleine set twee-vinger gebaarcombinaties voor veeleisende gebruikers:

  • TWO_FINGER_TAP: gelijkwaardig aan een terugknop in de woordenboekapp.
  • TWO_FINGER_SWIPE_LEFT: gelijkwaardig aan een paginaterug-opdracht in lezers van lange content.
  • PINCH: in- of uitzoomen van woordenboektekst met 25% per pinch-cyclus.

Deze combinaties maken geen deel uit van de standaard vocabulaire en zijn standaard uitgeschakeld. OEM-kopers kunnen ze inschakelen via een firmware build-flag, ten koste van 0,8 KB extra code en 0,3 KB extra RAM.

De gebaarmotor ondersteunt ook een energiezuinige 'tik om te ontwaken'-modus op de L5, Q8 en T2. In deze modus polst de touch-controller op 8 Hz in plaats van 120 Hz, met een verbruik van slechts 0,2 mW. Wanneer een tik wordt gedetecteerd, schakelt de controller binnen 12 ms naar 120 Hz. Deze modus is standaard ingeschakeld op de Q8 en T2 vanwege de grotere batterijen, en uitgeschakeld op de L5 omdat de kleinere batterij de ontwaak-latentieboete niet kan compenseren bij elke woordenboekzoekopdracht.

Van de 47.000+ verzonden units sinds 2023 maken gebaargerelateerde veldfouten 1,1% uit van alle RMA's. De overheersende oorzaak is een vastgelopen touch-zone door vochtindringing (38%), gevolgd door overlay-delaminatie aan de sensorrand (24%) en firmware-lockup (18%). Het 1,1% percentage ligt veel lager dan het 4,2% touch-foutpercentage omdat gebaren alleen worden gebruikt op de premium modellen met betere afdichting en strengere AQL op de touch-sensor.

Frequently Asked Questions

Welke leespenmodellen ondersteunen veeggebaren?
Veeggebaren (links, rechts, omhoog, omlaag) worden alleen ondersteund op de K7, KF1, L5, Q8 en T2, omdat hiervoor een 2D capacitieve touchmatrix vereist is. De B1, B2, F8, P2, Q6 en Y6 gebruiken 4 tot 8 discrete cap-sense zones en vertrouwen op fysieke knopdrukken in plaats van gebaren. De T2 ondersteunt daarnaast CIRKEL als premiumfunctie, waarbij de Q8 dit op verzoek van de OEM kan inschakelen.
Wat is het gebarenherkenningspercentage op de L5, Q8 en T2?
De sjabloonmatcher behaalt 96,4% true-positive en 0,6% false-positive op een testsset van 1.200 gebaren verzameld van 30 kinderen van 4 tot 9 jaar. De drempelwaarde is 0,78 op een score van 0 tot 1. Het aanscherpen van de drempelwaarde tot 0,82 verlaagt de false-positive tot 0,2% maar vermindert de true-positive tot 91,7%. Het verlagen naar 0,72 verhoogt de false-positive tot 2,4% en de true-positive tot 98,6%.
Hoe lang duurt het voordat de pen een veeggebaar herkent?
De end-to-end veeglatentie is 55 tot 65 ms op de L5, Q8 en T2, en 75 tot 95 ms op de K7 en KF1. Dit is de tijd tussen de laatste sample van de veeg en het ontvangen van de gebaarcode door de host via interrupt. Een DRUK duurt 130 tot 180 ms omdat het algoritme moet wachten op het loslaten van de aanraking. Een DUBBELE_DRUK duurt 320 tot 420 ms omdat het algoritme wacht op de tweede druk.
Kunnen de gebaardrempels worden aangepast voor jongere kinderen?
Ja. De KIDS_PROFILE_V1 firmwarebouw verhoogt LONG_PRESS_TIME van 600 ms naar 900 ms, verhoogt TAP_MAX_DISPLACEMENT van 4 mm naar 6 mm, en verlaagt SWIPE_MIN_DISPLACEMENT van 8 mm naar 5 mm. Dit profiel wordt aanbevolen voor de leeftijdsgroep 2 tot 4 jaar en is beschikbaar op alle 11 modellen via een firmwarebouw-vlag zonder meerkosten voor OEM-bestellingen boven 5.000 eenheden.
Hoeveel CPU en geheugen verbruikt de gebarenengine?
De volledige gebarenpipeline op de L5 verbruikt 1,9 MIPS bij 3 gebaren per seconde en gebruikt 4,2 KB flash plus 1,1 KB werk-RAM. Op de K7 en KF1 kost dezelfde pipeline 5,1 KB flash en 1,4 KB RAM omdat de templates met minder optimalisatie zijn gecompileerd. De Q8 en T2 voegen een CIRKEL-classifier toe die 3,4 KB flash, 0,8 KB RAM en 4,1 MIPS verbruikt tijdens classificatie.
Uw winkelwagen
Uw ervaring op deze website wordt verbeterd door cookies toe te staan. Cookiebeleid
Chat on WhatsApp