- はじめに
- 私の環境とRaspberry PiでOpentrackを使う理由
- DELANCLiPについて
- Opentrackについて
- Raspberry PiでOpentrackをビルドするための要件
- build手順
- まとめ
はじめに
ゲームの視点移動を簡単にするためにDELANCLiPを購入*1し、いざ使おうと思ったらSteamLinkのVirtualHereがRaspberryPiのCPUパワー不足でPSEYEの生データがPCまでうまく届かなかった。
そのため、RaspberryPiにOpentrackを入れて、データ解析してから、そのデータをUDPでPCに飛ばしてPCのOpentrackで受け取り、ゲームに渡して視点移動できるようにすることになったため、RaspberryPiでOpentrack使うためにそのビルド方法を書いていく。
私の環境とRaspberry PiでOpentrackを使う理由
SteamLinkを使ってリビングにあるPCに遠隔で接続していて、さらにVirtualHere(USB over ip)でステアリングコントローラーを使ってPC上のゲームを操作して楽しんでいる。
上の図のような環境でETS2というゲームをしていて、視点移動に不便さを感じていた。そのため、トラッキングで解決しようと思っており、調べたところTrackIRはVirtualHereで使えるというコメントをsteamのsteamlinkのスレッドで確認できた*2。
そこで、TrackIR互換のDELANCLiPというものを買ってみたが、うまく使えなかった。原因はTrackIR互換とはいえ、WEBカメラのデータを生のままPCに送りつける際にVirtualHere側でのCPU処理がRaspberryPiのCPUパワー不足で追いつかない状況が発生していた。
VirtualHereでwebcamを使えないわけではなく、フォーラム*3で開発者が触れているように低い解像度だったらCPUパワーを食わないのかもしれない。 確認に使用したのは、クライアント側がWindowsで(ソフトはCL-EYEで)おそらく320x240の75FPSのデータだったが遅延が発生してVirtualhereサーバが落ちた。 Raspberry PiおよびSteamlinkの両方で確認したが同様の結果だった。
購入したものが使えずにいるのは嫌なので、いろいろ調べていたらOpentrackというOSSのソフトでトラッキングし、UDPのクライアントにもサーバにもなるとの記述もあったので、Raspberry Pi側でトラッキングし、出力をUDP経由にし、PC側でのUDPを受け取り、ゲームに出力するということが実現可能なのではないかと思い試してみることにした。結果的にうまく行ったので、ここでRaspberry Piでのビルドまで記述していく。PCのものはすでにバイナリがあり配布されている*4。
DELANCLiPについて
ヘッドトラッキングデバイスとして、LEDのついたクリップを装着し、それをカメラで撮影したものを解析することによって、頭の動きを検出して画面内の視点の動き等に変換することのできるものである。
代表的な製品としてTrackIRがあり、その機能を互換するDELANCLiP Gamer の構成内容は以下の通りである。
- カメラ(PlayStation®Eye)、そのマウンター
- LEDのついたクリップ(DELANCLiP)
- トラッキングソフトのfacetracknoir
- PSEYEのWindows用のソフト及びドライバ
詳しくは、ホームページを参照してほしい。
購入経緯については以前まとめた。
Opentrackについて
- Freetrack
- FaceTrackNoIR
- Opentrack
などがある。
FreetrackはDelphiで書かれディスコン状態であり、それをC++に移植したFaceTrackNoIRがあり、FaceTrackNoIRはwindows用であるのに対し、他のOS でも使えるようにforkしたのがOpentrackという関係性のようだ。
当初、Opentrackのファイルツリーを眺めるとwineなどの記述があり、Linuxで動くことは想像できたが、CPUのアーキテクチャに依存しておりビルドできないかと訝しんだが、実際にはTrackIR互換向けで使用するPointTracker部分においては依存しておらず、ビルドが通り使用することができた。
今回はTrackIR互換のDELANCLiPを使用するため、入力としてPointTracker(Raspberry Pi側)およびUDP(PC側)を使用するが、他のトラッキングの入力としては、
https://github.com/opentrack/opentrack#tracking-input
にある。
また、トラッキングの出力としてUDP(Raspberry Pi側)およびfreetrack(PC側)を使用するが、詳しくは
https://github.com/opentrack/opentrack#output-protocols
にある。
Opentrackの詳細については、ホームページで確認してほしい。
Raspberry PiでOpentrackをビルドするための要件
OpentrackをRaspberry Pi使用できるようにビルドするわけであるが、 少なくともRasbianをbusterにすることが必要である。ただし、Debianのstableディストリビューションパッケージ外のものも必要となる。
Opentrackをビルドするための要件*5として以下が挙げられる。
まず、
- CMake > 3.10.
についてだが、これを満たすためにbusterである必要がある。
また、PointTrackerをビルドするため
- OpenCV > 4.0.1
があるが、 busterのOpenCVは3.2.0*6である。独自にビルドする必要があることを示しているが、
ラズパイ: Buster向け OpenCV4*7
として、4.2.0をビルドしたものをdebにして公開されている方がいるので、そちらを使わせてもらう。
- Qt5 SDK > 5.12.0
とあるが、busterは5.11.3*8であった。これについては、busterのパッケージ(5.11.3)を使用したがPointTrackerおよびarucoでの使用で今のところ問題はない。
Building under MS Visual C 2017 and later · opentrack/opentrack Wiki · GitHub
には、Qt 5.5+ is unconditionally requiredともあり、Qt5 SDK > 5.12.0でなければならない理由をみつけることができなかった。
build手順
aptでビルドに必要なものをインストール
sudo apt-get install build-essential cmake git \ qttools5-dev qttools5-dev-tools qtbase5-private-dev libqt5serialport5-dev \ libprocps-dev
opencvのインストール
wget https://github.com/mt08xx/files/blob/master/opencv-rpi/raspbian-buster/libopencv4_4.2.0-20191223.1_armv7l.deb?raw=true -O libopencv4_4.2.0-20191223.1_armv7l.deb sudo dpkg -i libopencv4_4.2.0-20191223.1_armv7l.deb
Opentrackのビルド
git clone https://github.com/opentrack/opentrack cd opentrack git submodule update --init mkdir build cd build cmake .. make -j4 make install
少々時間はかかるがビルドは通る。
もしエラーが出る場合は、インストール後の素の状態から行ったわけではないので、おそらく当方の必要なパッケージの確認漏れだとおもうので、必要なパッケージをインストールしてほしい。
その他稼働に必要なものインストール
カメラの設定に必要なvideo4linux2のユーティリティとqv4l2をインストールする。
sudo apt-get install -y v4l-utils qv4l2
なぜか知らないが設定のアイコンがイメージではなく、🔨の絵文字が使われており、対応したフォントが入っていないと 豆腐になってしまうので、絵文字フォントのインストールをする。
sudo apt-get install fonts-noto-color-emoji
まとめ
誰得な感じなのだけど、とりあえずまとめてみた。 ゲームで使えるようにするまでにさらに設定が必要でそれについては別途書く予定。また、ARマーカーを使ったトラッキングについても試してみたのでそれについても書こうと思う。
*1:http://takeshich.hatenablog.com/entry/2020/04/17/141230
*2:https://steamcommunity.com/app/440520/discussions/0/135514766277334569/
*3:https://steamcommunity.com/app/440520/discussions/0/358416640399205034?ctp=2#c359543951727320182
*4:https://github.com/opentrack/opentrack/releases
*5:https://github.com/opentrack/opentrack/wiki/Developers'-Quick-Start-Guide-for-Windows#build-prerequisite
*6:https://packages.debian.org/ja/buster/opencv-data