#author("2023-12-14T05:30:10+00:00","","") #author("2023-12-14T06:05:35+00:00","","") ** 目標 [#o51ac045] 簡易脳波計をつけて,ジャンケンに負ける手を出すときの脳波から,出す手を脳波から事前に予測する.ジャンケンを実行してPCがジャンケンに勝つ手を出す勝率を表示する **【脳波ジャンケンについて】 [#e48abf2c] 簡易脳波計をつけて、ジャンケンに負ける手を出す脳波を読み取り、PCが人間の出す手を予測し、ジャンケンnonに勝つ手を出す勝率を表示する。 **【実行環境】 [#e46a0279] ・Python3 **【環境構築】 [#j62f653f] 以下のページを見ながら環境構築を行った。~ [[簡易脳波計によるジャンケン予測のためのクラスタリング]] 実際はこのページよりは簡単な方法で実験を行った。 ** GUIインストール~ [#jc2e1f9a] 以下のサイトでインストール https://github.com/OpenBCI/OpenBCI_GUI/releases/tag/v4.1.6 //http://openbci.com/index.php/downloads ** 脳波の測定の準備 [#ac364f48] #ref(USB.png) USB ドングルをコンピュータ側にでっぱりをスライドさせ、青いライトを点灯させる #ref(Cyton1.png) Cyton ボードのスイッチは、上にスライドで PC 接続、下にスライドで Bluetooth 接続となる 今回はPC接続なので上にスライドする 青く光らなかったら電池切れの可能性があるので、電池の交換を行う //ここから先はWindowsとUbuntuでやり方が違う ***Windowsの場合 [#h13258e4] #ref(加工openbci.png) OpenBCI_GUI.exeを開いて (1) LIVE from (Cyton) (2) Serial(from Dongle) (3) COM3 (ここがCOM3にならないときもあるので、その時はUSBドングルを挿したときに表示されたものを選択する) (4) 8CHANNELS (5) START SESSION 以上の流れで実行できる ・今回は、8CHANNNELで行う ・&color(#FF0000){USBドングルは2種類あるので、COM3と表示されるものを使う}; ・エラーが出たときはOpenBCIHub.exeを起動してからOpenBCI_GUI.exeを起動する //***UNIXの場合 //シリアルポートにアクセスするのに十分な特権でOpenBCIアプリケーションを起動する //OpenBCIソフトウェアをホームフォルダに展開したと仮定すると、以下のコマンドで実行できる~ // cd ~/application.linux64 && sudo bash OpenBCI_GUI //(1) LIVE from (Cyton) //(2) Serial(from Dongle) //(3) SERIAL / COM PORT は一番上のやつ //(4) 今回は8CHANNELS //(5) START SYSTEM //以上の流れで実行できる **5. 脳波の測定の実行と動作確認 [#i7a9f438] ・装着するときは電池がついている方を後ろ向きにする ・Session Date の Name でファイル名を変更できる(デフォルトで日付) ・実行できる状態か確かめるときは、AUTOSCAN から確認できる ・下部分に緑文字で "Successfully connected to Cyton using COM3" と表示されれば実行可能 ・脳波がとれない場合はそのチャンネルの頭のねじを回すことで調節する START SESSION を実行すると以下のような画面になり、左上の START DATA STREAM で測定開始、STOP で測定終了となる #ref(gui.png,,30%) ***システム(この項目は、直接USBでデータを渡したほうが早い) [#fce5ccda] Google Driveの中の"学生"→"08清水"の"専門ゼミ脳波"のフォルダをzipファイルにまとめた #ref(noha.zip) zipファイルの中にはこれらが入っている //作業する場所にフォルダを作り、以下のプログラムと画像を入れる #ref(tv.py) #ref(X_tra.py) &br; |#ref(黒.png,,20%);||#ref(グー.png,,20%);||#ref(パー.png,,20%);| |#ref(チョキ.png,,20%);||#ref(zyan.png,,20%);||#ref(ken.png,,20%);| |#ref(kati.png,,20%);||#ref(make.png,,20%);||#ref(hikiwake.png,,20%);| //以下の2つを"_pycache_"という名前のフォルダをつくり、その中に保存する //#ref(X_tra.cpython-36.pyc) //#ref(X_tra.cpython-38.pyc) **6. ジャンケンの出す手の分類学習 [#r337b681] ***6.1 環境構築 [#z96a6ec3] python3でやる pipのインストールはこのサイトの「pipのインストール方法」を見てやる //unixでやる場合は"sudo","apt-get" は実行可能 "sudo","apt-get"のコマンドはwindowsではできないので、"sudo"のみのものは"sudo"なしでも大丈夫 "apt-get"はwindowsではできない モジュールのインストールは以下のコマンドで Python で opencv を取り扱うためのモジュール pip3 install opencv-python マウスやキーボード操作を制御するためのモジュール sudo pip3 install pyautogui PythonにXlibを実装する sudo pip3 install xlib Pythonの描画ライブラリ pip3 install matplotlib // sudo apt-get install python3-tk // sudo apt-get install python-scipy 高度な科学計算を行うためのライブラリ pip3 install scipy 機械学習のライブラリ pip install scikit-learn データ解析を支援する機能を提供するライブラリ pip3 install pandas // pip3 install sklearn これ以外のモジュールを要求されたら、その都度インストールをしていく 必要なコードとファイルは,Google Driveの/麻生/brainの中にあります~ 一応、国際学会では違う分析手法で発表したのでその時のコードもgakkaiというフォルダの中に一緒に入れておきます。(これは興味があれば見ておいてください。) **6.2 コードの実行 [#t1a38ce9] tv.pyを以下のコマンドにより実行することによってシステムを動かすことができます。 python tv.py ***6.3 分析の流れ [#f33ec394] ⒈ 分析したい脳波データの部分を抽出する~ ⒉ 分析対象となる脳波のデータを独立主成分分析によって、分析に効果的であると考えられる成分を抽出する~ ⒊ 独立成分分析によって処理したデータをフーリエ変換~ ⒋ 周波数帯でシータ波とアルファ波、ベータ波に分割する~ ⒌ 分割したデータをランダムファレストにより学習~ ⒍ 学習したモデルを使って予測~ ***6.4 実行 [#j36d585f] 実行手順~ 作業するフォルダを"brain"という名前にしてある(ここの名前は自分で変えても大丈夫です) ''訓練データの取得方法とその後'' 訓練データを取得するときは、"tv.py" の451行目の( )内を5にしておく "python tv.py" を実行~ ①:"ASO"を選択~ ②:"Start Date Stream" を押す~ ③:"date get" を押す~ ④:出てくる画像に従ってデータを取得~ ⑤:データ取得後、OpenBCIをSTOPさせる~ #ref(やり方1.png) #ref(やり方1 .png) **【結果】 [#o2d82899] 訓練データの収集までしか行えなかった。