5. Ý nghĩa thực tiễn của đề tài
2.5 Cảm biến đo tín hiệu EEG
Hình 2.17 Cảm biến MindWave Mobile 2 [39]
Là thiết bị đọc tín hiệu EEG của hãng Neurosky, có cấu tạo như headphone nên dễ dàng mang đeo, có cực cảm biến khơ được đặt ở bên trái trán tại ví trí fp1 trong hệ thống 10-20 và điểm tham chiếu được kẹp vào vành tai trái để tính chênh lệch áp giữa 2 cực, thiết bị sử dụng mợt mạch tích hợp với vi xử lý trung tâm thực hiện lấy mẫu tín hiệu 512 lần/giây. Tiền xử lý khuếch đại tín hiệu và lọc nhiễu, thiết bị sử dụng bluetooth interface, tốc độ baud 57600 để truyền dữ liệu; dữ liệu này có thể được nhận dễ dàng bằng cách thực hiện ghép nối với cổng bluetooth của laptop. Dữ liệu của thiết bị gồm các thông tin sau: Raw data (tín hiệu EEG thơ, được lấy mẫu với tần số 512Hz); Quantity of signal (chất lượng của tín hiệu, 0 là tín hiệu tốt, 200 là trạng thái tiếp xúc kém của các điện cực với da); EEG Power (delta, theta, alpha, beta, gamma); giá trị Meditation và Attention từ esence meter (từ 0-200); blink strength (0-255) thể hiện cường độ của blink, giá trị này khơng trực tiếp có được mà phải thơng qua phần mềm ứng dụng của nhà sản xuất. Thiết bị sử dụng 01 pin AAA alkaline (bắt ḅc) để duy trì điện áp ổn định trong suốt q trình hoạt đợng, nhằm mục đích đảm bảo chính xác cho các bước thực hiện lấy mẫu và khuếch đại tín hiệu, nếu xảy ra sự cố sụt áp trong q trình hoạt đợng sẽ dẫn đến tình trạng mất kết nối, giải pháp xử lý lỗi này là thay pin mới.
45
2.5.1 Các giá trị dữ liệu
Raw data (16 bit): gồm 2 byte, là một số nguyên 16 bit trong khoảng từ -32768 đến 32767; byte đầu tiên là byte trọng số cao, byte thứ hai là byte có trọng số thấp. Để thu được giá trị đầy đủ của raw data này, thực hiện dịch byte thứ nhất sang trái 8 bit rồi cộng với byte thứ hai như sau:
raw = value(0)*256 + value(1); If (raw >=32768)
raw = raw – 65536;
Trong đó value[0] là byte có trọng số cao, value[1] là byte có trọng số thấp. Mặc định raw data được trả về 512 lần 1 giây (xấp xỉ 2ms mỗi mẫu).
Asic_eeg_power: Giá trị dữ liệu này thể hiện biên độ hiện thời của 8 phổ tần cơ bản của tín hiệu EEG (delta, theta, alpha, beta, gamma), ngõ ra có định dạng mợt chuỗi 8 giá trị số ngun 24 bit (3 byte) không dấu. Những giá trị này khơng có đơn vị và chỉ có ý nghĩa cho việc sánh với nhau để xét tương quan giữa các thành phần tần số đặc trưng, mặc định, Asic_eeg_power data được gửi về mỗi giây một lần.
Trong đề tài này, tác giả tập trung sử dụng các giá trị raw data để phân tích và tìm đặc trưng của 5 cử chỉ hành động (mở mắt, nhắm mắt, chớp mắt 1 lần/giây, chớp mắt >1 lần/giây, nhìn lên) để phân loại 5 tín hiệu điều khiển xe lăn điện di chuyển (tới, lùi, trái, phải, dừng).
2.5.2 Cấu trúc gói dữ liệu
Gói dữ liệu bao gồm: packet header (sync+sync+plength) tiếp theo đó là data payload và kết thúc khung là checksum byte, mỗi gói dữ liệu có đợ dài tối thiểu là 4 bytes và tối đa là 173 bytes.
Packet header: gồm 3 bytes, 2 byte đồng bộ (syncronization) (0xAA, 0xAA) theo ngay sau đó là byte chỉ thị đợ dài gói PLENGTH. 2 byte đồng bợ (SYNC) có giá trị 0xAA (170) được dùng để thông báo sự bắt đầu của q trình truyền gói dữ liệu
46
mới, Sử dụng 2 byte đồng bộ (0xAA) liên tiếp để giảm khả năng 1 byte 0xAA khác xuất hiện trong vùng payload có thể bị hiểu nhầm là khởi đầu của 1 gói dữ liệu mới, tuy vậy vẫn cịn có khả năng 2 byte liên tiếp xuất hiện trong vùng data payload (điều này dẫn đến sai sót khơng thể tránh khỏi) chính vì thế tổ hợp 2 bytes SYNC + 1 byte PLENGTH đảm bảo rằng nhầm lẫn trên sẽ không bao giờ xảy ra trong quá trình truy xuất lấy dữ liệu từ gói. Giá trị PLENGTH byte là chiều dài của data payload nằm trong tầm từ 0 đến 169 các giá trị của PLENGTH nằm ngoài tầm này đều được hiểu là lỗi; Lưu ý rằng giá trị của Plength là độ dài của data load, không phải là đợ dài của tồn gói, đợ dài của tồn gói dữ liệu là Plength + 4.
Data Payload: là một chuỗi các bytes, số lượng byte trong data payload là giá rị của PLENGTH byte trong vùng header. Muốn trích x́t các thơng tin hữu ích của thiết bị (raw data, attention, meditation, power band,…) từ gói dữ liệu thì cần phải nắm rõ cấu trúc của data payload, chi tiết về cấu trúc của data pay load sẽ được trình bày ở các mục sau.
Payload checksum: được sử dụng để xác định kết thúc của 1 gói dữ liệu hiện thời giá trị của checksum byte được xác định như sau: Cợng tất cả các byte có trong data payload, lấy 8 bit có trọng số nhỏ nhất của tổng, thực hiện đảo từng bit của chuỗi 8 bit có trọng số nhỏ nhất này. Khi phía thu nhận được 1 gói dữ liệu phải thực hiện cả 3 bước trên để xác định check sum byte cho data payload vừa nhận và so sánh kết quả có được với checksum byte của gói nếu checksum byte có được từ tính tốn khác với checksum byte của gói thì tồn bợ dữ liệu của gói phải bị loại bỏ vì khơng hợp lệ. Trong trường hợp gói dữ liệu là hợp lệ phía thu sẽ tiếp túc thực hiện trích x́t dữ liệu theo các bước sẽ được trình bày trong phần cấu trúc data payload.
Cấu trúc data payload: khi checksum byte của gói được xác nhận là hợp lệ, tiến hành thực hiện phân tích các byte của data payload. Data payload là 1 chuỗi liên tục các Data value (raw data, power band,…) mỗi nhóm các byte mang thơng tin của từng loại data value riêng biệt (mã phân loại, độ dài byte và giá trị của data value) được
47
gọi là data row. Muốn thực hiện phân tích dữ liệu từ data payload trước hết phải phân tích được tồn bợ các data row. Định dạng của data row như sau:
(EXCODE) (CODE) (LENGTH) (VALUE)
Mỗi data row thường được khởi đầu bởi 0 hoặc nhiều hơn các excode byte (0x55) (extended code) số lượng excode byte thể hiện extended code level, extended code level cũng với code byte được sử dụng để xác định loại data value. Nếu code byte nằm trong tầm từ 0x00 đến 0x7F thì data value được hiểu mặc định có dài 1 byte (single byte); trong trường hợp này data row sẽ khơng cần có vlength byte, mà theo sau code byte chính là data value. Tuy nhiên nếu code byte lớn hơn 0x7F thì theo sau code byte là vlength byte giá trị của vlength byte chính là số lượng byte của data value.
Bảng 2.1 Bảng định nghĩa Single Byte code
Extened code level code Length (single byte) Loại data value
0 0x02 - POOR_SIGNAL
0 0x04 - Attention
0 0x05 - Meditation
Bảng 2.2 Multi Byte Code
Extened code level code Length Loại data value
0 0x80 2 Raw wave
0 0x83 24 Power band
- 0x55 - EXCODE
- 0xAA - SYNC
Sau khi nắm rõ cấu trúc khung, gói, data value ta tiến hành phân tích dữ liệu.
2.5.3 Phân tích gói dữ liệu
48
Bước 2: Đọc byte tiếp theo, kiểm tra xem nó có phải là byte đồng bợ khơng; nếu không phải byte đồng bộ, quay trở lại bước 1; nếu đúng tiếp tục thực hiện bước 3. Bước 3: Plength byte là byte tiếp theo của chuỗi, nếu Plength byte có giá trị là 170 thì thực hiện lại bước 3; nếu Plength byte có giá trị lớn hơn 170 trở về bước 1 (loại bỏ tồn bợ gói vì khơng hợp lệ); Các trường hợp cịn lại thì tiếp tục thực hiện bước 4.
Bước 4: Đọc [plength] byte tiếp theo của pay load lưu vào 1 vùng nhớ, tính tổng tích lũy tất cả các byte vừa nhận được.
Bước 5: Lấy 8 bit có trọng số thấp nhất của tổng tích lũy và thực hiện đảo từng bit.
Bước 6: Kiểm tra checksum byte của gói có trùng nhất với checksum byte tính tốn được hay khơng; nếu khơng trùng nhất, gói bị xem như khơng hợp lệ và bị hủy toàn bợ và trở về bước 1; ngược lại gói được xem là hợp lệ và có thể tiến hành phân tích data value.
2.5.4 Phân tích data row
Bước 1: Tại khởi đầu của mỗi data row thực hiện đếm số excode byte (0x55).
Bước 2: Byte tiếp theo là code byte.
Bước 3: Nếu giá trị của code byte >= 0x80 thì byte tiếp theo là vlength byte có giá trị là số lượng byte của data value.
Bước 4: Thực hiện phân tích data value.
Bước 5: Trở lại bước 1 để tiếp tục phân tích data row kế tiếp.
Sau khi hồn thành các bước phân tích gói data và data row về lý ta có thể thu được đầy đủ các loại data được trả vể từ thiết bị (raw data, powerband, attention, meditaion ,…). Trong phạm vi đề tài này chỉ quan tâm sử dụng raw data cho các bước xử lý tính tốn tiếp theo nên chỉ có data raw được tách ra từ gói dữ liệu các loại dữ liệu khác bị loại bỏ.
49
CHƯƠNG 3 PHÂN LOẠI TÍN HIỆU SĨNG NÃO EEG DÙNG MẠNG NƠ RƠN MLP