OpenBCI GUIウィジェットガイド

ここではOpenBCIボードからのデータを集録、解析、保存するためのアプリケーションツールOpenBCI GUIのウィジェッドの解説をおこないます。OpenBCI GUIの基本的な使用方法はYoutubeでご覧頂けます。注)動画では旧バージョンが使用されております。

OpenBCIボードをはじめて使う方は まずOpenBCI CytonスタートアップガイドまたはOpenBCI Ganglionスタートアップガイドをご覧下さい。

OpenBCI GUIウィジェットとは?

OpenBCI GUIウィジェットとはOpenBCI GUIのメインウィンドウ内に収まるツールのことです。OpenBCI GUIには「Time Series」、「FFT Plot」、「Networking」など 様々なウィジェットがあります。すべてのウィジェットの左上には使用可能なウィジェットの一覧を表示するドロップダウンメニューがあります。そのドロップダウンメニューから新しいウィジェットを選択すると その場所のウィジェットが新しいものに置き換わります。

OpenBCI GUIのメインウィンドウの右上にある「Layout」ボタンをクリックするとGUI上のウィジェットの配列をカスタマイズすることが出来ます。

Time Seriesウィジェッド

「Time Series」ウィジェットは信号を時系列で表示するための波形チャートです。集録した波形をリアルタイムで見ることが出来るだけでなく フィルタなどの信号処理後の波形もリアルタイムで表示することが出来ます。また各チャートの右下にはOpenBCIボードから検出された波形の実効値が表示されます。

カラーコーディングされたケーブルをお使いの場合は GUIに表示されているチャンネル番号の色とケーブルの色を一致させることで簡単に見分けることが出来るようになります。

ハードウェア設定

Cytonボードをお使いの場合「Hardware Settings」ボタンをクリックすると上の画像のようなメニューが開き 各チャンネルのゲイン、バイアス、およびその他のハードウェア設定をカスタマイズすることが出来ます。(この機能はGanglionボードにはありません)

その他の設定&表示

チャンネルボタン:各波形チャートの左端の番号の表示してある丸ボタンがチャンネルボタンです。それらのボタンのオン/オフを切り替えることで そのチャンネルの電極から波形を集録する/しないを切り替えられます。

インピーダンスチェックボタン各波形チャートの左端にある「Ω」表示がインピーダンスチェックボタンです。このボタンをクリックするとそのチャンネルのピンに微小な電流が流れインピーダンスのチェックをおこなえます。インピーダンスチェック中は信号の集録は停止されますので インピーダンスチェックが終わった後 ボタンを再度クリックしインピーダンスチェックを終了させて下さい。 

注)チャンネルボタンやインピーダンスチェックボタンのクリックを短い間隔で繰り返すと OpenBCI GUIが正しく反応しない場合があります。コマンドのやり取りが間に合ってない可能性がありますので ボタン操作の間隔を少し開けて試してみて下さい。

Vert Scale:「Time Series」ウィジェットの右上にある「Vert Scale」というドロップダウンメニューを開くとチャートに表示させる波形の垂直スケールを調整出来ます。注)autoを選択するとGUIが自動で垂直スケールを調整します。

Window チャートに表示される波形の水平スケールを調整します。

Railed/Near Railed Railedとは信号がない、またはノイズが混在して良質の信号を集録出来ていないことを示します。もしGUIRailedと表示されている場合は 電極の状態を見て 電極がしっかりと体に接触をしているか確認して下さい。

FFT Plotウィジェッド

FFTFast Fourier Transform)はバイオセンシングツールの標準的な解析手法のひとつです。横軸は周波数を表し、縦軸は各周波数の振幅をμV表示で表します。縦軸はデフォルトでは対数表示になっていますが、「Log/Lin」のドロップダウンメニューから線形表示に変更することも可能です。プロットの色は「Time Series」ウィジェットのチャンネルの色と一致するように色分けされています。

Accelerometerウィジェッド

OpenBCIボードには3軸の加速度計が搭載されており、ボードの加速度データ(XYZ軸)をこのウィジェットで表示することが出来ます。

3軸グラフ:XYZ軸の加速度データを3軸表示でリアルタイムに表します。

波形チャート:XYZの加速度データを時系列で色分けして表示します。

Head Plotウィジェッド

「Head Plot」ウィジェットはどの領域で脳のアクティビティが活発なのかを表示します。トポプロット(脳神経科学でよく使用される)とも呼ばれます。赤色が濃い領域ほど 脳活動が活発であることを表しています。

「Head Plot」内の番号は「Time Series」ウィジェットのチャンネル番号に対応しています。またデフォルトでは 電極の位置はUltracortex MarkIVの推奨アセンブリの位置になっていますが 番号をマウスでドラッグすることで電極の位置を自由に変更することが出来ます。

デフォルトの電極配置

チャンネル#

電極記号

1

Fp1

2

Fp2

3

C3

4

C4

5

T5

6

T6

7

O1

8

O2

  • 電極記号と位置は国際10/20法に基づいています。

Polarity: 「Head Plot」ウィジェットの右上にある「Polarity」というドロップダウンメニューです。ここではリファレンスと比較し、電極の正負の極性表示を切り替えられます。デフォルト「+/-」では電極の電位がリファレンスよりも低い場合 負(青色)として表示され、電位が高い場合 正(赤色)として表示されます。

Polarityを「+」とした場合 下の画像のように信号の正負に関係なく、絶対値表示となります。

Focus ウィジェッド(OpenBCI GUI v4.2)

  • Focus Widget」はベータ版として一時的にOpenBCI GUI v4.2に実装されましたが OpenBCI GUI v5以降には実装されていません。

「Focus Widget」はチャンネル1とチャンネル2のアルファ波とベータ波のレベルを測定することによりユーザーの集中力を判別します。このウィジェットではアルファ波のレベルが0.7-2.0 μV、かつベータ波のレベルが0.0-0.7 μVであることが集中力の指標として用いられています。もしそれぞれの周波数帯のレベル外であると 集中状態にないと判別されます。注)使用時にはFFT Plotの「smooth」の設定を0.98にすることをお勧めします。

Key Press: 集中タスク時にキー操作がおこなえる機能です。「Focus Widget」の右上にあるプルダウンメニューから「UP」または「SPACE」を選択することにより 集中状態にある時のみ指定のキーが押された状態になります。集中状態でない時は 指定のキーはリリース状態になります。

Band Powerウィジェット

「Band Power」ウィジェットは集録されたデータを周波数帯域で分類される脳波の種類別に表示します。脳波の種類によって様々な体や精神の状態が読み取れます。このウィジェットでは一括で各種類の脳波活動を見ることが出来ます。

脳波の種類

脳波

周波数 (Hz)

説明

ガンマ

32~100

覚醒状態だけではなく、高いレベルでの認知処理、学習、問題解決に関連している脳波です。脳の複数の部分での処理が同時に起こったときに現れやすいと言われています。

ベータ

13~32

緊張、警戒、集中などに関連している脳波です。例えば仕事に集中している、勉強をしている、活発な会話をしているなどで起こりやすいと言われています。

アルファ

8~13

身体的や精神的なリラックス状態に関連している脳波です。くつろいでいる時や瞑想時に起こりやすいと言われています。また目を閉じている時に発生することも良く知られています。

セータ

4~8

深いリラクゼーション、妄想、意識レベルの低下、睡眠などに関連している脳波です。デイドリームや深い瞑想時などに起こりやすいと言われています。

デルタ

0.5~4

睡眠に関連している脳波ですが、特に深い睡眠(夢を見ない睡眠など)に関連していると言われています。 

EMGウィジェット

この「EMG」ウィジェットは筋肉の緊張とリラックスの状態を可視化するものです。筋肉がリラックスしている時は0、そして緊張している時は1の値にマッピングされます。円の外枠は「快適な筋肉の状態」の上限値として表され 随時更新されます。四角形の棒グラフには 筋肉の緊張/リラックスの状態をマッピングされたデータが表示されます。

オプション

「EMG」ウィジェットの右上にある4つのドロップダウンメニューでオプション設定を調整することが可能です。

Smooth: こちらはデータブロックのウィンドウサイズを表します。この値を小さく(例えば0.01s)すると表示データに滑らかさはなくなりますがデータの応答速度は向上します。一方 この値を大きく(例えば2s)するとデータは滑らかになりますが データの応答速度は遅くなります。 

μV Limit: 集録データのカットオフ電圧を表しています。この数値を超える電圧はすべて切り捨てられて「μV Limit」の電圧値が適応されます。これにより様々な要因で発生する不規則なスパイク信号などでEMGデータを大きく歪めることを防ぎます。

Creep: これは円の外枠(上限値)がしぼむ速さを表します。この設定を調整することにより四角形の棒グラフに表示されるデータの反応速度が変わります。通常、クリープは遅く設定しておくことをお勧めします。クリープが速すぎると 棒グラフのデータが過敏に反応し過ぎる可能性があります。

Min ΔμV: この値は 上限値と下限値の差の大きさを表します。「Min ΔμV」が大きいと円の外枠は集録されたデータに関係なく大きいままとどまります。測定するデータの特徴に合わせて調整をして下さい。

Pulse Sensorウィジェット

 「Pulse Sensor」ウィジェットには脈拍波形以外に 脈拍間隔時間(Inter Beat Interval: IBI)と脈拍数(Pulse Rate: PR)が表示されます。PRは最新10パルスの移動平均が脈拍数(単位はBPM(Beat per Minute))として表示されます。またIBIは心拍測定時の心拍変動(Heart Rate VariabilityHRV)の代わりとして 睡眠段階、ストレス、疲労などの生体情報の指標として利用されることもあります。

Networkingウィジェット

「Networking」ウィジェットでは シリアル, UDPUser Datagram Protocol, OSCOpen Sound Control, LSLLab Streaming Layer)を経由してサードパーティーのソフトウェアにデータをストリーミングさせることが出来ます。様々なソフトウェアとの連携についてはこちらをご覧下さい。

ストリーミング出来るデータは「Time Series,FFT, EMG, Band Power,Accel/Aux,Pulse」などウィジェット上のデータです。「Accel/Aux」は「Accelerometer」、「Analog Read,Digital Read」のデータが送信出来ます。ストリーミングをする際は 送信するデータに対応するウィジェットを開いておいて下さい。ストリーミングデータのデータフォーマットの詳細はGUI Networking Guideをご覧下さい。

Serial

シリアル通信は 例えばOpenBCIArduinoなどOpenBCIと他のデバイスを通信させるのに便利です。 

Baud Rate: ビット/秒単位のデータ転送速度。これは、受信側で使われているBaud Rateに合わせる必要があります。

Port: 受信側のポート名。例えば“COM1”やArduinoの場合 シリアル番号の付いたUSBモデムの名前だったりします。

UDP

User Datagram Protocol (UDP)は ネットワーク上にあるデバイス間だけでなく同じコンピューター内にあるアプリケーション間(例:MATLABPythonなど)でも低レイテンシ&トラレンスで通信が可能です。このUDPでは最大3つの異なるデータをストリーミングすることが可能です。

LSL

Lab Streaming Layer (LSL)は脳波計やアイトラッカーなど生体信号系の測定器で多く使われている通信プロトコルです。LSLを使ってMATLABPythonへデータをストリーミングすることも出来ます。 MATLABのサンプルプログラムはこちらにございます。

  • FFTデータのストリーミングはOpenBCI GUI v4.2以降をお使い下さい。

各データに対して それに合ったチャンネル数を「# Chan」に入力して下さい。例えばデータが「Focus」の場合 アウトプットは1つしかないので「# Chan」は1になります。以下の画像は3つの違ったデータをPythonへストリーミングする場合のGUIの画面表示です。

OSC

Open Sound ControlOSC)は音楽やマルチメディアデバイスをネットワーク化する為の通信プロトコルのひとつです。OSCMaxMSPPureDataResolumeなどのアプリケーションで利用できます。