よいちろ日記

忘れないようにメモ。

脳波計MindWaveでiOS&Macアプリ開発。

日本語のドキュメントとか全然ないし、やりたいことをググってもフォーラムにもなかったのでメモ書き程度に。 

iOSSDK(StreamSDK)で脳波をログ出力するところまで。Macアプリは結論いうと諦めた。

結構不良品が多いらしく、ご多分に漏れず、接続不良で返品した。不良品かどうかは、iOSチュートリアルアプリで確認する。端末のBluetooth上ではつながっているのに、チュートリアルアプリはじめ、Newrosky社製の純正アプリが接続を認識しないという状態になる。
  

f:id:yoichiro0903:20161002180359p:plain  f:id:yoichiro0903:20161002180429p:plain

iOS端末とつなぐとAppStoreに誘導される。
 

f:id:yoichiro0903:20161002180511p:plain

Tutorialアプリが2つあるので、片方づつ試してみた。
 

f:id:yoichiro0903:20161002180541p:plain

とにかくこの画面が出て何もできない。
 
返品を乗り越え、不良品交換を乗り越えれば一旦は遊べる状態に。
iPadでの脳波可視化アプリがまあまあ新鮮。

f:id:yoichiro0903:20161002180607p:plain

ただ、なんというか、よくわからない…集中って何状態。脳波情報を解釈して、眠気とか、自分で認識できるようなレベルの情報を検知できるようにしないと面白くなさそう。それとも脳波計の精度の問題なのかな。デフォルトアプリの簡素さに制作意欲が湧く。
 

iOS Developer Tools 4.2をダウンロード。 

次に、デベロッパーサイトからDeveloper Toolsをダウンロード。Developer Toolsと言っても、サンプルアプリとAPIの仕様書(pdf)が入っているだけのZip。

f:id:yoichiro0903:20161002180637p:plain

 

ダウンロードくらいすんなりさせてもらいたいものだが、住所なり何なり入れないといけないのでテキトーに入れてダウンロード。

 

脳波情報をコンソール出力。

「Stream SDK for iOS」のサンプルアプリをXcodeで開く。
API仕様書とコードを読んで理解した流れとしては以下。
  1. TGStreamInstance=[TGStream sharedInstance]; でインスタンス作成。
  2. [TGStreamInstance initConnectWithAccessorySession]; でヘッドギアとハンドシェイク開始。
  3. ヘッドギアから情報が送られてくると、onDataReceivedというデリゲートメソッドが呼ばれる。
  4. onDataReceivedにて情報を選り分けてコンソール出力。 
使えそうなデータタイプが3つに分かれて送られてきていて、データタイプごとに処理のif文を書く必要がある。
  • 瞑想度(0-255のINTだった気が。)
  • 集中度(同じく。)
  • α波など(8種)の脳波情報
MindDataType_CODE_EEGPOWER = 131のNSObjectの中身をDumpしようとしたけどいい感じの物が見つからず断念。メモリのアドレスみたいなのしか吐き出せなかった。(ググってもいい感じの解決策なし)TGSEEGPower.h内で宣言されてるプロパティにしかアクセスできないってことなのかな。オブジェクトの中身は色々入ってるけどプロパティでどれを取得しに行くかを宣言しているという構造理解だったけど違いそう(ObjectiveC素人)。第三者のSDK使った開発ってそんなもんなのかな。ブラックボックスやなんだけどな。
 
コンソール出力結果はこんな感じ。1secごとくらいに送られてくる。データ送信の周波数をどうやって高くするかはわからない。

f:id:yoichiro0903:20161002181137p:plain

data_type=4が集中度、5が瞑想度。
 

Macアプリ開発

MindWave MobileとMacの接続テスト。

開発する上では付属品のCDに入っているPC用のアプリは必要ないが、PCでも接続確認したいので、アプリを入れる。とはいえシリコンバレー(だっけ)のベンチャーが今時CDかよ…
 
手持ちのMacbook Proには光学ディスクドライブがついてなかったので、WindowsPCを引っ張り出してきてディスク共有してインストール。知識不足だからなのかもしれないが、Windowsで開くと.exeファイルしか表示されず、それをDropboxとかで共有してもダメそうだったので、なんとかしてCDデータに対してMacから接続する必要があると考えた。
こちらを参考に。読み込みにすんごい時間(3分くらい)かかったけど。
 
で、「ThinkGearConnector」とその他2アプリくらいがインストールされる。

f:id:yoichiro0903:20161002181454p:plain

この「ThinkGearConnector」がヘッドギアとMacの窓口になるっぽい。「ThinkGearConnector」にぶら下がる形でチュートリアルアプリとか音楽レコメンドアプリとかが起動される。

 

OSX-Developer-Tools-3.1をダウンロードするが...

「StreamSDK For Mac」サンプルアプリを立ち上げてみる。startStreamだけが動かない。(接続開始するメソッド)なんでだ…サンプルログファイルからデータを読み出すinitStreamWithFileメソッドは動く。Documentにトラブルシューティングもない。取得できる情報はiOS版と同じなので一旦おいておく。悔しいけどまあいい。

 

もう一つのSDKEEG_Algo_SDK_OSX」ってのでBlinkの検出ができるっぽい。「EEG_Algo_SDK_OSX」のサンプルアプリを立ち上げる。エラー。しかもこういうエラー。
f:id:yoichiro0903:20161002181509p:plain 
 
かったりぃーってなって終了。コミュニティ大事。サポート大事。最初つまづいたりすると、ライトユーザーは踏ん張れないな。仕事でどうしても!という人は深いところまで頑張ってみるんだろうけど。ちなみにチュートリアルアプリで動いてはいるので、もうすこし調べて粘ればできると思う。(Developer Toolsに、ヘッドギアからの生データをSerial通信でぶっこ抜くやつが入っていた。)
 
というわけで、iOSの方では、脳波(の一部)情報を取得してゴニョゴニョできそうだなというところまでは行ったので、どんなもの作ろうかなーと考えることにする。
 
※ さっきみたら、iOSのDeveloper Toolsに「EEG_Algo_SDK_iOS」があって、ビルドは成功したので、BlinkがiOSの方で取れるかも。
 
おしまい。