Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp "Thiết kế thiết bị nhận dạng bàn tay hỗ trợ phát triển các giải pháp điều khiển tự động" (tên tiếng Anh: Implementing a finger detection box for automated control applications) được thực hiện bởi sinh viên Ngô Lê Tuyết Hoa và Nguyễn Hữu Nam, dưới sự hướng dẫn của TS. Đoàn Duy tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (khóa luận bảo vệ tháng 07/2024).
Đề tài xuất phát từ các vấn đề thực tiễn trong lĩnh vực tương tác giữa con người và hệ thống máy tính (Human-Computer Interaction - HCI) cùng hệ thống nhúng Internet of Things (IoT):
- Hạn chế của các phương thức điều khiển truyền thống: Nút bấm cơ học và công tắc vật lý dễ bị hao mòn cơ khí, giới hạn tuổi thọ qua số lần bấm, rủi ro sai lệch tín hiệu và cồng kềnh khi hệ thống mở rộng nhiều chức năng. Trong khi đó, điều khiển bằng giọng nói gặp rào cản về độ trễ xử lý, phụ thuộc máy chủ và kết nối mạng, rủi ro bảo mật dữ liệu âm thanh, đồng thời độ chính xác suy giảm do sự sai khác về phương ngữ, ngữ điệu, giới tính và tạp âm môi trường.
- Sự quá tải và phân mảnh của các thiết bị điều khiển: Nhiều thiết bị trong gia đình (ti vi, máy lạnh, quạt hơi nước, máy lọc không khí, máy chiếu) dù sử dụng chung chuẩn giao tiếp hồng ngoại (IR) nhưng lại đòi hỏi các bộ điều khiển từ xa (remote) riêng biệt, gây bất tiện và lãng phí cho người sử dụng.
- Thiếu tính độc lập và khả năng tái sử dụng trong hệ thống nhúng: Các giải pháp phần cứng hiện nay thường liên kết chặt chẽ giữa khối thu nhận điều khiển và cơ cấu chấp hành. Khi muốn thay đổi hoặc mở rộng thiết bị ngoại vi, kỹ sư buộc phải thiết kế lại toàn bộ hệ thống điều khiển, gây tốn kém chi phí trong bối cảnh thị trường hệ thống nhúng toàn cầu đã vượt mốc 4 tỉ USD từ năm 2022.
- Chi phí tài nguyên trong huấn luyện mô hình thị giác: Các giải pháp nhận diện cử chỉ truyền thống đòi hỏi quy trình tiền xử lý ảnh phức tạp hoặc huấn luyện (training) mô hình học sâu từ đầu, tiêu tốn năng lực tính toán và thời gian của thiết bị nhúng.
Từ thực trạng trên, đề tài xác định hệ thống mục tiêu nghiên cứu cụ thể:
- Mục tiêu tổng quan: Hiện thực thiết kế thành công mô hình hệ thống nhận diện các cử chỉ bàn tay cơ bản phục vụ giao tiếp, điều khiển đa thiết bị độc lập và có khả năng tích hợp linh hoạt vào các hệ sinh thái nhúng IoT.
- Mục tiêu cụ thể:
- Mục tiêu 1: Thiết kế giải thuật và kiến trúc cho hệ thống nhận diện cử chỉ bàn tay cùng các mô hình ứng dụng ngoại vi (đèn dây RGB, màn hình OLED, xe robot điều khiển).
- Mục tiêu 2: Hiện thực và đóng gói hoàn chỉnh phần cứng thiết bị nhận diện cử chỉ bàn tay.
- Mục tiêu 3: Hiện thực và tích hợp thành công 3 mô hình ứng dụng điều khiển với thiết bị nhận diện thông qua mạng truyền thông không dây.
Phạm vi và giới hạn nghiên cứu:
- Hệ thống chỉ hỗ trợ nhận diện một bàn tay (tay trái hoặc tay phải) tại một thời điểm, chưa hỗ trợ nhận diện đồng thời hai tay.
- Cử chỉ bàn tay được thu nhận và xử lý dưới dạng hình ảnh cử chỉ tĩnh 2D trong không gian thực tế trước camera.
- Không gian điều khiển được chuẩn hóa thành 9 trạng thái cử chỉ ngón tay mã hóa dưới dạng dữ liệu 8-bit.
- Hệ thống thực nghiệm giới hạn trên 3 thiết bị ngoại vi minh chứng: Thiết bị đèn LED dây RGB, thiết bị hiển thị màn hình OLED và mô hình xe robot điều khiển.
- Đề tài tập trung xây dựng mô hình giải pháp nhằm chứng minh tính khả thi của kiến trúc giao tiếp, không đi sâu vào việc thương mại hóa thiết bị điện tử tiêu dùng hoàn chỉnh.
Cơ sở lý thuyết và phương pháp
Khóa luận kết hợp giữa lý thuyết thị giác máy tính hiện đại, nguyên lý điều phối đa tác vụ trên hệ điều hành và các giao thức truyền thông nhúng tiêu chuẩn:
- Thư viện thị giác máy tính Google MediaPipe: Tác giả khai thác module MediaPipe Hands hoạt động theo kiến trúc mạng nơ-ron kết hợp:
- Mô hình nhận diện lòng bàn tay (Palm Detector): Định vị vùng chứa bàn tay trên khung hình theo nguyên lý Single Shot Detector (SSD). SSD sử dụng các khung mặc định (default bounding boxes) đa tỉ lệ trên nhiều tầng bản đồ đặc trưng (feature maps) từ mạng tích chập (CNN), cho phép phát hiện bàn tay ở các kích thước khác nhau với tốc độ khung hình cao.
- Mô hình điểm mốc bàn tay (Hand Landmark Model): Trích xuất tọa độ không gian 3 chiều ($x, y, z$) của 21 khớp xương bàn tay (từ điểm mốc số 0 tại cổ tay đến các đốt ngón tay từ 1 đến 20) từ mô hình đã được huấn luyện sẵn trên khoảng 30.000 ảnh gán nhãn.
- Kỹ thuật xác định trạng thái ngón tay: Dựa trên tập tọa độ 21 điểm mốc, giải thuật so sánh vị trí tương đối giữa đỉnh ngón tay và các khớp đốt phía dưới:
- Đối với 4 ngón dài (ngón trỏ, giữa, áp út, út): Ngón tay được xác định là gập khi tọa độ chiều cao $y$ của đỉnh ngón (điểm 8, 12, 16, 20) thấp hơn điểm khớp đốt phía dưới cách nó 2 bậc (điểm 6, 10, 14, 18).
- Đối với ngón cái: Do hướng vận động nằm ngang, thuật toán so sánh tọa độ trục ngang $x$ của đỉnh ngón cái (điểm 4) so với điểm mốc khớp đốt lân cận và điểm mốc ngón út (điểm 20).
- Hệ điều hành thời gian thực (RTOS) và lập trình đa luồng (Multithreading): Khóa luận nghiên cứu cơ chế chuyển đổi ngữ cảnh (context switching) thông qua khối điều khiển tiến trình (Process Control Block - PCB) và lập lịch ưu tiên định thời của RTOS. Nhóm áp dụng kỹ thuật đa luồng trong ngôn ngữ Python trên máy tính nhúng để phân tách việc đọc khung hình, tính toán nhận diện và truyền thông nối tiếp UART, ngăn chặn tình trạng nghẽn I/O.
- Các giao thức truyền thông và phần cứng:
- UART (Universal Asynchronous Receiver-Transmitter): Truyền nhận dữ liệu nối tiếp dị bộ song công (Full-duplex) giữa máy tính nhúng và vi điều khiển trung gian thông qua khung dữ liệu gồm Start bit, 8 bit dữ liệu, Parity bit và Stop bit.
- MQTT (Message Queuing Telemetry Transport): Giao thức truyền thông mạng nhẹ theo mô hình Publisher - Subscriber thông qua hệ thống phân cấp chủ đề (topics) và broker đám mây trung gian flespi.io. Tác giả khảo sát các mức chất lượng dịch vụ QoS 0, QoS 1 và QoS 2.
- I2C (Inter-Integrated Circuit): Giao tiếp nối tiếp đồng bộ bán song công (Half-duplex) chuẩn Master - Slave sử dụng 2 đường tín hiệu SDA (dữ liệu) và SCL (xung nhịp) để điều khiển màn hình hiển thị OLED.
- Ngoại vi RMT (Remote Control Transceiver): Khối phần cứng tích hợp trên vi điều khiển ESP32 được cấu hình tạo chuỗi xung chính xác theo chuẩn dữ liệu 1 dây (One-Wire) để điều khiển IC WS2812B trên dải LED RGB 5050.
- MIT App Inventor: Công cụ phát triển giao diện người dùng trên nền tảng di động để giám sát trạng thái và cấu hình thiết bị.
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo cấu trúc module phân tán, tách biệt hoàn toàn giữa khối thu nhận điều khiển, khối định tuyến truyền thông và các cơ cấu chấp hành ngoại vi:
[Camera IMX219] ---> [Raspberry Pi 4B (MediaPipe)]
| (UART: GPIO14/15)
v
[ESP32-S Wifi Module Server]
| (MQTT qua flespi.io Broker)
+----------------------+----------------------+
| | |
v v v
[ESP32-WROOM-32] [ESP32-WROOM-32] [ESP32-WROOM-32]
Driver Đèn RGB Driver Màn OLED Driver Xe Robot
(WS2812B + Button) (SSD1306 + Button) (L298N + DC/Servo)
1. Thiết bị nhận diện cử chỉ bàn tay
- Khối xử lý trung tâm: Sử dụng máy tính nhúng Raspberry Pi 4 Model B (vi xử lý Quad-core Cortex-A72, công suất tiêu thụ trung bình 3W – 4W).
- Cảm biến hình ảnh: Module Raspberry Pi Camera V2 IMX219 8MP (cảm biến Sony, hỗ trợ xuất hình ảnh qua giao tiếp CSI tốc độ đạt 30 FPS, vượt trội so với mức 5 FPS của webcam USB Rapoo XW170 khi thử nghiệm trên máy tính nhúng).
- Đèn chỉ báo trạng thái: Gồm 1 đèn LED trắng báo hiệu hệ thống đã khởi động và 2 đèn LED xanh biển biểu thị bàn tay nhận diện là tay trái hay tay phải.
- Cấu trúc đa luồng trên Raspberry Pi: Tác giả phân chia chương trình thành 3 luồng: Luồng chính (
main_thread) thực hiện quét camera và chạy mô hình nhận diện; Luồng phụ 01 và Luồng phụ 02 lần lượt xử lý kích hoạt LED trạng thái và đóng gói dữ liệu 8-bit gửi qua UART (chân Tx GPIO14, Rx GPIO15) tương ứng cho từng tay.
| STT |
Mô tả cử chỉ bàn tay |
Mã nhị phân xuất ra (8-bit) |
Ghi chú quy ước |
| 1 |
Nắm tay, không thấy ngón nào |
00000000 |
Xác nhận / Khởi tạo |
| 2 |
Chỉ một ngón trỏ |
00000001 |
Điều hướng / Lựa chọn 1 |
| 3 |
Chỉ ngón trỏ và ngón giữa |
00000010 |
Lựa chọn 2 |
| 4 |
Chỉ ba ngón: trỏ, giữa và nhẫn |
00000011 |
Lựa chọn 3 |
| 5 |
Chỉ bốn ngón: trỏ, giữa, nhẫn và út |
00000100 |
Lựa chọn 4 |
| 6 |
Chỉ ngón cái |
00000101 |
Lựa chọn 5 |
| 7 |
Cả năm ngón tay |
00000110 |
Thoát / Mở toàn bộ |
| 8 |
Chỉ ngón cái và ngón trỏ |
00000111 |
Tùy chọn mở rộng |
| 9 |
Chỉ ngón cái, ngón trỏ và ngón giữa |
00001000 |
Tùy chọn chuyển chế độ |
2. Khối máy chủ truyền thông trung gian (Wifi Module Server)
Hiện thực trên kit ESP32-S (AI-Thinker) tích hợp vi xử lý kép Xtensa 32-bit LX6. Module này nhận gói tin 8-bit từ Raspberry Pi qua cổng UART (chân Rx GPIO16, Tx GPIO17), sau đó chuyển tiếp dữ liệu lên Broker MQTT flespi.io qua mạng Wi-Fi cục bộ để phân phối đến các thiết bị đích.
3. Thiết kế các thiết bị mô hình ứng dụng
Mỗi thiết bị ngoại vi đều sử dụng vi điều khiển ESP32-WROOM-32 NodeMCU và tuân thủ nguyên lý thiết kế độc lập gồm 2 khối: Khối nhận/xử lý lệnh ứng dụng và Khối kích hoạt nhận lệnh (sử dụng 1 nút nhấn cơ học SPST chân GPIO33 kèm trở kéo xuống và 1 đèn LED báo trạng thái chân GPIO27). Thiết bị chỉ nhận dữ liệu từ MQTT khi người dùng nhấn nút chuyển sang trạng thái "Enable".
- Thiết bị điều khiển đèn dây RGB: Sử dụng dải LED WS2812B RGB 5050 (nguồn 5V, chân dữ liệu kết nối GPIO2 của ESP32 thông qua bộ tạo xung RMT). Bộ điều khiển được lập trình theo máy trạng thái hữu hạn (FSM):
- Trạng thái chờ (Idle Dashboard).
- Chế độ chọn màu: Cử chỉ nắm tay cho phép chọn màu; giơ 1 ngón trỏ chọn Màu đỏ, 2 ngón chọn Xanh lá, 3 ngón chọn Xanh biển, 4 ngón chọn Màu vàng, ngón cái chọn Xanh lam, cả 5 ngón chọn Màu tím, ngón cái + trỏ chọn Màu cam; giơ ngón cái + trỏ + giữa để quay về trạng thái mặc định.
- Chế độ hiệu ứng: Cử chỉ 2 ngón tay kích hoạt hiệu ứng chạy màu cầu vồng; cử chỉ 1 ngón tay kích hoạt hiệu ứng nhấp nháy theo màu đã chọn.
- Thiết bị hiển thị màn hình OLED: Sử dụng màn hình OLED SSD1306 độ phân giải 128x64 pixel, kết nối qua bus I2C để hiển thị biểu tượng, ký tự hoặc thông báo điều khiển tương ứng với từng cử chỉ.
- Mô hình xe robot điều khiển: Khung xe 4 bánh tích hợp mạch cầu H L298N, động cơ DC giảm tốc, động cơ Servo điều hướng góc lái và hệ thống đèn tín hiệu LED 5mm.
Nội dung chính theo từng chương
Chương 1: Lý do thực hiện đề tài
Chương này phân tích sự dịch chuyển của các công nghệ giao tiếp người - máy trong kỷ nguyên IoT. Tác giả chỉ ra nhược điểm của nút bấm cơ học, bàn phím và giọng nói, từ đó khẳng định tính tự nhiên, trực quan của phương thức điều khiển bằng cử chỉ bàn tay. Chương 1 xác định rõ mục tiêu tổng quan, 3 mục tiêu cụ thể và các giới hạn kỹ thuật của đồ án (xử lý hình ảnh 2D tĩnh, giới hạn 1 bàn tay, tối đa 9 cử chỉ và tích hợp 3 mô hình IoT minh chứng).
Chương 2: Tổng quan đề tài
Chương 2 tổng hợp bức tranh nghiên cứu trong và ngoài nước về nhận dạng cử chỉ:
- Trong nước: Phân tích đề tài thiết bị thông minh SYM (Speak Your Mind - 2021) của nhóm sinh viên Trường Đại học Bách khoa TP.HCM hỗ trợ người khiếm thính chuyển đổi thủ ngữ sang văn bản và giọng nói.
- Ngoài nước: Khảo sát các nghiên cứu điều khiển thiết bị gia dụng tại Đại học Amity (Ấn Độ) và các nghiên cứu điều hướng flycam, xe tự hành, cánh tay cơ khí bằng mạng học tăng cường sâu Deep Q Network (DQN) kết hợp mạng nơ-ron tích chập (CNN).
- Đánh giá so sánh: Các giải pháp trước đây phụ thuộc vào găng tay cảm biến cồng kềnh hoặc trích xuất đặc trưng hình ảnh lồi/lõm phức tạp, độ ổn định thấp. Tác giả chỉ ra lợi thế của việc sử dụng công cụ MediaPipe do Google phát hành năm 2023, giúp loại bỏ quy trình huấn luyện lại mô hình phức tạp mà vẫn đạt hiệu năng cao.
Chương 3: Cơ sở lý thuyết
Chương 3 trình bày các nền tảng khoa học và công nghệ cốt lõi:
- Cấu trúc mạng MediaPipe Hands, mô hình định vị lòng bàn tay dựa trên SSD (Single Shot Detector) với bounding box đa tầng đặc trưng và mô hình 21 điểm mốc khung xương bàn tay.
- Khái niệm và cơ chế hoạt động của Hệ điều hành thời gian thực RTOS (chuyển đổi ngữ cảnh, quản lý tiến trình qua PCB, chia sẻ thời gian CPU so với lập trình vòng lặp truyền thống).
- Cơ chế lập trình đa luồng (Multithreading) trên máy tính nhúng nhằm giảm độ trễ vào/ra (I/O latency).
- Các chuẩn truyền thông công nghiệp và nhúng: Cấu trúc bản tin Publisher - Subscriber, các mức QoS của giao thức MQTT; giản đồ thời gian và khung truyền dữ liệu của UART; kiến trúc Master - Slave và gói tin của bus I2C; nguyên lý điều khiển xung một dây thông qua ngoại vi RMT của ESP32; công cụ lập trình kéo thả MIT App Inventor.
Chương 4: Thiết kế mô hình giải pháp
Trình bày bản vẽ thiết kế chi tiết phần cứng, lưu đồ giải thuật và phần mềm:
- Sơ đồ khối tổng thể giải pháp với luồng dữ liệu 3 giai đoạn: Thiết bị nhận diện $\rightarrow$ Wifi Module Server $\rightarrow$ Các driver thiết bị ứng dụng.
- Thiết kế phần cứng thiết bị nhận dạng: Sơ đồ chân kết nối giữa Raspberry Pi 4 Model B, Camera IMX219, hệ thống LED chỉ báo và kit ESP32-S qua giao tiếp UART (Raspberry Pi Tx GPIO14/Rx GPIO15 nối chéo ESP32 Rx GPIO16/Tx GPIO17).
- Cấu hình thuật toán nhận diện trong file thư viện
hand.py: Quy tắc phát hiện tay trái/phải dựa vào tọa độ điểm 4 và điểm 20; quy tắc xác định ngón gập/duỗi cho ngón cái và 4 ngón dài.
- Thiết kế luồng chương trình đa luồng trên Raspberry Pi gồm
main_thread, thread_01 và thread_02.
- Thiết kế phần cứng, định nghĩa tập lệnh điều khiển và máy trạng thái (FSM) cho 3 thiết bị ứng dụng: Đèn dây WS2812B (chân dữ liệu GPIO2), Màn hình OLED SSD1306 (I2C) và Xe robot (mạch L298N, động cơ DC, Servo).
Chương 5: Thực nghiệm và đánh giá
Chương này công bố toàn bộ dữ liệu kiểm thử thực tế của hệ thống:
- Đo đạc tốc độ khung hình (FPS) của thiết bị nhận diện trong các điều kiện độ phân giải và môi trường ánh sáng khác nhau.
- Đánh giá tỷ lệ nhận diện đúng của 9 cử chỉ bàn tay (ghi nhận các lỗi nhận diện khi ngón tay bị che khuất hoặc góc nghiêng cổ tay lớn).
- Đo đạc độ trễ truyền thông toàn trình: Thời gian phản hồi gửi/nhận giữa thiết bị nhận dạng, Server Wi-Fi và các driver ngoại vi qua MQTT đạt chu kỳ trễ khoảng 1.300 ms (tương đương 1,3 giây).
- Đánh giá chức năng và tính chính xác trung bình của từng thiết bị ngoại vi: Tỷ lệ thực thi đúng lệnh chọn màu/hiệu ứng của đèn dây RGB, độ chính xác hiển thị ký tự của OLED, độ chính xác điều hướng góc quay Servo và động cơ Motor của xe robot.
Chương 6: Hạn chế và hướng phát triển đề tài
Chương cuối tổng kết các nhược điểm còn tồn tại trong thiết kế (độ phân giải cử chỉ tĩnh, phụ thuộc góc chiếu sáng, độ trễ mạng) và vạch ra các hướng nâng cấp phần cứng, phần mềm trong giai đoạn tiếp theo.
Kết quả và đóng góp
Khóa luận đạt được các kết quả kỹ thuật và đóng góp thực tiễn cụ thể:
1. Kết quả kỹ thuật thu được
- Hiện thực hóa thành công phần cứng: Đóng gói hoàn chỉnh thiết bị nhận diện bàn tay sử dụng Raspberry Pi 4 Model B kết hợp camera chuyên dụng IMX219 8MP, đạt tốc độ xử lý ổn định ở mức 30 FPS, loại bỏ hiện tượng giật lag so với các dòng camera giao tiếp USB thông thường.
- Tối ưu hóa phần mềm xử lý: Xây dựng module xử lý
hand.py kết hợp mô hình học máy MediaPipe Hands với giải thuật so sánh đốt ngón tay tự xây dựng. Cơ chế đa luồng (3 threads) giúp hệ thống phân tách độc lập việc xử lý ảnh và giao tiếp I/O, giảm thiểu độ trễ vào/ra.
- Xây dựng bộ mã hóa lệnh 8-bit: Định nghĩa bảng đặc tả 9 mã trạng thái cử chỉ bàn tay chuẩn mực (
00000000 đến 00001000), làm cơ sở dữ liệu chung cho toàn bộ các thiết bị ngoại vi.
- Hoàn thiện 3 mô hình ngoại vi độc lập:
- Thiết bị đèn LED WS2812B phản hồi chính xác các lệnh chuyển 7 màu đơn sắc và 2 hiệu ứng động (cầu vồng, nhấp nháy).
- Màn hình OLED SSD1306 nhận dữ liệu qua I2C và hiển thị đúng thông tin phản hồi từ Server.
- Xe robot chấp hành chính xác các thao tác di chuyển tiến/lùi, chuyển hướng góc lái bằng Servo và điều khiển bật/tắt đèn xe.
- Xác lập thông số trễ truyền thông: Giản đồ độ trễ ghi nhận tổng thời gian từ khi nhận dạng đến khi thiết bị ngoại vi thực thi hoàn tất là khoảng 1.300 ms (bao gồm trễ truyền UART, trễ xử lý gói tin qua Wifi Module Server và độ trễ phân phối gói tin qua broker MQTT flespi.io).
2. Đóng góp khoa học và kỹ thuật
- Đề xuất kiến trúc giải pháp điều khiển module hóa: Thay vì thiết kế hệ thống nhúng nguyên khối (monolithic), đồ án đã tách rời khối nhận diện cử chỉ và khối thiết bị chấp hành thông qua tầng trung gian Wi-Fi Server và MQTT Broker. Kiến trúc này cho phép một thiết bị nhận diện duy nhất có thể điều khiển luân phiên nhiều thiết bị IoT mà không cần nạp lại firmware hay thay đổi kết nối vật lý.
- Khắc phục nhược điểm huấn luyện mô hình: Ứng dụng thành công thư viện MediaPipe Hands chạy trực tiếp trên máy tính nhúng tầm trung (Raspberry Pi 4B), chứng minh giải pháp nhận dạng không cần thu thập dữ liệu lớn hay đầu tư tài nguyên GPU đắt tiền (như Jetson Nano) mà vẫn đáp ứng tốt yêu cầu tương tác thời gian thực.
- Cơ chế an toàn trong điều khiển: Thiết kế khối "Enable/Disable" tích hợp nút bấm cơ học và LED chỉ báo trên từng thiết bị ngoại vi, giải quyết bài toán an toàn tương tác: Thiết bị chỉ nhận lệnh khi người dùng chủ động cho phép, ngăn chặn các hành vi kích hoạt ngoài ý muốn do cử chỉ vô tình của bàn tay.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận trình bày thẳng thắn các hạn chế kỹ thuật dựa trên kết quả thực nghiệm tại Chương 5 và Chương 6:
1. Hạn chế của hệ thống
- Giới hạn số lượng đối tượng: Hệ thống mới chỉ nhận diện được 1 bàn tay tại một thời điểm; khi đưa cả 2 bàn tay vào khung hình, thuật toán sẽ cảnh báo không hỗ trợ và tạm dừng điều khiển.
- Hạn chế về loại cử chỉ: Mới dừng lại ở việc phân loại 9 cử chỉ tĩnh dựa trên hình ảnh 2D, chưa nhận diện được các cử chỉ động (dynamic gestures) như vẫy tay, xoay cổ tay, vuốt ngón tay theo quỹ đạo thời gian.
- Độ trễ truyền thông: Tổng độ trễ toàn trình khoảng 1.300 ms vẫn còn tương đối cao đối với các tác vụ yêu cầu phản ứng tức thời (như phanh khẩn cấp cho xe robot).
- Phụ thuộc điều kiện môi trường: Góc nghiêng bàn tay quá lớn so với mặt phẳng camera hoặc điều kiện ánh sáng thay đổi đột ngột có thể làm thuật toán SSD bắt sai điểm mốc, dẫn đến việc giải mã sai trạng thái ngón tay.
2. Hướng nghiên cứu tiếp theo
- Nâng cấp giải thuật thị giác máy tính để nhận diện và theo dõi đồng thời cả 2 bàn tay trong không gian 3 chiều.
- Nghiên cứu mô hình chuỗi thời gian (như LSTM hoặc mạng nơ-ron hồi quy RNN) để mở rộng tập lệnh nhận diện cử chỉ động theo thời gian thực.
- Tối ưu hóa ngăn xếp giao thức mạng, thử nghiệm truyền thông cục bộ (Local MQTT Broker hoặc giao tiếp ESP-NOW/WebSockets) nhằm cắt giảm độ trễ 1.300 ms xuống mức dưới 200 ms.
- Tích hợp thêm các cảm biến phụ trợ (cảm biến siêu âm tránh vật cản trên xe robot, cảm biến ánh sáng môi trường) và mở rộng hệ sinh thái thiết bị chấp hành sang cánh tay robot công nghiệp hoặc các thiết bị gia dụng công suất lớn.
Giá trị tham khảo
Tài liệu khóa luận có giá trị tham khảo ứng dụng cao đối với:
- Sinh viên và nhà nghiên cứu ngành Kỹ thuật Máy tính, Hệ thống Nhúng và IoT: Cung cấp tài liệu tham khảo chi tiết về việc kết hợp máy tính nhúng Linux (Raspberry Pi) với vi điều khiển thời gian thực (ESP32) qua giao tiếp UART và mạng không dây MQTT.
- Sinh viên ngành Kỹ thuật Điện - Điện tử, Tự động hóa: Tham khảo thiết kế mạch điều khiển ngoại vi công suất thấp, mạch điều khiển động cơ qua L298N, tạo xung One-Wire điều khiển LED WS2812B bằng khối ngoại vi RMT của ESP32.
- Người phát triển ứng dụng Thị giác máy tính biên (Edge AI): Cung cấp giải thuật tham khảo chi tiết trong việc phân tích tọa độ các khớp xương 3D của MediaPipe Hands để giải mã hành vi con người mà không cần huấn luyện lại mô hình mạng nơ-ron phức tạp.
Câu hỏi thường gặp
1. Vì sao nhóm tác giả lựa chọn Raspberry Pi 4 Model B thay vì kit Nvidia Jetson Nano cho thiết bị nhận diện bàn tay?
Theo phân tích tại Chương 4, mặc dù Nvidia Jetson Nano sở hữu năng lực xử lý vượt trội về GPU và RAM cho các tác vụ học máy, nhưng Raspberry Pi 4 Model B lại có mức công suất tiêu thụ thấp hơn (dao động từ 3W – 4W), giá thành phải chăng hơn và CPU/GPU thế hệ mới đủ mạnh để chạy mượt mà thư viện MediaPipe Hands. Việc tối ưu thuật toán trên một phần cứng có năng lực vừa phải giúp giải pháp tiết kiệm chi phí và dễ dàng nhân rộng trên nhiều nền tảng nhúng khác nhau.
2. Camera IMX219 8MP đạt được tốc độ khung hình bao nhiêu và có ưu thế gì so với webcam USB thông thường?
Thực nghiệm trong khóa luận ghi nhận module camera Raspberry Pi V2 IMX219 8MP (giao tiếp qua cổng cáp dải CSI trực tiếp với vi xử lý) đạt tốc độ xuất khung hình ổn định tối đa 30 FPS. Trong khi đó, các dòng webcam giao tiếp qua cổng USB (cụ thể là Rapoo XW170 được thử nghiệm trong đề tài) bị hạn chế băng thông truyền dẫn và độ trễ bus USB, chỉ đạt tốc độ khung hình tối đa khoảng 5 FPS, gây giật lag nghiêm trọng khi xử lý nhận dạng cử chỉ thời gian thực.
3. Nguyên lý phân loại trạng thái gập/duỗi của các ngón tay trong file thư viện hand.py được thực hiện như thế nào?
Giải thuật xác định cử chỉ dựa trên tọa độ chuẩn hóa $[id, x, y]$ của 21 điểm mốc:
- Đối với 4 ngón dài (trỏ, giữa, nhẫn, út): So sánh tọa độ chiều cao $y$ của đỉnh ngón (điểm 8, 12, 16, 20) với điểm khớp đốt cách nó hai bậc (điểm 6, 10, 14, 18). Nếu tọa độ đỉnh thấp hơn tọa độ đốt khớp, ngón tay được xác định là gập.
- Đối với ngón cái: Do cấu tạo khung xương nằm ngang, thuật toán so sánh tọa độ trục ngang $x$ của đỉnh ngón cái (điểm 4) với các khớp lân cận và đối chiếu với điểm mốc ngón út (điểm 20) để xác định trạng thái đóng hoặc mở.
4. Tổng thời gian trễ truyền thông toàn trình của hệ thống là bao nhiêu và được cấu thành từ những giai đoạn nào?
Theo giản đồ độ trễ truyền thông giao tiếp tại Chương 4, tổng thời gian phản hồi toàn trình để gửi và thực thi một gói tin điều khiển là khoảng 1.300 ms (1,3 giây). Khoảng thời gian này bao gồm: Trễ xử lý và phát tín hiệu từ thiết bị nhận dạng, độ trễ truyền dữ liệu nối tiếp UART sang ESP32 Server, thời gian đóng gói và gửi gói tin qua giao thức MQTT lên Broker flespi.io, cùng độ trễ nhận và kích hoạt cơ cấu chấp hành tại các driver thiết bị ngoại vi.
5. Cơ chế nào ngăn chặn việc thiết bị ngoại vi vô tình bị kích hoạt bởi các cử chỉ ngoài ý muốn của người dùng?
Nhóm tác giả thiết kế cơ chế bảo vệ phần cứng bằng khối "Enable/Disable" trên từng mạch ứng dụng. Mỗi thiết bị ngoại vi (đèn RGB, OLED, xe robot) được bố trí một nút nhấn cơ học SPST (chân GPIO33) và một đèn LED chỉ báo (chân GPIO27). Mặc định thiết bị ở trạng thái khóa nhận tin; chỉ khi người dùng bấm nút kích hoạt (đèn LED sáng), driver mới gửi bản tin MQTT thông báo cho phép Server chuyển tiếp dữ liệu điều khiển từ bộ nhận dạng cử chỉ.
Kết luận
Đồ án tốt nghiệp của sinh viên Ngô Lê Tuyết Hoa và Nguyễn Hữu Nam đã hiện thực hóa thành công mô hình nhận diện cử chỉ bàn tay hỗ trợ điều khiển tự động đa thiết bị IoT bằng phương pháp tiếp cận module hóa. Thông qua việc kết hợp thư viện thị giác MediaPipe Hands trên máy tính nhúng Raspberry Pi 4, cầu nối vi điều khiển ESP32-S và giao thức truyền thông MQTT qua nền tảng flespi.io, hệ thống đã giải quyết hiệu quả bài toán phân mảnh thiết bị điều khiển từ xa và giảm thiểu chi phí tính toán trong nhận dạng cử chỉ. Kết quả thực nghiệm trên 3 mô hình ngoại vi (đèn dây RGB WS2812B, màn hình OLED SSD1306 và xe robot) đã khẳng định tính khả thi của giải pháp, đồng thời cung cấp cơ sở kỹ thuật giá trị cho các nghiên cứu phát triển hệ thống điều khiển không chạm trong tương lai.