# Matlab 實作
- [論文連結](https://ieeexplore.ieee.org/document/9065817)
## 參考資料
- 讀取csv檔
https://www.delftstack.com/zh-tw/howto/matlab/read-csv-file-matlab/
- Normalization in Matlab
https://www.mathworks.com/help/matlab/ref/double.normalize.html
- Matlab 矩陣索引
http://mirlab.org/jang/books/matlabprogramming4beginner/09-1_matrixIndexing.asp?title=9-1%20%AFx%B0%7D%AA%BA%AF%C1%A4%DE
- Window(FFT) 定義
https://download.ni.com/evaluation/pxi/Understanding%20FFTs%20and%20Windowing.pdf
# 10/5
## A Cooperative EEG-based BCI Control System for Robot–Drone Interaction(不佳)
- [論文連結](https://ieeexplore.ieee.org/document/9498781)
### 目標:
- 使用大腦活動在機器人和無人機之間控制和交換資訊
- 比較特殊的在於他是使用同樣Unicorn裝置
### 方法
- 透過Unicorn Speller Software 去建構出九個視覺提示,代表九個指示:前進、後退、右轉、左轉、加速、減速、安全區、危險和停止

[Unicorn Speller Software](https://www.unicorn-bi.com/zh-hans/speller/)
- 注於螢幕的提示時,來控制機器人移動
- 裡面有講到可以提取大腦alpha and beta waves但沒明確講說訊號如何控制分辨對應九個動作。
### System works

1. 兩個使用者:一個控制機器人,另一個控制無人機
2. 當使用者選擇專注於螢幕前進的提示時,該特定提示將出現在屏幕中央,然後機器人將向前移動
3. 這套系統同樣適用於無人機。第二位使用者將根據BB8的運動(視覺反饋)使用訊息映射來控制無人機
4. 無人機的運動基於機器人給出的指示。例如,當機器人的機身變綠時,無人機會繼續自由掃描區域,因為綠色表示該區域安全。
5. 每台筆記型電腦都通過 UDP 電纜連接到另一台筆記型電腦,並且這些筆記型電腦中的每一個都運行一個單獨的程式(即,一台運行 Python,而另一台運行 JavaScript)。當提示顯示在第一台筆記型電腦上時,提示將通過UDP電纜發送到第二台筆記型電腦。第二台筆記型電腦包含Python或JavaScript代碼。這些代碼中的每一個都有九個條件,每個條件都代表九個視覺提示之一。條件必須與提示同名,以便在代碼收到提示后,可以將其與相應的條件匹配。當找到匹配項時,它將通過向無人機或 BB8 無線發送命令來執行條件,具體取決於發送提示和命令的筆記型電腦。
### design and architecture
1. 使用Unicorn Speller Software
2. 機器人控制相關的介面包括九個視覺提示,代表九個指示(前進、後退、右轉、左轉、加速、減速、安全區、危險和停止)
3. 兩個使用者都需要在閃爍時一次專注於一個提示。
### Implementation and Testing
1. Cylon.js是一個JavaScript框架,可幫助開發人員輕鬆連接和控制硬體設備(例如Sphero,Arduino和ARDrone)
2. Node.js是一個允許使用者在伺服器端運行JavaScript。
---
## Design and development of EEG controlled mobile robots
https://ieeexplore.ieee.org/document/7942569
### 目標:
1. 專注於腦電波控制的移動機器人,這些機器人在前進,後退,左和右四個不同的方向上移動。
2. 系統框架如下:

#### A.信號資料庫
1. 振幅非常小(在**μV**範圍內)。腦電圖通常根據頭皮上的電極數量記錄。這些電極根據稱為10-20系統的國際標準放置。
2. 腦電圖資料庫是從source [2] [3]收集的。該數據集由**右手、左手向前和向後轉動**的 4 組假想運動組成。
3. 電極的順序是 FP1 FP2 F3 F4 C3 C4 P3 P4 01 02 F7 F8 T3 T4 T5 T6 FZ CZ PZ。
4. 
5. recording was done at 500Hz using(採樣頻率記錄)
#### B.信號預處理或濾波
1. step用於減少雜訊,例如記錄會話期間的肌肉偽影或身體運動,電源線干擾和來自EEG信號的其他隨機雜訊。這些干擾波形或偽影並非起源於大腦[4]。
2. zero phase low pass filter(零相低通濾波器)來消除基線雜訊
3. zero phase digital filters is bidirectional filter.
4. 零相數位濾波器是雙向濾波器。它首先正向過濾數據,然後再次反轉過濾序列,並使用命令“filtfilt”[5]將其運行回篩檢程式。
5. 為了消除EEG信號的電源線干擾,使用50Hz的陷波濾波器。
#### C.特徵提取
1. 小波變換具有多解析度功能。小波變換能夠同時提供時間-頻率資訊,即信號的時間-頻率表示。
2. 
#### D.分類
1. 使用支援向量機分類器SVM
---
## A brain—computer interface-based meal—assist robot control system
https://ieeexplore.ieee.org/document/9385359
### 目標:
1. BCI的助餐機器人系統
#### 資料採集和預處理
1. 採集EEG數據,使用OpenViBE進行預處理,並使用MATLAB進行分析。
2. 為了預處理EEG數據,首先將數據集下採樣至128 Hz,並通過1-55 Hz帶通濾波。
3. 為每種目的選擇了腦電圖通道。
* 對於腦電圖分析,O1、O2和Oz通道被用作基於穩態視覺誘發電位(SSVEP)的BCI系統。
* 通道Fp1用於眨眼
* 通道T3和T4用於肌電圖。
#### 資料分析
1. A triple blink(三次眨眼)作為觸發點亮LED,並使用基於小波變換的演算法對其進行檢測[3]
2. SSVEP分類演算法基於多元同步指數法的擴展[4]。
3. 肌電圖預處理如下:
(1)去除DC
(2)第一移動平均線(絕對值)
(3)第二移動平均線
(4)微分
(5)移動平均線(絕對值)
(6)檢查值是否高於0.5並保持1秒或更長時間
(7)如果情況(6)大於3,則檢測肌電圖。

---
## Brain Teleoperation Control of a Nonholonomic Mobile Robot Using Quadrupole Potential Function
https://ieeexplore.ieee.org/document/8463497
### 目標
1. 四極電位函數(QPF)。該導航方案能夠處理路徑規劃和機器人穩定。
2. 多變數同步指數(MSI)分類演算法用於對操作員的腦電信號進行分類,以識別他/她所需的命令。
3. 貢獻總結如下:
APF 用於參數化BCI控制命令。腦電信號的分類結果,對應於機器人避障的方向。
QPF自動規劃到目標點的無碰撞路徑,避障後方向角的調整由機器人自動完成。這種半自動設計減少了受試者的腦力勞動或疲憊。
與傳統的APF方法相比,低級自動運動系統中提出的改進的APF稱為QPF規劃器,可產生非完整運動軌跡,避免與障礙物發生碰撞,同時導致所需的配置。
#### 系統說明
1. 當操作者/受試者專注於螢幕中的某個刺激模組時,人腦的頭皮會產生與相應刺激頻率相關的連續腦電信號。
2. MSI分類演算法對腦電信號進行解碼,獲取操作者的意圖。
3. 生成四個分類結果,視為四個控制命令
(15 Hz對應於控制命令1,
10 Hz對應於控制命令2,
12 Hz對應於控制命令3,
8.57 Hz對應於控制命令4)並與機器人在任務空間中的運動進行映射。
4. 指定目標位置可以是走廊環境中的消失點 [32]–[35]、移動的被跟蹤人 [36]–[40]、給定的固定位置等
5. 
只有連續出現三次的相同命令才被視為有效並執行。

[41]研究了不同頻率的視覺刺激誘導的SSVEPs振幅,其相應的結果證明人類SSVEP具有三個首選頻率範圍:1)以低頻範圍(15 Hz)為中心;2)中頻範圍(31赫茲);3) 高頻 (41 Hz) 範圍。
較低頻率區域具有較大的幅度回應。
---
## Design of a robotic wheelchair with a motor imagery based brain-computer interface
https://ieeexplore.ieee.org/document/6506625
### 目標
- 讓使用者的意圖以多方向運動的方式控制輪椅
### 方法
- 對於實時數據分析,數據由 Simulink 在 MATLAB 中不斷更新
- 
- 區分多類運動圖像的分類器
- 擴展的五種命令協定(左、右、向前、左對角線和右對角線)
- 訓練數據集將包含五類運動影像數據:左手 (L);右手 (R);腳(F);腳和左手(F-L);以及腳和右手 (F-R)
- The EEG signals will be spatially filtered using common average reference (CAR) and then band-pass filtered between 8–32Hz.
- 
- 
- 受試者將舒適地坐在椅子上,看著電腦螢幕。然後,刺激將出現在主體面前的螢幕上。前進、左和右方向箭頭將以平衡的隨機順序顯示幾秒鐘。受試者將分別想像腳、左手和右手的運動。
- 為了減少輪椅駕駛過程中任何不必要的停車,將首先對左對角線(腳和左手同時)和右對角線(腳和右手同時)方向命令進行分類。然後左轉(僅左手)、右轉(僅右手)和向前行駛(僅限腳)方向命令將被分類。當腦電圖數據被歸類為“休息”時,輪椅會慢慢停止。
## 我的想法
1. 可以測許多不同動作的訊號,再去看哪四種訊號利用某種演算法去分類是最正確的,再看正確率有多少,就可以拿來去控制
2. 或許可以多一些視覺上的刺激讓訊號特徵更為明顯
************************************************************
# 10/19
## NAO Robot Limb Control Method Based on Motor Imagery EEG
- [論文連結](https://ieeexplore.ieee.org/document/9394108)
### 目標
透過受試者想像四種不同動作(left hand, right hand, leg
and tongue),蒐集EEG訊號後進行分析處理,經分類後最終可用來控制 NAO robot。
### 方法
- motor imagery(動作想像) EEG signal preprocessing
- feature extraction(特徵提取)
- classification algorithms(分類的演算法)

1. Acquisition of EEG signals: only needs to collect the EEG signals on the three leads C3, C4, and Cz(三個電極貼片的訊號)
2. Pretretment of EEG signals: two main sources of EEG signal noise: ocular artifacts (眼部訊號瑕疵)and power frequency noise
Solution: Butterworth filter+improved sub-band pass filter bank (FB) filtering method
3. Feature extraction method: Principal Component Analysis (PCA)+the minimum absolute contraction selection operator
4. Signal classification: integrated learning framework, Ensemble Learning (EL). K-nearest neighbor (KNN), decision tree (DT) and twin support vector machine (TWSVM) are selected as the base estimator, the integrated framework adopts the Bagging integrated learning framework, combined with the strategy selection Bayesian Sum Rule (BSR).
### 個人看法
這篇跟我們要做的主題很類似,機器人控制的方法也有提到。但相對來說方法比較複雜,包含訊號前處理以及訓練模型,內容滿多是參考其他篇作法再結合起來,所以要研究實作方法還要去看其他論文。
## Interpretation of EEG thought signals for the control and movement using MATLAB
- [論文連結](https://ieeexplore.ieee.org/document/9065817)
### 目標
根據腦波頻帶(alpha,beta,theta,delta)做出state machine,用來判斷此時心中所想的動作(front,back,left,right,stop)
### 方法
- Human brain produces thought signals at a frequency
- Alpha bands range from 8-12Hz, arising from synchronous and coherent electrical activity of thalamic pacemaker cells in humans.
- Beta bands range from 12.5-30Hz, arising from states associated with normal waking consciousness.
- Theta bands range from 4-7Hz, arising from fantasy and imaginary dream.
- Delta band ranges from 0.5-3Hz, arising from a deep, dreamless sleep.
- Gamma bands range from 30-100Hz, arising from motor functions and high mental activities.
- Mu band ranges repeat at a range of 7.5-12.5Hz, found over the motor cortex from ear to ear.
- 利用 matlab 處理腦波數據,使用STFT(Short Time Fourier Transform)為主要分析方式,最終可依照資料分布進行分類
1. Normalization:removing any noise and artifacts
2. using spectral analysis in MATLAB
- filtering:the window with Fast transform of length 1024 and 50% of window overlapping is used
- normalized
- Fast transforming
- compute the power spectral density
3. STFT (Short Time Fourier Transform)
4. Find the mean and deviation of the signal, using Simulink as below.

5. The extracted features are sent through a state machine
created using the values generated in Table 2.

### 個人看法
這篇的好處是只需要使用matlab作為資料處理的工具,算法原理也寫得滿詳細,缺點就是找不到論文的程式碼,不確定是否按照論文方法下去做就能實現。
## An EEG Signal Classification Method Based on CNN Architecture
- [論文連結](https://ieeexplore.ieee.org/document/10170904)
### 目標
分類EEG訊號
### 方法
利用已有的資料庫進行CNN的訓練分析,最終可以分辨訊號類型
### 個人看法
本篇是用已有的資料庫、標記進行訓練及驗證,並且判斷特殊主題的訊號。此外本篇包含資料前處理(濾波、切割資料)的部分,但文章並沒有詳細講解前處理的做法,只大略提及濾波器種類、切割資料的原因,CNN的部分則是提出架構,並且在loss function和optimizer有比較詳細的推導。如果採用CNN做法,我可能就會改用python來處理資料。
## Controlling method of industrial robots based on the electroencephalogram
- [論文連結](https://ieeexplore.ieee.org/document/6273016)
### 目標
利用EEG來控制工業用機器人,一樣是有幾個動作(moving up, down, left, right, forward and backward),再去做分類
### 方法
- Wavelet packet decomposition (小波分解)
- use of specific sub-band wavelet packet coefficients of the mean (the main time domain information)and energy (mainly in the frequency domain information) as the initial feature, use Derek Fisher distance as measure of a single initial feature's detachable ability, choose one with a larger coefficient of separability of sub-band energy as the mean and effective features to form the final feature vector.


### 個人看法
本篇主要是利用小波分解來處理資料,但內容中沒有詳細提到實作方法,只有提出大略架構,因此我覺得執行上會有難度