"Sveipe- og trykk-bevegelsesgjenkjenningsalgoritmen i fastvaren til lesepennene B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 og Y6, med malpoengsetting, terskeljustering og OEM-godkjenningskriterier."

Publisert: jul 13, 2023 - 92 Visninger

Algoritme for gjenkjenning av lesepenn-bevegelser: Hvordan sveip og trykk blir UI-kommandoer

Målgruppe: Denne artikkelen er for fastvareingeniører, UX-designere og OEM-produktledere som trenger å forstå algoritmene for gjenkjenning av bevegelser som kjører på lesepennene B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 og Y6. Vi antar at du enten designer et tilpasset menygrensesnitt eller vurderer hvordan du kan legge til bevegelser i en eksisterende ordbokapplikasjon, og at du trenger å vite hvilken gjenkjenningsgrad, latenstid og CPU-belastning du kan forvente.

En lesepegebevegelse er en sekvens av berøringsprøver innhentet over 30 ms til 500 ms. Fastvaren konverterer disse prøvene til en diskret bevegelseskode (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) som applikasjonslaget knytter til en UI-handling. Konverteringen er liten nok til å kjøre på alle de 11 modellene, men er tunet ulikt per modell fordi sensoroppløsningen, prøvehastigheten og vertsprosessorens CPU-budsjett varierer. Denne artikkelen dekker algoritmen, tuningsverdiene og feilmodusene som kjøpere bør planlegge for.

1. Bevegelsesvokabularet

På tvers av de 11 modellene vi leverer, er bevegelsesvokabularet konsistent:

Bevegelse Prøvevindu Brukes på
TAP 30 ms til 250 ms berøring + slipp Alle 11 modeller (via knapperstatning på sonemodeller)
LONG_PRESS 600 ms til 2000 ms kontinuerlig berøring K7, KF1, L5, Q8, T2
DOUBLE_TAP To trykk innen 300 ms L5, Q8, T2
SWIPE_LEFT / RIGHT 50 ms til 250 ms kontinuerlig drag, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP / DOWN Samme, vertikal retning L5, Q8, T2 (kun)
CIRCLE Lukket sløyfebane, ≥ 12 mm omkrets Q8, T2 (premiumfunksjon)

De enkle sonemodellene (B1, B2, F8, P2, Q6, Y6) kjører ikke bevegelser i det hele tatt fordi de ikke har noen 2D-berøringssensor. De erstatter dette med 4 til 8 diskrete knappesoner. Denne artikkelen fokuserer på matriksmodellene.

2. Algoritme-pipelinen

Algoritmen for bevegelsesgjenkjenning kjører i fire trinn. Hvert trinn har et hardt CPU-budsjett; hvis et trinn overskrider sitt budsjett, droppes bevegelsen (ingen kommando sendes ut) fremfor å bli feilgjenkjent.

Trinn 1: Prøveinnhenting. Berøringskontrolleren rapporterer koordinater ved 80 Hz til 120 Hz. Vertsmikrokontrolleren leser dem via I2C ved 100 kHz til 400 kHz på K7/KF1/L5, og via SPI ved 10 MHz på Q8/T2. Hver prøve er en tuppel (x, y, t).

Trinn 2: Avprelling og utelukkelse av avvikere. To prøver innen 4 mm og 20 ms slås sammen til én. En prøve som avviker mer enn 12 mm fra det løpende tyngdepunktet, droppes som avviker. Dette trinnet tar 0,4 ms per prøve på L5.

Trinn 3: Trekkuttrekk. Fra den rensede prøvestrømmen beregner vi 7 trekk: total forflytning, total banelengde, gjennomsnittlig hastighet, topphastighet, dominerende retningsvinkel, krumning og varighet. Disse er input til klassifisereren.

Trinn 4: Klassifisering. Vi bruker en mønstermatchingsscorer for de 6 retningsbestemte sveipene og en tilstandsmaskin for de tidsbaserte bevegelsene (TAP, LONG_PRESS, DOUBLE_TAP). Tilstandsmaskinen og mønstermatcheren bruker til sammen 1,6 ms per bevegelse på L5.

Totalt budsjett per bevegelse på L5: 0,4 + 1,6 + trinn 4-klassifiserer = 2,4 ms, pluss håndtering av interruptoverhead, gir en margin på 6 ms før interframebudsjettet på 8,3 ms overskrides.

3. Mønstermatcheren for sveip

Hver av de 6 retningsbestemte sveipene (venstre, høyre, opp, ned, pluss de to diagonalene på T2) har en mal. Malen er en 16-punkts polylinje av den forventede prøvebanen, normalisert til en lengde på 12 mm og sentrert rundt origo. Under gjenkjenning normaliserer vi inputprøvestrømmen på samme måte (translaterer tyngdepunktet til origo, skalerer til 12 mm, gjenprøver til 16 punkter) og beregner gjennomsnittlig euklidsk avstand mellom input og mal i hvert punkt.

Matchingsscoren er 1 - (gjennomsnittlig_avstand / 12). En score på 1,0 er et perfekt treff; en score på 0,0 er ortogonal. Klassifisereren returnerer malen med høyest score, forutsatt at denne scoren overstiger 0,78. Alt under 0,78 klassifiseres som «unknown» og ignoreres.

Terskelen 0,78 ble tunet på et datasett med 1 200 bevegelser innsamlet fra 30 barn i alderen 4 til 9 ved våre to lokasjoner. Vi målte en sann positiv-rate på 96,4 % og en falsk positiv-rate på 0,6 % på L5 med denne terskelen. Strammes den til 0,82, synker falsk positiv-rate til 0,2 %, men sann positiv-rate synker til 91,7 %; løsnes den til 0,72, stiger falsk positiv-rate til 2,4 % og sann positiv-rate til 98,6 %.


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

4. Tilstandsmaskinen for tidsbaserte bevegelser

TAP, LONG_PRESS og DOUBLE_TAP er tidsavhengige og kan ikke klassifiseres ut fra prøveformen alene. Vi bruker en endelig tilstandsmaskin med 5 tilstander:

  • IDLE: ingen berøring til stede.
  • TOUCH_DOWN: første prøve mottatt, overgang til PRESS.
  • PRESS: berøring holdes, start langtrykk-timeren.
  • RELEASE: berøring sluppet, evaluer TAP mot LONG_PRESS mot DOUBLE_TAP.
  • WAIT_DOUBLE: sluppet, venter opptil 300 ms på et nytt trykk.

Overganger styres av 4 terskler:

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

Tilstandsmaskinen er implementert som en switch i berørings-ISR-en og tar 0,06 ms per overgang på L5. Total gjenkjenningslatenstid for en TAP er trykkets varighet pluss ett intervall mellom prøver, som er 280 ms til 320 ms i verste fall, men typisk 130 ms til 180 ms.

5. CPU- og minnekostnad

Den komplette bevegelsespipelinen (mønstermatcher + tilstandsmaskin + trekkuttrekk) på L5 forbruker 1,9 MIPS CPU ved en bevegelsesrate på 3 bevegelser per sekund. L5-verts-SoC-en har 240 MIPS tilgjengelig etter lyd og OCR, så bevegelsesmotoren er så godt som gratis.

Minnekostnaden er 4,2 KB kode (i flash) og 1,1 KB arbeidsminne (for den 16-punkts malen og prøvebufferen). På K7 og KF1 koster den samme pipelinen 5,1 KB kode og 1,4 KB RAM fordi mikrokontrolleren i lavere klasse kompilerer malene med mindre optimalisering.

Q8 og T2 legger til en CIRCLE-bevegelsesklassifiserer ved hjelp av en 24-punkts Hough-transform-lignende sløyfe. Dette legger til 3,4 KB kode og 0,8 KB RAM, og kjører på 4,1 MIPS under klassifisering. CIRCLE er en premiumfunksjon og er deaktivert som standard på Q8 og kun aktivert på T2, med mindre OEM-kjøperen ber om den på Q8.

6. Latenstid: fra trykk til handling og fra sveip til handling

Ende-til-ende-latenstid fra fysisk bevegelsesfullføring til vertsutsending av handling:

Bevegelse L5 / Q8 / T2 K7 / KF1
TAP 130 ms til 180 ms 180 ms til 240 ms
LONG_PRESS 620 ms til 720 ms 700 ms til 820 ms
DOUBLE_TAP 320 ms til 420 ms 400 ms til 520 ms
SWIPE (hvilken som helst API) 55 ms til 65 ms 75 ms til 95 ms
CIRCLE 80 ms til 110 ms (kun T2) n/a

Disse tallene inkluderer berøringskontrollerens rapporthastighet, I2C/SPI-overføringstiden, algoritmeutførelsen og vertsapplikasjonens responstid.

7. Tilpasning for ulike brukergrupper

Standardtersklene er tilpasset barn i alderen 4 til 9 år. For voksne brukere (lærere, foreldre) er bevegelsene større og raskere, noe som faktisk forbedrer gjenkjenningsnøyaktigheten til 98,5 % sann positiv ved samme terskel. For barn yngre enn 4 år kan OEM-kjøperen be om en mykere bevegelsesprofil via fastvarekonfigurasjon:

  • LONG_PRESS_TIME hevet fra 600 ms til 900 ms.
  • TAP_MAX_DISPLACEMENT hevet fra 4 mm til 6 mm.
  • SWIPE_MIN_DISPLACEMENT senket fra 8 mm til 5 mm.

Denne profilen kalles KIDS_PROFILE_V1 og er tilgjengelig på alle 11 modeller via et fastvare-byggflagg. Et OEM-program som retter seg mot aldersgruppen 2 til 4 år bør be om denne profilen.

8. Akseptansetest for OEM-kjøpere

Vi anbefaler følgende akseptansesuite med 5 tester for bevegelsesgjenkjenning:

  1. Gjenkjenningsrate for SWIPE_LEFT ≥ 96 % på 100 forsøk av 3 ulike testere.
  2. Gjenkjenningsrate for SWIPE_RIGHT ≥ 96 % på 100 forsøk.
  3. Falsk-positiv rate for TAP ≤ 1 % over 1 000 sekunder uten berøring.
  4. Gjenkjenningslatens for LONG_PRESS mellom 600 og 800 ms.
  5. Gjenkjenningsrate for DOUBLE_TAP ≥ 92 % på 100 forsøk.

Testere bør hentes fra målgruppen. En prøve som kun testes av voksne ingeniører, vil rapportere oppblåst nøyaktighet fordi voksnes bevegelser er mer konsistente. Vår interne validering bruker 30 barn i alderen 4 til 9 år pluss 10 voksne, og den publiserte sann-positive-raten på 96,4 % er kun for barn.

9. Vanlige feilmoduser

I OEM-programmer har vi sett følgende feil ved bevegelsesintegrasjon:

  1. Vertsapplikasjonen poller for bevegelser i en 50 ms-løkke i stedet for å bruke avbrudd, noe som legger til 50 ms latens. Bruk alltid bevegelsesavbrudd, ikke polling.
  2. Applikasjonen aktiverer DOUBLE_TAP, men glemmer å sette DOUBLE_TAP_GAP til 300 ms, noe som fører til at hvert trykk klassifiseres som et dobbelttrykk.
  3. Applikasjonen kobler CIRCLE til "Neste side", men barnas sveip er for små (5 mm i stedet for 12 mm) og algoritmen klassifiserer dem som støy. Senk CIRCLE_MIN_CIRCUMFERENCE fra 12 mm til 8 mm hvis målgruppen er yngre brukere.
  4. Applikasjonen deaktiverer LONG_PRESS, men lar tidtakeren gå, noe som kontinuerlig sløser 0,04 MIPS med CPU. Sett LONG_PRESS_ENABLE = 0 for å hoppe over tidtakeren.

For mer om berøringssensoren som mater bevegelsesmotoren, se Lesepenn – berøringsnøyaktighet og jitter-test. For hvordan bevegelser kobles til UI-handlinger i referanseordbokapplikasjonen, se Lesepenn – ordbokfilformat og utgave. For hvordan vertens SoC planlegger bevegelsesoppgaven mot OCR og lyd, se Lesepenn – fastvarearkitektur forklart. For OEM-spraåk og akseptanskriterier, se Lesepenn – OEM- og ODM-spesifikasjonsmal. For å be om en bevegelsestestrapport med histogrammer fra 5 testere fra din prøvebatch, se /request-a-quote.

10. Spraåket som skal inn i en OEM-kontrakt

En forsvarlig OEM-spesifikasjon for bevegelsesgjenkjenning inkluderer:

  • Liste over bevegelsesvokabular med tilgjengelighet per modell.
  • Terskel for malkontrollør (standard 0,78, konfigurerbar 0,70 til 0,85).
  • LONG_PRESS_TIME (standard 600 ms).
  • DOUBLE_TAP_GAP (standard 300 ms).
  • TRUE_POSITIVE_RATE ≥ 96 % på testsettet med 1 200 bevegelser for barn.
  • FALSE_POSITIVE_RATE ≤ 1 % på 1 000-sekunders test uten berøring.
  • Latensstabell fra bevegelse til handling per bevegelsesklasse.

En leverandør som ikke kan forplikte seg til disse tallene, kjører ennå ikke algoritmen med produksjonskvalitet. Vi publiserer bevegelsestestrapporten per modell med hver produksjonsbatch uten ekstra kostnad.

Gesture Recognition Accuracy by Model

Relatert lesing

Be om tilbud – få raskt svar fra fabrikken

Tilleggslesing: gestkombinasjoner og flerfingerssekvenser

I tillegg til enkeltgestvokabularet i del 1 støtter fastvaren på L5, Q8 og T2 et lite sett med tofingergestkombinasjoner for avanserte brukere:

  • TWO_FINGER_TAP: tilsvarer en tilbakeknapp i ordbokappen.
  • TWO_FINGER_SWIPE_LEFT: tilsvarer en «side tilbake»-kommando i lesere for langt innhold.
  • PINCH: zoom inn eller ut av ordbokteksten med 25 % per knipebevegelse.

Disse kombinasjonene er ikke i standardvokabularet og er deaktivert som standard. OEM-kjøpere kan aktivere dem via et byggeflagg i fastvaren, mot en kostnad på 0,8 KB ekstra kode og 0,3 KB ekstra RAM.

Gestmotoren støtter også en strømsparende «trykk for å vekke»-modus på L5, Q8 og T2. I denne modusen poller berøringskontrolleren med 8 Hz i stedet for 120 Hz, og bruker kun 0,2 mW. Når et trykk registreres, veksler kontrolleren til 120 Hz innen 12 ms. Denne modusen er aktivert som standard på Q8 og T2 fordi de har større batterier, og deaktivert på L5 fordi det mindre batteriet ikke tåler vekkeforsinkelsen ved hvert ordbokoppslag.

Blant de over 47 000 enhetene som er sendt siden 2023, utgjør gestrelaterte feltfeil 1,1 % av alle RMA-er. Den dominerende årsaken er en fastlåst berøringssone på grunn av væskeinntrengning (38 %), etterfulgt av delaminering i overflatebelegget ved sensorens kant (24 %) og fastvarelåsing (18 %). Andelen på 1,1 % er langt lavere enn feilraten for berøring på 4,2 %, fordi gester kun brukes på premiummodellene som har bedre tetting og strengere AQL på berøringssensoren.

Frequently Asked Questions

Hvilke lesepennmodeller støtter sveipebevegelser?
Sveipebevegelser (venstre, høyre, opp, ned) støttes kun på K7, KF1, L5, Q8 og T2, fordi de krever en 2D kapasitiv berøringsmatrise. B1, B2, F8, P2, Q6 og Y6 bruker 4 til 8 diskrete kapasitive soner og er avhengige av fysiske knappetrykk fremfor bevegelser. T2 støtter i tillegg CIRCLE som en premium-funksjon, og Q8 kan aktivere den på forespørsel fra OEM.
Hva er gjenkjenningsraten for bevegelser på L5, Q8 og T2?
Maltrefferen oppnår 96,4 % sann positiv og 0,6 % falsk positiv på et testsett på 1 200 bevegelser innsamlet fra 30 barn i alderen 4 til 9 år. Terskelen er 0,78 på en skala fra 0 til 1. Hvis terskelen strammes til 0,82, synker falsk positiv til 0,2 %, men sann positiv reduseres til 91,7 %. Hvis den senkes til 0,72, øker falsk positiv til 2,4 % og sann positiv til 98,6 %.
Hvor lang tid tar det for pennen å gjenkjenne en sveipebevegelse?
Ende-til-ende-sveipelatens er 55 til 65 ms på L5, Q8 og T2, og 75 til 95 ms på K7 og KF1. Dette er tiden fra siste prøve av sveipet til verten mottar bevegelseskoden via avbrudd. Et TAP tar 130 til 180 ms fordi algoritmen må vente på at berøringen slippes. Et DOUBLE_TAP tar 320 til 420 ms fordi algoritmen venter på det andre tapet.
Kan bevegelsestersklene justeres for yngre barn?
Ja. Fastvareversjonen KIDS_PROFILE_V1 øker LONG_PRESS_TIME fra 600 ms til 900 ms, øker TAP_MAX_DISPLACEMENT fra 4 mm til 6 mm, og senker SWIPE_MIN_DISPLACEMENT fra 8 mm til 5 mm. Denne profilen anbefales for aldersgruppen 2 til 4 år og er tilgjengelig på alle 11 modeller via et fastvarebyggflagg uten ekstra kostnad for OEM-bestillinger over 5 000 enheter.
Hvor mye CPU og minne bruker bevegelsesmotoren?
Hele bevegelsespipelinen på L5 bruker 1,9 MIPS ved 3 bevegelser per sekund og bruker 4,2 KB flash og 1,1 KB arbeids-RAM. På K7 og KF1 koster den samme pipelinen 5,1 KB flash og 1,4 KB RAM fordi malene er kompilert med mindre optimalisering. Q8 og T2 legger til en CIRCLE-klassifisering som bruker 3,4 KB flash, 0,8 KB RAM og 4,1 MIPS under klassifisering.
Din handlekurv
Din opplevelse på dette nettstedet blir bedre hvis du tillater informasjonskapsler. Informasjonskapselpolitikk
Chat on WhatsApp