4.4.1 Lưu đồ giải thuật chương trình xử lý tín hiệu EEG
Yêu cầu chương trình
Chương trình xử lý tín hiệu được chạy trên máy tính cần phải có tốc độ xử lý cao. Cụ thể chương trình cần xử lý 128 mẫu dữ liệu trong 1 giây tương ứng với tốc độ lấy mẫu của thiết bị Emotiv EPOC+. Đồng thời sau khi nhận dạng được tín hiệu chớp mắt chương trình cần gửi lệnh điều khiển tương ứng với trạng thái chớp mắt phát hiện được qua bluetooth cho cánh tay.
Sơ đồ khối chương trình
Với những yêu cầu ở trên, chương trình xử lý tín hiệu EEG sẽ được thiết kế với
ý tưởng được trình bày ở dạng sơ đồ khối như hình 4.12. Để giải quyết được bài toán giảm độ trễ do quá trình xử lý của máy tính và các tác vụ giao tiếp giữa máy tính và cánh tay. Chương trình được phân ra thành ba khối, trao đổi dữ liệu với nhau qua các bộ đệm có cấu trúc dạng hàng đợi(queue).
Hình 4.12: Sơ đồ khối chương trình thu tín hiệu EEG.
Giải thích sơ đồ khối chương trình:
- Khối nhận và xử lý tín hiệu có chức năng thiết lập kết nối và nhận tín hiệu EEG từ thiết bị Emotiv EPOC+ thông qua Cortex API.
- Khối giao diện có chức năng hiển thị tín hiệu và trạng thái chớp mắt, phát hiện được thể hiện trực quan bằng hình ảnh hoặc hiển thị chữ. Kèm theo đó khối giao diện còn có chức năng là cầu nối giao tiếp giữa người và cánh tay với các nút nhấn điều khiển thay đổi các thông số cũng như điều chỉnh vị trí của cánh tay.
- Khối gửi lệnh điều khiển cho cánh tay có chức năng lấy dữ liệu từ bộ đệm và gửi lệnh đó qua bluetooth đến cho cánh tay. Lệnh điều khiển có được từ xử lý phát hiện tín hiệu chớp mắt hoặc từ người dùng thông qua giao diện.
Lưu đồ giải thuật chương trình chính xử lý tín hiệu
Tín hiệu từ hai cực F7 và F8 sau khi được tiền xử lý (lọc thông cao, lọc trung bình) sẽ được xử lý nhận dạng chớp mắt trái và chớp mắt phải. Lưu đồ cho giải thuật phát hiện chớp mắt được thể hiện ở hình 4.13. Chương trình lần lượt nhận dạng nháy mắt trái và mắt phải sau đó đem 2 giá trị nhận được so sánh. Có 4 trường hợp có thể xảy ra khi so sánh được liệt kê ở bảng 4.3.
Bảng 4.3: Các trường hợp chớp mắt có thể xảy ra. STT
1 2 3 4
Trường hợp 1 cả hai mắt cùng chớp chương trình không xác định được lệnh điều khiển chương trình kết thúc sớm. Tương tự với trường hợp 4 cả hai mắt đều không chớp mắt kết quả sẽ là không chớp mắt chương trình sẽ kết thúc sớm. Ngược lại nếu rơi vào trường hợp 2, 3 chớp mắt phải hoặc trái chương trình sẽ lệnh điều khiển thích hợp đến cánh tay tùy theo trường hợp mà chương trình sẽ gửi mã lệnh điều khiển tương ứng.
Hình 4.14: Lưu đồ chương trình phát hiện chớp mắt.
Chương trình phát hiện chớp mắt nhận ngõ vào là tín hiệu ở điện cực F7 hoặc F8. Tiến hành phát hiện đỉnh dương, đỉnh âm trên tín hiệu. Nếu phát hiện là đỉnh dương tính toán độ rộng đỉnh nếu độ rộng đỉnh trong giới hạn cho phép thì đánh dấu là đỉnh dương
đã xác định (đỉnh dương bằng 1). Tương tự với đỉnh âm chương trình tính giá trị độ rộng đỉnh âm kiểm tra độ rộng nằm trong giới hạn cho phép, đồng thời kiểm tra đỉnh dương đã được xác định trước đó hay chưa nếu có đỉnh dương được xác định thì trả về kết quả là 1 tương ứng với có chớp mắt, ngược lại trả về 0 tương ứng với không chớp mắt.
4.4.2 Lưu đồ chương trình điều khiển cánh tay trợ lực
Hình 4.15: Lưu đồ giải thuật cho chương trình điều khiển khung cánh tay trợ lực.
Giải thích lưu đồ giải thuật hình 4.15:
Khi ta cấp nguồn, Arduino sẽ khởi tạo thư viện, các biến và cấu hình cho các chân sử dụng. Vòng lặp void loop bắt đầu nếu mySerial lớn hơn không thì đọc giá trị từ máy tính gửi xuống bằng bluetooth ngược lại quay lại so sánh tiếp.
Giải thích lưu đồ giải thuật hình 4.16:
Module bluetooth HC-05 nhận dữ liệu từ máy tính gửi xuống sau đó truyền dữ liệu nối tiếp (UART) qua arduino nano. Trên máy tính dữ liệu gửi xuống theo chuỗi ký tự, nội dung dữ liệu bắt đầu bằng dấu < và kết thúc bằng dấu >. Sau khi dữ liệu đã được gửi xuống, chương trình con đọc dữ liệu sẽ kiểm tra biến var. Nếu var bằng ‘<’ thì biến trạng thái ghi bằng 1, ngược lại nếu var bằng ‘>’ thì biến trạng thái ghi bằng 0. Nếu biến trạng thái ghi bằng 1 thì biến varl bằng cộng thêm ký tự của biến var vào. Ngược lại ghi
bằng 0 thì biến varl thêm ký tự “>” vào, sau đó giá trị của biến varl sẽ được đưa vào chương trình con lệnh điều khiển.
Hình 4.16: Lưu đồ giải thuật cho chương trình đọc dữ liệu điều khiển.
Hình 4.17: Lưu đồ giải thuật cho chương trình lệnh điều khiển khung cánh tay trợ lực.
Giải thích lưu đồ giải thuật hình 4.17:
Arduino nano gửi chuỗi ký tự “Arduino is ready” lên máy tính, sau khi nhận được chuỗi ký tự máy tính sẽ bắt đầu gửi dữ liệu xuống cho arduino nano, gán biến varl bằng control. Chương trình sẽ kiểm tra nếu control bằng ‘3’ thì sẽ gửi lệnh xuống cho driver điều khiển động cơ cho co tay, ngược lại nếu control bằng ‘4’ thì điều khiển cho động cơ cho duỗi tay ra. Khi không có 2 chuỗi ký tự trên thì cho động cơ dừng lại. Ký tự 3 nhận tín hiệu từ cực F8 và ký tự 4 nhận tín hiệu từ cực F7. Khi chớp mắt phải tín hiệu từ cực F8 lớn F7 ngược lại khi chớp mắt trái tín hiệu F7 sẽ lớn hơn F8.
4.5 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC
Sau khi đã thi công xong mô hình và viết xong chương trình điều khiển cho cánh tay trợ lực. Tiếp theo là viết tài liệu hướng dẫn sử dụng thiết bị cho người dùng sử dụng đúng, tránh trường hợp sai hoặc thiếu 1 bước nào đó mà thiết bị không hoạt động được. Hướng dẫn sử dụng và thao tác kết nối cánh tay được trình bày như hình 4.18 sau:
Bước 1: Kiểm tra nguồn của bộ đo điện não Emotiv EPOC+, tiến hành lắp điện cực
vào, sau đó đặt thiết bị lên đầu theo đúng vị trí điện cực mà nhà sản xuất khuyến cáo (xem mục 1.3.1 bên trên).
Bước 2: Tiến hành lắp khung cánh tay trợ vào cánh tay phải cho người sử dụng (nhớ kiểm tra nguồn trước khi sử dụng), vị trí ban đầu của tay là duỗi thẳng 180 độ.
Bước 3: Kiểm tra kết nối bộ Emotiv EPOC+ bằng Emotiv App xem có kết nối được
với phần mềm chưa. Tiếp theo mở phần mềm Emotiv PRO lên kiểm tra chất lượng tiếp xúc giữa các điện cực với bề mặt da đầu (màu xanh tiếp xúc tốt, màu cam trung bình, màu đỏ kém, màu trắng là chưa tiếp xúc được).
Bước 4: Bật công tắc nguồn của khung cánh tay trợ lực lên, mở phần mềm studio code
ta tiến thành chạy code nhận và xử lý tín hiệu điện não.
Bước 5: Bắt đầu chớp mắt phải để co tay lại, mỗi lần chớp mắt khung cánh tay sẽ di
chuyển 20 độ. Ngược lại mỗi lần chớp mắt trái thì khung cánh tay sẽ duỗi thẳng ra 20 độ, rồi quan sát theo dõi hoạt động của thiết bị (cánh tay chỉ di chuyển trong phạm vi 100 độ). Kiểm tra thiết bị thường xuyên khi vận hành tránh trường hợp thiết bị chạy sai hoặc mất nguồn do hết pin trong quá trình sử dụng.
Chương 5
5.1 KẾT QUẢ THI CÔNG CÁNH TAY TRỢ LỰC
Cánh tay trợ lực sau khi thiết kế và thi công hình 5.1, hình 5.2 là sản phẩm hoàn thành có chiều dài 38cm, mặt bên của cánh tay có 1 công tắc nguồn và 1 jack cắm sạc. Cánh tay được thiết kế phù hợp với tay phải, người có chiều dài cánh tay trong khoảng từ 35cm đến 45cm. Đường kính cổ tay trong khoảng từ 6cm đến 8cm, bắp tay có đường kính trong khoảng từ 9cm đến 10.5cm.
(a) Mặt trong của cánh tay (b) Mặt bên của cánh tay
Hình 5.1: Mặt trong và mặt bên của khung cánh tay.
Hình 5.2: Sản phẩm hoàn thiện khung cánh tay trợ lực.
Hình 5.3 miêu tả người sử dụng bắt đầu vận hành khung cánh tay kết hợp với phần mềm phát hiện chớp mắt và giám sát cánh tay trợ lực. Trong quá trình vận hành, người sử dụng sẽ được đeo khung cánh tay vào tay phải của mình. Khung cánh tay cố định cánh tay người thông qua ốp cổ tay và ốp bắp tay nhờ dây đai co dãn. Người sử dụng bắt đầu chớp mắt trái, chớp mắt phải thông qua chương trình phát hiện chớp mắt. Để gửi lệnh điều khiển xuống cho cánh tay hoạt động theo ý muốn của người dùng. Hai vị trí giới hạn của cánh tay được miêu tả ở hình 5.4a và 5.4b. Ở vị trí 0° cánh tay không được phép quay ngược chiều kim đồng hồ mà chỉ có thể quay theo chiều kim đồng hồ, tương tự đối với vị trí 100° cánh tay không được phép quay theo chiều kim đồng hồ nữa.
.
Hình 5.3: Khung cánh tay được lắp vào cánh tay phải của người sử dụng.
(a) Khung xương ở vị trí 0° (b) Khung xương ở vị trí 100°
Hình 5.4: Trạng thái khung xương ở các điểm giới hạn.
5.2 GIAO DIỆN PHẦN MỀM GIÁM SÁT HỆ THỐNG ĐIỀU KHIỂN KHUNGCÁNH TAY TRỢ LỰC CÁNH TAY TRỢ LỰC
5.2.1 Giao diện phần mềm giám sát hệ thống
Sau khi khởi chạy chương trình, giao diện hiện ra như hình 5.5. Giao diện phần mềm gồm 2 đồ thị hiển thị sóng EEG từ kênh F7 và F8. Bên phải gồm 3 nút nhấn UP, DOWN, STOP dùng để điều khiển cánh tay hoạt động lên xuống và dừng. Gửi lệnh điều khiển xuống cánh tay trong trường hợp muốn cân chỉnh thủ công. Đồng thời 3 nút nhấn sẽ thay đổi màu để thông báo cho người dùng biết khi chớp mắt được phát hiện bởi phần mềm. Hình ảnh cánh tay ảo trên phần mềm sẽ thay đổi góc theo góc quay trong thực tế của cánh tay.
Hình 5.5: Giao diện phần mềm khi khởi động.
Hình 5.6: Dạng sóng hiển thị trên phần mềm lúc chớp mắt trái
Hình 5.7: Dạng sóng hiển và giao diện thị trên phần mềm lúc chớp mắt phải.
Khi phát hiện được chớp mắt trái chương trình gửi lệnh điều khiển cánh tay. Đèn báo hiệu màu, nút nhấn up sẽ chuyển sang màu đỏ trong khoản thời gian 1.5 giây. Bằng với khoảng thời gian cánh tay di chuyển, sau đó quay trở lại với màu sắc cũ. Hình 5.6 mô tả chương trình, khi phát hiện chớp mắt phải điều khiển cánh tay nâng lên. Tương tự khi chương trình phát hiện người dùng nháy mắt trái nút nhấn DOWN thay đổi màu sang đỏ trong khoảng thời gian 1.5s sau đó trở lại với màu ban đầu hình 5.7.
5.2.2 Thời gian đáp ứng phần mềm phát hiện chớp mắt
Với phần cứng máy tính sử dụng CPU Intel core i5 5400U, Ram 8GB, hệ điều hành windows 10. Tốc độ xử lý của chương trình được liệt kê qua các giai đoạn như trong bảng 5.1 với 2 thông tin như sau:
- Tác vụ xử lý: Những việc sẽ làm khi chạy chương trình.
- Thời gian: Thời gian để hoàn thành tác vụ tính theo đơn vị giây.
Dựa vào bảng 5.1 có thể thấy, thời gian nhận dữ liệu là việc chiếm nhiều thời gian
nhất. Do chương trình xử lý một khung dữ liệu, với thời gian là 1 giây trong đó có sử
dụng 0.5 giây của khung trước đó. Vì vậy chương trình sẽ cần đợi một khoảng thời gian
là 0.5 giây nữa để có thể lấy đủ dữ liệu.
Bảng 5.1: Thời gian xử lý dữ liệu
Tác vụ xử lý
Nhận dữ liệu Tiền xử lý Nhận dạng xử lý
Gửi lệnh xuống cánh tay
Tổng
Tổng thời gian chương trình cần để xử lý và nhận dạng một tín hiệu chớp mắt là 725ms. Độ trễ có thể nhỏ hơn do quá trình gửi và nhận tín hiệu giữa bộ thu điện não có thể thay đổi do tốc độ đường truyền.
5.3 KẾT QUẢ XỬ LÝ VÀ NHẬN DẠNG CỬ ĐỘNG CHỚP MẮT
Sau khi hoàn thành chương trình máy tính nhận dạng phân loại chớp mắt trái và chớp mắt phải, tiếp theo tiến hành thực hiện thí nghiệm để đánh giá độ chính xác của chương trình đã viết.
5.3.1 Mô tả thí nghiệm
Thí nghiệm được mô tả như sau: Thí nghiệm được thực hiện trên người, đối tượng thí nghiệm ngồi trên ghế đối diện là màn hình máy tính. Trên màn hình có một hình tròn mỗi khi hình tròn thay đổi màu thì đối tượng thí nghiệm chớp mắt trái/phải theo màu
sắc tương ứng. Quá trình thí nghiệm kéo dài trong khoảng thời gian 95 giây và lặp lại 3 lần, thời gian nghỉ giữa mỗi lần trong khoảng từ 3 đến 10 phút. Hình 5.8 mô tả cách bố trí thí nghiệm. Thí nghiệm được thực hiện trên 10 đối tượng, với tình trạng sức khoẻ tốt, không bị tổn thương về tay chân, chức năng hoạt động của mắt bình thường, độ tuổi từ 20-23.
Hình 5.8: Bố trí thí nghiệm thí thu tín hiệu EEG.
Người thí nghiệm được ngồi ở ghế nhìn trực tiếp vào màn hình chớp mắt thay theo yêu cầu xuất hiện trên màn hình máy tính bên trái màn hình bên phải được dùng để mở phần mềm xác định chớp mắt.
Hình 5.9: Dòng thời gian của thí nghiệm.
Quá trình thí nghiệm được mô tả như sau: Bắt đầu thí nghiệm đối tượng được nghỉ 15 giây có thể tự do nói chuyện chớp mắt. Sau khi kết thúc 15 giây đầu đối tượng bắt đầu chớp mắt trái khi thấy hình tròn ở màn hình thay đổi trạng thái theo chu kỳ 3 giây 1 lần. Quá trình kéo dài trong 30 giây tương ứng với đối tượng chớp mắt trái 10 lần. Tiếp theo đối tượng sẽ có 20 giây ở trạng thái tự do sau khi kết thúc đối tượng tiếp tục thực hiện chớp mắt phải. Theo sự thay đổi màu sắc của hình tròn trên màn hình tương tự như chớp mắt trái quá trình chớp mắt phải cũng được thực hiện trong khoảng thời gian 30 giây.
5.3.2 Kết quả thống kê và đánh giá độ chính xác của hệ thống
Dữ liệu sau khi thu được ở thí nghiệm được phân tách thành các mẫu tín hiệu nhỏ. Mỗi mẫu tín hiệu có thời gian 1 giây tương ứng với 128 mẫu tín hiệu. Hình 5.10 mô tả cách tín hiệu được chia thành nhiều đoạn nhỏ để đưa vào chương trình nhận dạng. Mẫu tín hiệu sau sẽ lặp lại tín hiệu trước đó 50% mục đích giảm thiểu khả năng mất thông tin của tín hiệu khi chia tín hiệu thành đoạn để xử lý.
Hình 5.10: Tín hiệu chia thành nhiều khung.
Kết quả sau khi thực hiện thí nghiệm mô tả ở mục 5.3.1 kết quả thống kê được chia ra cho mắt trái và mắt phải được thể hiện bằng ma trận nhầm lẫn hình 5.11. Thuật toán nhận diện chính xác chớp mắt trái 97%, chớp mắt phải 99%. Nhưng với trường hợp không chớp mắt tỉ lệ nhận dạng đúng còn thấp 62% nguyên nhân gây nên tình trạng nhận diện sai trạng thái không chớp mắt là do di chuyển, cử động làm giảm sự tiếp xúc giữa điện cực và da đầu gây nên nhiễu có biên độ lớn có hình dạng gần giống với tín hiệu EEG chớp mắt phần mềm không thể phân biệt được dẫn đến phát hiện chớp mắt sai.
5.4 KẾT QUẢ ĐIỀU KHIỂN KHUNG CÁNH TAY TRỢ LỰC
Cánh tay được sử dụng kết hợp với phần mềm phát hiện tín hiệu chớp mắt và giám sát cánh tay. Trạng thái của cánh tay và dạng sóng của phần mềm qua các giai đoạn được mô tả từ hình 5.12 đến hình 5.14. Hình 5.12 cánh tay ở vị trí 0° không có tín hiệu chớp mắt, ở hình 5.13 người dùng chớp mắt phải cánh tay quay một góc 20°