Chủ Nhật, 24 tháng 11, 2013

Thiết kế hệ thống cảm biến "cử chỉ"

Thiết kế hệ thống cảm biến "cử chỉ"
Trong điều khiển không tiếp xúc, phương pháp cảm biến vị trí và pha chuyển động có thể được áp dụng kết hợp để "giấu" điểm yếu và "khoe" điểm mạnh.
 
Hình 1
Tiếp nối bài viết "Điều khiển không chạm" (ID: A1104_86), chuyên mục Công nghệ kỳ này gửi đến quý độc giả một bài viết nói về cách thức và nguyên lý trong thiết kế hệ thống cảm biến chuyển động sử dụng "mắt thần" hồng ngoại.

Có thể khẳng định, giao diện người dùng dạng không tiếp xúc (touchless user interface) hiện là công nghệ "bùng nổ" cho thiết bị điện tử dạng nhúng (embedded electronic) khi mà các nhà phát triển đang ra sức tìm kiếm những phương pháp kiểm soát/điều khiển mang tính sáng tạo và trực quan hơn để người dùng tương tác dễ dàng hơn với các sản phẩm điện tử. Do đó, công nghệ cảm biến hồng ngoại tích cực ở cự ly ngắn (active IR proximity-motion-sensing) có thể giải quyết được bài toán này ngay từ khâu thiết kế giao diện người dùng.

Nhờ sự đa dạng của cảm biến hồng ngoại cự ly ngắn và cảm biến ánh sáng độ nhạy cao (ambient-light sensor) dạng tích hợp nên việc triển khai hệ thống cảm biến chuyển động/cử chỉ (gesture-sensing system) bằng cách sử dụng công nghệ hồng ngoại trở nên dễ dàng hơn rất nhiều. Theo đó, 2 phương pháp chính thường được sử dụng để kích hoạt các hệ thống cảm biến cử chỉ là cảm biến dựa trên vị trí vật thể (position-based sensing) và cảm biến dựa trên pha chuyển động (phase-based sensing). Hai công nghệ này có thể xem là thành phần then chốt trong các ứng dụng/tính năng điều khiển cảm biến hồng ngoại như lật trang trong sách điện tử, cuộn màn hình trong máy tính bảng (tablet PC) hay điều khiển giao diện người dùng dạng đồ họa trong các hệ thống kiểm soát công nghiệp.
YẾU TỐ PHẦN CỨNG
Dù hầu hết ứng dụng/tính năng giao diện không tiếp xúc chủ yếu liên quan đến các điệu bộ/cử chỉ được thực hiện bởi bàn tay (hand) của người dùng, nhưng các mô hình nhận dạng cử chỉ/điệu bộ cũng có thể được áp dụng cho những "đối tượng" khác như gò má, cổ tay... Thực vậy, cảm biến cự ly ngắn có thể nhận diện chuyển động của bàn tay trong khoảng cách 15cm. Yêu cầu cơ bản trong việc thiết kế một hệ thống cảm biến chuyển động/cử chỉ với nhiều đèn LED là cần đảm bảo không có bất kỳ điểm chết (dead spot) nào giữa khu vực có thể quan sát (detectable area).
Hình 2
Khi một đối tượng xuất hiện phía trên hệ thống và không được phát hiện, nhận dạng thì đối tượng đó có thể đang "đứng" tại một điểm chết. Để tránh gặp phải điểm chết, các đèn LED phải được đặt ở vị trí mà tại đó nguồn sáng phát ra từ đèn hồng ngoại có thể phản hồi lại đối tượng và chuyển tiếp vào cảm biến trong một khoảng cách có thể kiểm soát được (Hình 1). Khu vực thường tạo ra điểm chết là phần ngay phía trên cảm biến, giữa 2 đèn LED; do đó 2 đèn LED thường được đặt gần các cạnh của đối tượng để chúng có thể cung cấp thông tin phản hồi vào khoảng giữa của vùng quan sát, trong khi vẫn đảm bảo khoảng cách hợp lý giữa 2 đèn LED để có thể phản hồi mọi chuyển động sang trái/phải của bàn tay hay các ngón tay.

Vị trí và phản hồi của đối tượng trong một hệ thống cảm biến cử chỉ/chuyển động là điều đặc biệt quan trọng. Lưu ý, các cảm biến cự ly ngắn trong Hình 1 được đặt dưới lòng bàn tay và ở giữa các ngón tay. Các ngón tay là những đối tượng khó nhận diện đối với các hệ thống nhận dạng bàn tay vì ánh sáng có thể truyền xuyên qua khe hở ở giữa các ngón tay. Hình dáng của ngón tay về cơ bản cũng tạo ra sự sai lệch về kết quả trong các phép đo/nhận diện sự chuyển động của bàn tay.
CẢM BIẾN DỰA TRÊN VỊ TRÍ
Nguyên lý hoạt động của cảm biến chuyển động dựa trên vị trí của bàn tay/ngón tay (position-based gesture-sensing) về cơ bản gồm 3 bước. Bước đầu tiên: Chuyển đổi dữ liệu đầu vào dạng thô sang dữ liệu khoảng cách có thể sử dụng được. Bước thứ 2: Sử dụng dữ liệu khoảng cách này để ước lượng vị trí của đối tượng, và bước thứ 3: Kiểm tra thời gian của sự chuyển động bất kỳ khi nào cử chỉ/điệu bộ của đối tượng cần quan sát diễn ra.

Cảm biến cự ly ngắn trả về giá trị là độ sáng của nguồn sáng mà các đèn LED hồng ngoại phản hồi. Những giá trị này tăng khi đối tượng hay bàn tay di chuyển gần hơn so với hệ thống và phản hồi ánh sáng nhiều hơn. Giả sử, một bàn tay là đối tượng được xác định trước cho việc phát hiện mục tiêu. Hệ thống có thể ước lượng khoảng cách dựa trên tín hiệu phản hồi của bàn tay ở một khoảng cách nhất định. Ví dụ, một bàn tay đặt ở khoảng cách 10cm tạo ra giá trị trả về ở hệ thống cảm biến cự ly ngắn là 5000. Do đó, khi hệ thống cảm biến nhận giá trị trả về là 5000, có nghĩa người dùng đang đặt bàn tay cách cảm biến 10cm. Từ đó, việc ghi nhận nhiều giá trị ở những khoảng cách khác nhau từ hệ thống sẽ giúp "nội suy" các điểm ở giữa, đồng thời tạo ra một phương trình cân bằng từ dữ liệu thô (lấy từ hệ thống cảm biến cự ly ngắn) sang giá trị khoảng cách được ước lượng.
 
Hinh 3
Hinh 4
Mỗi đèn LED trong một hệ thống nhiều đèn LED có giá trị phản hồi khác nhau cho khoảng cách của mỗi bàn tay, vì thế mỗi đèn LED cần công thức tính toán khoảng cách riêng. Với hệ thống 2 đèn LED, mỗi đèn LED phải được mô tả với đối tượng được đặt giữa 2 đèn LED và thiết bị cảm ứng (Hình 2). Lấy ví dụ ở Hình 2, ta thấy, khi Target 1 được di chuyển qua cảm biến và đèn LED 1, giá trị đo phản hồi sẽ giúp xác định giá trị khoảng cách D1, tương tự với giá trị khoảng cách D2 cho đối tượng Target 2.

Bước kế tiếp là ước lượng vị trí của đối tượng bằng cách sử dụng dữ liệu khoảng cách và công thức giao nhau của 2 vòng tròn. Phản hồi của nguồn sáng LED 1 là một hình nón, nhưng trong phép tính xấp xỉ này, ta có thể xem đó là một hình cầu. Với các đèn LED được đặt trên cùng 1 trục (axis), sự giao nhau của 2 hình nón có thể được xem như sự giao nhau của 2 vòng tròn.

Khi một đối tượng được đặt vào giữa hệ thống quan sát, D1 và D2 sẽ ước lượng khoảng cách từ điểm P1 và P2 đến đối tượng ở phía trên hệ thống (Hình 3). Nếu xem D1 và D2 là bán kính của 2 đường tròn, thì sự giao nhau của 2 đường tròn này dễ dàng giúp ta tính được giá trị (hay nói chính xác là vị trí) của đối tượng.

Hình 4 là phiên bản mở rộng của Hình 3, mà ở đó A và B là giá trị vị trí của đối tượng trên trục giữa các điểm P1 và P2. Giá trị D1 và D2 đã được đổi thành tên R1 và R2 để cho thấy rằng trong trường hợp này chúng được xem là bán kính. Giá trị của A là vị trí của đối tượng trên trục giữa điểm P1 và P2. A có thể nhận giá trị âm (negative value) khi đối tượng xuất hiện ở phía bên trái của điểm P1. Khoảng cách đến đối tượng là hàm của các biến sau: D = A+B, và A=(R12 - R22 + D2)/2D.

Với hàm tính vị trí vừa có, việc ghi nhận thời gian sẽ cho phép hệ thống tìm kiếm và "hiểu" được các cử chỉ, thao tác điều khiển của bàn tay. Các vị trí vào (entry position) và vị trí ra (exit position) là những giá trị quan trọng nhất trong việc nhận diện và phản hồi các cử chỉ của bàn tay. Trong trường hợp này, vị trí vào là nơi bàn tay bắt đầu cử chỉ, còn vị trí ra là nơi bàn tay ngừng lại hay chấm dứt một cử chỉ điều khiển.
 
Hình 5
Một thao tác sẽ được xác định là hướng về phía bên trái nếu bàn tay của người điều khiển xuất hiện trong vùng quan sát bên trái với giá trị A ở mức cao và rời khỏi vùng quan sát bên trái với giá trị A ở mức thấp. Kịch bản dạng này giả dụ rằng các thao tác di chuyển bàn tay diễn ra trong một cửa sổ với thời gian xác định. Nếu vị trí này "ổn định" trong một quãng thời gian xác định thì có thể xem đây là thao tác "tạm ngưng" di chuyển (pause).

Hệ thống cảm biến chuyển động phải ghi nhận được chính xác các mốc thời gian của các vị trí vào/ra cũng như vị trí hiện hữu của đối tượng trong khu vực quan sát. Với cơ sở dữ liệu dựng sẵn, bạn có thể dể dàng nhận diện hầu hết cử chỉ, điệu bộ từ dữ liệu vị trí và thời gian.

Phương pháp dựa trên vị trí có thể cung cấp thông tin về vị trí của đối tượng. Ví dụ, để cuộn trang trong một quyển sách, bạn có thể "để lửng" bàn tay vào vùng điều khiển bên trái thay vì thực hiện vài cử chỉ quét tay về bên trái.

Nhược điểm lớn nhất của phương thức cảm biến cử chỉ, điệu bộ dựa trên vị trí là tính chính xác của các hàm tính toán bởi lý thuyết gán kết quả trả về từ đèn LED là hình cầu nhưng thực tế đó lại là hình nón. Ngoài ra, nhiễu và tán xạ nguồn sáng phản hồi cũng là những nguyên nhân làm cho giá trị trả về từ các cảm biến, đèn LED bị thay đổi (dù rất ít). Một vấn đề khác cần quan tâm, đó là phương thức này không thể giải thích được hình dáng của đối tượng. Ví dụ, hệ thống không thể phân biệt được sự khác nhau giữa bàn tay và cổ tay, vì thế độ chính xác sẽ kém hơn khi nhận diện những cử chỉ mà đòi hỏi người dùng phải sử dụng cả cổ tay - hay nói chính xác là cổ tay của người dùng đã lọt vào vùng quan sát của hệ thống cảm biến.

Các hàm tính toán vị trí thường chính xác với hệ thống có độ phân giải thấp mà chỉ cần lưới nhận diện cỡ 3x3, nhưng các hàm này không thể thích hợp cho các ứng dụng cần thao tác trỏ tay hay cần chỉ rõ vị trí tương tác. Tóm lại, kết quả đầu ra của phương pháp này không thích hợp để thay thế cho màn hình cảm ứng.
CẢM BIẾN DỰA TRÊN PHA CHUYỂN ĐỘNG
Với hệ thống cảm biến cử chỉ dựa trên pha chuyển động (phase-based gesture sensing), vị trí của đối tượng không bao giờ được tính/xác định. Phương pháp này chỉ xoay quanh việc đều đặn tìm kiếm dữ liệu thô từ các hệ thống cảm biến cự ly ngắn và xác định thời gian của các thay đổi từ các phản hồi của mỗi đèn LED. Điểm phản hồi cực đại cho mỗi đèn LED xuất hiện khi một bàn tay được đặt trực tiếp trước đèn LED. Nếu một bàn tay quét ngang 2 đèn LED thì hướng của thao tác quét này có thể được xác định bằng cách xem đèn LED nào "đáp ứng" trước tiên.

Khi quét một bàn tay qua hệ thống cảm biến cự ly ngắn sử dụng 3 đèn LED, thì trước tiên bàn tay sẽ đi qua đèn D2, sau đó đến D3 và sau cùng là D1. Thuật toán cảm biến sẽ ghi nhận tín hiệu phản hồi từ D2, và ghi nhận thời gian của phản hồi này. Sau đó, hàm sẽ tiếp tục xử lý cho D3 và D1, dĩ nhiên ở mốc thời gian sau đó. Ngoài ra, hàm này cũng có thể xác định giá trị phản hồi của mỗi đèn LED ở chế độ không nhận diện được và có thể ghi nhận thời gian cho tình huống này. Trong trường hợp này, D2 trả về giá trị thông thường trước tiên, sau đó đến D3 và cuối cũng vẫn là D1.
 
Với các cử chỉ đưa tay lên/xuống, D1 và D2 cùng lúc tăng và giảm, còn D3 hoặc là xuất hiện trước hay sau D1 và D2 lần lượt cho thao tác điều khiển tay lên và xuống. Nếu một bàn tay tương tác hệ thống trực tiếp từ phía trên và sau đó co lại (retract) để chọn một cử chỉ, thì 3 giá D1, D2 và D3 sẽ tăng hay giảm cùng một thời điểm. Hình 6 hiển thị tín hiệu phản hồi cho các thao tác kéo trái, phải, lên và xuống.

Khác với phương pháp dựa trên vị trí, phương pháp dựa trên pha của chuyển động cung cấp một cách thức "khỏe" và "thông minh" hơn để nhận diện các cử chỉ trong các ứng dụng mà tại đó không đòi hỏi thông tin, giá trị về vị trí.
Mỗi cử chỉ, điệu bộ có thể được nhận diện đồng thời hướng vào hay ra của vùng quan sát, và hướng của cử chỉ có thể được kiểm tra lại (double-check) để cung cấp tính chắc chắn cho mỗi cử chỉ của người dùng.

Nhược điểm của phương pháp này là không cung cấp thông tin về vị trí của đối tượng tạo ra cử chỉ, chuyển động điều khiển, và điều đó có nghĩa là số lượng cử chỉ bị hạn chế hơn so với phương thức cảm biến dựa trên vị trí. Phương pháp cảm biến dựa trên pha chuyển động về cơ bản chỉ cung cấp hướng của cử động trong vùng quan sát, vì thế phương pháp này không thể nhận diện được mọi chuyển động ở giữa vùng quan sát.

Dẫu vậy, cả phương pháp cảm biến dựa trên vị trí và dựa trên pha chuyển động có thể kết hợp để "giấu" điểm yếu và "khoe" điểm mạnh ở mỗi phương pháp. Phương pháp cảm biến dựa trên vị trí cung cấp thông tin vị trí cho các điều khiển ở mức chi tiết, và phương pháp cảm biến dựa trên pha chuyển động cho phép nhận dạng hầu hết mọi cử chỉ, hướng tương tác.

Ở góc độ nào đó, khi mà đòi hỏi của người dùng về giao diện không tiếp xúc tăng cao thì rõ ràng là công nghệ cảm biến hồng ngoại cần "thông minh" hơn và sự kết hợp 2 công nghệ trên là hoàn toàn cần thiết.
GIẢI PHÁP PRIMESENSOR
Có phần giống với giải pháp nhận diện chuyển động với 3 đèn LED hồng ngoại, giải pháp PrimeSensor của hãng PrimeSense có khả năng xử lý các cử chỉ dạng 3 chiều (3D), nhưng dữ liệu hình ảnh lại được ghi nhận từ cảm biến ảnh CMOS. Giải pháp của PrimeSense ghi nhận độ sâu, màu sắc và cả âm thanh ở chế độ thời gian thực của không gian cần kiểm soát mà không yêu cầu người dùng (người điều khiển hệ thống) phải mặc hay cầm bất cứ công cụ hỗ trợ nào khác (như tay cầm trên máy Nintendo Wii hay bộ điều khiển từ xa), cũng như không bắt buộc phải cân chỉnh hay truy xuất dữ liệu đã được số hóa từ máy tính trung tâm. Theo PrimeSense, công nghệ nhận dạng đối tượng 3 chiều của hãng có khả năng hoạt động trong nhiều điều kiện ánh sáng của phòng làm việc.

Giải pháp System on a Chip (SoC) của PrimeSense có khả năng tính toán giá trị độ sâu của mỗi điểm ảnh (pixel), dựa trên tín hiệu trả về của cảm biến CMOS. Ngoài ra, SoC này cũng trang bị cảm biến CMOS để nhận dạng màu sắc của điểm ảnh, xử lý nguồn sáng trả về dựa trên công nghệ phân mã nguồn sáng Light Coding. Về nguyên tắc, Light Coding làm việc bằng cách mã hóa vùng quan sát thông qua đèn IR được đặt gần đó - đèn này "vô hình" đối với mắt người. Sau đó, SoC của PrimeSense sẽ tối ưu một cảm biến ảnh CMOS chuẩn để đọc nguồn sáng đã được mã hóa trả về từ vùng quan sát. Chip SoC được kết nối đến cảm biến CMOS và thực thi các phép tính song song phức tạp để giải mã nguồn sáng và xác định độ sâu hình ảnh trong vùng quan sát.

Để trả về giá trị chính xác hơn, giải pháp của PrimeSense còn thực hiện một quá trình khác có tên là Registration (đăng ký). Theo đó, kết quả hình ảnh của quá trình Registration đã được "pixel hóa", có nghĩa là mọi pixel trong hình ảnh màu đã được sắp xếp tương ứng với pixel trong ảnh "có chiều sâu".

Ở góc độ nào đó, PrimeSense "3 chiều hóa" không gian quan sát và "dịch" chúng thành ảnh "có chiều sâu" đã được đồng bộ hóa như cách mà mắt người thực hiện. PrimeSense cung cấp chip PS1080 SoC tích hợp và thư viện NITE Middleware cùng mô hình PrimeSensor. Trong đó, NITE Middleware là thư viện giao tiếp lập trình lớp giữa, tập trung chủ yếu vào khả năng tương tác thực (Natural Interaction) bằng cách sử dụng 2 công cụ chính là điều khiển bằng cử chỉ (Control-by-Gesture) và ứng dụng cho game (Games for All).

NITE Middleware cung cấp các thuật toán, giải pháp để người dùng triển khai các ứng dụng nhận diện cử chỉ/điệu bộ cũng như khả năng kiểm soát hạ tầng, phần cứng, ứng dụng để tương tác với người dùng trong không gian định sẵn. Công cụ Control-by-Gesture cho phép người dùng kiểm soát trực quan các thiết bị điện tử trong phòng khách từ bàn tay "trần". Thư viện NITE cung cấp toàn bộ hạ tầng cần thiết cho các nhà phát triển ứng dụng để thỏa sức thiết kế và sáng tạo các ứng dụng có khả năng điều khiển "không chạm" bằng cách "múa" bàn tay và các chuyển động của toàn bộ thân người.

Tham khảo: www.EDN.com, PrimeSense, Silicon Labs

Không có nhận xét nào:

Đăng nhận xét