Scientific Journey

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

【理系・研究室インターン(準備編)】米国の大学院の研究室にインターンに行く

f:id:an-modoki:20160613000949j:plain
本エントリは、アメリカの大学院の研究室へインターンに行く準備編として
忘備録として書きました。
まだ、確認を取らなければならない事項があります。

□ 行きたい研究室の先生に会う・もしくはEmailして研究室にインターンをしたい旨を話す。

□ 開始日、期間、研究内容を先生と相談(必要なら研究計画書をつくる。)
(Skypeや電話で相談する先生のアポどり用に時差を変換するサイト→http://www.jisakeisan.info/?y=2016&m=06&d=15&hh=23&mm=00&t1=jst&t2=pst)

奨学金をゲットする。

  • 大学生(院生も使えるかは要確認)
  • その他

上記で工面できなさそうであれば、国の教育ローンを使う手もある。(審査あり・留学資金として借りる)

□ VISAをとる。

  • 最低でも1ヶ月かかるらしいので、早めに準備(向こうの先生に書いてもらうものもある。)


□ Housing:寮またはマンスリーアパートなど、泊まる場所を決める。

□ 航空券をとる。

このような感じでしょうか。健闘を祈ります。

【触覚・触感】振動モータを触ってみた。

はじめにちょっと背景について、

語らせてください。

 

背景

振動子ってどこで手に入れるの!?
f:id:an-modoki:20160609175159j:plain
(写真はTECHTILE toolkit)
 
TECHTILE toolkitのデモを体験した後、
私は振動刺激で触感を提示する事に興味を持ちました。
*TECHTILEは主に、仲谷先生や筧先生達が主体になって、一般に触感技術を普及させる取り組みだそうで、HPにTECHTILE toolkitの作り方が載ってます。素晴らしい。
 
アンプは手に入る。
でも、振動子は入手困難だ。L-typeの振動子、DS振動カートリッジは廃盤になり、多くのデモはVp2が主流な感じである。
 
バイブロトランスデューサ Vp2シリーズ】
 
英語で書かれた、触覚グッツ専門店(?)の通販サイト
振動子を売っている会社があるけど、$200はちょっと高いよ。
 
このようなものもあった。
amazonで売っているバイブロトランスデューサ】
 
最近この様な発表にであった。
一般のDCモータを振動子にして使う方法。
 
そして、最近、秋月でリニア振動モータを手に入れた。
どの様な感覚なのか、ちょっと動かしたいと思います!
 

内容

リニア振動モータを試してみる。
 

実装

今回使ったもの
音声出力用
  • パソコン

はんだづけ

f:id:an-modoki:20160609174422j:plain f:id:an-modoki:20160609174400j:plain

左図のような感じでリニア振動モータと3mmジャックにはんだ付け

をしていきます。

リニア振動モータのはんだづけした部分は壊れにくくするために

エボキシを塗りましょう(右図)

 

エボキシは100均のものでいいです。

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

ブラシレスモータの方もはんだを付けていきます。

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

動かしてみる

ミニアンプ 

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

in側にパソコンにつないであるオーディオケーブルをつなげる。

out側にリニア振動モータをつなげる。

DC側にAC電源6V2Aをつなげる。

※電源はつないだ後に入れて、電源を外したあとに、

inとoutにつながているものを外しましょう。

パソコンの音声出力端子が壊れてしまうそうなので、

 

パソコンで、mp3やwavファイルの適当な音声ファイルを流します。

おお、リニア振動モータから、振動が出ています。

波の音を流しましたが、波な感じがしますね....。

感想

リニア振動モータを触った率直な感想を書いてみます。

  • 強度

すべて同じ指先で感じる場合だと

Vp2 >>> L type Force Reactor 振動子 >>>> リニア振動モータ

主観的にこのような感じでしょうか。

 

強度的には少し弱めです。

ボタンのクリック感とか、小さいので、小さいボタン

付けたりすると楽しいでしょうね。

手首につけてみましたが、少し振動が弱すぎる感じですかね。

 

手元に研究室ばりに機械があれば、どれくらいの周波数帯が

出るのか、計測してみたいところですね.......。

 

今度海外から、安いトランスデューサでも試してみたいと思います。

あ、そうそう、ブラシレス振動モータははんだをミスってしまった

のか動作しませんでした笑

追記

面白い記事です。

Apple Watchはリニア振動モータが内蔵されているんですね。

http://touchlab.jp/2015/04/ifixit_apple_watch_sport_teardown/

参考

以下、参考にして見てください。

*TECHTILEの活動について→http://www.techtile.org/

書籍等→https://www.amazon.co.jp/%E8%A7%A6%E6%A5%BD%E5%85%A5%E9%96%80-%E4%BB%B2%E8%B0%B7-%E6%AD%A3%E5%8F%B2/dp/4255009058?ie=UTF8&*Version*=1&*entries*=0

 

リニア振動モータを試されているかたいらっしゃいました。

http://blog.prototype-work.com/2015/12/%E3%83%AA%E3%83%8B%E3%82%A2%E6%8C%AF%E5%8B%95%E3%82%A2%E3%82%AF%E3%83%81%E3%83%A5%E3%82%A8%E3%83%BC%E3%82%BF%E3%82%92%E8%A9%A6%E3%81%99/

 

【Rasberry pi 2 B model】故障!?

最近、ラズパイを趣味でいじっております。(ハッカソンでもらった。)

そして、動かして4回くらいの再起動後、
動かなくなって、それから解決したので、報告します(=゚ω゚)ノ
 
症状と動作環境
・ラズパイをにラズビアンをインストール後、
アプリケーションを入れようと思って何度か再起動した。
・そのあと、緑と赤のランプがずっと光ったまま、画面が映らなくなった。
 
気が動転していたので、写真はないです。
 
使っていたもの
・Rasberry pi 2 B model
・SDカード(Transcend microSDHCカード 16GB Class10 )
・LANケーブル
・USBマウス
・キーボード
 
処置
私の場合SDカードに問題が発生してしまったそうです。
HDMIを他のモニタに差し込んでも解決されないので、
調べてみたら、SDカードで同じような症状になっている方が
いらっしゃいました。
 
そこで、スイッチサイエンスから出ている、
NOOBSインストール済みのSDカードを1000円で買いました。
それを入れると、なんと立ち上がりました。
....うむ。
まだ、ハックへの道は始まったばかりです。(休日おわた)

【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();
}