読者です 読者をやめる 読者になる 読者になる

研究 / 論文のググり方

survey

※この記事は早稲田大学橋田研究室の勉強会用に作成したものです。

色々と自己流でやっている研究/論文のググり方について書きます

とりあえずググる

まずは軽い気持ちで調べてみる

検索ワードとしては、

  • 「キーワード」で画像/動画検索
  • 「キーワード + 研究/論文」
  • 「キーワード1 + キーワード2」
  • 「キーワード + 学会名(CHI, UIST, SIGGRAPH, …)」
  • 「学会名 + 年度」

などが多い

キーワードとしては気になるものだったら何でも良いのだけど、研究分野とか技術名とか入れることが多い
「テレイグジスタンス」「tangible user interface」「クロスモーダル」「視線検出」「フォグディスプレイ」「電気味覚」「可視光通信」とかとか、、

  • 日本語だと出てこないが英語だと出ることが結構ある(世界は広い)
    • 英語で検索するときは画像検索がわかりやすい
  • 研究/論文以外にも、おもしろい画像・動画・記事が出てくることもある

論文データベースからググる

よく使うサイトたち

基本学内アクセスからしか参照できないが、早稲田の学外アクセスからログインすることで家からでも見れる

まとめサイトからググる

その他のまとめサイトとして

などがある。ぜひ見ておいてほしい

学会のwebからググる

  • 学会のwebページに行くと、Best PaperなどのAwardの情報がどこかにある

    • なんとなくその学会について調べたり、そこで賞をとった論文(アイデア・実装・評価がどれも良くできている)がどんなものか見れる
  • また、ACMのyoutubeチャンネルでは各学会での発表動画や各研究の紹介動画がまとめてあってここをざっと見るのもオススメ

研究者のページからググる

  • ほとんどの研究室のwebには「Publications」とか「研究実績」という項目がある
  • この研究室がどんな論文をどんな学会に出しているかがわかる
  • そこを辿ったりすると、過去の似た研究などを見つけられることもある
    • pdfのリンクがないときは論文名でググったりする

論文のリファレンスから飛ぶ

  • 論文の「References」に掲載されている関連研究を調べる
  • ACM DLでは参照した研究リストの「References」と、参照された研究の「Cited By」という項目があり、だいたいリンクが貼ってあるのでとても便利

関連動画から飛ぶ

  • youtube / vimeoの関連動画から似たものがでてくるので、それを見てみたりもする

論文を見つけたら

とりあえず読む、だらだら読まずに章ごとや時間制限をつけてガッと読むのがオススメ

調べ終わったら

サーベイをし終わったら、そのままにせず論文を読んだり、メモorスライド等にまとめたりする

  • すぐ忘れてしまうため、備忘録として
    • 時間がない場合は、最悪URLのリンクをまとめるのも可
  • 各研究をまとめることで、その研究でやっていること/やっていないことが明確になる
    • ここのやられていない部分を探していくことで、自分の研究の新規性につながる

論文の読み方、まとめ方については落合さんのこのスライドが大変参考になる

MacにpyenvでPython3をインストールする

Python

すでに色々記事がありますがちょっとつまずいたのでメモ。

環境

MacOS 10.12.3

pyenvを入れる

Pythonのバージョンを切り替えるためにpyenvを導入します
Homebrewでインストールします

brew install pyenv

パスを設定する

export PYENV_ROOT="${HOME}/.pyenv"
export PATH="${PYENV_ROOT}/bin:$PATH"
eval "$(pyenv init -)"

.bash_profileが無い場合は作る

ここでつまずいた。 この後設定した項目を.bash_profileファイルに適用させるがそもそもホームディレクトリにこのファイルがなかった。なので無い場合は自分で作る

touch .bash_profile

パスを適用する

.bash_profileファイルに先ほど設定したパスを適用させます

source .bash_profile

Pythonをインストールする

インストールできるバージョンを確認

pyenv install --list

ここでは3.5.0をインストール

pyenv install 3.5.0

バージョンを切り替える

pyenv global 3.5.0
pyenv rehash

切り替わったか確認

pyenv versions

3.5.0の方に*がついていればOK

自分の環境では以上で無事にPython3.5.0がインストールされました。

【追記】それでも切り替わらない場合

.bash_profileにパスを書き込めてない可能性がある。その場合、ファイルを開いてパスを直接書き込んで保存すると直った。

参考にしたサイト

【備考】matplotlib.pyplotを使おうとするとエラーが出る

RuntimeError: Python is not installed as a framework.的なエラーが出て困ったが、以下の記事をそのまま試してみたら解決した(Sierraの人は記事のコメントも見ておいた方が良いかもしれない)

テスターの使い方

電子工作

テスターとは

テスターとは、

  • 回路の導通チェック
  • 電圧計測
  • 電流計測
  • 抵抗計測

などができるとても便利な計測機です。

回路設計や作製した回路の確認の際に必要不可欠なので、使い方をぜひ覚えましょう。
(※ 間違った使い方をすると簡単に壊れるのでそれを防ぐためにも覚えてください!)

橋田研には現在2種類のテスターがあります。

  • Sanwa CD772
    大きい方のテスター。計測できるレンジが大きいので便利。温度も測れたりする。
    端子を差す箇所がいくつかあるので注意。(ここ間違えると壊れます)
    (ここだけの話、既にmA, uAの計測部分が壊れています)
    以降では、こちらのテスターを用いて解説していきます。
    操作マニュアルのpdfはこちら

  • Sanwa PM3
    小さい方のテスター。小型なので簡単に済ませたいときにオススメ。
    なお、こちらは電流は測れないので注意。
    操作マニュアルのpdfはこちら

Sanwa(三和電気計器) デジタルマルチメーター PM-3

Sanwa(三和電気計器) デジタルマルチメーター PM-3

実際マニュアル見てその通りにやれば問題ないのですが、簡単に紹介します

使い方①:導通チェック

導通チェックとは、回路にちゃんと電気が流れるかどうかを確認することです。
回路を作り終えたら、実際に電流を流す前にちゃんと導通チェックすることが重要です。
(チェックせずに動作させると、もしミスがあった場合回路が壊れてしまいます)

やり方は以下の通りです。

  1. 画像のように端子を差し(左側の+に赤、COMに黒)、ダイヤルを「Ω/../..」に合わせる
    f:id:genkitoyama:20161215005651j:plain

  2. SELECTボタンを2回押し、導通チェックモードにする(画面にブザーのアイコンが出ればOK) f:id:genkitoyama:20161215005803j:plain

  3. +と-の端子を直接接触させ、ピー音が出るかを確認する(音が出れば導通している) f:id:genkitoyama:20161215005931j:plain

  4. 計測したいところに各端子を当てる。
    ピー音が鳴れば導通しているし、鳴らなければ導通していないのでわかりやすい。(ここでは+と-の向きは関係ない)

使い方②:電圧計測

p
中学校の復習ですが、電圧計は並列に繋ぎます
電圧(の差)を測るので、両端で電圧降下があるように挟みましょう
(何もないところに挟んでもほぼ0Vのまま)

以下使い方です

  1. ダイヤルを「V」に合わせる
    f:id:genkitoyama:20161215051047j:plain

  2. 両端子を接触させ、0Vに初期化する f:id:genkitoyama:20161215051232j:plain

  3. 計測したい部分に並列につなぐ

ちなみに、小さい方のテスターでは、直流電圧を計測する場合には「DCV」、交流の場合は「ACV」を選択するようにしてください(大きい方は自動で判別してくれます)

使い方③:電流計測

p
またまた中学校の復習ですが、電流計は直列に繋ぎます
回路の一部に組み込むので、こちらは何もないところに繋ぎます
また、電流計の場合は流れる電流の値によって計測するレンジを自分で決める必要があります

  1. 右側の上の+(A)に赤の端子を差し込む(COMに黒はそのまま)
    計測する電流がA単位であれば右上、mA, uA単位ならば右下のジャックに差し込む
    (現在右下のジャックは壊れていて使えない、、)
    注意:右側の2つの差し込み口に赤と黒をつけない(温度計の+と-の表示があってややこしいが、どんなときも黒はCOMに差す)
    f:id:genkitoyama:20161215052237j:plain

  2. ダイヤルを「A」(右下に差した場合は「mA」or「uA」)に合わせる

  3. 計測したい回路に直列につなぐ

使い方④:抵抗計測

そこまで使わないかもですが、抵抗の値を計測することもできます
レンジは自動で判断してくれます

  1. 左側の+に赤、COMに黒を差し込み、ダイヤルを「Ω/../..」に合わせる f:id:genkitoyama:20161215053449j:plain

  2. 計測したい抵抗に並列につなぐ
    注意:このとき電圧をかけてはいけない


簡単ですがこんな感じでまとめてみました
テスターはとても便利ですが、扱いに気をつけつつ使っていきましょう

この他にもテスターには様々な機能がありますが、それはまた次回に

arduinoでトランジスタ入門

電子工作 arduino

研究室にある「わかる!電子工作の基本100」「電子工作の素」の内容をベースに解説していきます

わかる!電子工作の基本100

わかる!電子工作の基本100

作る・できる/基礎入門 電子工作の素

作る・できる/基礎入門 電子工作の素

目的

  • arduinoから流せる電流よりも大きい電流・電圧が必要なものを制御する
    • DCファン、電磁石、リレー、ペルチェ素子など
    • arduino UNOのデジタルI/Oピンからは20mA程度の電気が流れる
      • 40mA以上流すと壊れる
  • トランジスタやFETを用いて流せる電流を「増幅」する
    • 小さい電流を(文字通り)増幅して大きくする
    • 小さい電流を制御して大きな電流を制御する  ⭕️
      • 結果として流せる電流は増える = 「増幅」
  • トランジスタ/FET は言わば電子的なスイッチのようなもの
    • スイッチのON/OFFをarduinoから制御できる!

トランジスタ

p p

  • 平らな面を正面にして、左から エミッタ(E)、コレクタ(C)、ベース(B)と呼ぶ
    • 「エクボ (E, C, B)」と覚えるとわかりやすい
    • ごくたまに例外があるので注意
  • ベースに少量の電流を流すことで、コレクタ-エミッタ間に大きな電流を流すことができる
    • ほぼ比例の関係
  • NPN型とPNP型
    • 半導体のパターンの違いで、流れる電流の向きが異なる
    • 通常はNPN型を良く使う(2SC1825等)

p

2SC1815-GR

今回は最もポピュラーな2SC1815のGRクラスを用いて解説していきます。

データシートはこちら
その際に特に確認してほしいパラメータが以下です

  • コレクタ-エミッタ間電圧 Vceo
    • 最大で何Vまで使って良いか
    • 実際にはこれの1/2以下の電圧で使う
  • コレクタ電流 Ic
    • 最大で何mAまで流して良いか
    • これも実際は1/2以下の範囲で使う
  • 直流電流増幅率 hFE
    • 何倍まで増幅できるか

実際にデータシートを見ると

  • Vceo: 50[V]
  • Ic: 150[mA]
  • hFE: 200~400(ここでは200とする)

とあるのがわかります

回路設計

トランジスタのドライブ回路はだいたい以下のように組みます
p

その際の重要なポイントが3点あって、

  1. 電流制限用の抵抗R1を入れる
    ONした際にベースに電流が流れ過ぎないように抵抗を入れます
    ここの抵抗値を変えることによって、トランジスタで増幅する電流を変えることができる(詳しくは「電子工作の素 p154~」)

  2. 出力の安定化のために抵抗R2をはさむ
    マイコントランジスタを用いる場合、電源ON直後にはトランジスタがONでもOFFでもない不安定な状態になることがあります。これを防ぐために、ベースからGNDに逃がす用に抵抗を入れます
    基本的には R1≦R2 となるようにするが、だいたい10kΩくらいでよい

  3. コイルを使う場合には逆起電力対策のダイオードを入れる
    モータやリレーなどのコイルを扱うときには、逆起電力に注意する必要があります
    これは電源ON→OFF時に逆向きの高い電圧が発生してしまい、トランジスタが壊れる可能性があります
    その対策として、コイルの両端に整流用ダイオードを並列につなぎます

p

実習

トランジスタを使ってLチカしてみましょう
【追記】回路に間違いがあったので修正しました(12/21) f:id:genkitoyama:20161221233606p:plain

arduino側は、exampleのblinkを書き込んでおきましょう

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

macのoFでkinect v2 (Xbox one)を使う

openFrameworks

同じような記事がめっちゃありますが備忘録的に。

■ 使うaddon

■ 手順

① projectGeneratorにこれらのaddonをぶっこんでGenerate

② できたプロジェクトのBuild Phases > Linked Frameworks and Librariesに以下を追加する

  • OpenCL.framework
  • usb-1.0.0-superspeed.a from ofxMultiKinectV2/libs/libusb/lib/osx
  • libturbojpeg.dylib from ofxTurboJpeg/libs/turbo-jpeg/lib/osx

③ 同様にプロジェクトのBuild Phases > Copy Filesに以下を追加して、TargetをFrameworkにする

  • libturbojpeg.dylib

④ もし実行時に
ld: library not found for -lturbojpeg
的なエラーが出たら、Build Settings > Search Paths > Library Search Pathsに以下を追加してパスを通す
../../../addons/ofxTurboJpeg/libs/turbo-jpeg/lib/osx

こんな感じでとても簡単に使うことができます。

■ ちなみに
この手順では、

  • 各カメラ(color, depth, IR)の画像
  • depthの値

などを取得することができますが、SDKが入っているわけではないので

  • 人のbone
  • 手の形状(グー、パー等)

の取得はできません。その場合は素直にwindowsで開発しましょう。

ofxGuiで設定した値がsave/loadできないときの対処法

openFrameworks

この場合のだいたいの原因は設定した変数名にあります。

ofxGuiで設定した変数はxmlで管理しているので、変数名に

  • ハイフン -
  • コロン :

などの記号を入れてしまうと、xmlで置き換えた際に別の意味に取られてしまうのでうまく記録できない、というオチでした。

素直にキャメルケースで書くのが無難ですね。