Kohderyhmä: Tämä artikkeli on suunnattu laiteohjelmistosuunnittelijoille, käyttökokemussuunnittelijoille ja OEM-tuotepäälliköille, joiden on ymmärrettävä mallien B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 ja Y6 lukulaitteissa toimiva eleentunnistusalgoritmi. Oletuksena on, että suunnittelet mukautettua valikko-käyttöliittymää tai arvioit, miten eleet lisätään olemassa olevaan sanakirjasovellukseen, ja tarvitset tiedot tunnistustarkkuudesta, viiveestä ja suorittimen kuormituksesta.
Lukulaitteen ele on 30 ms – 500 ms aikana kerätty kosketusnäytteiden sarja. Laiteohjelmisto muuntaa näytteet diskreettiksi elekoodiksi (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE), jonka sovelluskerros yhdistää käyttöliittymätoimintoon. Muunnos on riittävän kevyt toimiakseen kaikissa 11 mallissa, mutta se on viritetty mallikohtaisesti, koska anturin resoluutio, näytteenottotaajuus ja isäntä-CPU:n varaama budjetti vaihtelevat. Tässä artikkelissa käsitellään algoritmi, viritysluvut ja vikatilat, jotka ostajien on huomioitava.
1. Eleiden sanasto
Kaikissa 11 toimittamassamme mallissa eleiden sanasto on yhdenmukainen:
| Ele | Näyteikkuna | Käytössä malleissa |
|---|---|---|
| TAP | 30 ms – 250 ms kosketus + irrotus | Kaikki 11 mallia (vyöhykorimaidien malleissa painikkein korvattuna) |
| LONG_PRESS | 600 ms – 2000 ms jatkuva kosketus | K7, KF1, L5, Q8, T2 |
| DOUBLE_TAP | Kaksi napautusta 300 ms sisällä | L5, Q8, T2 |
| SWIPE_LEFT / RIGHT | 50 ms – 250 ms jatkuva veto, ≥ 8 mm | K7, KF1, L5, Q8, T2 |
| SWIPE_UP / DOWN | Sama, pystyakon | L5, Q8, T2 (ainoastaan) |
| CIRCLE | Suljettu silmukka, ≥ 12 mm ympärysmitta | Q8, T2 (premium-ominaisuus) |
Yksinkertaisen vyöhykoriman mallit (B1, B2, F8, P2, Q6, Y6) eivät tue eleitä lainkaan, koska niissä ei ole 2D-kosketusanturia. Ne korvaavat sen 4–8 erillisellä painikevyöhykkeellä. Tämä artikkeli keskittyy matriisimalleihin.
2. Algoritmin putki
Eleentunnistusalgoritmi toimii neljässä vaiheessa. Jokaisella vaiheella on kiinteä CPU-budjetti; jos jokin vaihe ylittää budjettinsa, ele hylätään (käskyä ei anneta) väärintunnistuksen sijaan.
Vaihe 1: Näytteenotto. Kosketusohjain ilmoittaa koordinaatit 80 Hz – 120 Hz taajuudella. Isäntä-MCU lukee ne I2C-väylällä 100 kHz – 400 kHz nopeudella malleissa K7/KF1/L5 ja SPI-väylällä 10 MHz nopeudella malleissa Q8/T2. Jokainen näyte on monikko (x, y, t).
Vaihe 2: Värähtelyn vaimennus ja poikkeavien hylkäys. Kaksi 4 mm ja 20 ms sisällä olevaa näytettä yhdistetään yhdeksi. Näyte, joka poikkeaa yli 12 mm juoksevasta keskipisteestä, hylätään poikkeavana. Tämä vaihe kestää 0,4 ms näytettä kohden L5-mallissa.
Vaihe 3: Piirteiden erotus. Puhdistetusta näytevirrasta lasketaan 7 piirrettä: kokonaispoikkeama, kokonaispolun pituus, keskinopeus, huippunopeus, vallitseva suuntakulma, kaarevuus ja kesto. Nämä ovat luokittelijan syötteitä.
Vaihe 4: Luokittelu. Käytämme mallipohjaista vertailulaskinta 6 suuntapyyhkäisylle ja tilakonetta aikasidonnaisille eleille (TAP, LONG_PRESS, DOUBLE_TAP). Tilakone ja mallivertailulaskin kuluttavat yhteensä 1,6 ms elettä kohden L5-mallissa.
Kokonaisbudjetti elettä kohden L5-mallissa: 0,4 + 1,6 + vaiheen 4 luokittelu = 2,4 ms, minkä lisäksi keskeytyskäsittelyn yleiskustannus, jättää 6 ms marginaalin ennen 8,3 ms kuvien välisen budjetin ylittymistä.
3. Pyyhkäisyjen mallivertailulaskin
Jokaisella 6 suuntapyyhkäisyllä (vasemmalle, oikealle, ylös, alas, sekä kaksi diagonaalia T2-mallissa) on oma malli. Malli on 16 pisteen murtoviiva odotetusta näytetrjektoreista, normalisoituna 12 mm pituuteen ja keskitettynä alan alkuun. Tunnistuksen aikana normalisoimme syötenäytevirran samalla tavalla (siirrämme keskipisteen alkuun, skaalaamme 12 mm:iin, uudelleennäytteistämme 16 pisteeseen) ja laskemme keskänten painottoman euklidisen etäisyyden syötteen ja mallin välillä kussakin pisteessä.
Vastaavuuspisteet ovat 1 - (mean_distance / 12). Pisteet 1,0 tarkoittaa täydellistä vastaavuutta; pisteet 0,0 tarkoittaa kohtisuoraa. Luokittelija palauttaa korkeimman pistemäärän saaneen mallin edellyttäen, että pistemäärä ylittää 0,78. Kaikki alle 0,78 luokitellaan "tuntemattomaksi" ja ohitetaan.
Kynnys 0,78 viritettiin 1 200 eleen aineistolla, joka kerättiin 30 lapselta (4–9-vuotiailta) kahdessa toimipisteessämme. Mittasimme tällä kynnyksellä L5-mallissa todellisen positiivisen osuuden 96,4 % ja väärän positiivisen osuuden 0,6 %. Kiristäminen arvoon 0,82 pudottaa väärät positiiviset 0,2 %:iin mutta pudottaa todelliset positiiviset 91,7 %:iin; löysentäminen arvoon 0,72 nostaa väärät positiiviset 2,4 %:iin ja todelliset positiiviset 98,6 %:iin.
4. Aikasidonnaisten eleiden tilakone
TAP, LONG_PRESS ja DOUBLE_TAP ovat aikasidonnaisia, eikä niitä voida luokitella pelkän näytteen muodon perusteella. Käytämme äärellistä tilakonetta, jossa on 5 tilaa:
- IDLE: kosketusta ei havaittu.
- TOUCH_DOWN: ensimmäinen näyte vastaanotettu, siirrytään tilaan PRESS.
- PRESS: kosketus pidetään, käynnistetään pitkänestonimen ajastin.
- RELEASE: kosketus irrotettu, arvioidaan TAP vs. LONG_PRESS vs. DOUBLE_TAP.
- WAIT_DOUBLE: irrotettu, odotetaan enintään 300 ms toista napautusta.
Siirtymiä hallitaan 4 kynnyksellä:
- LONG_PRESS_TIME: 600 ms (konfiguroitavissa 400–2000 ms).
- DOUBLE_TAP_GAP: 300 ms.
- TAP_MAX_DURATION: 250 ms.
- TAP_MAX_DISPLACEMENT: 4 mm.
Tilakone on toteutettu kosketuksen keskeytyskäsittelyssä kytkimenä, ja se vie 0,06 ms siirtymää kohden L5-mallissa. TAP-eleen kokonaistunnistusviive on napautuksen kesto plus yksi näytteiden välinen aika, pahimmillaan 280–320 ms mutta tyypillisesti 130–180 ms.
5. CPU- ja muistikustannus
Koko eleiden putki (pistokone + tilakone + piirteiden erotus) kuluttaa L5-mallissa 1,9 MIPS CPU-tehoa, kun eleiden määrä on 3 elettä sekunnissa. L5-mallin isäntä-SoC:lla on 240 MIPS vapaata äänen ja OCR:n jälkeen, joten eleiden prosessori on käytännössä ilmainen.
Muistikustannus on 4,2 KB koodia (flash-muistissa) ja 1,1 KB työmuistia (16 pisteen mallille ja näytepuskurille). K7- ja KF1-malleissa sama putki vie 5,1 KB koodia ja 1,4 KB RAM-muistia, koska alemman tason MCU kääntää mallit vähemmällä optimoinnilla.
Q8 ja T2 lisäävätähän CIRCLE-eleen luokittelijan, joka käyttää 24 pisteen Hough-muunnoksen kaltaista silmukkaa. Tämä lisää 3,4 KB koodia ja 0,8 KB RAM-muistia ja toimii 4,1 MIPS nopeudella luokittelun aikana. CIRCLE on premium-ominaisuus ja se on oletuksena pois käytöstä Q8-mallissa ja käytössä vain T2-mallissa, ellei OEM-ostaja pyydä sitä Q8-malliin.
6. Viive: napautuksesta toimintoon ja pyyhkäisystä toimintoon
Päästä päähän -viive fyysisen eleen päättymisestä isännän toiminnon antamiseen:
| Ele | L5 / Q8 / T2 | K7 / KF1 |
|---|---|---|
| TAP | 130 ms – 180 ms | 180 ms – 240 ms |
| LONG_PRESS | 620 ms – 720 ms | 700 ms – 820 ms |
| DOUBLE_TAP | 320 ms – 420 ms | 400 ms – 520 ms |
| SWIPE (mikä tahansa suunta) | 55 ms – 65 ms | 75 ms – 95 ms |
| CIRCLE | 80 ms – 110 ms (vain T2) | n/a |
Nämä luvut sisältävät kosketusohjaimen raportointinopeuden, I2C/SPI-siirtoajan, algoritmin suoritusajan sekä isäntäsovelluksen vasteajan.
7. Eri käyttäjäryhmien virittäminen
Oletuskynnykset on viritetty 4–9-vuotiaille lapsille. Aikuiskäyttäjillä (opettajat, vanhemmat) eleet ovat suurempia ja nopeampia, mikä itse asiassa parantaa tunnistustarkkuuden 98,5 %:iin todellisilla positiivisilla samoilla kynnyksillä. Alle 4-vuotiaille lapsille OEM-ostaja voi pyytää pehmeämpää eleprofiilia laiteohjelmiston kautta:
- LONG_PRESS_TIME nostetaan 600 ms:stä 900 ms:iin.
- TAP_MAX_DISPLACEMENT nostetaan 4 mm:stä 6 mm:iin.
- SWIPE_MIN_DISPLACEMENT lasketaan 8 mm:stä 5 mm:iin.
Tätä profiilia kutsutaan nimellä KIDS_PROFILE_V1 ja se on saatavilla kaikissa 11 mallissa laiteohjelmiston build-flag -asetuksella. OEM-ohjelman, joka kohdistuu 2–4-vuotiaiden ikäryhmään, tulisi pyytää tätä profiilia.
8. Hyväksymistesti OEM-ostajille
Suosittelemme seuraavaa 5 testin hyväksymispakettia eleentunnistukseen:
- SWIPE_LEFT -tunnistusaste ≥ 96 % 100 yrityksellä 3 eri testaajalta.
- SWIPE_RIGHT -tunnistusaste ≥ 96 % 100 yrityksellä.
- TAP -väärä positiivinen -aste ≤ 1 % 1 000 ei-kosketussekunnin aikana.
- LONG_PRESS -tunnistuslatenssi 600–800 ms.
- DOUBLE_TAP -tunnistusaste ≥ 92 % 100 yrityksellä.
Testaajat tulisi valita kohdeikäryhmästä. Vain aikuisten insinöörien testaama näyte antaa liian korkean tarkkuuden, koska aikuisten eleet ovat yhtenäisempiä. Sisäisessä validoinnissamme käytämme 30:tä 4–9-vuotiasta lasta ja 10:aikuista, ja julkaistu 96,4 %:n todellisten positiivisten osuus on vain lapsista mitattu luku.
9. Yleiset vikatilat
OEM-ohjelmissa olemme havainneet seuraavat eleiden integrointivirheet:
- Isäntäsovellus kysyy eleitä 50 ms silmukassa keskeytysten sijaan, mikä lisää 50 ms latenssia. Käytä aina ele-keskeytystä, älä kyselyä.
- Sovellus ottaa DOUBLE_TAP -eleen käyttöön mutta unohtaa asettaa DOUBLE_TAP_GAP -arvoksi 300 ms, jolloin jokainen napautus luokitellaan kaksoisnapautukseksi.
- Sovellus yhdistää CIRCLE-eleen "seuraava sivu" -toimintoon, mutta lasten pyyhkäisyt ovat liian pieniä (5 mm 12 mm:n sijaan) ja algoritmi luokittelee ne kohinaksi. Laske CIRCLE_MIN_CIRCUMFERENCE -arvoa 12 mm:stä 8 mm:iin, jos kohdistat nuorempiin käyttäjiin.
- Sovellus poistaa LONG_PRESS -eleen käytöstä mutta jättää ajastimen käyntiin, mikä kuluttaa jatkuvasti 0,04 MIPS CPU-tehoa. Aseta LONG_PRESS_ENABLE = 0 ohittaaksesi ajastimen.
Lisätietoja ele-moottoria syöttävästä kosketusanturista on kohdassa Lukukynän kosketustarkkuus ja jitter-testi. Siitä, miten eleet yhdistetään käyttöliittymätoimintoihin viitesanakirjasovelluksessa, katso Lukukynän sanakirjatiedoston muoto ja versio. Siitä, miten isäntä-SOC-aikatauluttaa ele-tehtävän OCR:ää ja ääntä vasten, katso Lukukynän laiteohjelmistoarkkitehtuuri selitettynä. OEM-spesifikaatioiden kielestä ja hyväksymiskriteereistä katso Lukukynän OEM- ja ODM-spesifikaatiopohja. Jos haluat pyytää ele-testiraporttia 5 testaajan histogrammeilla omasta näyte-erästäsi, katso /request-a-quote.
10. OEM-sopimukseen laitettava spesifikaatiokieli
Puolustettava OEM-spesifikaatio eleentunnistukseen sisältää:
- Ele-sanaston lista mallikohtaisella saatavuudella.
- Template matcher -kynnysarvo (oletus 0,78, konfiguroitavissa 0,70–0,85).
- LONG_PRESS_TIME (oletus 600 ms).
- DOUBLE_TAP_GAP (oletus 300 ms).
- TRUE_POSITIVE_RATE ≥ 96 % 1 200 eleen lapsilla testatulla testijoukolla.
- FALSE_POSITIVE_RATE ≤ 1 % 1 000 sekunnin ei-kosketustestissä.
- Ele-toiminto-latenssitaulukko eleluokittain.
Toimittaja, joka ei voi sitoutua näihin lukuihin, ei vielä pyöritä algoritmia tuotantolaatuisena. Julkaisemme mallikohtaisen ele-testiraportin jokaisen tuotantoerän yhteydessä ilman lisäkustannuksia.
Aiheeseen liittyvää lukemista
- Lukukynän kosketustarkkuus ja jitter-testi
- Lukukynän kosketusnäytön ohjain ja eleet
- Lukukynän laiteohjelmistoarkkitehtuuri selitettynä
- Lukukynän sanakirjatiedoston muoto ja versio
- Lukukynän laadunvalvonta ja AQL-standardit
- Lukukynän näytön luminanssin tasaisuus
Lisälukemista: elekombinaatiot ja monisormi-sekvenssit
Osiossa 1 luetellun yksittäisten eleiden sanaston lisäksi L5-, Q8- ja T2-laiteohjelmisto tukee pientä joukkoa kahden sormen elekombinaatioita tehokäyttäjille:
- TWO_FINGER_TAP: vastaa takaisin-painiketta sanakirjasovelluksessa.
- TWO_FINGER_SWIPE_LEFT: vastaa sivun taakse -komentoa pitkän sisällön lukijoissa.
- PINCH: lähentää tai loitontaa sanakirjatekstiä 25 % yhtä nipistyskertaa kohti.
Nämä yhdistelmät eivät ole oletussanastossa, ja ne on oletuksena pois käytöstä. OEM-ostajat voivat ottaa ne käyttöön laiteohjelmiston käännösvalitsimella, jolloin koodin koko kasvaa 0,8 KB:lla ja RAM-muistin kulutus 0,3 KB:lla.
Elemoottori tukee myös vähävirtaista "napauta herättääksesi" -tilaa malleissa L5, Q8 ja T2. Tässä tilassa kosketusohjain pyyhkäisee 8 Hz:n taajuudella 120 Hz:n sijaan kuluttaen vain 0,2 mW. Kun napautus havaitaan, ohjain vaihtaa 120 Hz:iin 12 ms:n kuluessa. Tämä tila on oletuksena käytössä Q8- ja T2-malleissa, koska niissä on suurempi akku, ja pois käytöstä L5-mallissa, koska pienempi akku ei kestä herätyslatenssin aiheuttamaa haittaa jokaisella sanakirjahakukerralla.
Vuodesta 2023 lähtien toimitettujen yli 47 000 yksikön joukossa eleisiin liittyvät kenttäviat muodostavat 1,1 % kaikista RMA-tapauksista. Hallitseva syy on nesteen pääsyn aiheuttama juuttunut kosketusalue (38 %), seuraavaksi kalvon irtoaminen anturin reunasta (24 %) ja laiteohjelmiston lukkiutuminen (18 %). 1,1 %:n osuus on huomattavasti pienempi kuin 4,2 %:n kosketusvikaosuus, koska eleitä käytetään vain premium-malleissa, joissa on parempi tiivistys ja tiukempi AQL kosketusanturille.