Bài viết đề xuất giải pháp điều khiển thông qua việc nhận dạng các cử động tay sử dụng board Intel Galileo. Thành phần chính của hệ thống bao gồm: một webcam làm nhiệm vụ chụp, gởi ảnh được kết nối qua cổng microUSB với board Intel Galieo chạy hệ điều hành Linux. Ngôn ngữ Python được sử dụng trong việc lập trình cài đặt các giải thuật nhận dạng ảnh. Kết quả nhận dạng các trạng thái của bàn tay sẽ được dùng để điều khiển hoạt động của xe lăn. Mời các bạn cùng tham khảo!
Trang 1Điều Khiển Xe Lăn Dựa Trên Nhận Dạng Ảnh Trạng
Thái Của Bàn Tay Với Board Intel Galileo
Trương Phong Tuyên, Phạm Hoàng Lượm và Phạm Thanh Hùng
Bộ môn Điện tử - Viễn thông, Khoa Công Nghệ, Trường Đại học Cần Thơ
Email: tptuyen@ctu.edu.vn, luom117984@student.ctu.edu.vn, hung117970@student.ctu.edu.vn
Abstract— Trong những năm gần đây, ở nước ta số ca đột quỵ
đang có xu hướng ngày càng tăng và hầu hết bệnh nhân phải
gánh chịu các di chứng bại liệt dẫn đến gặp khó khăn trong đi lại
Trong một số trường hợp nhẹ, để di chuyển họ có thể tự điều
khiển xe lăn Tuy nhiên, với các trường hợp bị liệt bán thân và
tay còn lại cũng bị yếu không thể thao tác với cần điều khiển xe
thì những người này phải điều khiển xe thông qua các giải pháp
hỗ trợ như: nhận dạng sự di chuyển của mắt, cử động đầu v.v
Hiện tại hầu hết các giải pháp trên đều chạy trên máy tính do đó
tiêu tốn nhiều điện năng và giá thành cao Bên cạnh đó, Intel vừa
cho ra mắt board Intel Galileo sử dụng chip Intel Quark X1000
được sản xuất dựa trên dây chuyền công nghệ 14 nm phù hợp
cho các ứng dụng nhúng di động Với mục tiêu thiết kế một hệ
thống điều khiển xe lăn có giá thành hợp lý, nghiên cứu này đề
xuất giải pháp điều khiển thông qua việc nhận dạng các cử động
tay sử dụng board Intel Galileo Thành phần chính của hệ thống
bao gồm: một webcam làm nhiệm vụ chụp, gởi ảnh được kết nối
qua cổng microUSB với board Intel Galieo chạy hệ điều hành
Linux Ngôn ngữ Python được sử dụng trong việc lập trình cài
đặt các giải thuật nhận dạng ảnh Kết quả nhận dạng các trạng
thái của bàn tay sẽ được dùng để điều khiển hoạt động của xe
lăn
Keywords- Điều khiển xe lăn, cử động tay, Intel Galileo,
Python, xử lý ảnh
I GIỚI THIỆU Mỗi năm tại Việt Nam có hơn 200.000 người bị đột quỵ (tai
biến mạch máu não), hơn 50% trong số đó tử vong và 90% số
người sống sót sau đột quỵ phải sống chung với các di chứng
về thần kinh và vận động… Hiện Việt Nam có khoảng 486.000
người còn sống sau đột quỵ, tuy nhiên chỉ có khoảng 25-30%
tự đi lại phục vụ bản thân được, 20-25% đi lại khó khăn, cần sự
hỗ trợ của người khác trong sinh hoạt, 15-25% phải phụ thuộc
hoàn toàn vào sự phục vụ của người khác [1] Đối với hầu hết
các bệnh chịu các di chứng do đột quỵ thì xe lăn là phương
tiện di chuyển phù hợp Ở mức độ bị liệt bán thân hoặc nặng
hơn thì sức lực của bàn tay không còn đủ để có thể thao táo với
cần điều khiển của các xe lăn truyền thống, khi đó họ phải
dùng các giải thuật khác hỗ trợ việc điều khiển như: nhận dạng
sự di chuyển của mắt, cử động đầu, bằng ý nghĩ v.v
[22][24][26][27] Tuy nhiên những giải thuật này phải thực
hiện trên máy tính do đó là có giá thành cao [2]
Hiện nay trên thế giới có nhiều phiên bản xe lăn được nghiên cứu với các phương pháp điều khiển đặc trưng riêng biệt như:
− Xe điều khiển bằng joystick đòi hỏi người dùng phải điều khiển bằng tay hoặc một chi bị tật mà chi còn lại khỏe mạnhh thì mới có thể điều khiển xe lăn bằng phương pháp này Nó không phù hợp cho người bị liệt, yếu tất cả các chi [3]
− Xe điều khiển bằng “hớp và thổi” như cách mà Christopher Reeve Theo đó, ông thổi vào một ống hút
để làm xe lăn di chuyển, tuy nhiên phương pháp này gây ra khó khăn trong việc hô hấp của chính người khiển [4]
− Xe lăn điều khiển bằng lưỡi của các chuyên gia tại Viện Công nghệ Georgia của Mỹ đã nghiên cứu năm 2011, theo đó người sử dụng đeo bộ tai nghe có trang bị cảm biến nhằm thu nhận tín hiệu từ trường phát ra từ khuyên
ở lưỡi [5]
− Xe lăn có thể điều khiển bằng sự chuyển động của đầu
và sóng não con người được xem là một trong những phát minh hàng đầu ở Úc được đề xuất bởi GS Nguyễn Hùng, Khoa Kỹ thuật và Công nghệ thông tin, Đại học Công nghệ Sydney, với chi phí lên đến khoảng 15.000 USD [6][19][23][25]
− Xe lăn điều khiển bằng đầu do Phòng Thí nghiệm Điều khiển Tự động, Khoa Điện-Điện tử, Đại học Bách Khoa TPHCM thực hiện năm 2013 lại có khuyết điểm là gây khó khăn trong việc quan sát cho người điều khiển [7]
− Xe lăn điều khiển bằng mắt được nghiên cứu và thực hiện tại trường Đại học Cần Thơ của Nguyễn Hữu Cường, Bộ môn Tự động hóa, Khoa Công Nghệ năm
2011 thì lại có giá thành cao vì cần một máy tính xách tay để điều khiển và cũng rất bất tiện trong việc quan sát xung quanh [8][20][21]
Vào tháng 10 năm 2013, Intel cho ra mắt board Intel Galileo [9], có giá bán khoảng hai triệu đồng tại Việt Nam, sử dụng chip Intel Quark X100 với 16K Cache, 400MHz Đây là chip đầu tiên thuộc dòng Santa Clara của Intel được sản xuất dựa trên dây chuyền công nghệ 14 nm với mức độ tiêu thụ điện rất thấp, hỗ trợ tốt cho việc phát triển các ứng dụng nhúng di động [10]
Trang 2Từ thực tế trên, chúng tôi đã quyết định thực hiện nghiên
cứu “Điều khiển xe lăn dựa trên nhận dạng ảnh trạng thái của
bàn tay với board Intel Galileo” Mục tiêu của nghiên cứu là
thiết kế một hệ thống điều khiển xe lăn với kích thước nhỏ gọn,
nhẹ, có giá thành hợp lý Việc điều khiển xe chỉ bằng những cử
chỉ đơn giản của bàn tay không cần dùng nhiều sức lực và bàn
tay chỉ cần đặt trong một phạm vi khu vực cố định dưới sự ghi
nhận của webcam
Trong thiết kế này, thành phần chính của hệ thống là board
xử lý trung tâm Intel Galileo Một webcam kết nối với board
xử lý qua cổng microUSB để chụp và truyền ảnh bàn tay điều
khiển Board Intel Galileo chạy hệ điều hành Linux rút gọn từ
thẻ nhớ Trên hệ điều hành này, ngôn ngữ Python đã sử dụng
trong việc lập trình cài đặt giải thuật nhận dạng ảnh trạnh thái
của bàn tay Kết quả nhận dạng các trạng thái của bàn tay sẽ
được dùng để điều khiển hoạt động của xe lăn
Phần còn lại của bài viết được tổ chức như sau: trong phần
II, chúng tôi mô tả các bước thực hiện của hệ thống Việc kiểm
tra, thực nghiệm trong vận hành của hệ thống sẽ được trình bày
trong phần III Cuối cùng, các kết quả đạt được, cũng như đề
xuất hướng phát triển của nghiên cứu được tóm tắt trong phần
kết luận
II THIẾT KẾ HỆ THỐNG
II.1 Phân tích hệ thống
Hình 1 Sơ đồ tổng quát của hệ thống
Sơ đồ Hình 1 mô tả hệ thống điều khiển xe lăn dựa trên
nhận dạng ảnh trạng thái bàn tay thực hiện trong nghiên cứu
này Ảnh bàn tay điều khiển xe lăn được chụp với độ phân giải
15 MPixel bởi một webcam, sau đó được truyền về board điều
khiển trung tâm, Intel Galileo, qua cổng microUSB Trên
board điều khiển này, chương trình nhận dạng ảnh để xác định
trạng thái của bàn tay từ đó điều khiển xe lăn hoạt động
II.2 Thiết kế luồng dữ liệu
Board Intel Galileo có thể kết nối và giao tiếp với 128 thiết
bị ngoại vi nhưng cần có một HUB USB để chia sẻ cổng kết
nối [11] Hướng đi của luồng dữ liệu trong thiết kế này được
mô tả như sau: xuất phát từ webcam Logitech C920 [12], dữ
liệu ảnh được truyền đến board Galileo thông qua cổng Micro
USB Host trên board và được đưa và lưu trữ trong SD card
8GB trên board Sau đó chương trình xử lý ảnh viết bằng
Python sẽ đọc ảnh và phân thích ảnh này thành ảnh nhị phân,
so sánh với các ảnh mẫu để xác định trạng thái hiện tại của bàn
tay Từ trạng thái nhận dạng được này, board xử lý trung tâm
sẽ xuất các tín hiệu điều khiển thông qua các chân I/O Các tín hiệu trên sẽ điều khiển các mạch công suất cấp nguồn cho hai động cơ hoạt động đưa xe đi thẳng hoặc rẽ trái, phải theo trạng thái tay điều khiển Bên cạnh đó, board Intel Galileo còn kết nối với các module khác như: module LED hiển thị, module cảm biến chạm Ngoài ra, Board điều khiển trung tâm còn kết nối với card âm thanh để phát các thông báo hướng dẫn, thông tin về hoạt động của hệ thống
Hình 2 Sơ đồ luồng dữ liệu và nối kết của hệ thống
II.3 Phần cứng của hệ thống Hình 3 trình bày sơ đồ khối thiết kế phần cứng của hệ thống, bao gồm:
• Board xử lý trong tâm: sử dụng board Intel Galileo với thẻ nhớ 8 GB để lưu trữ hệ điều hành Linux Image Galileo phục vụ việc chạy chương trình, đồng thời lưu trữ các hình chụp từ webcam Do hệ thống rung lắc trong quá trình di chuyển nên đã được cố định board Galileo như Hình 4
• Bộ phận thu nhận ảnh: sử dụng webcam Logitech C920, chụp hình ở chế độ Full HD 1080, ảnh có độ phân giải 15 Mpixel Đây là webcam trang bị ống kính Carl Zeiss, hỗ trợ chế độ lấy nét tự động và chống rung Bên cạnh đó webcam còn hỗ trợ kết nối qua cổng microUSB, tương thích tốt với hệ điều hành Linux chạy trên board Intel Galileo Một khung kim loại được sử dụng để cố định vị trí webcam, như Hình 5
• Module biến đổi nguồn và ắc quy: do board Intel sử dụng điện áp trong khoảng 3,3-5V nên module biến đổi điện áp sử dụng chip LM2596 của TI [13] được sử dụng để
hạ điện áp 12V của ắcquy xuống 5V với dòng tải 3A Ắc-quy được sử dụng là loại 12V – 7Ah dùng phổ biến cho xe gắn máy
• Module điều khiển động cơ và động cơ gạt nước: module điều khiển công suất có điện áp điều khiển từ 12V-26V, dòng tải lớn nhất là 10A, có hồi tiếp dòng và hỗ trợ chế độ PWM được sử dụng để điều khiển cấp nguồn cho các động cơ Do cần lực kéo mạnh để di chuyển xe, đặc biệt
là ừ trạng thái đứng yên, nên chúng tôi đã chọn động cơ gạt
Trang 3nước của ô tô bán trên thị trường Động cơ này đã có sẵn bộ
giảm tốc nên có lức kéo lớn và điện thế sử dụng là 12V
Các động cơ này có lực kéo lớn đảm bảo cho xe hoạt động
tốt với trọng lượng của một người trường thành khoảng 75
– 90Kg (với trọng lượng của xe và ắc quy là 35 Kg) Trong
thiết kế này, hai động cơ gạt nước được sử dụng để thuận
tiện trong việc điều khiển rẽ trái, phải của xe Tuy nhiên, do
không tồn tại hai động cơ hoàn toàn giống nhau về lực kéo
nên cần sử dụng điều khiển động rộng xung (PWM) để điều
chỉnh lại lực kéo giúp xe giữ thăng bằng và chạy thẳng,
hoặc rẽ trái, phải một cách chính xác Bố trí và lắp đặt các
động cơ xem ở Hình 6
Hình 3 Sơ đồ kết nối các khối trong khối hệ thống
Hình 4 Bộ xử lý chính là board Intel Galileo [14]
Hình 5 Bộ phận thu nhận ảnh sử dụng webcam Logitech C920
được đặt cố định với một bàn điều khiển
Hình 6 Bố trí và lắp đặt động cơ gạt nước vào xe lăn
• Module âm thanh: gồm một card âm thanh kết nối vối board điều khiển qua cổng USB và loa dùng để phát thông báo hướng dẫn người sử dụng Do hệ điều hành Linux chạy trên board Intel Galileo là bản rút gọn nên chỉ hỗ trợ chương trình phát các file âm thanh theo các định dạng: wav, voc, raw và au với tần số mẫu là 48 KHz [15]
II.4 Phần mềm và giải thuật
• Chương trình chính Dựa trên phân tích luồng dữ liệu của hệ thống, chúng tôi đã lập trình phần mềm nhận dạng và điều khiển xe lăn xe the lưu
đồ giải thuật như ở Hình 7
Hình 7 Lưu đồ giải thuật chương trình chính
Chương trình bắt đầu bằng lời chào được phát từ file audio thu âm sẵn Tiếp theo đó là file audio hướng dẫn, người sử dụng có thể tiến hành điều khiển xe ngay hoặc lấy lại các ảnh
Bắt
Người dùng
có muốn lấy mẫu tay lại không ?
Xử lý ảnh mẫu
Lấy mẫu tay Lời chào
Chụp lấy mẫu tay
Tính toán giá trị sai lệch giữa ảnh mẫu gốc và ảnh
Xuất GPIO điều khiển
Kiểm tra các giá trị đã tính toán với dữ liệu gốc
Đ
S
Trang 4mẫu bằng cách đặt tay lên cảm biến Ở đây cần lưu ý là việc
lấy lại ảnh mẫu các trạng của tay dùng cho mục đích điều khiển
là cần thiết đối với một người sử dụng mới Nếu người sử dụng
chọn lấy lại mẫu chương trình sẽ thực hiện lấy mẫu tay liên tục
bằng cách gọi chương trình con lấy mẫu, ngược lại chương
trình sẽ tự động lấy file ảnh mẫu trong thẻ SD có sẵn và tiến
hành xử lý tiếp Giai đoạn tiếp theo là chương trình sẽ
liên tục thực hiện các lệnh so sánh giữa ảnh nhận từ webcam
chụp tay người điều khiển và tập các ảnh mẫu nhằm cho kết
quả điều khiển hoạt động của xe như mong muốn
• Chương trình nhận dạng ảnh
Trong thiết kế này, chúng tôi đã chọn các trạng thái của
bàn tay như bảng 1, dùng trong điều khiển xe lăn phù hợp với
phương pháp xử lý ảnh cho mục đích nhận dạng
Bảng 1 Thư viện ảnh mẫu các trạng thái của bàn tay
Tên trạng
thái Mô tả khiển Điều Hình ảnh mô tả
Không có
gì
Đây là trạng thái ban đầu không có tay người điều khiển
Xe không di chuyển
Tay
Bàn tay duỗi thẳng các ngón tay khép lại
Xe đi thẳng
Tay cái
Bàn tay duỗi thẳng ngón cái
mở ra một góc 600
-750 và các ngón còn lại khép
Xe rẽ phải
Đấm cái
Các ngón tay co lại sát vào lòng bàn tay riêng ngón cái
mở ra một góc 600
-750
Xe rẽ trái
Nắm đấm
Các ngón tay co lại sát vào lòng bàn tay
Xe dừng
và có còi
Hiện nay có nhiều giải thuật cho kết quả tốt trong nhận
dạng ảnh cử chỉ của người để điều khiển các thiết bị như: hand
tracking [16], leap montion [17], nhận dạng cử động của bàn
tay người theo thời gian thực [18]…Tuy nhiên để thực hiện
được trên một board điều khiển như Intel Galileo thì giải thuật
đó cần phải đơn giản, đòi hỏi ít tài nguyên của hệ thống Vì thế giải thuật so sánh hai ảnh bằng phương pháp trừ ảnh đã được chọn sử dụng trong trong thiết kế này với mục tiên có thể nhận dạng các ảnh trạng thái bàn tay cho phép điều khiển xe lăn di chuyển
Để việc nhận dạng cử chỉ tay cho kết quả tốt hơn ảnh sẽ được tách làm 4 phần: trên, dưới, trái và phải; sau đó việc so sánh sẽ tiến cho từng phần Kết quả so sánh giữa ảnh chụp bàn tay điều khiển và ảnh mẫu không thể trùng khớp với nhau Sự sai biệt này là không thể tránh khỏi do đó trong thực tế ta cần định giá trị ngưỡng cho sai số này để có được kết nhận dạng hợp lý Tuy nhiên để có kết quả nhận dạng tốt, tương ứng với ngưỡng của sai số nhỏ, trong thiết kế này chúng tôi đã thực hiện một số cách nhằm hạn chế các nguyên nhân dẫn đến sai số này Các cách này sẽ được trình bày trong quá trình thiết kế và thực hiện hệ thống nhằm giải quyết những khó khăn phát sinh , nâng cao độ tin cậy của hệ thống đước thiết kế
Quá trình chụp ảnh bàn tay và nhận dạng ảnh để điều khiển xe lăn được tiến hành theo 3 bước sau:
Hình 8 Hai trạng thái của bàn tay được so sánh
- Bước 1: Tiến hành xuất nhị phân và làm mịn ảnh
Hình 9 Hai cử chỉ được xử lý sang ảnh nhị phân
- Bước 2: Tiến hành cắt ảnh làm 4 phần được mô tả như Hình 10
Hình 10 Hai cử chỉ được xử lý sang ảnh nhị phân
và được cắt ảnh từng vùng với đơn vị pixel
Hai ảnh được chụp và lưu lại với kích thước 480x640 pixel sau đó ảnh được phân thành 4 vùng như trên Hình 10
- Bước 3: Tiến hành so sánh từ các phần của ảnh có được ở bước 2 với dữ liệu của ảnh mẫu tương ứng Dựa vào kết quả so sánh chương trình sẽ điều khiển xe di chuyển
Ở Hình 10, phần ảnh ở góc trái và phía trên hoàn toàn giống nhau và phần ảnh bên dưới gần giống nhau Trong khi phần ảnh bên góc phải khác nhau hoàn toàn nên qua phép trừ
Trang 5ảnh sẽ cho giá trị khác nhau rất nhiều Dựa vào kết quả này ta
có thể kết luận hai ảnh này không giống nhau Chương trình
nhận dạng được cài đặt trong nghiên cứu này cũng thực hiện
theo cách trên để tìm ra ảnh mẫu gần nhất với ảnh của bàn tay
điều khiển từ đó điều khiển các động của xe lăn
III THỰC NGHIỆM Biện pháp đầu tiên để giảm nhiễu, sai trong quá trình nhận
dạng ảnh như đã trình bày ở phần II có thể kể đến là thực hiện
bàn để tay Mục đích của việc làm này là nhằm tránh chụp
thêm các sự vật không mong muốn dẫn đến nhiều, sai không
cần mong muốn trong quá trình nhận dạng Bên cạnh đó bàn để
tay cũng là nơi đặt tay của người điều khiển Như thế người
điều khiển sẽ thực hiện các cử chỉ điều khiển xe trong phạm vi
bàn để tay giúp webcam có thể chụp ảnh chính xác Ngoài ra
đây còn là điểm tựa đặt tay giúp tránh mỏi tay cho người sử
dụng
Hình 11 Bàn để tay có bố trí LED chiếu sáng
Trong trường hợp ảnh chụp được từ webcam ở những điều
kiện khác nhau có thể gây ra sai số rất lớn trong quá trình so
sánh ảnh Vì thế bàn để tay bố trí thêm các LED làm nhiệm vụ
chiếu sáng giúp ổn định độ sáng nền của ảnh chụp Để có được
các ảnh chụp thuận lợi cho việc so sánh thông qua phép trừ ảnh
thì các LED cần bố trí hợp lý Kết quả thực nghiệm khi bố trí
đèn LED như Hình 16
Hình 12 Hai ảnh thực tế giữa có LED nền và không có LED nền
Hình 13 Hai ảnh nền đã được xử lý
Hình 13 là ảnh chụp bàn để tay ở Hình 12 sau khi xử lý
chuyển sang ảnh nhị phân Dựa vào các ảnh nhị phân này ta
thấy, mặc dù là 2 ảnh cùng 1 vị trí nhưng ở 2 điều kiện ánh
sáng khác nhau sẽ cho ra hai ảnh nhị phân khác nhau Vì thế khi tiến hành phép trừ ảnh sẽ cho các giá trị khác nhau và hệ thống sẽ xác định hai ảnh này là khác nhau Ngoài ra cần chú ý
bố trí các LED sáng này hợp lý để có được độ sáng nền cho ảnh ổn định, tránh tình trạng ánh sánh không đều như Hình 14 dưới đây
Hình 14 Ảnh bàn để tay khi được chiếu sáng không tốt do các
LED được vì đặt quá gần
Ảnh nhị phân ở Hình 14 (b) cho thấy độ chiếu sáng không tốt Nguyên nhân là do các LED được đặt quá gần
Tiếp theo chúng tôi tiến hành thực nghiệm chụp ảnh và so sánh các trạng thái của bàn tay với tập ảnh mẫu
− Thực nghiệm 1: khi so sánh một cử chỉ điều khiển không đúng với tập các ảnh mẫu
Hình 15 Hình ảnh mẫu đặt tay không đúng so với các mẫu gốc
và đã được xử lý
Ảnh chụp bàn tay từ webcam sẽ được chuyển sang ảnh nhị phân Ảnh nhị phân thu được sẽ bị nhiễu do ảnh hưởng của môi trường do đó ta cần làm mịn ảnh Hình 16 mô tả kết quả ảnh nhị phân trước và sau khi làm mịn để giảm bớt nhiễu
Hình 16 (a) Ảnh nhị phân chưa làm mịn
(b) Ảnh sau khi làm mịn
Ảnh nhị phân sau khi được làm mịn, loại bớt nhiễu sẽ được chia làm 4 phần như trình bày ở phần II Sau đó các phần của ảnh sẽ được so sánh lần lượt dữ liệu tương ứng trong tập các ảnh mẫu Các kết quả so sánh ở các hình từ Hình 17 đến Hình
20 cho trình bày việc so sánh ảnh chụp tay điều khiển khi so sánh với tập các ảnh mẫu
Hình 17 (a) Ảnh mẫu trạng thái “tay”
(b) Ảnh chụp từ webcam
(a) Ảnh có LED nền
đã được xử lý (b) Ảnh không có LED nền đã được xử lý
Ảnh có LED nền Ảnh không có LED nền
Trang 6Hình 17 cho kết quả so sánh hai ảnh này không giống nhau
ở các phần: trên, dưới, trái và phải
Hình 18 (a) Ảnh mẫu trạng thái “tay cái”
(b) Ảnh chụp từ webcam
Hình 18 cho kết quả so sánh hai ảnh này không giống nhau
ở các phần: trên, dưới, trái và phải
Hình 19 (a) Ảnh mẫu trạng thái “đấm cái”
(b) Ảnh chụp từ webcam
Hình 19 cho kết quả so sánh hai ảnh này không giống nhau
ở các phần: trên, dưới, trái và phải
Hình 20 (a) Ảnh mẫu trạng thái “nắm đấm”
(b) Ảnh chụp từ webcam
Hình 20 cho kết quả so sánh hai ảnh này không giống nhau
ở các phần: trên, dưới và trái
Dựa vào tất cả các kết quả so sánh với 5 mẫu tay gốc Ta
kết luận ảnh mẫu đặt không đúng với bất kì mẫu gốc nào Ở
trạng thái này hệ thống sẽ tính toán, nếu số lần sai lệch liên tục
3 lần sẽ phát đoạn âm thanh cảnh báo cho người dùng và cho
phép người dùng điều chỉnh lại tay điều khiển
Tương tự với trạng thái tay đặt không đúng, nếu trên bàn
điều khiển có bất kì vật thể lạ nào thi sau khi được xử lý cũng
sẽ cho kết quả tương tự và sẽ cảnh báo nếu liên tục 3 lần lấy
mẫu liên tiếp vẫn không nhân dạng được cử chỉ
Trong thực tế ảnh tay người dùng điều khiển và ảnh mẫu
gốc mặc dù đặt đúng trạng thái như yêu cầu nhưng vẫn có sự
sai lệch về vị trí cũng như ảnh hưởng của môi trường khác
nhau Thực nghiệm Hình 21 sẽ cho ta thấy rõ sự sai lệch đó
Trên Hình 21 ta có (a) ảnh tay người sử dụng và (b) ảnh
mẫu gốc Hai ảnh này tương đối giống nhau vì người sử dụng
mặc dù để tay đúng trạng thái yêu cầu nhưng nhưng còn sai
lệch về vị trí đôi chút Khi đó chương trình nhận dạng ảnh sẽ
xử lý như sau:
Sử dụng hàm đếm các pixel khác 0 (countNonZero) cho các phần của ảnh chụp tay người sử dụng ta có:
A=countNonZero(GocTraiAnhNguoiDung)= 3740 B= countNonZero(GocPhaiAnhNguoiDung)=3560 C= countNonZero(GocTreniAnhNguoiDung)= 63605 D= countNonZero(GocDuoiAnhNguoiDung)= 11348
Ta có các phần ảnh mẫu của tay:
A1=countNonZero(GocTraiAnhMauGoc)= 3740 B1= countNonZero(GocPhaiAnhMauGoc)= 3560 C1= countNonZero(GocTreniAnhMauGoc)= 61500 D1= countNonZero(GocDuoiAnhMauGoc)=11800
Thực hiện việc trừ ảnh ch từng phần ảnh tương ứng và lấy giá trị tuyệt đối ta được:
1 0
1 0
1 2105
1 452
Hình 21 (a), (c) Ảnh tay người sử dụng
(b), (d) Ảnh mẫu
Theo Hình 21 ta thấy phần ảnh trái và phải của 2 ảnh là hoàn toàn giống nhau nên khi lấy giá trị tuyệt đối của hiệu số 2 giá trị pixel khác không ta được kêt quả là 0 (công thức (1) và (2)) Kết quả cho phần ảnh trên và dưới có sự sai lệch so với ảnh mẫu nên khi tính giá trị SoSanhTren và SoSanhDuoi sẽ cho ra
2 kết quả khác 0 (công thức (3) và (4)) Kết quả thực nghiệm cho thấy các giá trị này nằm trong khoảng sai lệch cho phép nhận dạng cử chỉ trong Bảng 2
Bảng 2 Phạm vi nhận dạng chuẩn của hiệu hai góc ảnh
Phần ảnh Giá trị sai số cho phép (pixel)
Nếu lấy một ảnh bất kì so sánh với chính nó thi các giá trị
so sánh trên, dưới, trái, phải sẽ là 0 Nhưng trong thực tế do có
sự sai lệch vị trí đặt tay nên những giá trị so sánh thường không
Trang 7bằng không Dựa vào điều này, để có thể so sánh 2 ảnh chúng
ta cần đặt khoảng giới hạn cho từng vùng ảnh so sánh một
khoảng tương đối Khoàng giới hạn này được tính toán dựa
trên thực nghiệm để có được độ chính xác cao nhất
Nghiên cứu đã thực hiện thành công xe lăn được điều khiển
bằng trạng thái của bàn tay Hình ảnh thực tế của xe lăn được
thiết kế như Hình 22
Hình 22 Hệ thống xe lăn trong thực tế
Những khó khăn trong quá trình thực nghiệm, vận hành hệ
thống đã được chúng tôi lần lượt giải quyết Kết quả thực
nghiệm việc nhận dạng trạng thái của tay phục vụ mục đích
điều khiển xe lăn như Hình 23
Hình 23 Biểu đồ xác suất nhận dạng đúng trong 20 lần thực nghiệm
với mỗi mẫu trạng thái của bàn tay điều khiển
Quan sát biểu đồ trên có thể thấy xác suất nhận dạng đúng
cử của tất cả các cử chỉ đều trên 90%, xác suất nhận biết đúng
cử chỉ giữa việc điều khiển bằng tay trái và tay phải là tương
đối giống nhau, do có sự sai khác vị trí khi đặt tay và điều kiện
ánh sáng môi trường nên xác suất nhận dạng đúng không đạt
100%
Các đoạn video ghi lại quá trình thử nghiệm xe lăn có thể
xem tại:
https://www.youtube.com/watch?v=XhlKb4x9CVU
https://www.youtube.com/watch?v=G8I8Egqgkbo
Hướng cải tiến, tiếp tục hoàn thiện hệ thống mà chúng tôi
sẽ tiếp tục thực hiện như sau:
− Phần cứng: nâng cấp thêm cảm biến siêu âm xung quanh nhằm cảnh báo cho người dùng khi có vật cản bất ngờ hay đường rẽ bị giới hạn Tiếp tục khảo sát tính toán, chọn lựa sử dụng động cơ chuyên dụng có công suất cao hơn giúp xe hoạt động tốt hơn
− Phần mềm: tiếp tục nghiên cứu, áp dụng các giải thuật nhận dạng ảnh tốt hơn phù hợp với tài nguyên của hệ thống
Nội dung bài viết đã trình bày việc thiết kế, chế tạo và thử nghiệm xe lăn được điều khiển dựa trên việc nhận dạng ảnh trạng thái của bàn tay Thiết kế sử dụng Intel Galileo chạy hệ điều hành Linux làm board xử lý trung tâm, kết hợp với một webcam làm nhiệp vụ chụp ảnh bàn tay điều khiển Chương trình nhận dạng ảnh và điều khiển hệ thống viết bằng ngữ Python Xe lăn được thiết kế hoạt động ổn định, ít phụ thuộc vào điều kiện chiếu sáng và có giá thành hợp lý (khoảng 10 triệu đồng) Tuy nhiên sản phẩm cần được tiếp tục hoàn thiện thêm để có thể đáp ứng nhu cầu tự đi lại của của những người gặp khó khăn trong di chuyển
TÀI LIỆU THAM KHẢO [1] Báo Việt Nam Net - vietnamnet.vn, 17/04/2015 URL:
http://vietnamnet.vn/vn/doi-song/232841/dot-quy nhung-con-so-am-anh-o-viet-nam.html
[2] Báo Khoa Học TV – khoahoc.tv, URL:
http://khoahoc.tv/timkiem/%C4%91i%E1%BB%81u+khi%E1%BB%83 n+xe+l%C4%83n/index.aspx
[3] NCBI, URL:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2788504/
[4] Geni, 10/11/2014, URL:
http://www.geni.com/people/Christopher-Reeve/6000000000558881209 [5] Báo Thanh Niên – thanhnien.com, 12/06/2011, URL:
http://www.thanhnien.com.vn/khoa-hoc/dieu-khien-xe-lan-bang-luoi-401069.html
[6] Báo Đà Nẵng điện tử – baodanang.vn, 21/04/2014, URL:
http://www.baodanang.vn/channel/5418/201404/gs-nguyen-hung-mong-xe-lan-thong-minh-som-den-viet-nam-2322983/
[7] Báo Tuổi Trẻ online – tuoitre.vn, 30/03/2014, URL:
http://tuoitre.vn/tin/giao-duc/khoa-hoc/20140330/xe-lan-da-nang-dieu-khien-bang-dau/600556.html
[8] Báo Cần Thơ online – baocantho.com.vn, 06/12/2011, URL:
http://baocantho.com.vn/?mod=detnews&catid=185&id=93361 [9] Wikipedia – en.wikipedia.org, 17/10/2013, URL:
https://en.wikipedia.org/wiki/Intel_Galileo [10] Semiconvn – semiconvn.com, URL:
http://www.semiconvn.com/home/tin-tuc-vi-mach/san-pham-cong-nghe-vi-mach/6964-tren-tay-bo-mach-galileo-cua-intel-tai-ces-2014-.html [11] Arduino in Cộng đồng Việt Nam – arduino.vn, URL:
http://arduino.vn/bai-viet/254-bai-1-gioi-thieu-so-luoc-ve-intel-galileo [12] Logitech – logitech.com, URL:
http://www.logitech.com/en-us/product/hd-pro-webcam-c920 [13] Texas Intruments – ti.com, URL:
http://www.ti.com/lit/ds/symlink/lm2596.pdf [14] Intel – intel.com, URL:
http://newsroom.intel.com/docs/DOC-4413 [15] Stackoverflow – stackoverflow.com, URL:
Trang 8http://stackoverflow.com/questions/2546273/play-a-wave-file-in-linux
[16] People csail, URL:
http://people.csail.mit.edu/rywang/handtracking/s09-hand-tracking.pdf
[17] Endadget – endadget.com, 22/07/2013, URL:
http://www.engadget.com/2013/07/22/leap-motion-controller-review/
[18] Nasati, URL:
http://data.vista.gov.vn:9000/kqnc/kq_chitiet.asp?id=12423
[19] Pei Jia, Huosheng H Hu, Tao Lu, Kui Yuan, "Head gesture recognition
for hands‐free control of an intelligent wheelchair", Industrial Robot:
An International Journal, Vol 34 Iss: 1, pp.60 - 68, 2007
[20] Gunda Gautam, Gunda Sumanth, Karthikeyan K C, Shyam Sundar,
D.Venkataraman, "Eye Movement Based Electronic Wheel Chair For
Physically Challenged Persons, International Journal Of Scientific &
Technology Research Volume 3, Issue 2, pp 206-212, February 2014
[21] Neena Mani, Aby Sebastian, Alen Mathews Paul, Alex Chacko, Anupa
Raghunath, "Eye Controlled Electric Wheel Chair" International Journal
of Advanced Research in Electrical, Electronics and Instrumentation
Engineering Vol 4, Issue 4, pp 2494-2497, April 2015
[22] Sandeep, Supriya, "Gesture Controlled Wheel-Chair: A Review",
International Advanced Research Journal in Science, Engineering and
Technology (IARJSET) Vol 2, Special Issue 1, pp 27-31, May 2015
[23] Srishti, Prateeksha Jain, Shalu, Swati Singh, "Design and Development
of Smart Wheelchair using Voice Recognition and Head Gesture Control System", International Journal of Advanced Research in Electrical, Electronics and Instrumentation Engineering Vol 4, Issue 5,
pp.4790-4798, May 2015
[24] Rakhi A Kalantri, D.K Chitre, "Automatic Wheelchair using Gesture Recognition", International Journal of Engineering and Innovative Technology (IJEIT) Volume 2, Issue 9, pp 216-218, March 2013 [25] Vijendra P Meshram, Pooja A Rajurkar, Mohini M Bhiogade, Arundhati C Kharabe, Dhiraj Banewar, "Wheelchair Automation Using Head Gesture", International Journal of Advanced Research in Computer Science and Software Engineering, Volume 5, Issue 1, pp 641-646, January 2015
[26] Bhaurao Patil, Disha Tharval, Rajendra Pawar, Aditya Datar, Akanksha Bhargawa, 'Microcontroller Based Wheelchair", International Journal of Electrical and Electronics Research, Vol.3, Issue 2, pp.99-101, April - June 2015
[27] Chhaya.G.Patil, Sayali.K.Gharge, Sonal.V.Modhave, Y.S.Angal,
"Design Of Wheelchair Using Finger Operation With Image Processing Algorithms", International Journal of Research in Engineering and Technology, Volume: 03 Issue: 02, pp.232-237, February 2014