---
# System prepended metadata

title: ' Tobii X3-120 実験マニュアル '
tags: [vwp, ' manual']

---

---
robots: index, follow
breaks: false
tags: vwp, manual
title: Tobii X3-120 実験マニュアル
author: Takeshi KISHIYAMA
date: Jul 5, 2018
---

<center>
<h1> Tobii X3-120 実験マニュアル </h1>
</center>

# はじめに

Eye-trackingの実験手順を
[実験実施前](https://hackmd.io/s/SyocgCyzM#%E5%AE%9F%E9%A8%93%E5%AE%9F%E6%96%BD%E5%89%8D)と[実験実施時](https://hackmd.io/s/SyocgCyzM#%E5%AE%9F%E9%A8%93%E5%AE%9F%E6%96%BD%E6%99%82)、[実験実施後](https://hackmd.io/s/SyocgCyzM#%E5%AE%9F%E9%A8%93%E5%AE%9F%E6%96%BD%E5%BE%8C)に整理しました。
もしすでに実験ファイルが完成している場合は
実験実施前をスキップできます（もし実験ファイルを近場で調達できる場合、そちらをベースにした方が早いと思います）。
実験実施後・単にデータの整形や分析を知りたいだけの場合は
実験実施時をスキップして実験実施後の項に進めます。
被験者の動きをモニターする方法や
[トラブルシューティング](https://hackmd.io/3sPVq6pcQpOjn28da4hwWA#%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)は最後の補足に置きました。

# 実験実施前

実験実施前の項では
主にE-Primeの実験ファイルの説明をします[^psychopy]。
E-Primeで実験のサンプルを開くと
Experiment, SessionProc, BlockList, 
B1–B4, TargetProcと 深いネストがあり
最初見たとき困ったので各レベルでの説明をしています。
**もし実行可能なファイルがある場合はスキップできます。**

[^psychopy]: いつかPsychoPyに切り替わる時にいらなくなるかもしれませんが、資金的にもE-Primeが利用可能でかつ技術的な問題もない場合、導入コストとのトレードオフを考えると当分はE-Primeを利用させていただくことになると思います。

## 実験刺激作成

### 必要なもの

* すでに完成している実験ファイル
    * それを微調整していく。
* E-Primeのライセンスを保証するドングル
    * 小さいUSB
* 正しいバージョンのE-Prime
    * バージョンが古いとパッケージが動かなかったりそもそも実験を走らせられなかったりする。当面はVersion 2.0.10.353 を使います。

### 画像刺激

画像刺激を作成する際は以下のN点を考慮します。

1. 画像サイズとディスプレイサイズの調整
1. 画像フォーマットの確認
    1. 拡張子
    1. ビットの深さ
1. 各画像の配置

エラーは対処。
![](https://i.imgur.com/NmmO7DX.png)

たまに隠れて見えない。
![](https://i.imgur.com/PZL8tty.png)

新しくやると上手く行かない設定に出くわす。右が正解。

![](https://i.imgur.com/ekRo99G.png)


### 音声刺激

### 呈示リスト

* 正解を示したリスト
* ラテンスクエア
* 疑似乱数

![](https://i.imgur.com/b7DGCDI.png)


## E-Primeで実験を作成する

### Experiment

実験とハードウェア
ソフトウェアを結ぶインターフェースの設定をします。

* ダブルクリックでPropertiesを開きDevicesを開く
* ClearView と TobiiEyeTracker を確認
* TobiiEyeTrackerをクリックしIP Adressを確認
    * ここらへんは[公式のLearn&Supportの動画](https://www.tobiipro.com/product-listing/e-prime-extensions/#LearnSupport)を見る
    * TX120を使っていてもTX300のアドレスでOK（？？）
    * IP Adress: TX300-010102248611.local.

![](https://i.imgur.com/cOQWAko.png)
![](https://i.imgur.com/oaUiJSt.png)
![](https://i.imgur.com/q4zy9uY.png)

### SessionProc

Experimentの下のレベルで
パッケージを起動したり実験自体を実施したりしている。
実験の内容を調整したいときは
次に説明するBlockListを変更する。

1. CVInit
2. CVStartRecording
    * ClearViewを起動して録画を開始
3. Welcome
    * Welcomeメッセージを表示する
4. BlockList(Latin-squared)
    * BlockList内ではラテンスクエアしたリストを再
5. Goodbye
    * Goodbyeメッセージを表示
6. CVStopRecording
    * ClearViewを終了
7. CVUninit

![](https://i.imgur.com/ceZRhTm.png)

### BlockList

* ラテンスクエアした4つのリスト自体は
  B1--4という名前でそれぞれのProcedure
  (BlockProc1--4)の下に配置済
* 被験者ごとに再生するリストを変えたいが、
  仮に全てのリストをベタ置きすると全てのリストを
  再生してしまう
* そこで**BlockList**というテーブル内で、
  再生するProcedureをBlockProc1--4に分け、
  どれを再生するかをPropertyで設定

![](https://i.imgur.com/eUKZzxL.png)

#### BlockProc

* ProcedureのBlockProc1--BlockProc4をテーブルに定義している。
* どのBlockProcを再生するかは次のPropertyで設定可能

#### Property

* BlockProcの呈示を制御
* 指マークを選択してBlockListのProtertiesを表示
* SelectionタブからOrder byの設定をSubjectに設定する
    * 大事な割には設定の画面が小さくて見つけづらい
    * ここでsessionを選択すると全ての被験者に対して同じリストを回すことになる。

![](https://i.imgur.com/8DrnAuY.png)
![](https://i.imgur.com/wQIzSzM.png)

###  B1--B4

![](https://i.imgur.com/NCIgGK6.png)

* 再生するリスト
* ラテンスクエアしたり疑似ランダマイズした後のリストをそれぞれ配置
* このリストを上から順に実行し、Procedure列を参考にFillerProcとTargetProcを分けて実行
    * Fillerのデータまで録画するとデータが重くなるので分割している
* 各列の名前は下のスコープから参照可能

### TargetProc

![](https://i.imgur.com/jS3AMgN.png)

* CVSendLogEventStimulusStart と CVSendLogEventStimulusStart が大切
* それぞれがTargetProcの開始と終了を示し、データの切り抜き時に必要

![](https://i.imgur.com/MgnsIdr.png)

* さらにCVSendLogEventStimulusStartはそのトライアルの情報を持ちデータの分析時に必要
    * ダブルクリックでPropertiesを確認
    * 上のリスト（B1）の一行として実行された際にはその行の情報を保持しているため、[]内の文字列は上のリスト（B1）の列の値として参照できる。そのConditionなどの情報をLogとしてTobii側に送信
    * データが足りないと後でE-PrimeとTobiiのデータをbindせねばならない
    * Branching実験の設定では、下記の通り。
    * ```c, "SceneStart [ListNo] [trialno] [Condition] [Q2AOI1] [Q2AOI2] [Q2AOI3] [Q2AOI4] [PictureFile2]"```
    * この設定は、BrocProc直下のリスト（B1）の列に準拠
    * 必要だった列は、黒で塗りつぶされている列すべて（Condition--Q2AOI8）。実際に書き出し設定ができていた列は、その内の一部（Condition--Q2AOI4）。
    * `[Q2AOI1] [Q2AOI2] `は、画面においてどの絵が表示されたかを示している。fillerとTarget（TLB、DLB）に分かれて入っている 

![](https://i.imgur.com/EqBQmvb.png)

# 実験実施時

実験実施時の項では主に
必要な機材とそれら機材の配置、そして
Tobii Studioの実行について説明します。
普段からPCを複数台つなぐ人は少ないと思うので、
実施する場所に行く前に一度は確認します。
**もしデータを実施した後である場合や
単にデータの整形や分析を知りたい場合はスキップできます。**

## 機材を配置する

実際に繋ぐのは
Tobii, E-Prime, Eye-trackerの３つなのですが、
Eye-trackerからのデータをTobiiだけに処理させると
パフォーマンスが落ちるそうで、
EPUという小さいPCをEye-trackerとの間に接続します。
なので以下の４つをつなげます。
以下に示す図が完成図となります。まずはソフトのセットアップに関して説明し、次にハードの説明をし、最後につなぎ方を説明します。

images for setting up should be here.

1. Tobii
2. E-Prime
3. EPU
4. Eye-tracker

### Hardware

- [ ] Tobii PC(ALIENWARE)
- [ ] E-Prime PC (Dell precision m6600)
    - [ ] ドングル for E-Prime
- [x] Tobii Pro X3–120 Eye Tracker
- [x] Tobii pro External Processing Unit
- [x] スイッチングハブ（[BS-GU2016](http://www.buffalo-direct.com/directshop/products/detail.php?product_id=17806)）
- [x] 刺激呈示用Monitor ([Dell 23 Monitor(S シリーズモニター S2318H)](http://accessories.apj.dell.com/sna/productdetail.aspx?c=jp&cs=jpdhs1&l=ja&sku=210-ALMZ))
- [ ] 監視用モニター

### Cable

- [x] USB 3 ケーブル x1 (Tobii<->EPU)
- [ ] LAN ケーブル x3 (LD-C6FT/BK15) 
- [ ] HDMI ケーブル x1 (双方向)
- [ ] スイッチャー(KVM-HDHDU2)

### Others

- [ ] **Tobii固定用マグネット**
- [ ] **コンセント（outlet）**
    - [ ] EPU
    - [ ] Tobii PC
    - [ ] E-Prime PC
    - [ ] Hub
- [ ] 被験者用マウス＆キーボード
- [ ] 4ポートUSBハブ([U2H-SS4BBK](http://www2.elecom.co.jp/search/photo/search.asp?jancd=4953103238015))Alienwareがそれないときつい）

### Software

- [ ] Tobii Studio (on Tobii PC)
- [ ] E-Prime (on E-Prime PC)
- [ ] E-Prime extension for Tobii (on E-Prime PC)

## セットアップ

### ソフト

まず実験を行うためには以下のソフトが必要となります。

* E-Prime and E-Prime extension for Tobii (on E-Prime PC)
* Tobii Studio (on Tobii PC)

E-Prime の役割は、実験を実行することです。E-Prime extension for Tobii は E-Primeの中にある、Tobiiのための拡張パックのようなものです。その役割は、Tobiiに録画開始の信号を出したり、刺激の情報やアイテムの始まりと終わりの信号を出したりすることです。Tobii Studio は Tobiiからの眼球運動データを信号に基づき録画したり、そのデータを信号に基づき区切って分析できる形にする役割があります。

#### E-Prime and E-Prime extension for Tobii
E-prime を操作する PC（以下、e-prime PC）で実験用 e-prime ファイルを作成する

:snake: Filler と Target の Signal を分ける
（例：filler items と target items で e-prime 内で異なる Procedure を使う。例えば filler
items->FillerProc, target items->TrialProc に分ける。
 
:snake: [E-Prime® Extensions for Tobii Pro™のチュートリアル](https://www.tobiipro.com/ja/product-listing/e-prime-extensions/)を必ず見ましょう。E-Prime側のdevice設定で正しいIPを通さないとうまく実験が開始されません。

:snake: ping が通るかをまず確認しましょう。

### ハード

<!---
憎むべき車輪の再発明ですが、陳さんの作ってくださった図を基に、
https://www.draw.io
を使って再度票を作成します。
draw.ioでした作図をgithubに置き、それを
https://rawgit.com/
でアドレスを取得します。
-->

はじめにハードの全体像を簡単に説明します。

1. ハード
    * Eye Tracker (Tobii Pro X3–120)
    * Tobii PC (ALIENWARE 15 R3)
    * tobii pro External Processing Unit
    * 刺激呈示用 Monitor ([Dell 23 Monitor(S シリーズモニター S2318H)](http://accessories.apj.dell.com/sna/productdetail.aspx?c=jp&cs=jpdhs1&l=ja&sku=210-ALMZ))
    * E-Prime PC (Dell precision m6600)
    * マウス、キーボード、スピーカー

被験者に刺激を提示するモニターがあります。
そしてに実験を提示するPCがあります。
そして、PCから送られた実験を提示するモニタがあります。
このモニタにはアイトラッカーが取り付けられており、
アイトラッカーからの情報を保存するPCがあります。
ただ、アイトラッカーと情報を保存するPCの間には、
アイトラッカーの情報を処理する計算を代行してくれる小型PCもふくまれます。
以上をまとめると、以下のような図になります。

:snake: TobiiとEPUを繋ぐTobii側はUSB3.0ではなく別のタイプのUSBです。実際につなごうとすればわかります。

:snake: Tobiiを被験者用モニターに乗っけるためにはマグネットが必要です。これが結構粘着力が強く、また専用のマグネットであるため、忘れると設置ができず、設置すると二度と剥がせないと考えた方がよいかもしれません。（仮に剥がせる程度の接着力だと、実験中に落ちかねない）

setting including EPU should follow.

<!---
https://qiita.com/tomo_makes/items/da4e8fe7d8cf168b545f
http://flowchart.js.org/
https://rawgit.com/
https://twitter.com/drawio/status/604289150116892672
drawio を使いましょう。SVGで保存すればみんなハピー

rawgitがめちゃくちゃ強い。gitのファイルをサーバーにおいてるかのように扱える。
変換したURLを置くだけ。

PDFを参照した場合は、git においてから rawgit is fine.
when it comes to .svg or other, 
you might want to use gist.

最初にノードを定義し、
name=>type:node_name:link
name->name
のように->でフローを制御する。
しかもSVGで出力できる。
-->

簡単に言いましたが、PCをつなげるためにはハブやイーサネットを使う必要があります。
以上をまとめると、以下の図のようになります。

ハードの中のハブの説明時に各PCの接続法も説明します。
各機器の役割の説明を優先します。
インストールの仕方は最後にするか検討中です。
黄さんを対象読者とした場合、設定は全て終わっている前提で進めた方が良いかもしれません。

## Appendix

### ソフトとハードの Prerequisite

1. ハード
    * Tobii Pro X3–120 Eye Tracker
    * Tobii PC(ALIENWARE)
    * tobii pro External Processing Unit
    * 刺激呈示用Monitor ([Dell 23 Monitor(S シリーズモニター S2318H)](http://accessories.apj.dell.com/sna/productdetail.aspx?c=jp&cs=jpdhs1&l=ja&sku=210-ALMZ))
    * E-Prime PC (Dell precision m6600)
1. ネットワーク
    * スイッチングハブ（[BS-GU2016](http://www.buffalo-direct.com/directshop/products/detail.php?product_id=17806)）
    * USB 3 ケーブル x1
    * LAN ケーブル x3
    * HDMI ケーブル x1
    * スイッチャー(KVM-HDHDU2)
1. ソフト
    * Tobii Studio (on Tobii PC)
    * E-Prime (on E-Prime PC)
    * E-Prime extension for Tobii (on E-Prime PC)
1. その他
    * **実際に行う実験ファイル**
        * E-prime から Tobii に送る信号の項目数
    * コンセント（outlet）
    * ドングル for E-Prime
    * speaker(Sonyのやつ)
    * 被験者用マウス＆キーボード
    * 4ポートUSBハブ([U2H-SS4BBK](http://www2.elecom.co.jp/search/photo/search.asp?jancd=4953103238015))Alienwareがそれないときつい）
    * **Tobii固定用マグネット**


画面は複製じゃないとHDMIが読み込んでくれない。
`Win+p`

#### Tobii Pro X3–120 Eye Tracker

アイトラッカーの本体です（TODO:写真添付）。赤外線の反射を利用して眼球運動を測定できます。

[公式ドキュメント](https://www.tobiipro.com/siteassets/tobii-pro/user-manuals/tobii-pro-x3-120-user-manual.pdf/?v=1.0.7)を参照し、*Tobii Pro X3–120 Eye Tracker* をインストールしていきます。適宜、参照すべきページに言及します。

{%pdf https://www.tobiipro.com/siteassets/tobii-pro/user-manuals/tobii-pro-x3-120-user-manual.pdf/?v=1.0.7 %}

##### Prerequisites（ハード）

必要なハードの説明は p.3 に書いてあります。セットアップは p.6 から書いてあります。

##### Mounting the eye tracker（設置方法）
シール付きマグネットで固定する方法をとりますが、
シールをくっつけてから1時間放置しなくてはならないので、
次の機会に行います。(p.7参照)

##### Using the External Processing Unit（EPUの設置法）
若干つまりましたが解決積みです。

#### ALIENWARE

<!--
| KEYS | VALUES |
| -------- | -------- |
| e-mail     | gengokenkyu@gmail.com |
| pass     | langinfoh2016 |
| date     | 2011/11/11 |
| give-name     | tobii |
| sir-name     | alienware |
-->

#### tobii pro External Processing Unit

#### Dell 23 Monitor

### ソフトの確認

TODO:バージョンの確認
1. Tobii Studio
1. E-Prime

## Tobii Pro Lab

name the project
![](https://i.imgur.com/KLvaTAG.png)
ただし、External Presenterです。

the name should be the same in the TPLOpen
![](https://i.imgur.com/vgmvipf.png)


## Tobii Studio

### Tobii Studioの起動とProjectの選択

1. 黄色いアイコンがあるので選択し*Tobii Studio*を起動
1. プロジェクトの選択画面になるので、*Project*を指定
    * 今回は *VWP_Practice* という名前
1. Tobii Studioの画面を確認

>![](https://i.imgur.com/5fV7ydA.png =200x)
>![](https://i.imgur.com/qO40rFo.png)

### 被験者登録とCalibration前の指示

1. Start Recordingと記された赤いボタンを選択
1. 次の画面で被験者の番号(今回の名前はtest)を入れる[^name]
2. contineを押し目のトラッキング状況を反映する黒い画面を確認
3. 被験者がいる状態では一度ここで停止し指示[^direction]

[^direction]:「これから円が画面内を動くので見続けてください」
という指示を出す。
目で追ってください、という表現でもいいかもしれないが、
年齢や母語によっては通じないかもしれない。
適宜変更可能です。

[^name]: デフォルトではPで始まる数字が自動でインクリメントされた値が設定される。

> ![](https://i.imgur.com/J7suMtL.png)
> ![](https://i.imgur.com/v1K05WI.png)
> ![](https://i.imgur.com/cX5ZVxa.png)

### CalibrationとE-Primeの前の指示

1. Startボタンを押すと円が画面の中を大体10秒ほど動き続ける。
2. すべてのポイントでCalibrationの成功を確認[^after]
4. Acceptを押し、表示される画面を保持しE-Primeを起動
    * **Start Recordingは押してはならない**
    * 録画開始終了はE-Primeで制御

> ![](https://i.imgur.com/fQPJ1p5.png)
> ![](https://i.imgur.com/HbN4SNB.png)
> ![](https://i.imgur.com/0jRSOsw.png)

[^after]: Check Calibrationを押すと
どこを見ているのかが円で表示される。
もし興味がありそうだったら押してみると結構楽しい。
画面クリックで解除される。

## E-Prime

1. ebs2のほうをダブルクリックで実行[^ebs]
1. 被験者番号などを入力する
    2. テストの際は9999など、絶対に実験では使われない番号を利用
    3. リストの選択が被験者被験者
4. TobiiStudioが消えたのを確認し、被験者用モニターにE-Primeを映す
5. 中断しないよう祈る

![](https://i.imgur.com/enfWGFi.png)
![](https://i.imgur.com/TJjekUK.png)

[^ebs]: ebs2とes2というファイル名があるが、 
実験の際は途中で設定が変わったりすると地獄になるため
はじめたら設定が変わらないようにrunファイルのみを実行

## 被験者情報整理

* 名前、年齢、日付、E-Prime番号、Tobii被験者番号、録画番号などをSpreadSheetに控えておく

# 実験実施後

**GitLabのページリンクを張っているだけです。**
単に情報量が多くなりすぎるというのと、
データがないと説明の意味が薄くなってしまい、
HackMDではデータの共有が難しいというのが理由です。
実際のチュートリアルでは
Dropboxに岸山がGitのディレクトリを落として、
そのディレクトリのtsvディレクトリ下に
実験データを置いて実行、という流れになります。
実行の際はRStudioを開いてもらい、
Projectを選択してもらえば面倒なディレクトリの問題が解消できます。

## データの抜出

* データを全削除とかしない限りは致命的な問題は無し
* いずれ説明が必要

since the repository on GitLab said this;
> データ整形
> /data_main/tsv/にあるtsvを整形(1.)
> onsetごとにファイルを書出(2.)
> 4つのonsetがあれば4つのエクセルファイルを作成
the files should be in the format of tsv.
![](https://i.imgur.com/t4vOQfA.jpg)

make new directory when you save. it takes 5 to 10 mins

you need to use e-merge to get the response from e-prime.


## データの分析

- https://gitlab.com/kishiyamat/branching
- https://github.com/kishiyamat/eye-tracking-analysis

![](https://i.imgur.com/sgWP1hl.jpg)
![](https://i.imgur.com/q1wqvL4.jpg)

どっちか


### データ共有

* Rのversionの更新（最新がベスト）
* ライブラリーの共有が鬼門

VWPのディレクトリをまるごとハードに入れて共有

# トラブルシューティング

1. Tobiiのバージョン
1. E-Primeのバージョン
1. Windowsのビルド番号

## [何もしてないのに壊れた](http://dic.nicovideo.jp/a/%E4%BD%95%E3%82%82%E3%81%97%E3%81%A6%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AB%E5%A3%8A%E3%82%8C%E3%81%9F)

![](https://i.imgur.com/U3UOoTx.png)

うまく働くビルド(1709)
![](https://i.imgur.com/IKNBSxD.png)

うまく働かないビルド（1803）
![](https://i.imgur.com/b4LN3be.png)

現在Tobii社に問い合わせ中です。結果がきたら更新します。対応もらってますがbonjourを再インストールせよ、とのことだったので一通り終わってからにします。コマンドプロンプトから再起動したら強制アップデート発動でbonjourを再インストールせざるを得なくなる。問題の再現性のなさはビルドとの関係か。もしかすると1709でも上手く言っていなかったのかも。かなり安定して機能している様に見える。ビルド番号も伝えないとダメかも。更新プログラムをインストールしてからBonjourを再インストールすればいい？ 現在質問中

## Tobiiが止まる

これも上の問題とマージできるかも。bonjourの機能不全かな。

* とにかく情報が足りないのでログを残す
    * Unixコマンドが使えるのでPowershellを前提
    * https://sugaryo1224.hatenablog.com/entry/2018/02/19/214349
    * それでも権限周りがめんどくさい
* 実験前と実験後にプロセスを記録
    * `Get-Process | Sort-Object | Select-Object -Property ProcessName` 
    * `Get-Process | Sort-Object | Select-Object -Property ProcessName | Out-File -filepath C:\Test1\process.txt` 

* 関数型っぽくてちょっと面白い。さすがはMonadって名前だっただけはある。
    * https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/sort-object?view=powershell-6
    * とりあえず現在はokとngというディレクトリに分けています。場所はドキュメントの下です。デフォルトはokに入れます。そして途中で失敗した場合はngというディレクトリに入れます。
    * 上手くいった際と上手く行かなかった際の差分を取ります。
        * okとngのディレクトリにデータがあるはずなので、diffします。

テストする要因が多すぎるから回帰分析するってのは？要は問題の発生を１、問題の不発を０とし、各要因を。と考えたけど多重共線性の問題が不可避だな。

でもcatが必要なうえに差分がうまく取れない。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/compare-object?view=powershell-6

ミニマルにこれでいいかも。

```shell=
$before = Get-Process
$after = Get-Process
diff -ReferenceObject $before -DifferenceObject $after
```

差分はこれでうまく取れそう。でもやっぱりデータを重ねていきたい。


## 被験者の視線をモニターしたい

* Calibration 前に Setting からLive Viewerを起動
* 出現する真っ黒の画面は後ろの右端において手順を続行

![](https://i.imgur.com/Oxwfhkj.png)
![](https://i.imgur.com/P91n6hX.png)
![](https://i.imgur.com/Mz8P9P7.png)

* Calibrationが終了したらE-Primeで実験を開始 
* TobiiStudioが消えたら画面を複製し黒い画面を実験者用モニタに移動
* 被験者モニタはスイッチしてE-Primeを投影
* 停止しないことを祈る


## Tobiiに信号を送れない(TX300の場合)

### 問題を防ぐためのチェックリスト

- [ ] **Windows Updateはなかったか？(New!)**
    - あれ、この間まで動いていたのに…という場合はWindows Updateが悪さしている場合があります。
    - [Windows10 Creators Update - 以前のバージョンに戻す](https://pc-karuma.net/windows-10-creators-update-go-back-to-previous-version/)
- [ ] **実験が始まった段階で Trend Micro はオフになっているか** ![](src/new025_11.gif)
- [ ] ネットワークマップで相互を認識できていますか
- [ ] 認識している相手に ping が通りますか
- [ ] インターネットは切っていますか
- [ ] そもそも Tobii は起動できていますか
- [ ]  ~~E-Prime extension for Tobii が起動できていますか~~
- [ ] 再起動しましたか？
- [ ] Portの設定は適切ですか
    * ip は全部一緒。チュートリアルと逆になってると詰む

https://www.tobiipro.com/product-listing/e-prime-extensions/

でE-Prime側の設定をする

ping とは
http://www.atmarkit.co.jp/ait/articles/0012/01/news002.html

tracert で中継するネットワークの確認

EPU

### 解決すべき問題

E-Prime から Tobii Studio へ Trigger を送れない場合があります。
もし Trigger を送れないと、実験のデータが無駄になる可能性が常に発生し、
被験者と実験者の時間とお金と労力の無駄となります。
実験する際は、上のリストを是非ご確認ください。

なお問題の原因の可能性は、少なくとも以下の３点がありました。
しかし、今回 （そして恐らく今までも） 致命的だったのは **２つ目** です。
したがって２つ目から報告します。 **１つ目** はオマケになってしまいました。

1. TobiiPC と E-PrimePC の接続が機能していない
  * ローカルな接続が機能してない（TCP/IP, イーサネットケーブルの故障）
  * ソフトフェアの接続が機能してない(E-Prime, Tobii, E-Prime extension for Tobii)
2. TobiiPC と E-PrimePC 以外の要因が接続に干渉している (Trend Micro)

### TobiiPC と E-PrimePC 以外の要因 (Trend Micro)

- [ ] [どうすれば問題をさけられるのか](#どうすれば問題をさけられるのか)
- [ ] [なぜ Trend Micro が問題となっていたのか](#なぜ-trend-micro-が問題となるのか)

### どうすれば問題をさけられるのか

#### Trend Micro のアプリケーションが起動していないかをプロセスで確認する

**大事な点** なのですが、**数分ごとに毎回 Trend Micro が起きてしまう** ことに注意してください。
したがいまして、以下の過程は実験ごとに行う必要があります。
（面倒な場合は[後述する２つの選択肢](#お手軽な解決方法)をご参照ください。）

まず、E-Prime で init した段階 （つまり、実験が始まり、Tobii側の画面が切り替わった段階）で、
Tobii 側で Trend Micro が起きていないかプロセスをチェックします。

まずプロセスを確認する方法ですが、プロセスを確認したい PC で ```Ctrl``` + ```Alt``` + ```Delete``` を押し、
タスクマネージャーを起動する必要があります。詳しくは[こちら](https://support.microsoft.com/ja-jp/help/323527/how-to-use-and-troubleshoot-issues-with-windows-task-manager)をご参照ください。

次に、以下のような Trend Micro が提供するプロセスがないかをチェックします。
（[参照： ウイルスバスター コーポレートエディション サーバおよびクライアントが使用しているサービスとプロセスについて](http://esupport.trendmicro.com/solution/ja-jp/1309192.aspx)）

* Trend Micro Client/Server Security Agent Monitor
* Trend Micro Common Client Communication Service
* Trend Micro Common Client Real-time Scan Service
* Trend Micro OfficeScan Client Plug-in Service Manager
* Trend Micro Proxy Service

もし、上のいずれかのプロセスが init した時点で起きていれば問題が起きてしまいます。
E-Prime の実験を ```Ctrl``` + ```Alt``` + ```Back Spase``` で中止し
（終了方法は E-Prime のバージョンに従うので、ドキュメントをご確認ください）、
該当するプロセスを終了させたのちに実験を再起動します。

#### お手軽な解決方法

1. Trend Micro をアンインストールする。
2. プロセスの終了を自動化する

インターネットに一切接続しない端末である場合は１つ目の選択肢で問題ないと思います。
２つ目の選択肢が個人的には楽だと思います。具体的には、以下のコマンドをバッチファイルの拡張子(.bat)
で任意の名前で保存し（例；ktm.bat）、保存したディレクトリで `shift + 右クリック` でコマンドプロンプトを開き、
ファイル名を打ち込むだけです。何回もクリックしなくて済みます。
（デフォルトなら問題ありませんが、utf-8だと実行できません。また、killした後もプロセスの確認は必要です。）

```bat
taskkill /im TmListen.exe /f
taskkill /im TmProxy.exe /f
taskkill /im Ntrtscan.exe /f
```

#### メモ

確認した限りでは、最初の init の段階でプロセスが起きていない場合は無事に終了できます。
確認しづらかった原因は、Trend Micro が **定期的に （１５分に１回くらいの間隔で） 起きてしまう** ことです。
つまり、最初に消したとしても後々プロセスが再起動し、その「プロセスが再起動した後に init した試行」は失敗します。
加えて、最初に起きていなければ問題を起こす動作をしません。
なので、上手く行った後のプロセスと失敗した場合のプロセスに違いはありません。
これが問題の再現に時間がかかってしまった理由かと思われます。

失敗した後のプロセス(一つ多いですが、これはあったりなかったりして結界に差を与えません)  
![](src/notwork.png)

一方、成功した後のプロセス  
![](src/work.png)

### なぜ Trend Micro が問題となるのか

こちらに関しては原因がわかりません。
Trend Micro がリリースしているセキュリティーソフトである
ウィルスバスター&reg; は複数のプロセスを走らせます。
それらのプロセスのいずれかが、特定のアプリケーションと相性が良くないことが報告されています([参照](http://esupport.trendmicro.com/solution/ja-jp/1314398.aspx))。
ただ、流石にそこまで掘り進めるのは時間がかかりますので、またの機会にします。

以下は完全に蛇足となってしまいましたが（上で解決したため）、せっかくまとめたので報告します。

### TobiiPC と E-PrimePC のソフトフェアの接続が機能してない

最小のプログラム（CV の init, start, end, uninit + 画像の呈示）を作りましたが、異常は解決しませんでした。
Clear View も IP の設定が必要ですが、これは正しく（ネットワークマップに表示されるように）設定できていました。
バージョンアップによる[使用の変更](https://www.pstnet.com/support/kb.asp?TopicID=5599)（TETがいらなくなりCVだけでよくなる）にも対応されていました。
（関係ないとおもいますが、[他のケース](https://groups.google.com/forum/#!topic/e-prime/ORg6sQOmT1I)もあるようです）
こうしたチェックに加えて[ローカルな接続](#tobiipc-と-e-primepc-のローカルな接続が機能してない)も動かなかったので、
他の要因が干渉している可能性が高くなりました。

### IP のとり方
https://www.ssllc.com/images/uploads/Tobii%20T120%20Eye%20Tracker%20-%20User%20Manual.pdf
のConnecting to the eye tracker in ClearView or Tobii SDKが怪しい。

`445!` と見たことのないポート番号
[WindowsでIPアドレスからホスト名（コンピューター名）を見つける方法（nbtstatコマンドを使ってNetBIOS名を特定する）](http://www.atmarkit.co.jp/ait/articles/0010/07/news001.html)

[Windowsのポート445（ダイレクト・ホスティングSMBサービス）に注意](http://www.atmarkit.co.jp/ait/articles/0010/07/news002.html)

を読む。ダイレクトホスティングとは？
ping -a
でホスト名も明らかにしましょう。

まず、自分のホスト名を調べる。

直に繋いでやればいい。それで分かるはず。

if you are an E-Prime 2.0 user,
you will require E-Prime Extensions for Tobii 2.0.

[E-Prime® Extensions for Tobii Pro](https://pstnet.com/products/e-prime-extensions-for-tobii/)


バージョンの違いとは考えづらい。
3.2.1でも動いている。
今使っているのは3.4.8。
（まぁ、バージョンアップで互換性が消えた可能性もあるが。）

EPUの話とも考えづらい
（EPU抜きでもダメ）

ハブの話でもない。
（ハブはアップとダウンで違うから注意。
しかも、抜きでやってもダメだった）

### TobiiPC と E-PrimePC のローカルな接続が機能してない

E-Prime と Tobii Studio の間におけるローカル通信の話に移る前に、
まずは Tobii のパソコンを起動させておく必要があります。
**Tobii のディスプレイがそもそもつかない場合** が有りますが、
これは一度、ディスプレイの電源を引っこ抜くと直ります。
また、**Tobii を認識してくれない場合** は
[tobii-pro-tx300の公式ドキュメント](https://www.tobiipro.com/siteassets/tobii-pro/user-manuals/tobii-pro-tx300-eye-tracker-user-manual.pdf) の該当するOSのバージョンの部分を読むことを推奨します。
基本的には、[イーサネット](#クロスlanケーブルによるパソコンの接続)が識別されていないことが問題です。
"Make sure that Obtain an IP address automatically is selected"
と言われているので、Tobii 側の IP の振り分けは自動にしたほうが良さそうです。
なぜなら、この段階に失敗すると、そもそも Tobii がトラッカーを認識してくれなくなるからです[^1]。
その自動で割り振られた IPv4 に E-Prime 側を合わせるのが無難かと思います。

次に、パソコン間の通信の手法に関して述べます。

[^1]: 自分の認識では、トラッカーもパソコンの一種なのですが、どうなのでしょうか。
ローカルエリア接続の際、Tobii の電源を落としておくと、その接続がきれ、
またオンにすると、169.254.83.168 のが通るようになるためです。

### パソコン間の通信

二台のパソコンをつなぐ方法は複数あります。
サウンドラボで使用しているパソコンは基本的に、以下の１と３の方法で接続されています。
また、Tobii と E-Prime のパソコンは３の方法で接続されています。

1. 無線でつなぐ
2. ハブ経由でストレートLANケーブルでつなぐ
3. 直接クロスLANケーブルでつなぐ（←新井さん採用）

そして、３の方法ではクロスLANケーブルを用いて
ローカルの接続を確保する必要が有ります。

### クロスLANケーブルによるパソコンの接続

現在はストレートケーブル。
https://note.cman.jp/network/lan_cable_cross.cgi

パソコン同士を直接クロスLANケーブルでつなぐ場合、
この[パソコン同士のデータ転送を行うための情報](http://qa.elecom.co.jp/faq_detail.html?id=5089)が役に立ちます。
方法は簡単で、以下の２つのプロセスを踏むだけです。

1． 共有する２台のパソコンのLANポートにクロスケーブルを差込みます。
2． パソコンのIPアドレスを合わせます。

ただ、注意点が２つ有ります。
まず、クロスケーブルの代わりにストレートケーブルを使うと詰みます。
そして、ローカルエリア接続が識別（認識）されていないネットワークですので、
１台は、「**192.168.2**.100」、もう１台は、「**192.168.2**.101」等
必ず、最後以外は同一の数列になるように設定してください。

ただ、最後の数列以外を揃えるというポイントは、
接続したい２つのパソコンのIPアドレスが明らかになっている必要があります。
そのため、IPアドレスをガチャガチャするまえに、
**ネットワークマップ** で通信を確かめる方がよいでしょう。

### ネットワークマップで通信を確かめる

win10 で機能が削除された

「ネットワークマップ」は以下の手順で開くことができます。
まず、「ネットワークと共有センター」を開き、
「フルマップの作成」を選択します。
![](src/00_network_kyouyu.png)  
↓  
![](src/01_network_kyouyu.png)  
↓  
![](src/03_network_kyouyu.png)

なお、現在(2017/08/01)の環境だと、
Tobii と E-Prime はローカルエリア接続２で繋がれています。
（ローカルエリア接続１の存在が意味不明です。
もしかして Tobii の本体と赤外線の接続でしょうか。LAN通ってますし。）

注意点なのですが、
ネットワークマップをつくるときにハマってしまうのが、
ローカル（今の場合で言えば、クロスケーブルでつないだ E-Prime と Tobii の接続環境）が
パブリックになってしまっている場合です。この場合、ネットワークマップで通信を確かめることができません。
ネットワークマップで通信を確かめるためには、ローカルの通信がプライベートである必要があります。
なので、次に **ネットワークをプライベートにする方法** について紹介します。

### 2台のPCをネットワークで接続する

[2台のPCをネットワークで接続する](http://ebi.dyndns.biz/windowsadmin/2009/02/05/2台のpcをネットワークで接続する/)


### ネットワークをプライベートにする方法

ローカルのネットワークをプライベートにするためには、
添付したgif画像、また[こちらのリンク](http://www.atmarkit.co.jp/ait/articles/1012/24/news127.html)を参考にしてみてください。
まず、検索バーで「ローカル」を検索して
「ローカルセキュリティーポリシー」に飛びます。
そして、左のペインの「ネットワーク リスト マネージャー ポリシー」を開き、
該当するネットワークをプライベートに変更できます。
これにより、ネットワークマップでローカルエリア接続２のマップを確認し、
したがって両PCのIPv4も確認することができます。

手順.gif  
![](src/make_public_private.gif)

[Windowsで、「識別されていないネットワーク」の種類を「パブリック ネットワーク」から「プライベート ネットワーク」に変更する](http://www.atmarkit.co.jp/ait/articles/1012/24/news127.html)

### 通信出来てるか確かめる

ネットワークマップでローカルエリア接続２のマップを確認したら、
２つの PC の IPv4 も確認できたはずです。
先ほどの[パソコン同士のデータ転送を行うための情報](http://qa.elecom.co.jp/faq_detail.html?id=5089)
ではIPの最初の３つを揃える必要がある、と述べられていました。
**揃えなくてもなぜか通信ができてしまったのですが**、
念の為、揃える手順をまず説明いたします。
最終的には ping というコマンドが通れば成功です。

### ipadress の確認と変更

まず、ネットワークマップで接続しているPCと、こちらのPCのIPアドレスを確認します。
そもそも、無線の通信と有線の通信の２種類がある点、
また Tobii PC の有線通信には
ローカル１とローカル２があるのに注意です。
今回はローカル２が対象です。

また変更は[このリンク](http://qa.elecom.co.jp/faq_detail.html?id=5089)
の該当する OS の部分が詳しいです。

余談ですが、
ipconfig の出力は以下のようにすることで、
テキストファイルとして保存出来ます。コピペするので便利です。

```
ipconfig > C:\home/ipconfig.txt
```

### ping を通す

IPが通ったら、ping で確認します。これも、ネットワークマップで対象の IP を確認したほうが楽です。
上の設定をすれば、普通ならこれでpingが通ります。エリア接続２の方です。これがとても大事です。

[pingが片一方しか通らない時に確認すべきこと](http://memo.morelents.com/ping-one-way/)

### TCP/IPについて（補足）

### そもそも IP（インターネットプロトコル） とは？

インターネットプロトコル （IP） は、インターネットに接続されたコンピュータ同士がデータをやりとりするための通信規約です。
大きな特徴として、データをパケットと呼ばれる単位に分割して扱うこと、
バケツリレー式にルータという機械で中継されることが挙げられます。
またそれぞれのコンピュータを区別するために番号をつけてあり、
この番号をIPアドレスといっています。
現在IPはバージョン4とバージョン6が混在した状態ですが、
ここでは広く使われているバージョン4のアドレスについて解説します。

IPv4アドレスは2進数で32桁で、アドレス総数は2の32乗個、
つまり約43億個となります。

![](src/090_03.gif)

アドレス空間を128ビットに大幅に拡張した新しいバージョンのIP、
IPv6の導入も進んでいますが、ここまで発展したIPv4がすぐにIPv6に置き換わることはありません。
以降IPv4アドレスについて解説します。

[インターネット10分講座：IPv4アドレス](https://www.nic.ad.jp/ja/newsletter/No26/090.html)

### IPv4アドレスって？

32ビットのIPv4アドレスを表記する場合、
8ビットごとに四つに区切って10進数に直し、
ピリオドで区切った表記が広く用いられます。
また、IPv4アドレスは、ネットワークを識別する部分（ネットワーク部）と、
そのネットワーク内のホストを識別する部分（ホスト部）に分かれます。

![](src/090_04.gif)

つまり個別の識別番号みたいなもので、
通信するためには上のホストを揃える必要があるらしいです。

### サブネットマスク

サブネットマスク（subnet mast）は、ネットワークの範囲を定義するために使用します。
また、サブネットマスクはIPv4のIPアドレスを使用している場合のみに使用します。当ページはIPv4の前提で記載しています。
「IPv4ってなに？」と思われる方は、「IPv6」を意識して使用していない場合は、ほぼすべてでIPv4のIPアドレスが使用されており、サブネットマスクの使用に該当します。

### デフォルトゲートウェイ

今回は内部での通信なので関係ありません。しいて言えばルーターです。([参考：デフォルトゲートウェイ](http://www.ocn.ne.jp/support/words/ta-line/83f83t83H838B83g83Q815B83g83E83F83C.html))

デフォルトゲートウェイとは、所属するLANなどの内部のネットワークから、
外部にあるネットワークに通信を行う場合の出入り口の役割を果たすように設定されたルータやコンピュータのことです。
デフォルトゲートウェイは、ネットワーク上でプロトコル（規約）が異なる複数のデータを相互に変換し通信を可能とします。
外部のネットワークにあるコンピュータにデータを送る場合、
初めに同じLAN（同じネットワーク）にいる相手なのかどうかを判断し、
同じLANの中にいることがわかれば、直接相手にデータを届けます。
そうでない場合にはデフォルトゲートウェイ（ルータ）を経由して、ネットワーク外の相手にデータを送ります。
このデフォルトゲートウェイは、わかりやすくいえばホテルにおける外線番号にあたるものです。
ホテルでは、客室の電話機からそのまま外部の電話番号にかけることはできませんが、
外線番号もしくはフロントを通すことで外部へ連絡を取ることができるようになります。これがゲートウェイの仕組みです。

### イーサネットとは？

イーサネット（Ethernet）というのはネットワークの規格（通信方法）のひとつです。
イーサネット規格のLANケーブル＆LANポート全世界のオフィスや家庭で使用されている LAN（Local Area Network … ローカル エリア ネットワークと言います。）と呼ばれるネットワークで採用されている、通信方法の名前です。
現在、特殊な用途を除いてLAN（ローカルネットワーク）ではイーサネットが採用されているので LAN と言えばイーサネットです。
イーサネットの通信方法では、回線上でデータが衝突しないように監視しながら通信するので、複数のパソコンが通信回線を共有して、自由に＆効率的に通信することが可能になっています。[参考：イーサネットとは？](http://torano-maki.net/capture/term/i/ethernet.html))

### html 生成

```
# generated by...

pandoc -s README.md -t html5 -c github.css -o README.html
pandoc -s README.md -o README.pdf

```

### 参考リンク

* [Pandoc: markdown を github 風 html に変換する](https://www.d-wood.com/blog/2014/09/05_6781.html)
* [イーサネットとは？](http://torano-maki.net/capture/term/i/ethernet.html)
* [Q．【LANケーブル】パソコン同士のデータ転送を行いたい](http://qa.elecom.co.jp/faq_detail.html?id=5089)
* [tobii-pro-tx300の公式ドキュメント](https://www.tobiipro.com/siteassets/tobii-pro/user-manuals/tobii-pro-tx300-eye-tracker-user-manual.pdf)

https://github.com/kishiyamat/npi-thesis/tree/master/refs/tobii-eprime

<!---
Pandoc で TeX に変換できます。
git では管理しません。
-->
<!---
実際に存在するマニュアルを参考に作成しましょう。

https://qiita.com/kishiyama_t/private/1cbc59eb661204d2a599

PDFの置き方は、クローンしてアドしてプッシュでおｋ。
https://stackoverflow.com/questions/16425770/how-do-you-upload-images-to-a-gist

### Gist
{%gist kishiyamat/2406a62b3e7734510cb0f01c24923cbf%}

割とガッツリ gist を置けるのが誘惑…。
https://gist.github.com/t-nissie/9580883
これ、PDFを置いたGist

履歴で残るので、verは入れなくて良いはずです。

https://github.com/kishiyamat/npi-thesis/blob/master/refs/tobii-eprime/Untitled%20Diagram.pdf
-->
