"Algoritma pengenalan gestur gesekan dan ketukan pada firmware pena baca B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2, dan Y6, dengan penilaian templat, penyetelan ambang batas, dan kriteria penerimaan OEM.

Diposting Pada: Jul 13, 2023 - 120 Dilihat

Algoritma Pengenalan Gestur Pena Baca: Bagaimana Gesekan dan Ketukan Menjadi Perintah UI

Audiens: Artikel ini ditujukan untuk firmware engineer, desainer UX, dan manajer produk OEM yang perlu memahami algoritma pengenalan gesture yang berjalan pada reading pen B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2, dan Y6. Kami mengasumsikan Anda sedang mendesain UI menu kustom atau mengevaluasi cara menambahkan gesture ke aplikasi kamus yang sudah ada, dan Anda perlu mengetahui tingkat pengenalan, latensi, serta beban CPU yang dapat diharapkan.

Gesture pada reading pen adalah urutan sampel sentuhan yang ditangkap selama 30 md hingga 500 md. Firmware mengubah sampel-sampel tersebut menjadi kode gesture diskret (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) yang dipetakan oleh lapisan aplikasi ke sebuah aksi UI. Proses konversinya cukup ringkas untuk dijalankan pada 11 model tersebut tetapi disetel secara berbeda per model karena resolusi sensor, laju sampel, dan anggaran CPU host bervariasi. Artikel ini membahas algoritma, angka-angka penyetelan, dan mode kegagalan yang sebaiknya direncanakan oleh pembeli.

1. Kosakata Gesture

Pada 11 model yang kami kirim, kosakata gesture konsisten:

Gesture Jendela sampel Digunakan pada
TAP Sentuh + lepas 30 md hingga 250 md Semua 11 model (melalui substitusi tombol pada model zona)
LONG_PRESS Sentuh berkelanjutan 600 md hingga 2000 md K7, KF1, L5, Q8, T2
DOUBLE_TAP Dua ketukan dalam waktu 300 md L5, Q8, T2
SWIPE_LEFT / RIGHT Geser terus-menerus 50 md hingga 250 md, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP / DOWN Sama, arah vertikal L5, Q8, T2 (saja)
CIRCLE Lintasan loop tertutup, keliling ≥ 12 mm Q8, T2 (fitur premium)

Model-model zona sederhana (B1, B2, F8, P2, Q6, Y6) tidak menjalankan gesture sama sekali karena tidak memiliki sensor sentuh 2D. Model-model tersebut menggantikan dengan 4 hingga 8 zona tombol diskret. Artikel ini berfokus pada model-model matriks.

2. Pipeline Algoritma

Algoritma pengenalan gesture berjalan dalam empat tahapan. Setiap tahapan memiliki anggaran CPU yang ketat; jika ada tahapan yang melampaui anggarannya, gesture akan dibuang (tidak ada perintah yang dikeluarkan) daripada dikenali secara keliru.

Tahap 1: Akuisisi sampel. Kontroler sentuh melaporkan koordinat pada 80 Hz hingga 120 Hz. Host MCU membacanya melalui I2C pada 100 kHz hingga 400 kHz pada K7/KF1/L5, dan melalui SPI pada 10 MHz pada Q8/T2. Setiap sampel berupa tupel (x, y, t).

Tahap 2: Debounce dan penolakan outlier. Dua sampel dalam jarak 4 mm dan 20 md digabungkan menjadi satu. Sampel yang menyimpang lebih dari 12 mm dari centroid berjalan akan dihapus sebagai outlier. Tahap ini memakan waktu 0,4 md per sampel pada L5.

Tahap 3: Ekstraksi fitur. Dari aliran sampel yang sudah dibersihkan, kami menghitung 7 fitur: perpindahan total, panjang lintasan total, kecepatan rata-rata, kecepatan puncak, sudut arah dominan, kelengkungan, dan durasi. Fitur-fitur ini menjadi masukan untuk pengklasifikasi.

Tahap 4: Klasifikasi. Kami menggunakan pemecan skor pencocokan template untuk 6 swipe berarah dan mesin state untuk gesture berbasis waktu (TAP, LONG_PRESS, DOUBLE_TAP). Mesin state dan pencocok template bersama-sama mengonsumsi 1,6 md per gesture pada L5.

Total anggaran per gesture pada L5: 0,4 + 1,6 + pengklasifikasi tahap 4 = 2,4 md, ditambah overhead penanganan interrupt, menyisakan margin 6 md sebelum anggaran antar-frame 8,3 md terlampaui.

3. Pencocok Template untuk Swipe

Setiap dari 6 swipe berarah (kiri, kanan, atas, bawah, ditambah dua diagonal pada T2) memiliki sebuah template. Template tersebut berupa polyline 16 titik dari lintasan sampel yang diharapkan, dinormalisasi ke panjang 12 mm dan dipusatkan di titik asal. Selama pengenalan, kami menormalisasi aliran sampel masukan dengan cara yang sama (menggeser centroid ke titik asal, menskalakan ke 12 mm, mengambil ulang sampel menjadi 16 titik) dan menghitung jarak Euclidean rata-rata antara masukan dan template pada setiap titik.

Skor kecocokan adalah 1 - (jarak_rata-rata / 12). Skor 1,0 adalah kecocokan sempurna; skor 0,0 adalah ortogonal. Pengklasifikasi mengembalikan template dengan skor tertinggi, asalkan skornya melampaui 0,78. Apa pun di bawah 0,78 diklasifikasikan sebagai "unknown" dan diabaikan.

Ambang batas 0,78 disetel pada dataset 1.200 gesture yang dikumpulkan dari 30 anak berusia 4 hingga 9 tahun di dua fasilitas kami. Kami mengukur tingkat true-positive sebesar 96,4% dan false-positive sebesar 0,6% pada L5 dengan ambang batas ini. Mengencangkan ke 0,82 menurunkan false-positive menjadi 0,2% tetapi menurunkan true-positive menjadi 91,7%; melonggarkan ke 0,72 menaikkan false-positive menjadi 2,4% dan true-positive menjadi 98,6%.


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

4. Mesin State untuk Gesture Berbasis Waktu

TAP, LONG_PRESS, dan DOUBLE_TAP bergantung pada waktu dan tidak dapat diklasifikasikan hanya dari bentuk sampel. Kami menggunakan finite state machine dengan 5 state:

  • IDLE: tidak ada sentuhan.
  • TOUCH_DOWN: sampel pertama diterima, transisi ke PRESS.
  • PRESS: sentuhan ditahan, mulai timer long-press.
  • RELEASE: sentuhan dilepas, evaluasi TAP vs LONG_PRESS vs DOUBLE_TAP.
  • WAIT_DOUBLE: dilepas, menunggu hingga 300 md untuk ketukan kedua.

Transisi diatur oleh 4 ambang batas:

  • LONG_PRESS_TIME: 600 md (dapat dikonfigurasi 400 hingga 2000 md).
  • DOUBLE_TAP_GAP: 300 md.
  • TAP_MAX_DURATION: 250 md.
  • TAP_MAX_DISPLACEMENT: 4 mm.

Mesin state diimplementasikan sebagai switch di ISR sentuh, memakan waktu 0,06 md per transisi pada L5. Total latensi pengenalan untuk sebuah TAP adalah durasi ketukan ditambah satu interval antar-sampel, yaitu 280 md hingga 320 md dalam kasus terburuk tetapi umumnya 130 md hingga 180 md.

5. Biaya CPU dan Memori

Pipeline gesture lengkap (pencocok template + mesin state + ekstraksi fitur) pada L5 mengonsumsi 1,9 MIPS CPU pada laju gesture 3 gesture per detik. SoC host L5 memiliki sisa 240 MIPS setelah audio dan OCR, sehingga mesin gesture pada dasarnya gratis.

Biaya memori adalah 4,2 KB kode (di flash) dan 1,1 KB RAM kerja (untuk template 16 titik dan buffer sampel). Pada K7 dan KF1, pipeline yang sama memakan biaya 5,1 KB kode dan 1,4 KB RAM karena MCU tingkat bawah mengompilasi template dengan optimasi yang lebih rendah.

Q8 dan T2 menambahkan pengklasifikasi gesture CIRCLE menggunakan loop mirip Hough-transform 24 titik. Ini menambahkan 3,4 KB kode dan 0,8 KB RAM, serta berjalan pada 4,1 MIPS selama klasifikasi. CIRCLE adalah fitur premium dan dinonaktifkan secara default pada Q8, dan hanya diaktifkan pada T2 kecuali pembeli OEM memintanya diaktifkan pada Q8.

6. Latensi: Tap-ke-Aksi dan Swipe-ke-Aksi

Latensi end-to-end dari penyelesaian gesture fisik hingga diterbitkannya aksi host:

Gesture L5 / Q8 / T2 K7 / KF1
TAP 130 md hingga 180 md 180 md hingga 240 md
LONG_PRESS 620 md hingga 720 md 700 md hingga 820 md
DOUBLE_TAP 320 md hingga 420 md 400 md hingga 520 md
SWIPE (segala arah) 55 md hingga 65 md 75 md hingga 95 md
CIRCLE 80 md hingga 110 md (hanya T2) t/a

Angka-angka ini mencakup report rate dari touch controller, waktu transfer I2C/SPI, eksekusi algoritma, dan waktu respons aplikasi host.

7. Penyesuaian untuk Populasi Pengguna yang Berbeda

Ambang batas default disetel untuk anak-anak usia 4 hingga 9 tahun. Untuk pengguna dewasa (guru, orang tua), gesturnya lebih besar dan lebih cepat, yang justru meningkatkan akurasi pengenalan menjadi 98,5% true-positive pada ambang batas yang sama. Untuk anak-anak di bawah usia 4 tahun, pembeli OEM dapat meminta profil gestur yang lebih lembut melalui konfigurasi firmware:

  • LONG_PRESS_TIME dinaikkan dari 600 md menjadi 900 md.
  • TAP_MAX_DISPLACEMENT dinaikkan dari 4 mm menjadi 6 mm.
  • SWIPE_MIN_DISPLACEMENT diturunkan dari 8 mm menjadi 5 mm.

Profil ini disebut KIDS_PROFILE_V1 dan tersedia di seluruh 11 model melalui build flag firmware. Program OEM yang menargetkan kelompok usia 2 hingga 4 tahun sebaiknya meminta profil ini.

8. Uji Penerimaan untuk Pembeli OEM

Kami merekomendasikan suite uji penerimaan 5-langkah berikut untuk pengenalan gestur:

  1. Tingkat pengenalan SWIPE_LEFT ≥ 96% pada 100 percobaan oleh 3 penguji yang berbeda.
  2. Tingkat pengenalan SWIPE_RIGHT ≥ 96% pada 100 percobaan.
  3. Tingkat false-positive TAP ≤ 1% selama 1.000 detik tanpa sentuhan.
  4. Latensi pengenalan LONG_PRESS antara 600 dan 800 md.
  5. Tingkat pengenalan DOUBLE_TAP ≥ 92% pada 100 percobaan.

Penguji harus diambil dari kelompok usia target. Sampel yang diuji hanya oleh engineer dewasa akan melaporkan akurasi yang terlalu tinggi karena gestur orang dewasa lebih konsisten. Validasi internal kami menggunakan 30 anak berusia 4 hingga 9 tahun ditambah 10 orang dewasa, dan tingkat true-positive 96,4% yang dipublikasikan adalah angka khusus anak-anak.

9. Mode Kegagalan Umum

Dalam program OEM kami telah melihat kegagalan integrasi gestur berikut:

  1. Aplikasi host melakukan polling untuk gestur dalam loop 50 md alih-alih menggunakan interrupt, menambah latensi 50 md. Selalu gunakan interrupt gestur, bukan polling.
  2. Aplikasi mengaktifkan DOUBLE_TAP tetapi lupa mengatur DOUBLE_TAP_GAP ke 300 md, sehingga setiap tap diklasifikasikan sebagai double-tap.
  3. Aplikasi memetakan CIRCLE ke "halaman berikutnya" tetapi swipe anak-anak terlalu kecil (5 mm, bukan 12 mm) dan algoritma mengklasifikasikannya sebagai noise. Turunkan CIRCLE_MIN_CIRCUMFERENCE dari 12 mm menjadi 8 mm jika menargetkan pengguna yang lebih muda.
  4. Aplikasi menonaktifkan LONG_PRESS tetapi membiarkan timer tetap aktif, membuang 0,04 MIPS CPU secara terus-menerus. Setel LONG_PRESS_ENABLE = 0 untuk melewati timer.

Untuk informasi lebih lanjut tentang sensor sentuh yang menggerakkan mesin gestur, lihat Akurasi Sentuh dan Uji Jitter Pena Baca. Untuk pemetaan gestur ke tindakan UI di aplikasi kamus referensi, lihat Format dan Edisi File Kamus Pena Baca. Untuk penjadwalan tugas gestur terhadap OCR dan audio oleh host SoC, lihat Arsitektur Firmware Pena Baca Dijelaskan. Untuk bahasa spesifikasi OEM dan kriteria penerimaan, lihat Template Spesifikasi OEM dan ODM Pena Baca. Untuk meminta laporan uji gestur dengan histogram 5 penguji dari batch sampel Anda, lihat /request-a-quote.

10. Bahasa Spesifikasi untuk Dimasukkan ke Kontrak OEM

Spesifikasi OEM yang dapat dipertahankan untuk pengenalan gestur meliputi:

  • Daftar kosakata gestur dengan ketersediaan per model.
  • Ambang batas template matcher (default 0,78, dapat dikonfigurasi 0,70 hingga 0,85).
  • LONG_PRESS_TIME (default 600 md).
  • DOUBLE_TAP_GAP (default 300 md).
  • TRUE_POSITIVE_RATE ≥ 96% pada set uji anak usia 1.200 gestur.
  • FALSE_POSITIVE_RATE ≤ 1% pada uji tanpa sentuhan selama 1.000 detik.
  • Tabel latensi gestur-ke-tindakan per kelas gestur.

Pemasok yang tidak dapat berkomitmen pada angka-angka ini belum menjalankan algoritma pada kualitas produksi. Kami mempublikasikan laporan uji gestur per model dengan setiap batch produksi tanpa biaya tambahan.

Gesture Recognition Accuracy by Model

Bacaan Terkait

Minta Penawaran — Dapatkan Jawaban Pabrik dengan Cepat

Bacaan Tambahan: Kombinasi Gestur dan Urutan Multi-Touch

Di luar kosakata gestur tunggal yang tercantum pada Bagian 1, firmware L5, Q8, dan T2 mendukung sekumpulan kecil kombinasi gestur dua jari untuk pengguna tingkat lanjut:

  • TWO_FINGER_TAP: setara dengan tombol kembali di aplikasi kamus.
  • TWO_FINGER_SWIPE_LEFT: setara dengan perintah kembali halaman pada pembaca konten panjang.
  • PINCH: memperbesar atau memperkecil teks kamus sebesar 25% per siklus cubit.

Kombinasi ini tidak termasuk dalam kosakata bawaan dan dinonaktifkan secara default. Pembeli OEM dapat mengaktifkannya melalui flag build firmware, dengan menambahkan 0,8 KB kode dan 0,3 KB RAM tambahan.

Mesin gestur juga mendukung mode "tap to wake" berdaya rendah pada L5, Q8, dan T2. Dalam mode ini, kontroler touch melakukan polling pada 8 Hz, bukan 120 Hz, dengan konsumsi hanya 0,2 mW. Saat ketukan terdeteksi, kontroler berpindah ke 120 Hz dalam waktu 12 ms. Mode ini diaktifkan secara default pada Q8 dan T2 karena baterainya lebih besar, dan dinonaktifkan pada L5 karena baterai yang lebih kecil tidak dapat menanggung latensi bangun pada setiap pencarian kamus.

Dari lebih dari 47.000 unit yang dikirim sejak 2023, kegagalan lapangan terkait gestur menyumbang 1,1% dari seluruh RMA. Penyebab utamanya adalah zona sentuh macet akibat masuknya cairan (38%), diikuti oleh delaminasi lapisan tepi sensor (24%), dan penguncian firmware (18%). Angka 1,1% ini jauh lebih rendah dibandingkan tingkat kegagalan sentuh sebesar 4,2% karena gestur hanya digunakan pada model premium yang memiliki sealing lebih baik dan AQL sensor sentuh yang lebih ketat.

Frequently Asked Questions

Model pena baca mana yang mendukung gerakan gesek?
Gerakan gesek (kiri, kanan, atas, bawah) didukung hanya pada K7, KF1, L5, Q8, dan T2 karena memerlukan matriks sentuh kapasitif 2D. Model B1, B2, F8, P2, Q6, dan Y6 menggunakan 4 hingga 8 zona cap-sense terpisah dan mengandalkan penekanan tombol fisik, bukan gerakan. T2 additionally mendukung CIRCLE sebagai fitur premium, dengan Q8 yang dapat mengaktifkannya berdasarkan permintaan OEM.
Berapa tingkat pengenalan gerakan pada L5, Q8, dan T2?
Pencocok template mencapai true-positive 96,4% dan false-positive 0,6% pada set uji 1.200 gerakan yang dikumpulkan dari 30 anak berusia 4 hingga 9 tahun. Ambang batasnya adalah 0,78 pada skor 0 hingga 1. Mengencangkan ambang batas ke 0,82 menurunkan false-positive menjadi 0,2% tetapi mengurangi true-positive menjadi 91,7%. Melonggarkannya ke 0,72 menaikkan false-positive menjadi 2,4% dan true-positive menjadi 98,6%.
Berapa lama pena mengenali sebuah gerakan gesek?
Latensi gesek end-to-end adalah 55 hingga 65 ms pada L5, Q8, dan T2, serta 75 hingga 95 ms pada K7 dan KF1. Ini adalah waktu antara sampel terakhir gesekan dan host menerima kode gerakan melalui interupsi. TAP membutuhkan 130 hingga 180 ms karena algoritma harus menunggu pelepasan sentuhan. DOUBLE_TAP membutuhkan 320 hingga 420 ms karena algoritma menunggu ketukan kedua.
Apakah ambang batas gerakan dapat disesuaikan untuk anak yang lebih kecil?
Ya. Build firmware KIDS_PROFILE_V1 menaikkan LONG_PRESS_TIME dari 600 ms menjadi 900 ms, menaikkan TAP_MAX_DISPLACEMENT dari 4 mm menjadi 6 mm, dan menurunkan SWIPE_MIN_DISPLACEMENT dari 8 mm menjadi 5 mm. Profil ini direkomendasikan untuk kelompok usia 2 hingga 4 tahun dan tersedia di seluruh 11 model melalui flag build firmware tanpa biaya tambahan untuk pesanan OEM di atas 5.000 unit.
Berapa CPU dan memori yang dikonsumsi oleh mesin gerakan?
Pipeline gerakan lengkap pada L5 mengonsumsi 1,9 MIPS pada 3 gerakan per detik dan menggunakan 4,2 KB flash serta 1,1 KB RAM kerja. Pada K7 dan KF1, pipeline yang sama memakan 5,1 KB flash dan 1,4 KB RAM karena template dikompilasi dengan optimasi yang lebih rendah. Q8 dan T2 menambahkan classifier CIRCLE yang mengonsumsi 3,4 KB flash, 0,8 KB RAM, dan 4,1 MIPS selama klasifikasi.
Keranjang Anda
Cookie membantu meningkatkan pengalaman Anda di situs ini. Kebijakan Cookie
Chat on WhatsApp