"Thuật toán nhận diện cử chỉ vuốt và chạm trong firmware các dòng bút đọc B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 và Y6, kèm chấm điểm mẫu, tinh chỉnh ngưỡng và tiêu chí nghiệm thu OEM.

Đăng lúc: Th07 13, 2023 - 100 Lượt xem

Thuật toán nhận diện cử chỉ bút đọc: Cách vuốt và chạm trở thành lệnh giao diện

Đối tượng độc giả: Bài viết này dành cho các kỹ sư firmware, nhà thiết kế UX và quản lý sản phẩm OEM cần hiểu thuật toán nhận diện cử chỉ đang chạy trên các bút đọc B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 và Y6. Chúng tôi giả định bạn đang thiết kế giao diện menu tùy chỉnh hoặc đánh giá cách thêm cử chỉ vào ứng dụng từ điển hiện có, và bạn cần biết tỷ lệ nhận diện, độ trễ và tải CPU kỳ vọng.

Cử chỉ trên bút đọc là một chuỗi các mẫu cảm ứng được thu thập trong khoảng 30 ms đến 500 ms. Firmware chuyển đổi các mẫu này thành một mã cử chỉ rời rạc (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE) mà tầng ứng dụng ánh xạ sang hành động UI. Quá trình chuyển đổi đủ nhỏ để chạy trên cả 11 model nhưng được tinh chỉnh khác nhau theo từng model vì độ phân giải cảm biến, tần số lấy mẫu và ngân sách CPU của host đều khác nhau. Bài viết này trình bày thuật toán, các thông số tinh chỉnh và các chế độ lỗi mà người mua cần lên kế hoạch ứng phó.

1. Từ vựng cử chỉ

Trên 11 model chúng tôi xuất xưởng, từ vựng cử chỉ được thống nhất:

Cử chỉ Cửa sổ lấy mẫu Sử dụng trên
TAP Chạm + nhả trong 30 ms đến 250 ms Cả 11 model (thay bằng nút bấm trên các model vùng)
LONG_PRESS Chạm liên tục 600 ms đến 2000 ms K7, KF1, L5, Q8, T2
DOUBLE_TAP Hai lần chạm trong vòng 300 ms L5, Q8, T2
SWIPE_LEFT / RIGHT Kéo liên tục 50 ms đến 250 ms, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP / DOWN Tương tự, hướng dọc L5, Q8, T2 (chỉ)
CIRCLE Đường vòng kín, chu vi ≥ 12 mm Q8, T2 (tính năng cao cấp)

Các model vùng đơn giản (B1, B2, F8, P2, Q6, Y6) không chạy cử chỉ vì không có cảm biến cảm ứng 2D. Chúng thay thế bằng 4 đến 8 vùng nút rời rạc. Bài viết này tập trung vào các model ma trận.

2. Quy trình thuật toán

Thuật toán nhận diện cử chỉ chạy qua bốn giai đoạn. Mỗi giai đoạn có một ngân sách CPU cứng; nếu bất kỳ giai đoạn nào vượt ngân sách, cử chỉ sẽ bị bỏ qua (không phát lệnh) thay vì nhận diện sai.

Giai đoạn 1: Thu thập mẫu. Bộ điều khiển cảm ứng báo cáo tọa độ ở tần số 80 Hz đến 120 Hz. Host MCU đọc qua I2C ở 100 kHz đến 400 kHz trên K7/KF1/L5, và qua SPI ở 10 MHz trên Q8/T2. Mỗi mẫu là một bộ (x, y, t).

Giai đoạn 2: Chống rung và loại bỏ giá trị ngoại lai. Hai mẫu trong phạm vi 4 mm và 20 ms sẽ được gộp thành một. Một mẫu lệch hơn 12 mm so với tâm đang tính sẽ bị loại bỏ vì là ngoại lai. Giai đoạn này mất 0,4 ms cho mỗi mẫu trên L5.

Giai đoạn 3: Trích xuất đặc trưng. Từ luồng mẫu đã được làm sạch, chúng tôi tính toán 7 đặc trưng: tổng độ dịch chuyển, tổng chiều dài quỹ đạo, vận tốc trung bình, vận tốc đỉnh, góc hướng chính, độ cong và thời lượng. Đây là các đầu vào cho bộ phân loại.

Giai đoạn 4: Phân loại. Chúng tôi sử dụng bộ chấm điểm khớp mẫu cho 6 thao tác vuốt theo hướng và một máy trạng thái cho các thao tác dựa trên thời gian (TAP, LONG_PRESS, DOUBLE_TAP). Máy trạng thái và bộ khớp mẫu cùng tiêu tốn 1,6 ms cho mỗi thao tác trên L5.

Tổng ngân sách cho mỗi thao tác trên L5: 0,4 + 1,6 + bộ phân loại giai đoạn 4 = 2,4 ms, cộng thêm chi phí xử lý ngắt, còn dư 6 ms trước khi vượt ngân sách 8,3 ms giữa hai khung hình.

3. Bộ Khớp Mẫu cho Thao Tác Vuốt

Mỗi thao tác trong 6 thao tác vuốt theo hướng (trái, phải, lên, xuống, cộng với hai đường chéo trên T2) đều có một mẫu. Mẫu là một đường gấp khúc 16 điểm của quỹ đạo mẫu dự kiến, được chuẩn hóa về chiều dài 12 mm và đặt tâm tại gốc tọa độ. Trong quá trình nhận dạng, chúng tôi chuẩn hóa luồng mẫu đầu vào theo cùng cách (dịch tâm về gốc tọa độ, co về 12 mm, tái lấy mẫu về 16 điểm) và tính khoảng cách Euclid trung bình giữa đầu vào và mẫu tại mỗi điểm.

Điểm khớp là 1 - (khoảng_cách_trung_bình / 12). Điểm 1,0 là khớp hoàn hảo; điểm 0,0 là trực giao. Bộ phân loại trả về mẫu có điểm cao nhất, với điều kiện điểm đó vượt quá 0,78. Bất kỳ giá trị nào dưới 0,78 sẽ được phân loại là "không xác định" và bị bỏ qua.

Ngưỡng 0,78 đã được tinh chỉnh trên một tập dữ liệu gồm 1.200 thao tác, được thu thập từ 30 trẻ em từ 4 đến 9 tuổi tại hai cơ sở của chúng tôi. Chúng tôi đo được tỷ lệ dương tính thật là 96,4% và tỷ lệ dương tính giả là 0,6% trên L5 với ngưỡng này. Siết chặt ngưỡng xuống 0,82 sẽ giảm dương tính giả xuống 0,2% nhưng cũng giảm dương tính thật xuống 91,7%; nới lỏng xuống 0,72 sẽ tăng dương tính giả lên 2,4% và dương tính thật lên 98,6%.


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

4. Máy Trạng Thái cho Thao Tác Dựa Trên Thời Gian

TAP, LONG_PRESS và DOUBLE_TAP phụ thuộc vào thời gian và không thể phân loại chỉ dựa trên hình dạng mẫu. Chúng tôi sử dụng một máy trạng thái hữu hạn gồm 5 trạng thái:

  • IDLE: không có tiếp xúc.
  • TOUCH_DOWN: nhận được mẫu đầu tiên, chuyển sang PRESS.
  • PRESS: tiếp xúc được giữ, bắt đầu bộ đếm thời gian nhấn giữ.
  • RELEASE: tiếp xúc được thả, đánh giá TAP so với LONG_PRESS so với DOUBLE_TAP.
  • WAIT_DOUBLE: đã thả, chờ tối đa 300 ms để có lần chạm thứ hai.

Các chuyển trạng thái được điều khiển bởi 4 ngưỡng:

  • LONG_PRESS_TIME: 600 ms (có thể cấu hình từ 400 đến 2000 ms).
  • DOUBLE_TAP_GAP: 300 ms.
  • TAP_MAX_DURATION: 250 ms.
  • TAP_MAX_DISPLACEMENT: 4 mm.

Máy trạng thái được triển khai dưới dạng một câu lệnh switch trong ISR cảm ứng, mất 0,06 ms cho mỗi chuyển trạng thái trên L5. Tổng độ trễ nhận dạng cho một TAP bằng thời lượng chạm cộng một khoảng giữa hai mẫu, tức khoảng 280 ms đến 320 ms trong trường hợp xấu nhất nhưng thường là 130 ms đến 180 ms.

5. Chi Phí CPU và Bộ Nhớ

Toàn bộ pipeline thao tác (bộ khớp mẫu + máy trạng thái + trích xuất đặc trưng) trên L5 tiêu thụ 1,9 MIPS CPU ở tốc độ 3 thao tác mỗi giây. SoC chủ của L5 còn dư 240 MIPS sau khi xử lý âm thanh và OCR, vì vậy bộ máy thao tác gần như không tốn thêm tài nguyên.

Chi phí bộ nhớ là 4,2 KB mã (trong flash) và 1,1 KB RAM làm việc (cho mẫu 16 điểm và bộ đệm mẫu). Trên K7 và KF1, cùng pipeline đó tốn 5,1 KB mã và 1,4 KB RAM vì MCU phân khúc thấp hơn biên dịch các mẫu với mức tối ưu thấp hơn.

Q8 và T2 bổ sung thêm bộ phân loại thao tác CIRCLE sử dụng một vòng lặp giống biến đổi Hough 24 điểm. Tính năng này thêm 3,4 KB mã và 0,8 KB RAM, và chạy ở mức 4,1 MIPS trong quá trình phân loại. CIRCLE là tính năng cao cấp, mặc định bị tắt trên Q8 và chỉ được bật trên T2, trừ khi khách hàng OEM yêu cầu kích hoạt trên Q8.

6. Độ Trễ: Tap-to-Action và Swipe-to-Action

Độ trễ đầu cuối từ khi hoàn tất thao tác vật lý đến khi hành động được phát lệnh cho máy chủ:

Thao tác L5 / Q8 / T2 K7 / KF1
TAP 130 ms đến 180 ms 180 ms đến 240 ms
LONG_PRESS 620 ms đến 720 ms 700 ms đến 820 ms
DOUBLE_TAP 320 ms đến 420 ms 400 ms đến 520 ms
SWIPE (mọi hướng) 55 ms đến 65 ms 95 ms đến 95 ms
CIRCLE 80 ms đến 110 ms (chỉ T2) không áp dụng

Các con số này bao gồm tần suất báo cáo của bộ điều khiển cảm ứng, thời gian truyền I2C/SPI, thời gian thực thi thuật toán và thời gian phản hồi của ứng dụng chủ.

7. Tinh chỉnh cho các nhóm người dùng khác nhau

Ngưỡng mặc định được tinh chỉnh cho trẻ em từ 4 đến 9 tuổi. Đối với người dùng trưởng thành (giáo viên, phụ huynh), cử chỉ lớn hơn và nhanh hơn, điều này thực sự cải thiện độ chính xác nhận dạng lên 98,5% true-positive ở cùng ngưỡng. Đối với trẻ em dưới 4 tuổi, người mua OEM có thể yêu cầu một hồ sơ cử chỉ nhẹ nhàng hơn thông qua cấu hình firmware:

  • LONG_PRESS_TIME tăng từ 600 ms lên 900 ms.
  • TAP_MAX_DISPLACEMENT tăng từ 4 mm lên 6 mm.
  • SWIPE_MIN_DISPLACEMENT giảm từ 8 mm xuống 5 mm.

Hồ sơ này được gọi là KIDS_PROFILE_V1 và có sẵn trên tất cả 11 model thông qua cờ build flag của firmware. Một chương trình OEM nhắm đến nhóm tuổi từ 2 đến 4 nên yêu cầu hồ sơ này.

8. Kiểm thử chấp nhận dành cho người mua OEM

Chúng tôi khuyến nghị bộ 5 bài kiểm thử chấp nhận sau đây cho nhận dạng cử chỉ:

  1. Tỷ lệ nhận dạng SWIPE_LEFT ≥ 96% trên 100 lần thử của 3 người kiểm thử khác nhau.
  2. Tỷ lệ nhận dạng SWIPE_RIGHT ≥ 96% trên 100 lần thử.
  3. Tỷ lệ dương tính giả TAP ≤ 1% trên 1.000 giây không chạm.
  4. Độ trễ nhận dạng LONG_PRESS trong khoảng 600 đến 800 ms.
  5. Tỷ lệ nhận dạng DOUBLE_TAP ≥ 92% trên 100 lần thử.

Người kiểm thử nên được chọn từ nhóm tuổi mục tiêu. Một mẫu chỉ được kiểm thử bởi các kỹ sư trưởng thành sẽ báo cáo độ chính xác bị thổi phồng vì cử chỉ của người trưởng thành nhất quán hơn. Xác nhận nội bộ của chúng tôi sử dụng 30 trẻ em từ 4 đến 9 tuổi cùng 10 người trưởng thành, và tỷ lệ true-positive 96,4% được công bố là con số chỉ dành cho trẻ em.

9. Các chế độ lỗi phổ biến

Trong các chương trình OEM, chúng tôi đã thấy các lỗi tích hợp cử chỉ sau:

  1. Ứng dụng chủ thăm lấy cử chỉ trong vòng lặp 50 ms thay vì sử dụng ngắt, làm tăng thêm 50 ms độ trễ. Luôn sử dụng ngắt cử chỉ, không dùng polling.
  2. Ứng dụng bật DOUBLE_TAP nhưng quên đặt DOUBLE_TAP_GAP thành 300 ms, khiến mọi tap bị phân loại thành double-tap.
  3. Ứng dụng ánh xạ CIRCLE sang "trang tiếp theo" nhưng thao tác vuốt của trẻ em quá nhỏ (5 mm thay vì 12 mm) và thuật toán phân loại chúng là nhiễu. Hạ CIRCLE_MIN_CIRCUMFERENCE từ 12 mm xuống 8 mm nếu nhắm đến người dùng nhỏ tuổi hơn.
  4. Ứng dụng vô hiệu hóa LONG_PRESS nhưng vẫn để timer chạy, liên tục lãng phí 0,04 MIPS CPU. Đặt LONG_PRESS_ENABLE = 0 để bỏ qua timer.

Để biết thêm về cảm biến cảm ứng cung cấp dữ liệu cho engine cử chỉ, xem Kiểm Tra Độ Chính Xác Cảm Ứng và Jitter của Bút Đọc. Để biết cách ánh xạ cử chỉ vào hành động UI trong ứng dụng từ điển tham chiếu, xem Định Dạng Tệp Từ Điển và Phiên Bản của Bút Đọc. Để biết cách SoC chủ lên lịch tác vụ cử chỉ so với OCR và âm thanh, xem Giải Thích Kiến Trúc Firmware của Bút Đọc. Để biết ngôn ngữ đặc tả OEM và tiêu chí chấp nhận, xem Mẫu Đặc Tả OEM và ODM của Bút Đọc. Để yêu cầu báo cáo kiểm thử cử chỉ với biểu đồ histogram của 5 người kiểm thử từ lô mẫu của bạn, xem /request-a-quote.

10. Ngôn ngữ đặc tả để đưa vào hợp đồng OEM

Một đặc tả OEM có thể bảo vệ được cho nhận dạng cử chỉ bao gồm:

  • Danh sách từ vựng cử chỉ với khả năng cung cấp theo từng model.
  • Ngưỡng so khớp mẫu (mặc định 0,78, cấu hình được từ 0,70 đến 0,85).
  • LONG_PRESS_TIME (mặc định 600 ms).
  • DOUBLE_TAP_GAP (mặc định 300 ms).
  • TRUE_POSITIVE_RATE ≥ 96% trên tập kiểm thử 1.200 cử chỉ ở trẻ em.
  • FALSE_POSITIVE_RATE ≤ 1% trên kiểm thử 1.000 giây không chạm.
  • Bảng độ trễ từ cử chỉ đến hành động cho mỗi lớp cử chỉ.

Một nhà cung cấp không thể cam kết các con số này thì vẫn chưa chạy thuật toán ở chất lượng sản xuất. Chúng tôi công bố báo cáo kiểm thử cử chỉ theo từng model với mỗi lô sản xuất mà không tính thêm phí.

Gesture Recognition Accuracy by Model

Bài viết liên quan

Yêu cầu báo giá — Nhận phản hồi nhanh từ nhà máy

Đọc thêm: Tổ hợp cử chỉ và chuỗi thao tác nhiều ngón tay

Ngoài bộ cử chỉ đơn được liệt kê trong Mục 1, firmware của L5, Q8 và T2 còn hỗ trợ một tập nhỏ các tổ hợp cử chỉ hai ngón dành cho người dùng thành thạo:

  • TWO_FINGER_TAP: tương đương với nút quay lại trong ứng dụng từ điển.
  • TWO_FINGER_SWIPE_LEFT: tương đương với lệnh lùi trang trong trình đọc nội dung dài.
  • PINCH: phóng to hoặc thu nhỏ văn bản từ điển 25% mỗi chu kỳ pinch.

Các tổ hợp này không nằm trong bộ từ vựng mặc định và bị tắt theo mặc định. Khách hàng OEM có thể kích hoạt chúng thông qua cờ bản dựng firmware, với chi phí thêm 0,8 KB mã lệnh và 0,3 KB RAM bổ sung.

Bộ máy cử chỉ cũng hỗ trợ chế độ tiết kiệm năng lượng "chạm để đánh thức" trên L5, Q8 và T2. Ở chế độ này, bộ điều khiển cảm ứng quét ở 8 Hz thay vì 120 Hz, chỉ tiêu thụ 0,2 mW. Khi phát hiện thao tác chạm, bộ điều khiển chuyển sang 120 Hz trong vòng 12 ms. Chế độ này được bật mặc định trên Q8 và T2 vì chúng có pin lớn hơn, và tắt trên L5 vì pin nhỏ hơn không chịu được độ trễ đánh thức khi tra cứu từ điển thường xuyên.

Trên hơn 47.000 thiết bị đã xuất xưởng từ năm 2023, các lỗi thực địa liên quan đến cử chỉ chiếm 1,1% tổng số RMA. Nguyên nhân chính là vùng cảm ứng bị kẹt do nước xâm nhập (38%), tiếp theo là hiện tượng bong lớp phủ ở mép cảm biến (24%), và treo firmware (18%). Tỷ lệ 1,1% thấp hơn nhiều so với tỷ lệ lỗi cảm ứng 4,2% vì cử chỉ chỉ được sử dụng trên các dòng cao cấp có khả năng bịt kín tốt hơn và tiêu chuẩn AQL nghiêm ngặt hơn đối với cảm biến cảm ứng.

Frequently Asked Questions

Những model bút đọc nào hỗ trợ cử chỉ vuốt?
Cử chỉ vuốt (trái, phải, lên, xuống) chỉ được hỗ trợ trên K7, KF1, L5, Q8 và T2, vì chúng yêu cầu ma trận cảm ứng điện dung 2D. Các model B1, B2, F8, P2, Q6 và Y6 sử dụng 4 đến 8 vùng cảm ứng điện dung rời rạc và dựa vào thao tác nhấn nút vật lý thay vì cử chỉ. T2 hỗ trợ thêm CIRCLE như một tính năng cao cấp, với Q8 có thể kích hoạt tính năng này theo yêu cầu OEM.
Tỷ lệ nhận diện cử chỉ trên L5, Q8 và T2 là bao nhiêu?
Bộ so khớp mẫu đạt 96,4% dương tính thật và 0,6% dương tính giả trên bộ dữ liệu kiểm thử 1.200 cử chỉ, thu thập từ 30 trẻ em từ 4 đến 9 tuổi. Ngưỡng là 0,78 trên thang điểm 0 đến 1. Siết chặt ngưỡng xuống 0,82 sẽ giảm dương tính giả xuống 0,2% nhưng giảm dương tính thật xuống 91,7%. Nới lỏng ngưỡng xuống 0,72 sẽ tăng dương tính giả lên 2,4% và dương tính thật lên 98,6%.
Bút mổi trong bao lâu để nhận diện một cử chỉ vuốt?
Độ trễ vuốt đầu cuối là 55 đến 65 ms trên L5, Q8 và T2, và 75 đến 95 ms trên K7 và KF1. Đây là khoảng thời gian giữa mẫu cuối cùng của cử chỉ vuốt và thời điểm máy chủ nhận mã cử chỉ qua ngắt. TAP mất 130 đến 180 ms vì thuật toán phải đợi thao tác nhả cảm ứng. DOUBLE_TAP mất 320 đến 420 ms vì thuật toán đợi lần chạm thứ hai.
Ngưỡng cử chỉ có thể điều chỉnh cho trẻ nhỏ tuổi hơn không?
Có. Bản firmware KIDS_PROFILE_V1 nâng LONG_PRESS_TIME từ 600 ms lên 900 ms, nâng TAP_MAX_DISPLACEMENT từ 4 mm lên 6 mm, và giảm SWIPE_MIN_DISPLACEMENT từ 8 mm xuống 5 mm. Cấu hình này được khuyến nghị cho nhóm tuổi từ 2 đến 4 và có sẵn trên tất cả 11 model thông qua cờ bản dựng firmware, miễn phí cho các đơn hàng OEM trên 5.000 sản phẩm.
Bộ xử lý cử chỉ tiêu tốn bao nhiêu CPU và bộ nhớ?
Toàn bộ pipeline cử chỉ trên L5 tiêu tốn 1,9 MIPS ở 3 cử chỉ mỗi giây và sử dụng 4,2 KB flash cùng 1,1 KB RAM làm việc. Trên K7 và KF1, cùng pipeline đó tốn 5,1 KB flash và 1,4 KB RAM vì các mẫu được biên dịch với mức tối ưu thấp hơn. Q8 và T2 bổ sung bộ phân loại CIRCLE tiêu tốn 3,4 KB flash, 0,8 KB RAM và 4,1 MIPS trong quá trình phân loại.
Giỏ hàng của bạn
Trải nghiệm của bạn trên trang web này sẽ được cải thiện khi cho phép sử dụng cookies. Chính sách Cookie
Chat on WhatsApp