Κοινό: Αυτό το άρθρο απευθύνεται σε μηχανικούς firmware, σχεδιαστές UX και διαχειριστές προϊόντων OEM που χρειάζεται να κατανοήσουν τον αλγόριθμο αναγνώρισης χειρονομιών που εκτελείται στα B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 και Y6 reading pens. Υποθέτουμε ότι σχεδιάζετε ένα προσαρμοσμένο περιβάλλον μενού ή αξιολογείτε πώς θα προσθέσετε χειρονομίες σε μια υπάρχουσα εφαρμογή λεξικού, και χρειάζεται να γνωρίζετε ποιο ποσοστό αναγνώρισης, ποια καθυστέρηση και ποιο φορτίο CPU να περιμένετε.
Μια χειρονομία του reading pen είναι μια ακολουθία δειγμάτων αφής που καταγράφονται σε 30 ms έως 500 ms. Το firmware μετατρέπει αυτά τα δείγματα σε έναν διακριτό κωδικό χειρονομίας (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) που το επίπεδο εφαρμογής αντιστοιχίζει σε μια ενέργεια UI. Η μετατροπή είναι αρκετά ελαφριά για να εκτελεστεί σε οποιοδήποτε από τα 11 μοντέλα, αλλά ρυθμίζεται διαφορετικά ανά μοντέλο επειδή η ανάλυση του αισθητήρα, ο ρυθμός δειγματοληψίας και ο προϋπολογισμός CPU του host διαφέρουν. Αυτό το άρθρο καλύπτει τον αλγόριθμο, τους αριθμούς ρύθμισης και τις αστοχίες γύρω από τις οποίες πρέπει να σχεδιάσουν οι αγοραστές.
1. Το λεξιλόγιο χειρονομιών
Στα 11 μοντέλα που διαθέτουμε, το λεξιλόγιο χειρονομιών είναι ομοιόμορφο:
| Χειρονομία | Παράθυρο δείγματος | Χρησιμοποιείται σε |
|---|---|---|
| TAP | 30 ms έως 250 ms άγγγμα + απελευθέρωση | Και στα 11 μοντέλα (μέσω υποκατάστατου κουμπιού στα μοντέλα ζωνών) |
| ΠΑΡΑΤΕΤΑΜΕΝΟ_ΠΑΤΗΜΑ | 600 ms έως 2000 ms συνεχές άγγιγμα | K7, KF1, L5, Q8, T2 |
| ΔΙΠΛΟ_ΠΑΤΗΜΑ | Δύο άγγιγματα εντός 300 ms | L5, Q8, T2 |
| ΣΥΡΣΗ_ΑΡΙΣΤΕΡΑ \/ ΔΕΞΙΑ | 50 ms έως 250 ms συνεχές σύρσιμο, ≥ 8 mm | K7, KF1, L5, Q8, T2 |
| ΣΥΡΣΗ_ΠΑΝΩ \/ ΚΑΤΩ | Το ίδιο, κατακόρυφη κατεύθυνση | L5, Q8, T2 (μόνο) |
| ΚΥΚΛΟΣ | Κλειστός βρόχος, ≥ 12 mm περίμετρος | Q8, T2 (λειτουργία premium) |
Τα μοντέλα απλής ζώνης (B1, B2, F8, P2, Q6, Y6) δεν εκτελούν καθόλου χειρονομίες επειδή δεν διαθέτουν αισθητήρα αφής 2D. Αντικαθιστούν με 4 έως 8 διακριτές ζώνες κουμπιών. Αυτό το άρθρο εστιάζει στα μοντέλα matrix.
2. Η σωλήνωση του αλγορίθμου
Ο αλγόριθμος αναγνώρισης χειρονομιών εκτελείται σε τέσσερα στάδια. Κάθε στάδιο έχει έναν αυστηρό προϋπολογισμό CPU· εάν κάποιο στάδιο ξεπεράσει τον προϋπολογισμό του, η χειρονομία απορρίπτεται (δεν εκδίδεται εντολή) αντί να αναγνωριστεί εσφαλμένα.
Στάδιο 1: Λήψη δειγμάτων. Ο ελεγμένας αφής αναφέρει συντεταγμένες στα 80 Hz έως 120 Hz. Ο host MCU τις διαβάζει μέσω I2C στα 100 kHz έως 400 kHz στα K7/KF1/L5, και μέσω SPI στα 10 MHz στα Q8/T2. Κάθε δείγμα είναι μια πλειάδα (x, y, t).
Στάδιο 2: Απόσβεση και απόρριψη ακραίων τιμών. Δύο δείγματα εντός 4 mm και 20 ms συγχωνεύονται σε ένα. Ένα δείγμα που αποκλίνει περισσότερο από 12 mm από το τρέχον κεντροειδές απορρίπτεται ως ακραία τιμή. Αυτό το στάδιο διαρκεί 0,4 ms ανά δείγμα στο L5.
Στάδιο 3: Εξαγωγή χαρακτηριστικών. Από την καθαρισμένη ροή δειγμάτων υπολογίζουμε 7 χαρακτηριστικά: συνολική μετατόπιση, συνολικό μήκος διαδρομής, μέση ταχύτητα, μέγιστη ταχύτητα, γωνία κυρίαρχης κατεύθυνσης, καμπυλότητα και διάρκεια. Αυτά είναι τα εισερχόμενα στον ταξινομητή.
Στάδιο 4: Ταξινόμηση. Χρησιμοποιούμε έναν βαθμολογητή αντιστοίχισης προτύπων για τα 6 κατευθυντικά swipe και μια μηχανή καταστάσεων για τις χειρονομίες που βασίζονται στον χρόνο (TAP, LONG_PRESS, DOUBLE_TAP). Η μηχανή καταστάσεων και ο βαθμολογητής προτύπων μαζί καταναλώνουν 1,6 ms ανά χειρονομία στο L5.
Συνολικός προϋπολογισμός ανά χειρονομία στο L5: 0,4 + 1,6 + ταξινομητής σταδίου 4 = 2,4 ms, συν την επιβάρυνση διαχείρισης διακοπών, αφήνει περιθώριο 6 ms πριν ξεπεραστεί ο προϋπολογισμός των 8,3 ms μεταξύ καρέ.
3. Ο βαθμολογητής προτύπων για τα swipes
Καθένα από τα 6 κατευθυντικά swipes (αριστερά, δεξιά, πάνω, κάτω, συν τις δύο διαγώνιες στο T2) έχει ένα πρότυπο. Το πρότυπο είναι μια 16-σημείων πολυγραμμή της αναμενόμενης τροχιάς δειγμάτων, κανονικοποιημένη σε μήκος 12 mm και κεντραρισμένη στην αρχή. Κατά την αναγνώριση, κανονικοποιούμε την εισερχόμενη ροή δειγμάτων με τον ίδιο τρόπο (μεταφορά κεντροειδούς στην αρχή, κλιμάκωση σε 12 mm, επαναδειγματοληψία σε 16 σημεία) και υπολογίζουμε τη μέση Ευκλείδεια απόσταση μεταξύ εισόδου και προτύπου σε κάθε σημείο.
Η βαθμολογία αντιστοίχισης είναι 1 - (μέση_απόσταση / 12). Βαθμολογία 1,0 είναι τέλεια αντιστοίχιση· βαθμολογία 0,0 είναι ορθογώνια. Ο ταξινομητής επιστρέφει το πρότυπο με την υψηλότερη βαθμολογία, υπό την προϋπόθεση ότι η βαθμολογία υπερβαίνει το 0,78. Οτιδήποτε κάτω από 0,78 ταξινομείται ως "unknown" και αγνοείται.
Το κατώφλι 0,78 ρυθμίστηκε σε ένα σύνολο δεδομένων 1.200 χειρονομιών που συλλέχθηκαν από 30 παιδιά ηλικίας 4 έως 9 ετών στις δύο μονάδες μας. Μετρήσαμε ποσοστό αληθώς θετικών 96,4% και ποσοστό ψευδώς θετικών 0,6% στο L5 με αυτό το κατώφλι. Η σύσφιξη σε 0,82 μειώνει τα ψευδώς θετικά σε 0,2% αλλά μειώνει τα αληθώς θετικά σε 91,7%· η χαλάρωση σε 0,72 αυξάνει τα ψευδώς θετικά σε 2,4% και τα αληθώς θετικά σε 98,6%.
4. Η μηχανή καταστάσεων για χειρονομίες που βασίζονται στον χρόνο
Τα TAP, LONG_PRESS και DOUBLE_TAP εξαρτώνται από τον χρόνο και δεν μπορούν να ταξινομηθούν μόνο από το σχήμα του δείγματος. Χρησιμοποιούμε μια πεπερασμένη μηχανή καταστάσεων με 5 καταστάσεις:
- IDLE: κανένα άγγιγμα.
- TOUCH_DOWN: λαμβάνεται το πρώτο δείγμα, μετάβαση σε PRESS.
- PRESS: το άγγιγμα διατηρείται, εκκίνηση του χρονοδιακόπτη long-press.
- RELEASE: το άγγιγμα απελευθερώνεται, αξιολόγηση TAP vs LONG_PRESS vs DOUBLE_TAP.
- WAIT_DOUBLE: απελευθερωμένο, αναμονή έως 300 ms για δεύτερο άγγιγμα.
Οι μεταβάσεις διέπονται από 4 κατώφλια:
- LONG_PRESS_TIME: 600 ms (ρυθμιζόμενο 400 έως 2000 ms).
- ΚΕΝΟ_ΔΙΠΛΟΥ_ΠΑΤΗΜΑΤΟΣ: 300 ms.
- ΜΕΓΙΣΤΗ_ΔΙΑΡΚΕΙΑ_ΠΑΤΗΜΑΤΟΣ: 250 ms.
- ΜΕΓΙΣΤΗ_ΜΕΤΑΤΟΠΙΣΗ_ΠΑΤΗΜΑΤΟΣ: 4 mm.
Η μηχανή καταστάσεων υλοποιείται ως switch στον ISR αφής, διαρκεί 0,06 ms ανά μετάβαση στο L5. Η συνολική καθυστέρηση αναγνώρισης για ένα TAP είναι η διάρκεια του άγγιγματος συν ένα διάστημα μεταξύ δειγμάτων, που είναι 280 ms έως 320 ms στη χειρότερη περίπτωση αλλά τυπικά 130 ms έως 180 ms.
5. Κόστος CPU και μνήμης
Η πλήρης σωλήνωση χειρονομιών (βαθμολογητής προτύπων + μηχανή καταστάσεων + εξαγωγή χαρακτηριστικών) στο L5 καταναλώνει 1,9 MIPS CPU σε ρυθμό χειρονομιών 3 ανά δευτερόλεπτο. Το host SoC του L5 διαθέτει 240 MIPS περιθωρίου μετά τον ήχο και το OCR, επομένως η μηχανή χειρονομιών είναι ουσιαστικά δωρεάν.
Το κόστος μνήμης είναι 4,2 KB κώδικα (σε flash) και 1,1 KB RAM εργασίας (για το 16-σημείων πρότυπο και τον buffer δειγμάτων). Στα K7 και KF1 η ίδια σωλήνωση κοστίζει 5,1 KB κώδικα και 1,4 KB RAM επειδή το MCU χαμηλότερης βαθμίδας μεταγλωττίζει τα πρότυπα με λιγότερη βελτιστοποίηση.
Τα Q8 και T2 προσθέτουν έναν ταξινομητή χειρονομίας CIRCLE χρησιμοποιώντας έναν βρόχο τύπου μετασχηματισμού Hough 24 σημείων. Αυτό προσθέτει 3,4 KB κώδικα και 0,8 KB RAM, και εκτελείται στα 4,1 MIPS κατά την ταξινόμηση. Το CIRCLE είναι λειτουργία premium και είναι απενεργοποιημένο από προεπιλογή στο Q8 και ενεργοποιείται μόνο στο T2 εκτός εάν ο αγοραστής OEM το ζητήσει για το Q8.
6. Καθυστέρηση: Πάτημα-σε-Ενέργεια και Σύρσιμο-σε-Ενέργεια
Καθυστέρηση από άκρο σε άκρο από την ολοκλήρωση της φυσικής χειρονομίας έως την έκδοση της ενέργειας στον host:
| Χειρονομία | L5 \/ Q8 \/ T2 | K7 \/ KF1 |
|---|---|---|
| ΠΑΤΗΜΑ | 130 ms έως 180 ms | 180 ms έως 240 ms |
| ΠΑΡΑΤΕΤΑΜΕΝΟ_ΠΑΤΗΜΑ | 620 ms έως 720 ms | 700 ms έως 820 ms |
| ΔΙΠΛΟ_ΠΑΤΗΜΑ | 320 ms έως 420 ms | 400 ms έως 520 ms |
| ΣΥΡΣΗ (οποιαδήποτε κατεύθυνση) | 55 ms έως 65 ms | 75 ms έως 95 ms |
| ΚΥΚΛΟΣ | 80 ms έως 110 ms (μόνο T2) | n/a |
Αυτοί οι αριθμοί περιλαμβάνουν τον ρυθμό αναφοράς του ελεγκτή αφής, τον χρόνο μεταφοράς I2C/SPI, την εκτέλεση του αλγορίθμου και τον χρόνο απόκρισης της εφαρμογής του κεντρικού υπολογιστή.
7. Ρύθμιση για Διαφορετικές Ομάδες Χρηστών
Τα προεπιλεγμένα όρια έχουν ρυθμιστεί για παιδιά ηλικίας 4 έως 9 ετών. Για ενήλικους χρήστες (εκπαιδευτικούς, γονείς) οι χειρονομίες είναι μεγαλύτερες και γρηγορότερες, γεγονός που βελτιώνει στην πραγματικότητα την ακρίβεια αναγνώρισης σε 98,5% αληθώς θετικά (true-positive) με το ίδιο όριο. Για παιδιά κάτω των 4 ετών, ο αγοραστής OEM μπορεί να ζητήσει ένα πιο ήπιο προφίλ χειρονομιών μέσω διαμόρφωσης firmware:
- Ο ΧΡΟΝΟΣ_ΠΑΡΑΤΕΤΑΜΕΝΟΥ_ΠΑΤΗΜΑΤΟΣ αυξήθηκε από 600 ms σε 900 ms.
- Η ΜΕΓΙΣΤΗ_ΜΕΤΑΤΟΠΙΣΗ_ΠΑΤΗΜΑΤΟΣ αυξήθηκε από 4 mm σε 6 mm.
- Η ΕΛΑΧΙΣΤΗ_ΜΕΤΑΤΟΠΙΣΗ_ΣΥΡΣΗΣ μειώθηκε από 8 mm σε 5 mm.
Αυτό το προφίλ ονομάζεται KIDS_PROFILE_V1 και είναι διαθέσιμο και στα 11 μοντέλα μέσω ενός build flag firmware. Ένα πρόγραμμα OEM που στοχεύει την ηλικιακή ομάδα 2 έως 4 ετών θα πρέπει να ζητήσει αυτό το προφίλ.
8. Δοκιμή Αποδοχής για Αγοραστές OEM
Προτείνουμε την ακόλουθη σειρά 5 δοκιμών αποδοχής για την αναγνώριση χειρονομιών:
- Ποσοστό αναγνώρισης SWIPE_LEFT ≥ 96% σε 100 δοκιμές από 3 διαφορετικούς δοκιμαστές.
- Ποσοστό αναγνώρισης SWIPE_RIGHT ≥ 96% σε 100 δοκιμές.
- Ποσοστό ψευδώς θετικών TAP ≤ 1% σε 1.000 δευτερόλεπτα χωρίς αφή.
- Καθυστέρηση αναγνώρισης LONG_PRESS μεταξύ 600 και 800 ms.
- Ποσοστό αναγνώρισης DOUBLE_TAP ≥ 92% σε 100 δοκιμές.
Οι δοκιμαστές θα πρέπει να επιλέγονται από την ηλικιακή ομάδα-στόχο. Ένα δείγμα που δοκιμάζεται μόνο από ενήλικους μηχανικούς θα αναφέρει διογκωμένη ακρίβεια, επειδή οι χειρονομίες των ενηλίκων είναι πιο συνεπείς. Η εσωτερική μας επικύρωση χρησιμοποιεί 30 παιδιά ηλικίας 4 έως 9 ετών και 10 ενήλικες, και το δημοσιευμένο ποσοστό αληθώς θετικών 96,4% αναφέρεται μόνο στα παιδιά.
9. Συνήθεις Μορφές Αστοχίας
Σε προγράμματα OEM έχουμε δει τις ακόλουθες αστοχίες ενσωμάτωσης χειρονομιών:
- Η εφαρμογή του κεντρικού υπολογιστή πραγματοποιεί polling για χειρονομίες σε βρόχο 50 ms αντί να χρησιμοποιεί interrupts, προσθέτοντας καθυστέρηση 50 ms. Χρησιμοποιείτε πάντα το interrupt χειρονομίας, όχι polling.
- Η εφαρμογή ενεργοποιεί το DOUBLE_TAP αλλά παραλείπει να ορίσει το DOUBLE_TAP_GAP σε 300 ms, με αποτέλεσμα κάθε tap να ταξινομείται ως double-tap.
- Η εφαρμογή αντιστοιχίζει το CIRCLE σε "επόμενη σελίδα", αλλά τα swipes των παιδιών είναι πολύ μικρά (5 mm αντί 12 mm) και ο αλγόριθμος τα ταξινομεί ως θόρυβο. Μειώστε το CIRCLE_MIN_CIRCUMFERENCE από 12 mm σε 8 mm εάν στοχεύετε σε μικρότερους χρήστες.
- Η εφαρμογή απενεργοποιεί το LONG_PRESS αλλά αφήνει τον χρονοδιακόπτη να λειτουργεί, σπαταλώντας 0,04 MIPS CPU συνεχώς. Ορίστε LONG_PRESS_ENABLE = 0 για να παρακαμφθεί ο χρονοδιακόπτης.
Για περισσότερα σχετικά με τον αισθητήρα αφής που τροφοδοτεί τη μηχανή χειρονομιών, δείτε Δοκιμή Ακρίβειας Αφής και Τρέμουλου του Αναγνωστικού Στυλό. Για τον τρόπο με τον οποίο οι χειρονομίες αντιστοιχίζονται σε ενέργειες UI στην εφαρμογή λεξικού αναφοράς, δείτε Μορφή Αρχείου και Έκδοση Λεξικού Αναγνωστικού Στυλό. Για τον τρόπο με τον οποίο ο κεντρικός SoC προγραμματίζει την εργασία χειρονομιών έναντι του OCR και του ήχου, δείτε Επεξήγηση Αρχιτεκτονικής Υλικολογισμικού Αναγνωστικού Στυλό. Για τη γλώσσα προδιαγραφών OEM και τα κριτήρια αποδοχής, δείτε Πρότυπο Προδιαγραφών OEM και ODM Αναγνωστικού Στυλό. Για να ζητήσετε μια αναφορά δοκιμής χειρονομιών με ιστογράμματα 5 δοκιμαστών από τη δική σας παρτίδα δείγματος, δείτε /request-a-quote.
10. Η Γλώσσα Προδιαγραφών που Πρέπει να Συμπεριληφθεί σε Συμβόλαιο OEM
Μια αμυντική προδιαγραφή OEM για την αναγνώριση χειρονομιών περιλαμβάνει:
- Λίστα λεξιλογίου χειρονομιών με διαθεσιμότητα ανά μοντέλο.
- Όριο template matcher (προεπιλογή 0,78, διαμορφώσιμο 0,70 έως 0,85).
- ΧΡΟΝΟΣ_ΠΑΡΑΤΕΤΑΜΕΝΟΥ_ΠΑΤΗΜΑΤΟΣ (προεπιλογή 600 ms).
- ΚΕΝΟ_ΔΙΠΛΟΥ_ΠΑΤΗΜΑΤΟΣ (προεπιλογή 300 ms).
- TRUE_POSITIVE_RATE ≥ 96% στο σύνολο δοκιμών 1.200 χειρονομιών για παιδική ηλικία.
- FALSE_POSITIVE_RATE ≤ 1% στη δοκιμή 1.000 δευτερολέπτων χωρίς αφή.
- Πίνακας καθυστέρησης χειρονομίας-προς-ενέργεια ανά κατηγορία χειρονομίας.
Ένας προμηθευτής που δεν μπορεί να δεσμευτεί σε αυτούς τους αριθμούς δεν λειτουργεί ακόμη τον αλγόριθμο σε ποιότητα παραγωγής. Δημοσιεύουμε την αναφορά δοκιμής χειρονομιών ανά μοντέλο με κάθε παρτίδα παραγωγής χωρίς πρόσθετο κόστος.
Σχετική Ανάγνωση
- Δοκιμή Ακρίβειας Αφής και Τρέμουλου του Αναγνωστικού Στυλό
- Ελεγκτής Οθόνης Αφής και Χειρονομίες Αναγνωστικού Στυλό
- Επεξήγηση Αρχιτεκτονικής Υλικολογισμικού Αναγνωστικού Στυλό
- Μορφή αρχείου και έκδοση λεξικού στυλού ανάγνωσης
- Ποιοτικός έλεγχος και πρότυπα AQL στυλού ανάγνωσης
- Ομοιομορφία φωτεινότητας οθόνης στυλού ανάγνωσης
Συμπληρωματική ανάγνωση: Συνδυασμοί χειρονομιών και ακολουθίες πολλαπλών δακτύλων
Πέρα από το λεξιλόγιο μεμονωμένων χειρονομιών που αναφέρεται στην Ενότητα 1, το υλικολογισμικό των L5, Q8 και T2 υποστηρίζει ένα μικρό σύνολο συνδυασμών χειρονομιών δύο δακτύλων για προχωρημένους χρήστες:
- TWO_FINGER_TAP: ισοδυναμεί με κουμπί πίσω στην εφαρμογή λεξικού.
- TWO_FINGER_SWIPE_LEFT: ισοδυναμεί με εντολή επιστροφής σελίδας σε αναγνώστες μεγάλου περιεχομένου.
- PINCH: μεγέθυνση ή σμίκρυνση του κειμένου του λεξικού κατά 25% ανά κύκλο τσίμπης.
Αυτοί οι συνδυασμοί δεν περιλαμβάνονται στο προεπιλεγμένο λεξιλόγιο και είναι απενεργοποιημένοι από προεπιλογή. Οι αγοραστές OEM μπορούν να τους ενεργοποιήσουν μέσω ενός flag δημιουργίας υλικολογισμικού, με κόστος 0,8 KB επιπλέον κώδικα και 0,3 KB επιπλέον RAM.
Η μηχανή χειρονομιών υποστηρίζει επίσης μια λειτουργία χαμηλής κατανάλωσης «tap to wake» στα L5, Q8 και T2. Σε αυτή τη λειτουργία, ο ελεγκτής αφής κάνει δειγματοληψία στα 8 Hz αντί για 120 Hz, καταναλώνοντας μόνο 0,2 mW. Όταν ανιχνευτεί ένα πάτημα, ο ελεγκτής μεταβαίνει στα 120 Hz εντός 12 ms. Αυτή η λειτουργία είναι ενεργοποιημένη από προεπιλογή στα Q8 και T2 επειδή διαθέτουν μεγαλύτερες μπαίνες, και απενεργοποιημένη στο L5 επειδή η μικρότερη μπαταρία δεν μπορεί να απορροφήσει την καθυστέρηση αφύπνισης σε κάθε αναζήτηση λεξικού.
Στις 47.000+ μονάδες που έχουν αποσταλεί από το 2023, οι αστοχίες πεδίου που σχετίζονται με χειρονομίες αντιπροσωπεύουν το 1,1% όλων των RMA. Η κυρίαρχη αιτία είναι μια κολλημένη ζώνη αφής λόγω εισροής υγρού (38%), ακολουθούμενη από αποκόλληση της επικάλυψης στην άκρη του αισθητήρα (24%) και μπλοκάρισμα υλικολογισμικού (18%). Το ποσοστό 1,1% είναι πολύ χαμηλότερο από το ποσοστό αστοχίας αφής 4,2% επειδή οι χειρονομίες χρησιμοποιούνται μόνο στα μοντέλα premium που διαθέτουν καλύτερη στεγανοποίηση και αυστηρότερο AQL στον αισθητήρα αφής.