👀

Tobii Pro アイトラッカーをApple SiliconのMac PCで使用する

2023/11/08に公開

はじめに

私は大学でTobii Pro ナノというアイトラッカーを使った研究をしています.アイトラッカーとは文字通りユーザの目の動きを追跡するデバイスで,それを使って画面内のユーザの見ている場所を検出し,記録や分析などを行っています.


公式サイトより.ディスプレイの縁に設置されている "tobii pro" ロゴのデバイスがアイトラッカーです.

しかし,この製品のドライバとSDKは2023年現在において Apple Siliconが搭載されているMac上での実行には対応していません.普段の視線の分析は公式のWindowsで動作する分析ソフトウェアを使用しているので問題はないのですが,この度色々あってTobii Pro ナノを使った実験システムを自分のMac上で構築する必要が出てきたため,今回のようなセットアップを行ったという流れになります.

最初に注意書きしましたが,本記事は 個人または研究機関でTobii Pro製品を所有しており,アプリ開発等の目的でApple SiliconのMac上で使いたくなった人 向けの非常にニッチな記事です.Tobii Eye Tracker 5などは対象外ですのでご了承ください.

解決手順

実はTobii Pro製品はMac用のSDKが配布されている珍しいアイトラッカーです(研究用ですので高価ですが).しかしそれはx86_64アーキテクチャ上での話です.
Tobii Pro製品がApple Silicon上では使えない件は公式のサイトでも以下のように言及されています.要は「M1とかM2のMacを使っている人は将来的に対応するつもりだけどとりあえずRosetta 2経由で使ってくれ〜」ということです.

** For Python users on Apple Silicon Macs (a.k.a. M1/M2 or ARM64 architecture Macs - produced since end of 2020): We currently only offer files designed for the x86_64 (Intel) computer architecture used by older Macs, though we plan on adding native ARM64 support in a later version. For this reason, you must install Rosetta 2 software which enables an x86_64 ‘compatibility mode’, and an x86_64-only installation of Python which you then use to run all scripts making use of tobii_research. Note that managing Python versions for different architectures (ARM64 and x86_64) can be challenging. Users who are less familiar with Python version management and have access to older (x86_64) Macs may wish to continue running scripts using tobii_research on these older units until native ARM64 support has been added.

https://developer.tobiipro.com/tobiiprosdk/platform-and-language.html

ということはx86_64用のドライバ,開発言語(Python)のランタイム,SDKをインストールすれば,Rosettaを経由することでApple Siliconでも使えるようになりそうです.
そこで今回は以下の手順でセットアップを行います:

  1. Tobii Pro製品を扱うための公式マネージャソフトをインストールする
  2. 公式サイト経由でx86_64アーキテクチャのTobii Pro製品のドライバをインストールする
  3. x86_64アーキテクチャのPythonをインストールし,SDKをインストールする

なお,今回セットアップしたPCの仕様は以下のとおりです:

PC MacBook Pro 14inch, 2023
チップ Apple M2 Max
macOS Ventura 13.4

Tobii Pro製品のドライバのインストール

  1. Tobii Pro製品を扱うための公式マネージャソフトをインストールする
  2. 公式サイト経由でx86_64アーキテクチャのTobii Pro製品のドライバをインストールする

まず,Tobii Pro Eye Tracker Managerというドライバや実験環境のセットアップを管理してくれるアプリを以下のURLからインストールします.
https://www.tobii.com/products/software/applications-and-developer-kits/tobii-pro-eye-tracker-manager

アプリが対応しているとポチポチするだけでドライバをインストールできますが,Apple Siliconでは謎のエラーが出ます.

そこで,以下のURLからmacOS用のLegacyなランタイムをダウンロードします.このページはTobii Pro ナノ用ですのでそれ以外を使う場合はいい感じに探す必要があります.
https://connect.tobii.com/s/nano-downloads?language=ja&tabset-49f8f=3

.dmgファイルがダウンロードされるのでそれを開き,ターミナルから以下のコマンドを実行します.

# アーキテクチャにx86_64を指定してドライバのインストールスクリプトを実行
> arch -x86_64 /Volumes/TobiiProNanoRun\ 1.8.15.0/install-driver

そしてOSのパスワードを入力すればドライバのダウンロードが完了すると思います.


デバイスが認識されたらこんな感じで視線情報が取れます!

PythonとSDKのインストール

  1. x86_64アーキテクチャのPythonをインストールし,SDKをインストールする

今回は開発言語にPythonを使用しているので,x86_64版のPythonおよびSDKであるtobii-researchをインストールします.インストールはHomebrew経由が良いでしょう.簡単ですし別途必要なモジュールのインストールも簡単になります.
ただし,x86_64用のHomebrewは以下のように別途インストールする必要があります.

# Homebrewインストール用のbashを起動
> arch -x86_64 /bin/bash
# アーキテクチャの確認
$ uname -m
x86_64
# Homebrewのインストール
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

引き続きx86_64のbash環境内でPythonのセットアップを行いましょう.自分の場合,x86_64版はどうせTobii Proにしか使わないのでpyenv等は使わず直接インストールしています.また,tobii-researchモジュール内でgettextコマンドを使っているようなので,ついでにそちらのx86_64版もインストールします.Pythonのバージョンは tobii-researchが対応していればなんでも良いです.

$ brew install python@3.10 gettext
$ /usr/local/bin/python3.10 -V
Python 3.10.13
$ /usr/local/bin/python3.10 -m pip install -U pip
$ /usr/local/bin/python3.10 -m pip install tobii-research

これで全てのセットアップが完了です.以降はインストールしたPythonを使えばx86_64上でなくてもTobii Pro 製品が呼び出せるようになっているはずです.

# 普段使っているShell上で実行
> uname -m
arm64
# 実行可能か確認
> /usr/local/bin/python3.10 -c "import tobii_research"
# 以降python_intelで実行可能に
> alias python_intel="/usr/local/bin/python3.10"

実際にアイトラッカーを接続してPython上で呼び出す場合は以下のようになります:

test.py
import tobii_research as tr

# アイトラッカー検出
eye_trackers = tr.find_all_eyetrackers()
eye_tracker = eye_trackers[0]

# アイトラッカー情報の取得
print("Address: " + eye_tracker.address)
print("Model: " + eye_tracker.model)
print("Name (It's OK if this is empty): " + eye_tracker.device_name)
print("Serial number: " + eye_tracker.serial_number)
> python_intel test.py
Address: <アイトラッカーのアドレス>
Model: Tobii Pro Nano
Name (It's OK if this is empty):
Serial number: <シリアルナンバー>

最後に

公式SDKがApple Siliconに対応するまでの一時凌ぎではありますが,これでMacでも問題なく実験システムを構築できるようになりました.

もしこの記事をご覧になってTobii Proのアイトラッカーが欲しくなった方はトビー・テクノロジーさんにお見積りをお願いしてみましょう!安いものであれば1台100万円もしないと思います!

Discussion