自作ウインカーで購入したArduinoが余ってたんで、eBayからセンサーを追加購入し、これらで自作のヘッドトラッキングシステムを作ってみようと思います。
はんだごてとかを使うので、ある程度の電子工作の知識が必要になりますのでご注意ください。
ヘッドトラッキングってなに?
あまり耳慣れない言葉になると思いますので、簡単に説明いたします。合わせてヘッドトラッキングの派生型のトラッキングについても書いてみます。
・ヘッドトラッキング
直訳すると「頭の追跡・追従」って所でしょうか。 頭に機材や目印を置き、それを外部で開始して頭の動きを常時記録していくもので、その動きを疑似コントローラーとしてゲームなどに出力し、頭の動きだけで視点移動等を行う物。
既製品としてはTrackIR5が有名で、このTrackIRで使われているプロトコル(仕様)が他のトラッキングシステムでも結構採用されている。
追従性はかなりいいが、頭やヘッドフォンに機材や目印を載せるため、事前準備が面倒だったり、その機材やケーブルなどが邪魔になって没入感がそがれたり、目印や機材がズレてしまってトラッキングがずれたりと、デメリットもそれなりにあります。
ヘッドトラッキングだけでなく、フェイストラッキング(顔の動きで追従)やアイトラッキング(目の動きで追従)等も製品化されてゲームに対応している物が出てきてます。
ちなみにTrackIR5を買おうとすると2万円程度掛かります。 アイトラッキングのTobii eye tracke 4cも2.2万円程掛かります。
今回はArduinoとセンサーを使い、フリーソフトのみでヘッドトラッキングを作ってみようと思います。 パーツ代だけだと2000円以下でいけますね。
EDtrackerの作り方
ここも自分で書こうと思ったんですが、すでに詳しいサイトがあるのでそちらをご覧ください。「DEKOのアヤシいお部屋。」さんの「EDTracker DIY(ヘッドトラッキング)」のページになります。
Googleで「EDtracker」にて検索すると、本家のHPよりも上に出てくるページなので、EDtrackerに興味のある人はすでにご存知かもしれません。
こちらを読んでいただければ、必要なパーツ・制作方法・ファーム書き出し・設定まですべてわかるかと思います。
ちなみに自分は、ProMicro+MPU-9250の組み合わせで作りました。 MPU-9250は日本のAmazonでも売ってますが割高です。 eBayやAliExpress、バングッドあたりだと7割程度で買えると思いますよ。 (安いけど届くまでに10日以上掛かります)
でも元々が安いので、日本で買っても全然OKだとは思います。 自分も海外通販で時間が掛かる事を考えたら、ちょっと後悔してますしw
完成した物はこんな感じです。
左が初号機で、平面で実装してみました。 これでMagnetmeterのキャリブレーションで思った形にならなかったので、右の2号機を作成。 こちらはEDtracker本家のPCB基盤と同じ向きで作ってます。 でも結局Magnetmeterのキャリブレーションはほぼ変化が無かったので、どっちで作っても大丈夫だと思います。
DEKOさんのページに関して、自分で作った際に気になった部分を一部補足させていただきます。
・MPU-9250は一部に3.3V駆動のみの物があるので、必ず5V対応の物を購入する事。 ProMicroも3.3V仕様が混在しているので、こちらも5Vの物を買いましょう。
・Magnetmeterのキャリブレーションですが、自分の場合はこんな感じになりました。
緑と赤の集合体がかなり離れてます。 ちなみに赤色が実際の地磁気センサーのポイントで、緑色が補正後のポイントになります。
なので、緑色の位置が画面中央になっていて、赤と緑のポイントの分布図の形状がほぼ同一であれば大丈夫だと思います。
この図は初号機の方の結果でして、2号機の方は緑と赤の分布図の端の一部が重なっただけで、8みたいな形状になっただけでした。
補足:現在売られているMPU-9250ですが、結構な確率でクローン品が販売されています。 自分が今回使っている9250もこれに当たります。 これは「ほぼMPU-9250」の個体だそうで、内部データでみるとMPU-9255だそうです。 9255は9250に若干の機能追加をされたボードらしいです。 今回のEDTrackerでの使用では、今のところ問題なさそうです。
クローンかどうかの判定は製品写真とかではまず出来ないので、正直ガチャですw
・EDtracker2 GUIですが、公式HPで公開されている最新版が Ver4.0.4です。
EDtrackerの設定はGUIの方でしかできないのですが、ファームの書き込みについてはGitHubでArduinoIDE用の物が公開されており、多分こっちの方が最新になるかと思います。
MPU-9250の一部で起動時にフリーズする問題(9250クローン系の一部で発生しているっぽい)があるようなので、フリーズする人がいればこちらのGitHub(リンク)からファームとArduinoIDE用のスケッチをダウンロードして、ArduinoIDEからファームを書き込むといいと思います。
ファームを書き込んでからEDtracker GUIで各種設定を行うようにしてください。 こっちでファーム書き込みをすると元の木阿弥なのでご注意を。
ETS2でEDtrackerを使う
ファーム書き込みとキャリブレーションが終われば、次はETS2の設定です。そのまま繋げるだけでは使えないので、ちょっと設定作業が必要です。
1.EDtrackerをコントローラーとして登録する
ETS2のコントローラー設定の一番上に、コントローラーを登録するプルダウンメニューがあると思います。
そこにEDtrackerを割り当てますが、コントローラー名がEDtrackerではなく、Arduino Leonardoになっていると思います。
このArduinoをとりあえず登録します。 この際の登録の位置が重要になります。
例のためすべてのコントローラーを解除してますが、EDtrackerを登録した位置にあったコントローラー名を確認してください。
上から2番目の位置に登録したならjoy2となります。
登録が終わったら、一旦ETS2を終了させます。
2.controls.siiをメモ帳で書き換える
ETS2のセーブデータフォルダにあるcontrols.siiを書き換えます。
書き換えの前に、今のcontrols.siiを別フォルダにコピーしてバックアップして下さい。
通常であれば \マイドキュメント\Euro Truck Simulator 2\profiles\にプロフィールデータがあり、その中にcontrols.siiがあると思います。
こちらをメモ帳などのテキストエディタで開きます。
ETS2の1.34で説明すると、 config_lines[172]からconfig_lines[174]までを以下のように書き換えます。
書き換え例 joy2にEDtrackerを登録している場合
config_lines[172]: "mix trackiron `trackir.device.active?1`"
config_lines[173]: "mix trackiryaw `-(joy2.x)/2`"
config_lines[174]: "mix trackirpitch `(joy2.y)/3`"
joy2以外の人は、joy2の部分を各自の設定に合わせて書き換えてください。
173と174で-の有無がありますが、-があると動作が逆転します。 頭の動きに対して画面の動く方向が逆になっている場合は、括弧の前にある-を追加したり消したりして各自で調整して下さい。
また、EDtrackerを使わないときは、コントローラーの設定を外すだけでなく、config_lines[172]で書き換えた1を0に戻さないとマウスなどで視点変更が出来ない事がありますのでご注意ください。
3.ゲームで調整する
controlls.siiの書き換えが済んだらETS2を起動させます。 運転画面まで持っていって頭を動かすと視点が追従してくれると思います。
最初の設定のままだと不満があるかもしれませんので、以下の要領で自分好みの設定に合わせてください。
EDtracker GUIを起動し、以下の赤枠の部分を変更する。
Yaw Scaling 左右方向の設定
基本は1.0で数字が大きくなるほど補正が大きくなって動きが大きくなる。 数値の直接入力は出来ないので横の+/-で調整する。 基本は1クリックで1.0上下するが、Fine Adjustをチェックすれば0.25単位で数値を上下できる。
ETS2の場合は横方向の移動が多い方がいいが、数値が大きすぎるとちょっとした顔の動きでも反応してしまう。 1~4あたりで細かい調整をする事をお勧めします。
Pitch Scaling 上下方向の設定
ETS2の場合、上下方向の移動はそんなにしないので、1.0でも問題はないです。
Smoothing 動作の滑らかさ
頭を振った後でも画面が揺れることが多い人は、この数値を大きくすると軽減できる可能性があります。 MAXは99ですが、ここまで振ると動作がかなり緩慢になるので、95あたりで止めるのが有効です。
ちなみにこれらの設定を行ったとは、特にセーブとかは必要ないです。 リアルタイムでEDtrackerに設定されているみたいです。 また、EDtrackerを使う際にこのGUIを起動する必要はありません。 調整の時だけ使えばOKです。
ちなみに「Recentre」ついてなんですが、キーボードで頭の位置をリセットしてくれるホットキーを設定する項目です。
しかしファンクションキーにしか設定できない上に、ETS2だと反応してくれません。 なので設定しない方がいいです。(GUIを起動した状態、及び最小化の状態でも反応しなかったので、キーフックに失敗してる感じですね)
感想や使用感など
自分は普段3画面のマルチモニターでプレイしているので、1画面でのプレイは視界が狭くなってしまい違和感があります。 またヘッドトラッキングも久しぶりで慣れていないので、その辺でネガティブな印象を若干持っていることをあらかじめお伝えしておきます。長所やメリット
視界操作をマウスではなく頭の動きでするので、手をマウスに延ばさなくてもすぐ出来るのは本当に楽。
1画面だと助手席側への視点移動をしないと車線変更しにくいが、その辺も一発で違和感なく動かせるのはすごく運転が楽しくなるし没入感も高くなる。
予算や設置場所の都合でマルチモニターが出来ない人にはすごくお勧めできるアイテムだと思う。 予算もパーツ代のみだと2000円以下なので、気軽にチャレンジできると思う。
ETS2以外にも使えるので、ETS2だと合わない人でもほかのゲームで使える可能性はあります。
短所やデメリット
頭の上に載せる方法を考えないといけない。 普段ヘッドフォンやヘッドセットをしている人ならその上に固定すればいいけど、それらを使ってない人はカチューシャ等で対応する必要がある。
EDtrackerからUSBケーブルを繋げないといけないので、ケーブルが頭の横を通るので違和感が出ることもある。 普段ヘッドフォンなどを使っている人は、ケーブルが1本増えるので、ケーブルが絡まったりしてちょっと面倒な事になる事もw
EDTrackerのGUIではTrackIR並みの細かい動作設定は出来ない。 別のソフトを間にかませれば設定に自由度が出ます。
動きに慣れるまでが大変。 最初は緊張して首や肩が凝ると思いますが、設定を煮詰める&慣れてくればかなり軽減できます。
実際に使ってみた感想としては、上記になります。
これを踏まえて「EDTrackerをお勧めしたいユーザー層」を上げるとしたら、「1モニター運用で、EDtrackerの自作できる自信のある方」となります。
また、「ETS2以外にフライトシミュレーターやFPS等をプレイしており、ETS2以外でもヘッドトラッキングを試してみたい方」でもいいと思います。
TrackIRと比べたら10分の1のコストで作れますので、失敗しても気にしない!って人なら一度チャレンジしてみてはいかがでしょうか。
今回はEDtrackerGUIで設定しただけなんですが、次回はこれに別のアプリを使ってさらに細かい動作設定をしてみようと思います。
スポンサーリンク