RM141129

・サンプリングレートについて
プログラム中のwaitによって決まります。単位はmsです。

・GOOD/BADの判定について
緑の丸に入ったらGOODとなります。

・データのセーブ
ちゃんとできているようです。

・ブロックの管理方法
プログラムの冒頭でtrialによって試行数を指定し、達すると終了するようにしました。

・ゴール位置のランダム化
シーケンスを作成し、順序を入れ替える方式に改めました・・・。
同じ位置に連続して出てしまう点はまだ改められておりません(すいません)。

・その他
プログラム冒頭で様々な設定値を変えられるようにしました。
boolean cursor=true; カーソルの表示非表示
float rotd=15; 回転角度
int targetSize=100; ターゲットの大きさ
int wait=20; データ保存の間隔
int trial=16; 試行数
int wait1=1000; 反応終了時からGOOD表示までの時間
int wait2=2000; 反応終了時から軌跡表示までの時間

とりあえず今日のところはここまでとさせてください。

ファイル:RMove

圧縮ファイル中のRM3を使用してください。

RM141012

(1)軌跡データが出力されるように、(2)Arduinoがなくても動作するように、修正しました。
プログラム:RMove
(RM1をProcessingで実行してください)

g2

実行するたびに、軌跡のxy座標がcsvで保存されます。3本ほどまとめてエクセルで散布図を描いてみました。ターゲットがランダムなので全方向描くのに手間がいりそうですが。

g1

エクセルファイル:sample

何枚かキャプチャ画像ものせておきます。

4 1 2 3

 

RM141010

少し修正しました。ゴールに到達したら、Arduinoからトリガが出ます。トリガが出たら赤ランプが光るようになっています。また、ゴールに到達してから2秒後に軌跡がでるようにプログラムを修正しました。
ProcessingとArduinoの間はシリアル通信で接続されているので、遅延なしというわけにはいきません。検証してみないとわかりませんが、あまり遅延が気になるようであれば、ディスプレイにフォトダイオードを貼り付けて、トリガにすればよろしいかと思われます。動作画面を貼り付けて起きます。

プログラム:RMove

RM1(Processing側)とRMA1(Arduino側)が必要です。Arduinoと通信するので、Arduino側を動かさないとProcessing側も動かないかもしれません。

刺激呈示プログラム/Processing

マウスカーソルの位置に比べ、赤いカーソルの位置が時計回りに30°回転して表示されるプログラム。画面キャプチャ時に、マウスカーソルが消え失せましたが、実際はマウスカーソルも同時に表示されます。

rotated

以下、プログラムです。・・・いろいろ難所があり、予想以上に長くなってしまいました。rotation moveのあたりで、カーソル位置の回転変換を行っています。d=30の値を変えれば、回転角度を変えられます(単位は「度」、回転方向は時計回りです)。ちなみに、//norcursor;の//を除去してやると、カーソルを非表示にすることができます。

pro

プログラム:rotatedMove

processingの開発環境はフリーです。インストール方法は、こちらをご覧ください。rotatedMoveのフォルダの中の、rotatedMove.pdeを開発環境のショートカットにドラッグアンドドロップすればプログラムが開きます。開発環境の▶ボタンで、実行できます。(たぶんそのままで動きますが、実行マシンにjavaがインストールされている必要があるかもしれません。)

3Dプリントに必要なもの

我々も何かとお世話になっている3Dプリンタ。ABSはプラットフォームから作成物が剥がれやすいのが悩ましいよね。そこで、必要なのがScotchマスキングテープ50mm幅と、固形アラビックヤマトのり。印刷がはじまる前に、アラビックヤマトのりをヌリヌリしておくと、あら不思議!なんとプラットフォームから剥がれないのでした。プラットフォームがのりで凸凹になるって?マスキングテープを定期的に張り替えれば良いのさ! 皆さん知ってました??・・ もっと早くに試せばよかった。。。

20140807-231024-83424231.jpg 20140807-231025-83425078.jpg

 

バイオフィードバック学会(6/28-29)

6/28~29、東邦大学医療センター大橋病院にて、第42回日本バイオフィードバック学会が開催されました。本学からは、平良・長野が口頭発表に参加してきました。平良さんは緊張している様子です↓
写真 1 (1)

今回の学会では、オープンソースで自作した皮膚温測定器で、マッサージ中の皮膚温を測った結果を報告しました。
開発の話:14BF_NAGANO_OPENVER
運用の話:14BF_TAIRA_openVer

こちらはシンポジウムの様子。脈波ランプも紹介されました。シンポジウムのテーマは、「バイオフィードバックの付加価値を探る」でした。オープンソースハードウェア・ソフトウェアを利用することで、バイオフィードバックをより身近にできないか?という内容の話をしました。
写真 4
シンポジウム:2014BFSympo_OpenVer

最後は、伏田くん、橋崎くん、平良さんで一緒に記念写真をとりました。
写真 3

emotivを使って脳波計測

少し前から当研究室に導入されたワイヤレス脳波計の「emotiv」。

IMG_20140325_161038955

卒論生が実験で用いたいということで、測って見ました。

IMG_20140325_150001419

装着は上の写真のように行います。
つまり、ただ頭にかぶせるだけで測れてしまいます!
実際には装着に少し慣れが必要で、適切な場所に電極が上手く接地させるコツを得とくしなければならないのですが、
Ag/AgCl電極を一本一本電極ノリで頭に付けていく作業を考えると、だいぶ簡易的に測定が出来るといえると思います。

実際の計測している画面は↓のようになります。

プレゼンテーション

14チャンネル分の波形が表示され、脳波を目で確認する事ができます。

emotive測ってみました

↑は開眼から閉眼を行ってもらった時の脳波の波形です。
目を閉じた途端にゆったりとした波形に変わっており、α波をとらえたものと思われます。

日頃は自律神経系指標を主に扱っている研究室ですが、
中枢神経系指標も取り入れることによって、新たな発見に繋がればと思います。

生体反応をランプの明るさに

生体反応を身近なものとして生活に取り込むことを目的として、様々な研究を進めています。その成果として、指先に伝わってくる心臓の拍動に応じて明滅の仕方が変わるランプを作成しました。まだ試作段階ですが、遠く離れた人の拍動を記録し、それを再生することでランプ越しに記録された人を感じることも可能となるかもしれません。Arduinoなどのオープンハードウェアを用いており、シェードの部分は3Dプリンタで作成しているため、自分好みのランプも作ることができます。また、赤・青・緑の3色が出せるLEDライトを使っているので、黄色や紫、ピンクなど多彩な色を表現することができます。

DaVinci32U-Arduinoピン変換表

いつも使うので、いいかげん使いやすいところに保存を・・・davinci2

いやダメだ・・・これだけだと、どれがSCLでどれがSDAかわからない。つまりI2Cでつなぐとき困る。

davinci

そう、これがないと困るね。ストリなのダビンチ説明書からです。

http://strawberry-linux.com/catalog/items?code=25005

EEPROM

ついでにEEPROMのマニュアルも載せておきます。

セラピューティックケア時の皮膚温変化

3/16~18にかけて、九州の太宰府にて、セラピューティックケアの秋吉理事長にご協力いただき、セラピューティックケア中の皮膚温の変化を測定してきました。会場は、太宰府の図書館にある公共スペースを用い、2日目は和室でした。ホワイトボードを間仕切りとして利用し、二名の施術者が同時にケアを実施し、本研究室で作成したArduinoベースの計測器により、皮膚温を測定しました。実験終了後は、施術を行ったケア協会の皆様、理事長とともに、皮膚温変化のグラフを見ながらディスカッションしました。

写真 2写真 1写真

写真 3写真 5写真 4

写真 1 (1)写真 3 (1)写真 5 (1)

研究交流会

明日(3/10)は、関西学院大学片山研究室との研究交流会。一日目は、双方の大学から、自己紹介・研究発表を行い、二日目はフィジカルコンピューティングで心電図をアンプを作成するWSを行います。

写真 1(1) 写真 2
WSも準備万端整いました。

写真 3 写真 4(1)
Arduinoも3Dプリンタも出番を待っています。

EmoTrig1

Emotiveにトリガを出すための装置をArduinoで作成しました。いちおう2chのトリガを入れられます。ch0,ch1両方2.5V以下の時はAをシリアルポートに出力します。ch0のみ2.5V以上の時はBを・・・という具合に、トリガの状態をA-Dの文字で出力します。ボーレートは9600bpsにしてあります。delayを入れて、100HzでAD変換値のチェックと文字送信を行うようにしています。ニッケル水素電池4本で、TTLのかわりに5V入れてみましたが、正しく動作しているようでした。
Trig1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int a0;
int a1;
String str;
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600); // baud rate of serial communication
}

void loop()
{
a0 = analogRead(0); //ADC 0ch
a1 = analogRead(1);

if(a0 if(a0>512 && a1<512){str="B";} //ch0=HIGH && ch1=LOW output B
if(a0512){str="C";}
if(a0>512 && a1>512){str="D";}

Serial.print(str);
Serial.println();

delay(10); //check AD voltage with 10ms interval
}

Arduino用プログラム→
EmoTrig1
Arduino1.0.5開発環境で動作チェックしました。

追記(131210):

その後実際に接続して確認したところ、トリガが出た瞬間と終わった瞬間だけ値を変更する仕様に変更する必要があった(現場において来ちゃいました・・・)&57600bpsしないとトリガを逃すことなどもわかりました。