- 脳破解析をしている人
- Emotiv EPOC+を買うか悩んでいる人
- ブレインマシンインタフェースに興味がある人
こんにちは.けんゆーです(@kenyu0501_)
最近,ラボにワイヤレス脳波計(Emotiv EPOC+)が届いたので記事書きます.
ワイヤレスヘッドセット(脳波計)と,電極,コンタクトレンズ用液,信号レシーバ用のUSBドングルが入ってました.
パソコンがあればとりあえず,USBにドングルさして動かせます.
(わいの研究費で購入したはじめてのもの!笑)
今はラボの後輩が卒論研究に向けてあれやこれや中心的に触ってますが,ブレインマシンインターフェースをはじめいろんなことができるっぽいので色々と楽しみです.
実際に使ってみての感想
ワイヤレスということもあり非常に使いやすいです.
接続もものすごく簡単です.
センサー部分はウェットタイプなのですがセットアップすぐに完了します.
リアルタイム計測を行うためには,PROライセンスが必要ですが,すぐに以下のような14チャンネルの信号が取れました.
リアルタイムFFTも一瞬で出来ます.
しかしこれ,データをリアルタイム計測するためには,EmotivPROのライセンスがいるのですよねー
EmotivPROも買いました
生データを高解像度で取得したければ,EmotivPROのライセンス購入が必要ぽかったのでそれも同時に契約しました.
価格は4つのパターンがあって,
- 月契約
- 年契約
- 3年契約
- 5年契約
です.おいらは1年の契約にしました.
まあ,これでさっきのような生体信号が取れます.
データの保存は,csv形式か,edf形式(生体信号を扱うときによく用いられる拡張子でバイナリ保存)か選べます.
基本的にPythonかなんかで生波形の処理を行うのであれば,edf形式で十分です.
各種アプリケーションが優秀で面白い
ハードとしての脳波計の使い心地も良いですが,色々とソフトウェアも開発されているそうで,かなり面白いと思います.
(参考:EMOTIV – software Application)
無料のものは一通りやりましたが,EmotivBCIはおもしろかったですよ.
感想は,,,ちょっとはじめ難しいです.変な筋肉使います笑
しかもどこの筋肉かわからない笑
脳みそを動かす感じが,なんとも言えない面白さがありました.
ブレインマシンインターフェースBMIの使い方としては,あのキューブの動きとロボット(ドローン)の動きをリンクさせて動かすといったところでしょう.
夢がありますね.これからおいら達も内側を触っていきます.
実際にBMIを実装していくためのファーストステップ!
まだ実際に,ものを動かすまでには至っていませんが,BMIの研究アーカイブとして記事に起こしておきます.
配布されているソフトウェアではなく,やっぱり自分自身でBMI設計がしたいですよね!
っていうことで,色々と触ってみました.
Cortex APIを使うととりあえず良いみたい
何もわからず手探りで色々と触って行きます.
開発しながら記事を書いているので,記事としてまとまりが無いのはご了承ください.
EmotivのHPから紹介されていますが,BMI開発用のSDKがgithubにあります.
githubはこちらです
(https://github.com/emotiv/cortex-example).
こちらからcpp-qtというファイルを扱っていくのですが,C++を動かす際に,Qtフレームワークが推奨されています.
なので,無料版のQt (https://www.qt.io/) を入れました.
visual studioのような統合開発環境ですね.
結論から言うと,cpp-qtの中に入っているeegディレクトリの中のmain.cppを回すとリアルタイムの値を取ることが出来ました.
しかしながら,ここまでやるためには以下を用意する必要があります.
- Client ID
- Client Secret
- user name
- password
- Emotiv License
上の4つは,SessionCreater.cppに書き込む欄があるので,そちらに書き込んでください.
また,一番下のEmotiv License に関しては,main.cppのdse.start()に埋め込んでください.
計測のサンプリングのパラメータに関する設定
計測のサンプリングに関しては,
DataStreamExample.cppの nextDataTime = time + x;
のxを触ってください.
ここで,注意することは,xは周波数のサンプリング幅の間隔です.
初期設定のEmotivデバイスの128Hzの計測ならば,サンプリング時間幅は0.0078125です.
なので,1秒間に128点のサンプル数が欲しければ,0.0078125にしておけば良いのですが,取得したデータの値が飛びました.
対策措置て
DataStreamExample.cppの nextDataTime = time + 0.007;
とかにしてます,(0.0078125だとうまく行きませんでした)
nextDataTimeがdouble型なので,
それよりも小さい0.0078でやると多分いけるだろうと考えてましたが,サンプル数が128点得られずまた飛びました.
0.007だと取れましたよ.
計測時間に関しては,
DataStreamExample.cppの timerId = startTimer(x*1000)のxを変更すると任意に設定できます.
m秒で計測されているのですね.
とりあえずここまで
とりあえず,C++でデータを計測することができたので,とりあえずここまでにしておきます.
追記:2019年5月5日
Emotiv Epoc+を用いてラピロというロボットを動かすBMIを実装しましたので,興味があればどうぞ!
この記事はこんな人にオススメです 脳波を使ったアプリケーションに興味がある人 ブレインマシンインターフェースの…
追記:2019年7月31日
年間ライセンスを購入してデータをとっていましたが,ライセンスが切れてデータが取れなくなりました.
1 | Exception: {'code': -32024, 'message': 'The license is expired.'} |
このようなエラーメッセージがきました.
おいら達は,市販のソフトウエアは使用せずに,pythonで直接取得していましたが生データを取得するために,一度ライセンスの確認もプログラム内で行なっています.
そのため,自作のプログラムでもライセンスが切れるとデータが取得できなくなるようです.
世知辛い世の中ですね.
まあ,世の中そういうものだよ
ブログ拝見しました。福岡の大学院生のあすかと申します。
特にSDKの記事は、なかなかオリジナルの説明が分かりづらいのでとても助かりました。
ありがとうございました。
質問です。main.cppのプログラムを回して、ヘッドセットを見つけるところまでは、できました。
その後にこのようなエラーが出て、詰まってしまいました。
Cortex returned an error:
“createSession” -32019 “Session limit has been reached for current device.”
Disconnected.
けんゆーさんは、このようなエラーはありませんでしたか?
いえいえ,お役に立てて良かったです.
そのようなエラーは出なかったと思います,,,
ヘッドセットを見つけるというのは,websocketにライセンス情報を送った時に,データをとる許可がおりた,ということですよね.あれができると,とりあえずデフォルトで動くと思いますが,,,どうなんでしょうか,
Errorには,セッション制限に達したと書かれているので,もしかしたらお使いのパソコン側のアクセス許可が降りていないかもしれません(適当に考えてます,すいません).
確か3台までだったような気がします.
セッションが何を指しているのか分からないですが,ちょっとそこらへんを調べてみると良いかもです!
今,僕らはC++ではなく,完全にPythonに移行しているので,Qtは弄っておりません♂️
回答ありがとうございます。
同じようなエラーは出なかったんですね.
そうです.その認識であってます.
そうなんですね,デフォルトで動くんですね.
今日,EMOTIV PRO(ソフト)の方で脳波を測定しようと思ったら,
そっちでも脳波計が接続できずに
Device session has been closed.
と出ていたので,脳波計とPCの間のエラーのように思えるので
そのあたりを調べてみます.
とても参考になりました.ありがとうございます.
11月の記事でもう今はPythonに移行って開発スピードがとても速いんですね.
SDKにexampleであったのは,C++,C#,jsでしたよね?
Pythonでどうやってデータ取るんですか?
自分は,MATLABでとることを考えているのですが,見当がつきません.
簡単にでいいので教えていただけませんか?
Proで生データが取得できなければ,プラグラムではなく,やっぱり使用環境のせいでしょうね,,,
3台までいけるのでPCを変えてテストした方が手っ取りばやいですね!
同じエラーが出るなら,ライセンス情報をもう一度問い合わせるとか,,,ですかね.
sdkでexampleにあるのはそうですね.
その三つです.
海外の学会行ったときにEmotiveを使った人らのBMI/BCIの内側をみると大体MATLABでしたね笑
Youtubeにもいくつか使用している人がいたような,,,,
Websocketでライセンス認証をしたらデータが取れるので,それと同じように,,,という感じです.
多言語でも,Qt(C++)とデータ取得プロセスは同じでした.
Pythonだと,色々とリアルタイムに解析するのが個人的に楽なので便利でした.
今,ラボでリアルタイムBCI/BMI処理の開発をしていて,ある程度リアルタイムに脳波で何かできるところまでいってるので,記事にできそうなところを近々書きます.
SDKのプログラムいじるまでは,普通に測定できていたので,
確かに,環境とかライセンスの類をあたってみます.
解説ありがとうございます.じゃあ,Websocketっていうのを理解出来たら,
MATLABでもプログラム書きやすそうですね.ちょっと調べてみます.
リアルタイムBMIの記事は,自分が今ちょうど悩んでいる部分なので,
とても気になりますね.楽しみにしてます.
そうなんですね,,,
SDKのプログラムが悪さしているのでしょうか,,,
謎ですね,,(泣)
はい!
Emotiv側に,データをよこせ!という通信の役割をしてくれるものです!
ありがとうございます.
なんとか頑張ります^^笑
けんゆーさん、はじめまして。
私は企業でマーケティングの仕事をしていまして、
マーケティングに脳波測定を取り入れられないかという
実験のため、こちらを購入しました。
初歩的な質問で申し訳ありません。
一昨日届いて早速つけてみたのですが、
セットアップがどうにもうまくいかないのです。
CONTACT QUALITYがどうしても100%に
ならないのです・・
14個すべてが緑色にならず、どうしたもんかなあと
途方に暮れていたのですが、
けんゆーさんは簡単にできたと書かれていたので、
何かコツとか気を付けることがあればぜひ教えてください!
どうぞよろしくお願いいたします。
ルイさん,はじめまして.
結構,Contact qualityが100%にならない方がおられるようですね.
何度か質問をもらっているのですが,だいたい,
・黒いフェルトをきちんと奥まで押し込む
・フェルトを溶液できちんと浸す(結構ドバドバ付けます
をすると解決するようです.
試してみてくださいませ
けんゆーさん、こんばんは!
アドバイス通りにやりましたら無事に100%になりましたぁ~!!!
本当に本当に、ありがとうございます!!とっても嬉しいです(T_T)
マーケティングに脳波測定を取り入れるべく、試行錯誤してみたいと思います!
けんゆーさんのブログ、これからも応援しています!
記事のアップも楽しみにしていますね!
今後ともよろしくお願いいたします(^^)/
ルイより
ルイさん,ありがとうございます.
それはよかったですー!
できたご報告が聞けて僕も嬉しいです!
ブログも応援していただいてこちらこそありがとうございます!
今後ともよろしくお願いいたいします.
けんゆーより
拝見しました。emotivの使い方が日本語で書かれているものが少ないので助かります。
私もemotivを使ってみようと思って購入しました。
早速、モビリティを開発したいのですが、
pythonでやる場合のやり方を教えて欲しいです。
また、emotiv proではなく、emotiv testbenchを使って測定していますがこれでも開発できますか。
質問ばかりで申し訳ないのですが、14点全てで緑色のconnectになっているのですが、念じてもまだ分かるような変化が見られません。何をどう見たらいいのか分からず困っています。
忙しいとは思いますが、質問に回答して頂けるとる嬉しいです。どうかよろしくお願い申し上げます。
たくやさん,
emotiv pro ライセンスを持ってない場合,生データが取れるかどうかが微妙です.
生データが取れればあとは色々できるので,,,,
pythonの場合もwebsocketにライセンス情報を送った時に,データをとる許可がおりればデータ取得ができますが,こちらもproのライセンスがない場合にできるのかどうか微妙です...
pythonプログラムの公開は,研究の関係で今はできないです.すみません.
「14点全てで緑色のconnectと,念じる」いうのはemotivBCIでしょうか,
アプリを起動するとインストラクトがあると思うのでその説明どうりにやるとできると思います.
アプリを使うのは簡単ですが,BCIの操作は難しいです.
ありがとうございます。
けんゆーさんの、インプットデータexp.txtってemotivから取得したデータですか?
edfファイルやcsvファイルには変換できますが、txtに変えてやっているということでしょうか?
emotiv proとemotiv test benchは機能はほとんど同じで、リアルタイムで生データの取得とフーリエ変換やジャイロも取得できましまた。しかし、ライセンスがないので、emotivの開発はできるかよく分からないです。
たくやさん,
返信が遅くなりまして,すみません(T_T)泣
>>けんゆーさんの、インプットデータexp.txtってemotivから取得したデータですか?
僕はPythonでそのままデータを取得して,txt形式で出力してます.
既存のアプリは使っておらず,自作しました.
リアルタイムで処理をするためです.
>>emotiv proとemotiv test benchは機能はほとんど同じで、リアルタイムで生データの取得とフーリエ変換やジャイロも取得できましまた。
そうなんですね,そしたら,フーリエ変換後の周波数データを使うと何かしたの結果を出すことができそうですね.
emotivの開発?がちょっとよく分かっていないですが,データが取れたら色々とできそうだと思います...
ありがとうございます。
emotiv proのライセンスは購入しました。
websocketでつまずいています。
私が見たサイトでは
json形式で
paramsにはクライアントiD、
クライアントシークレット、
ライセンスを書くように書かれていたのですが、
クライアントシークレットは
どこに書いてあるものでしょうか?
また、サイトによってはユーザーネームや
パスワードも書いてあるのですが必要ですか?
sdkで脳波データ取得の際には,username,password,clientId,clientSecret,licenseが全て必要だと思います.
個人ごとに振り分けられたものなので,確かemotivの個人ページから見れたと思います.
返信ありがとうございます。
emotiv のmy accountでユーザーiD、パスワード、ライセンスキーは見れます。
クライアントiDとクライアントシークレットもappで取得しています。
websocketのコードには書きました。
しかし、できていません。
エラーコードは-32027で、
application dose not have permission to use the license.です。
アプリケーションがライセンスを使うための許可がないというエラーが返って来ていますね.
もしかしたら,プログラムが上手く機能しておらず,データの取得権限がきちんとできていない可能性がありますね.
ちょっと拓弥さんのdmの方にメッセージをお送りさせていただきます.
ちなみに僕のは「kenyu.uehara@グーグル」 です
すみません
結局、まだwebsocketを使おうとするとエラーが出てしまいます。
emotiv のcortex APIのサイトを見てやっているのですが上手くいきません。
websocketでのauthorizeのプログラムを教えてもらいたいです。
emotiv proの後にemotiv のnon-commercial での登録もやってます。
忙しいとは思いますがよろしくお願いします。
突然失礼します.
私も現在emotivを用いて脳波の研究を行っているのですがpythonのwebsocketを用いて脳波データをリアルタイムで読み込もうとしているのですがうまくいきません.
よろしければwebsokcetの部分のプログラムを教えていただきたいです.
けんゆーさん、こんにちは
EMOTIV PROの使用を決めたくらいから、拝見させていただいております。
とても初歩的な質問で恐縮なのですが、質問させてください。
大学院でEMOTIV PROを用いて脳波を図り論文を書きたいと思っているのですが、
blurtoothでもUSBをつけても、何度やっても繋がらないときは繋がらず、繋がるときはふと繋がる状態です。
再起動してみたり、一度外してみたりなど色々試してみてはいるのですが、
繋がらない時が多くて、困っております。
考えられる要因お分かりでしたら教えていただけますでしょうか? (こんなことで随分時間を費やしてしまって..)
なお、OSはmac OS X を使っています。
お忙しいかと思いますが、教えていただけたら大変幸いです。どうぞよろしくお願いいたします。
bossaさん、
proか、cortexUIのどちらかが起動していて、きちんとログインいるか確認してみて下さいー!
けんゆーさん、
ありがというございます!
proで起動していたはずなのですが..
ただ2.0 にアップデートしたら、少し接続が安定するようになりました。
他のコメントも大変勉強になります。
また楽しみにしております。
(なんだかEMOTIV相談室みたいになっちゃってますね..)
bossaさん、
そうなんですね、
お役に立てずにすみません、
アプデで、接続の問題が解決したのであれば良かったです。
あっ、それかemotivを使う時、ネットワークを使わないといけないですよね、もしかしたら、bossaさんのemotivを使っている部屋のネットワーク環境が遅いかもしれないとか考えられますかね。
もしかすると、他の場所でやると良いかもしれないですか。
的外れでしたらすみません♂️
黒の方を購入する時、ACADEMICのプランの99ドルのものを購入し、ピンクのProライセンスも購入したという認識でよろしかったでしょうか?
けんゆーさん、はじめまして。現在、大学の研究で脳波における研究を行っています。
ブログを拝見させていただきました。先月、脳波を測るためにEmotiv epoc+を購入しました。EmotivのHPでは、生のデータ(rawdata(数値))を取得できるEmotiv ProライセンスはEPOC FLEX しか対応していないと書かれていました。
そこでなのですが、Emotiv epoc+でもEmotiv Proライセンスを買うと生のデータ(rawdata(数値))を取得することは可能なのでしょうか?お忙しい中大変恐縮ですが、教えていただけたら大変幸いです。どうぞよろしくお願いいたします。
Sokiさん、はじめましてー!
生データ取得することは可能ですよー!
返信ありがとうございます。
生データとは周波数帯のデータではなく、フーリエ変換する前の時間軸での値でしょうか?(edf形式で出力されたもの)
また、時間軸での生データを取得するにあたってPythonで出力は可能でしょうか?
追記
僕は現在、Emotiv Proライセンスではなく、2017年度まで適応されていたTestBenchを使用して行っております。
時間データです。サンプリングは256だったと思います!ぼくはproライセンスを使っているので、追記のものは分かりません♂️すみません、、
proライセンスだと、時間データがedfかcsvで取得できます。
pythonでの取得は可能ですが、プログラムの実装をする必要があります。
Emotiv epoc+でEmotiv Proライセンスを購入しましたか?
あと、Emotiv Proライセンスでは、プログラムを書かずに時間データであるedfファイルを出力できたということですか?さらに、α波β波などの値も出力可能か教えて頂きたいです。
けんゆーさんは、Pythonでの時間データ出力の実装はしましたか?
質問ばかりで申し訳ございません。よろしくお願いします。
epoc+ でproライセンスを購入しました。
proライセンスでは、プログラムを書かずに、edfファイルが取れます。
帯域別データは分からないです。恐らくできたとは思いますが、、すみません、微妙です♂️
生データを取れたら、処理はできるのでいつも気にしておりませんでした♂️
時間データは、pythonで取ってます!
いえいえ!お気にならさずです!
なるほど。
初歩的な質問なんですが、Test BenchとEmotiv Proの決定的な違いは何でしょうか?
Emotiv epoc flexでなくてもEmotiv epoc+でライセンスを購入するとプログラムを書かずに時間軸のデータがedf形式で取れるということですか?それともライセンス購入をした後にPythonで時間データ取得をしたのでしょうか?
もしPythonでの時間データ取得をソースコード作成する場合は大変ですかね、、、
Test Benchは使ってないので分からないです。2017年までに購入した人が貰える特典ですかね?ぼくは2018年にemotiv epoc+本体と、proライセンスを同時に購入しました。
そうですね( ^ω^ )
購入したのは2019年6月です。購入したサイトでは、特典として付いている感じですね。EmotivのHPでは、時間軸データ出力に対応していないらしいですが間違いなんですかね?
このブログでは、一度c++で値を出力してますが、これは何の値でしょうか?
結局、Proライセンス購入してからは脳波計測時edf形式で出力してPythonで時間データを取得したということですよね?
度々申し訳ございません。
emotivのproライセンスだと、時間波形取れると思いますが、、、
C++の方は、各chの脳電位です。校正前です。
pythonでは、proでedf出力せずにcortex を使って直接取ってます。
説明下手ですみません♂️
なるほど。cortexを使って時間データを取得したということですか?もし、参考にしたページなどありましたら教えて頂きたいです。あと、クライアントIDやシークレットなど参照できるところはどこにあるか教えて頂きたいです。
大丈夫です。ありがとうございます。
そうですそうです!
参考にしたところは、emotivのdevelopersのページですが、ぼくもどこかの記事にリンク貼ってたと思います、、確かラピロというロボットを動かす簡易BMIを作ったページに、、、
個人情報の取得は、emotivのmyページにあります(^^)
なるほど。参考にします。
Proライセンスはアイコンが黒色の脳のほうで購入しましたか?ピンク色の脳のアイコンの方もありますが。
あと、Emotivの公式にあるBCI APIの方もAPPLYしましたか?
Cortexを使った時間データ出力は簡単に出来ましたか?
黒もピンク(pro)もどちらもとりました!
時間データ取得は結構時間かかったと思います、、
黒とピンクは何が違うのでしょうか?片方だけでも行けますかね?
ライセンス購入したらプログラム書かずにedf形式で時間データは取れないんでしたっけ?
追記
対応していないというのは、Emotiv epoc flexのみ対応していてEmotiv epoc+は対応していないということです。
でも、けんゆーさんはEmotiv epoc+でProライセンス購入してPythonで時間軸データ取ってますよね。
ブログを拝見させていただきました.
私は現在emotiv epoc + を用いて脳波の研究を行っています.
脳波データをpythonなどのプログラミング言語に読み込むのにライセンスが必要なことがわかり先日
emotivpro license student を購入しました.
しかし,pythonのwebsocketを用いて脳波を読み込もうとしたときに
subscribe methodを用いたときにエラーが出てしまいます.
画面の詳細はhttps://emotiv.gitbook.io/cortex-api/data-subscription/subscribe
の一番下のresponseのところと同じエラーです.
そこで聞きたいのですがemotiv pro license student のみを購入しただけでは脳波データをプログラミング言語に読み込めないのでしょうか.
https://www.emotiv.com/developer/
に載っているものを購入する必要があるのでしょうか.
教えていただきたいです.