Tundra TrackerとRP2040で通信する方法を備忘録を兼ねて書いてみようと思います
GitHub – tundra-labs/rp2040_examples
Tundra Tracker
TundraLabsが開発しているVRトラッカーでSteamVRのLighthouseに対応しています
このトラッカー小型だったり稼働時間が長かったりと色々な特徴がありますが個人的に一番だと思っているのが拡張性です
vive trackerにも外部との接続端子がありましたがそれぞれの端子は1bitの情報しか扱えず、アナログスティックなどを搭載することはできませんでした
しかしTundra Trackerは底面のフラットケーブルを介してマイコンなどとSPI通信を行うことができるのでアナログスティックを搭載したりすることが出来ます
ドライバー
まず新しいドライバを作成する必要があります
DriverManifest · ValveSoftware/openvr Wiki · GitHub
input_componentsでオフセット、幅(大きさ)、種類などを指定することでSPIで送られてくるビット列を各入力に割り当てることが出来ます(Tundra Trackerオリジナル要素っぽい?)
この例だとビット列の0番目から9番目までの10ビットをスティックのx軸に、10番目から19番目までの10ビットをy軸に割り当てています
ドライバの登録
作成したドライバーを使うにはSteamVRのドライバーフォルダの中に直接ぶち込むかSteamvrに登録する必要があります
今回はSteamvrにドライバを登録する方法で行きます
これならコマンドひとつで解除できますし
ドライバの登録/解除は
にあるvrpathreg.exeから行います
ドライバを登録するには引数にadddriver <ドライバのパス>を指定します
これでvrdrivermanifestのnameで設定した名前でドライバが登録されます
JSON File
SteamVRデバイスには種類(コントローラーなのかトラッカーなのか)や製造元、読み込むInputプロファイルのパスなどが記述されているjsonファイルが書き込まれています
これを書き換える必要があるのでデフォルトのものをデバイスからダウンロードします
パソコンにデバイスをUSB接続した状態で
を実行しコンソールが開いたらdownloadconfigを実行
これでLHR-{シリアルナンバー}.jsonという名前でファイルが保存されます
このファイルは書き換えるので元に戻すためにバックアップを取っていてください
書き換えるのは2か所だけでまずfirmware_configに”mapped_input” : trueを追記
そしてinput_profileの値を新しく作成したinput_profileのパスに変更
出来たらuploadconfigで書き換え後のファイルをデバイス内に書き込みます
SteamVRの設定からコントローラのテストを開きデフォルトから変わっていれば成功です!!
RP2040
Tundra Trackerとマイコン(RP2040)はSPIで通信を行います
トラッカー側がマスターでマイコンがスレーブです
公式サンプルがあるのでそれを使います
このコードでは専用の構造体を宣言することで分かりやすくビット配列を表現できるようにしています コロン以降はそれぞれの変数に割り当てられるビット数です
アナログスティックを搭載する場合の例です
作ってみました(色々雑ですが)