なんとなく

誰得感満載な記事が多いかも。Mono関係とLinuxのサーバ関係、レビューとか。

Raspberry PiでOpentrackを使う

はじめに

ゲームの視点移動を簡単にするために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上のゲームを操作して楽しんでいる。

f:id:takeshich:20200513145531p:plain

上の図のような環境で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用のソフト及びドライバ

詳しくは、ホームページを参照してほしい。

delanengineering.com

購入経緯については以前まとめた。

takeshich.hatenablog.com

PlayStationEye

PlayStationEye

  • 発売日: 2010/10/21
  • メディア: Video Game

Opentrackについて

TrackIR互換向けのOSSとしてのトラキングソフト

  • 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の詳細については、ホームページで確認してほしい。

github.com

Raspberry PiでOpentrackをビルドするための要件

OpentrackをRaspberry Pi使用できるようにビルドするわけであるが、 少なくともRasbianをbusterにすることが必要である。ただし、Debianのstableディストリビューションパッケージ外のものも必要となる。

Opentrackをビルドするための要件*5として以下が挙げられる。

  • CMake > 3.10.
  • OpenCV > 4.0.1
  • Qt5 SDK > 5.12.0

まず、

  • CMake > 3.10.

についてだが、これを満たすためにbusterである必要がある。

また、PointTrackerをビルドするため

があるが、 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 

少々時間はかかるがビルドは通る。

もしエラーが出る場合は、インストール後の素の状態から行ったわけではないので、おそらく当方の必要なパッケージの確認漏れだとおもうので、必要なパッケージをインストールしてほしい。

f:id:takeshich:20200513145600p:plain

その他稼働に必要なものインストール

カメラの設定に必要なvideo4linux2のユーティリティとqv4l2をインストールする。

sudo apt-get install -y v4l-utils qv4l2

なぜか知らないが設定のアイコンがイメージではなく、🔨の絵文字が使われており、対応したフォントが入っていないと f:id:takeshich:20200513145623p:plain豆腐になってしまうので、絵文字フォントのインストールをする。

sudo apt-get install fonts-noto-color-emoji

まとめ

誰得な感じなのだけど、とりあえずまとめてみた。 ゲームで使えるようにするまでにさらに設定が必要でそれについては別途書く予定。また、ARマーカーを使ったトラッキングについても試してみたのでそれについても書こうと思う。

f:id:takeshich:20200513145637p:plain