Scientific Journey

私の冒険記録。たまに回り道。

【Volunteerのススメ】SIGGRAPH2015のStudent Volunteer

SIGGRAPH Student Volunteer募集シーズンが過ぎてしまいましたが,
去年SIGGRAPHのStudent Volunteerに行ってきた事を書こうと思います。

SIGGRAPHとは? SIGGRAPHのStudent Volunteerとは?

SIGGRAPHの運営を手伝います。

募集シーズンについて

毎年、月日が違いますが、
SIGGRAPH Student Volunteerの募集は1月から2月の後半ぐらい、
volunteerのチームリーダは1月ぐらいだったと思います。
募集サイトのオープンが11月から12月なので、それくらいになったらチェックをしましょう。

応募に何が必要?

募集ページのApplication formをみて、何が必要なのか確認しましょう。
私が応募したときはこのような感じでした。
- エッセー
志望理由(250字)、人生の困難に対してどのように克服したか(250字)、
ストレスフルな状況下はどのような状況でどのように克服したか(250字)

- 推薦者のメールアドレス
指導教員やその他どなたでも大丈夫なので、推薦者に承認をいただきメールアドレスを
用意しましょう。
推薦者には以後、応募者の英語力や生活態度をスケールで評価するためのメールが届きます。

- 顔写真のデータ
顔写真のデータを用意しましょう。フォーマルなものでなくてもよかったような。

- 在学証明書(英語)または学生証のコピーデータ

どんな仕事をするの?

多岐にわたります。
Greeting ロビーで挨拶する人
Translator 通訳をする人
他にも、展示などで、説明をする人などやります。

メリットはあるの?

最先端の研究をタダで見れます。
世界中に友達ができます!
運命の研究者との出会いがあります。
そして、ティーポット!

強いて言うならデメリットは?

- 開催地までの渡航
SIGGRAPHの開催地は私の知っている限り、だいたいアメリカ本土かカナダなので、
そこまでの渡航費と滞在費(ホテル5日から1週間分)は何とかしなければならないです。
見積もって30万円から40万円ほど、でもちゃんと対処法もあります。

対処法としてFinance Assistanceを取ること、外部のvolunteer資金を獲得する事、SIGGRAPH Asiaに行くことがあります。

 - Finance Assistance
 Volunteer出願時にFinance Assistanceを受けるかどうかのフォームに入力をします。
 Finance Assistanceは審査があります。応募者は全員受け取れるとは限りません。
 またFinance Assistance出願時になぜ受け取りたいのかというエッセーを書きます。


 - 外部のvolunteer資金を獲得する事
 私が調べてみた限り外部のVolunteer資金はほとんどありませんでしたが、あれば応募してみてください。
 volunteerさんの中にはポスターも応募して、採択されて研究室の研究費で行ってきた方もいました。


 - SIGGRAPH Asia
 SIGGRAPH Asiaはだいたい、アジア圏でされるのでSIGGRAPHに行かず、Asiaの方でvolunteerするのも一つの手ですね!

ボランティアの採択通知がきたら

Facebookでstudent volunteerのページでいいねをして、コミュニティに加わりましょう。
不安なことがあれば、このページで適当に質問をすれば誰かしら答えてくれます!

その他ご質問等、コメント欄へどうぞ!

【PsychoPy】キーボード入力で画面に数字を表示する。

お久しぶりです。ええ、今回は心理学実験Buildingをしようという事で、
PsychoPyをぼちぼちいじっていきます。

内容

今回は実験全部という事ではなく、入力した数字を画面に表示させる処理を
PsychoPyのBuilder機能を使いまして、実装をします。

実行結果を先に見せるとこのような感じになります。
f:id:an-modoki:20160508210931j:plain:w100 f:id:an-modoki:20160508210925j:plain:w100 f:id:an-modoki:20160508210921j:plain:w100

数字の「1」「2」「3」「4」を入れるとその表示が出ます。

実装方法

- routine を作成。

中に以下のコンポ―ネントを次のプロパティ設定で入れます。

- keyboard component 1

start 0.0
stop duration 空欄
Force end of Routine チェック外す。
Allowed keys$ '1','2','3','4','q'

- code component

Begin Experiment

num = 0 

Each Frame

    if '1' in theseKeys:
        num = 1
    elif '2' in theseKeys:
        num= 2
    elif '3' in theseKeys:
        num= 3
    elif '4' in theseKeys:
        num= 4
- keyboard component 2

Allowed keys$ 'return'

- text component

stop 空白
Text $num

いかがでしたか。
次回は3ケタの数字入力とdelete機能を追加してみます。
それでは

【Processing+Arduino】加速度センサを傾けると音が鳴る。

加速度センサを傾けるとProcessing側で音が鳴ります。
傾けると何回も音が鳴っているので、改良しなければなりません....

回路図

Arduino側プログラム

//********************************
//加速度センサの値を取得するプログラム
//********************************
void setup()
{
// シリアルモニターの初期化をする
Serial.begin(9600) ;
}
void loop()
{
int i ;
long x,y,z;
//50回センサ値を読み込んで平均を算出
x=y=z=0;
for (i=0 ; i < 50 ; i++) {
x = x + analogRead(A0) ; // X軸
y = y + analogRead(A1) ; // Y軸
z = z + analogRead(A2) ; // Z軸
}
x = x / 50 ;
y = y / 50 ;
z = z / 50 ;
//int rotateX = (x-194)/0.72 - 90; //角度を求める式
int rotateX = (x-194)/0.72; //角度を求める式
//Serial.print(rotateX) ;
//Serial.print(" ") ;
//int rotateY = (y-338)/0.76 - 90;
//Serial.print(rotateY) ;
//Serial.println() ;
Serial.write('H');             // ヘッダの送信
Serial.write(highByte(rotateX)); // 上位バイトの送信
Serial.write(lowByte(rotateX));  // 下位バイトの送信
delay(50) ;
}


※ProcessingのソースコードのPdeファイルの場所にwavファイルを
格納してください。
・wavファイルはこちら(sound_file)のファイルの中身です!

Processing側プログラム

import ddf.minim.*;
import  processing.serial.*;

Minim minim;
AudioSample roller;
AudioSample foot;

Serial  serial;

void setup() {
  serial = new Serial( this, Serial.list()[0], 9600 );
  minim = new Minim(this);
  roller = minim.loadSample("roller.wav", 2048);
  foot = minim.loadSample("foot.wav", 2048); 
}

void draw() {
}

void serialEvent(Serial port) {  
  if ( port.available() >= 3 ) {  // ヘッダ + 上位バイト + 下位バイト で合計3バイト
    if ( port.read() == 'H' ) {  // ヘッダ文字を見つけたところから読み取る
      int high = port.read();   // 上位バイト読み込み
      int low = port.read();    // 下位バイト読み込み
      int recv_data = high*256 + low;  // 上位・下位を合体させる
      println(recv_data);  // 結果の表示
      if(recv_data> 100){roller.trigger();}
      if(recv_data< 80){foot.trigger();}
    }
  }
}
//void keyPressed() {
//  if (key == 'k') roller.trigger();
//  if (key == 's') foot.trigger();
//}

void stop() {
 roller.close();
 foot.close();
 minim.stop();

 super.stop();
}

【補足】Processingソースコード改良しました。

※傾けると1回WAVファイルが再生されます。
もう一度、水平にして傾けるとまたWAVファイルが再生されます。

import ddf.minim.*;
import  processing.serial.*;

Minim minim;
AudioSample roller;
AudioSample foot;

Serial  serial;

int Flag = 0;
int Flag2 = 0;

void setup() {
  serial = new Serial( this, Serial.list()[0], 9600 );
  minim = new Minim(this);
  roller = minim.loadSample("roller.wav", 2048);
  foot = minim.loadSample("foot.wav", 2048); 
}

void draw() {
}

void serialEvent(Serial port) {  
  if ( port.available() >= 3 ) {  // ヘッダ + 上位バイト + 下位バイト で合計3バイト
    if ( port.read() == 'H' ) {  // ヘッダ文字を見つけたところから読み取る
      int high = port.read();   // 上位バイト読み込み
      int low = port.read();    // 下位バイト読み込み
      int recv_data = high*256 + low;  // 上位・下位を合体させる
      println(recv_data);  // 結果の表示
      if(recv_data> 100){
        if(Flag == 0){Flag = 1;}
        if(Flag == 1){roller.trigger(); Flag = 2;}
      }
      if(recv_data< 80){
        if(Flag == 0){Flag = 1;}
        if(Flag == 1){foot.trigger(); Flag = 2;}
      }
      if(recv_data >= 80 && recv_data <= 100){
        Flag = 0;
      }  
    }
  }
}
//void keyPressed() {
//  if (key == 'k') roller.trigger();
//  if (key == 's') foot.trigger();
//}

void stop() {
 roller.close();
 foot.close();
 minim.stop();

 super.stop();
}

【Processing】音声ファイルを再生する。

下準備

- Processingにminimをインポートします。

ツールバー→スケッチ→ライブラリをインポート→ライブラリを追加
→検索欄に「minim」をいれ検索する。
→Minim|An audio library....... と書いてあるところのライブラリをインストールする。

- WAVファイルを用意します。

 ・sound_file …roller.wavとfoot.wavが入っています。
 Processingソースコード、pdeファイルのところにdataフォルダを作り、
 中にroller.wavとfoot.wavをいれる。

Processingのソースコード

import ddf.minim.*;

Minim minim;
AudioSample roller;
AudioSample foot;

void setup() {
  minim = new Minim(this);
  roller = minim.loadSample("roller.wav", 2048);
  foot = minim.loadSample("foot.wav", 2048);
}

void draw() {
}

void keyPressed() {
  if (key == 'k') roller.trigger();
  if (key == 's') foot.trigger();
}

void stop() {
  roller.close();
  foot.close();
  minim.stop();

  super.stop();
}

【Arduino】加速度センサの値をProcessingに送る(1軸)

用意したもの

Arduino側プログラム

//********************************
//加速度センサの値を取得するプログラム
//********************************
void setup()
{
// シリアルモニターの初期化をする
Serial.begin(9600) ;
}
void loop()
{
int i ;
long x,y,z;
//50回センサ値を読み込んで平均を算出
x=y=z=0;
for (i=0 ; i < 50 ; i++) {
x = x + analogRead(A0) ; // X軸
y = y + analogRead(A1) ; // Y軸
z = z + analogRead(A2) ; // Z軸
}
x = x / 50 ;
y = y / 50 ;
z = z / 50 ;
//int rotateX = (x-194)/0.72 - 90; //角度を求める式
int rotateX = (x-194)/0.72; //角度を求める式
//Serial.print(rotateX) ;
//Serial.print(" ") ;
//int rotateY = (y-338)/0.76 - 90;
//Serial.print(rotateY) ;
//Serial.println() ;
Serial.write('H');             // ヘッダの送信
Serial.write(highByte(rotateX)); // 上位バイトの送信
Serial.write(lowByte(rotateX));  // 下位バイトの送信
delay(50) ;
}

Processing側プログラム

import  processing.serial.*;

Serial  serial;

void setup() {  
  size(400, 250);
  serial = new Serial( this, Serial.list()[0], 9600 );
}

void draw() {
  background(10);
}

void serialEvent(Serial port) {  
  if ( port.available() >= 3 ) {  // ヘッダ + 上位バイト + 下位バイト で合計3バイト
    if ( port.read() == 'H' ) {  // ヘッダ文字を見つけたところから読み取る
      int high = port.read();   // 上位バイト読み込み
      int low = port.read();    // 下位バイト読み込み
      int recv_data = high*256 + low;  // 上位・下位を合体させる
      println(recv_data);  // 結果の表示
    }
  }
}

【勉強会ノート】IDCFクラウドのサーバに温湿度・気圧センサーの値を送ってみた。

本エントリーは忘備録のために書きました。

OS環境はWindows8.1用です。

また、2016年サバフェスハンズで行ったことをまとめました。

 

[目次]

  1. 用意するもの
  2. 下準備(環境設定・サーバー構築)
  3. サーバにセンサ情報をアップロード

 

1. 用意するもの

  • WifiのつながるPC
  • ESP-WR00M-02(wifiモジュール)
  • 温湿度気圧センサー(BME280)
  • USBケーブル (PC-ESP接続)
  • 抵抗(10kΩ)ー茶黒オレンジ
  • ブレッドボード
  • ジャンパーピン

2. 下準備

下準備では以下のことをやります。

  • TeraTermのインストール→ver4.82を使いましたが、最新版でも問題ありません。
  • Arduino IDE(開発環境)のインストール→ver1.67を使用しました。
  • Arduino必要なライブラリのインストール(MQTTクライアント+JSON)
  1. Arduino IDE(開発環境)のインストール
    以下のWebページにインストール手順がわかりやすく書いてあります。

    Arduino IDE開発環境(ESP-WROOM-02開発ボード編) - Qiita

 補足)上記URLに書いてありますが、
 ESP8266ボードをArduinoIDEでマイコンボードとして選択できるようにします。

 2.Arduino必要なライブラリのインストール(MQTTクライアント+JSON)

  • スケッチ→ライブラリをインクルード→ライブラリ管理を選択
  • Filter your searchにで次のキーワードを入れる(ひとつづつね!)
    ・PubSubClient
    ・ArduinoJson
  • 該当するライブラリの枠内をクリックして最新版をインストールする。

 3.仮想サーバの構築
(IDCFクラウドのアカウント取得+仮想マシン起動+IPアドレス設定)

3.サーバにセンサ情報をアップロード

  1. 配線
    以下のように配線を行います。
    今度ちゃんとした回路図書きます(^^;;;)

    f:id:an-modoki:20160319225313j:plain

     

  2. Arduino側プログラム
    sndbme280.inoを使用する。
    Arduino側のプログラムの中で、
    // Wi-Fi APのSSID/Password
    const char *ssid = "xxxxxxxxxx";
    const char *password = "xxxxxxxx";
    // Server環境に関する設定
    const char *server = "xxx.xxx.xxx.xxx";
    がありますが、この部分は以下の条件の場合
  3. 以下のように書き換えてください。
    条件)PCがつないでいるwifi名→pekepeke
       PCがつないでいるwifi(pekepeke)のPassword→12345
       IDCFクラウドIPアドレス→123.123.123.123
    書換え後)
    // Wi-Fi APのSSID/Password
    const char *ssid = "pekepeke";
    const char *password = "12345";
    // Server環境に関する設定
    const char *server = "123.123.123.123";
    書き換えたらプログラムをESP-WPOOM-02に書き込みます。
  4. プログラムをESP-WPOOM-02に書き込み
    ArduinoIDEにおいて設定
    ツールツールの中で以下をESP-WPOOM-02に設定。
    項目初期値変更値
    Flash Mode DIO QIO
    Flash Frequency 40MHz 同左
    Upload Using Serial 同左
    CPU Frequency 80MHz 同左
    Flash Size 512K(64K SPIFFS) 4M(3M SPIFFS)
    Debug port Disabled 同左
    Debug Level None 同左
    Reset Method ck nodemcu
    Upload Speed 9600 115200
    port --- 開発ボードのCOM番号

    ※Upload Speedは、512000でも大丈夫のようだ。

  5. SSHリモートログイン(TeraTarm起動)+NodeRED起動
    TeraTermを起動してSSHリモートログインをします。
     ・[新しい接続]にて
      ・ホスト→IDCFクラウドIPアドレス
      ・サービス→SSHを選択。
     以上を設定してOKを押します。
     ・[SSH認証]にて
      ・ユーザ名(N):→root
           ・パスフレーズ(P):→root
           ・RSA/DSA/EDCSA鍵を使うを選択
       秘密鍵をクリックしてSSH Key:作成して
       ダウンロードしたものを選択(ディレクトリ入力)
    ・以上設定して、ログインできたら
       node-red
    と入力してNode-REDを起動します。

    ◎Node‐RED を起動する。
    ブラウザ(googleChromeIEなど)
     ・http://xxx.xxx.xxx.xxx:1880/
           xxx.xxx.xxx.xxx→IDCFクラウドIPアドレス
  6. NodeRED
    ・NodeREDにて三本線メニューバー→import
    →Clipboadにて
    Node-RED用フロー(flow/node-red-bme280-floe.txt)
    の内容を貼り付けます。
    →OKボタンを押します。

    f:id:an-modoki:20160319221442p:plain


    ・NodeREDにてDeplayボタンを押します。

     

  7. 実行結果
    debubタブに情報が提示されればOKです。

 

触覚(tactile)の錯覚を探している。

世の中には、「世界錯覚コンテスト」なるものが存在するらしい。

それで、世界錯覚コンテストの審査員をされていた先生が、

ワークショップ開いて案を出し合おうぜみたいになった。

 

今回はワークショップに臨む前に、ひとつ予習をかねて

触覚の錯覚(※触覚はここでは頭に生えているほうではなくて触るほう)

について思い当たるものをまとめてみた。

 

触覚の錯覚

ラバーハンドイリュージョン

これはかなり、有名なのではないでしょうか。
以下、概要。

ラバーハンドイリュージョン 1998 Botvinick & Cohen

  • 被験者は椅子に座り、片腕を机の上におく。被験者自身の腕が被験者から見えないように衝立で隠し、被験者の前にゴム製の手のおもちゃを本物の腕と並行に置く。そして、実験者が本物の手と偽物の手を同期して筆で触る。たったこれだけの作業で、被験者は偽物の手がまるであたかも本人自身の手のように感じるようになってしまった。

 ベルベットハンドイリュージョン

テニスやバドミントンのラケットを手にしたときに気づいた人がいるかもしれない。

ベルベットハンドイリュージョンは、金網または硬い網を両方の手のひらではさみ、両手ごと動かすと、表現しようのないやわらかい感覚を得られる。

f:id:an-modoki:20160307162801p:plain

画像は(http://www.psych.or.jp/meeting/proceedings/75/contens/poster/pdf/2AM085.pdf)から引用しました。

Fishbone tactile illusion

f:id:an-modoki:20160307163247p:plain

これは、背景に比べて出っ張っている魚の骨があります。

魚の骨の中心を指でなぞるとへこんでいるように感じられる錯覚です。

本当は背景よりも魚の骨のほうが出っ張っているのに不思議ですね。

くしの錯覚

f:id:an-modoki:20160307210036j:plain

旅行や出張で泊まったホテル、旅館においてあるくしを図のように触ってみるとくしの先端が
実際は横に触れているのに縦に動いているように感じられます。

視覚効果と触覚

どんな学術的名前がついているのかはわからないが、
最近はこのようなものにも触覚の錯覚が取り入られている。

安室奈美恵のGolden TouchのMV

安室奈美恵 / 「Golden Touch」 (from New Album「_genic」) - YouTube

動画に指を置いているとなんだか自分は画面越しにいろんなものを触っているような

感覚になってしまう。

動きがあって面白い。

 

「指を置く」

以前に多感覚シンポだっけ(?)にいって話を聞いてきた。

人は触覚、経験の蓄積によってどのようなもののさわり心地かをある程度感じているらしい。

この「指を置く」は一枚の絵の上に自分の人差し指や手を置いてみる。

すると、あたかも自分の指が絵の中に書いてある絵に作用しているようなそんな

感覚が得られる。

触っているような感じもきそうな感じだ。

www.amazon.co.jp

音と触覚

手のすりすり

f:id:an-modoki:20160307211249j:plain

マイクの前で手をこすりつけて、ヘッドホンで、

手のすりすりの音を手と手が擦れた音ではなく、

金属と金属が擦れた音のような音を聞くと

手と手が違う素材になっているような感じがする。

触れ方と触覚

2本の指で触れると.........?

これにも錯覚の名前がついていないorしらない。

まず、人差し指、中指、薬指があって、人差し指、薬指の2本で

冷たい場所を触って、中指は温度の違うところにおいてみる。

すると、その真ん中の中指がなぜか人差し指、薬指と同じように
冷たいように感じられる。

 

この本でもかなり錯覚のことについても触れているので、ぜひ読んでみてください。

www.amazon.co.jp