なげざっき

ついったーに書けない文字数まとめ。

Oculus Quest 2の無線フルトラ環境をUSBデバイスサーバー経由で構築する+INDEXコントローラーを使う

f:id:ambient02:20210409181802j:plain

2021/10/04 プレイ前の手順を一部変更し、再接続時にコントローラーがトラッカーとして認識される問題に対処しました。

VRChatをはじめて5ヶ月。
ダンスをきっかけにひとつの到達点である無線フルトラ+INDEXコントローラーの環境が整ってしまいました。
カネの出所?秋の車検までにモンスターのバルブクリアランス調整代貯めればいいんでしょ?
→貯まりました!!バルブクリアランスは既定値内でした!!

ただしうちの環境はちょっと特殊で、VR Readyな部屋とPCが設置してある部屋が20mくらい離れています。
Quest2はVirtual Desktopで無線接続すればPCVRをプレイできますが、ViveトラッカーやINDEXコントローラーはPCにドングルを挿さなければ使えません(当たり前
毎回毎回デスクトップPCを移動させるのはちょっとめんどくさいですよね。
そこで今回はUSB機器をLAN経由で接続できるUSBデバイスサーバーを使用し、PCから離れた部屋もフルトラ環境を構築できるか試してみました。

用意したもの

f:id:ambient02:20210303094530j:plain

my new gear...

  • ベースステーション2.0:HTC SteamVR Base Station 2.0 ×2
    ……と思っていたら、片方がVALVE INDEX Base Station 2.0でした。
    規格が同じなので相互に互換性があります。
  • トラッカー:HTC VIVE Tracker 2018 ×3
  • コントローラー:VALVE INDEXコントローラー
  • 追加ドングル:HTC Vive Tracker USB Dongle ×2
    Quest2でINDEXコントローラーを使いたい場合、左右それぞれのコントローラーに対してドングルをひとつずつ用意する必要があります。
    ……実はVive HMDとかでも代用可能らしい。
  • USBデバイスサーバー:サイレックス・テクノロジー DS-510
    今回の計画の肝になるデバイスで、トラッカーとコントローラーをLAN経由で接続するためのサーバーです。
  • スイッチングハブエレコム EHC-G05MN2-HJB
  • USBハブ:バッファロー BSH4AE12BK (USB2.0 セルフパワー)
  • LANケーブル:CAT6Aの50cmと5mのもの
  • SX Virtual Link
    USBデバイスサーバーに接続したUSB機器を、PCの仮想USBポートに接続・切断するためのソフトです。
  • OpenVR-SpaceCalibrator
    Quest2のトラッキング情報をもとに、Viveトラッカーの位置情報を設定するためのツールです。
  • トラッカーベルト:TrackStrap Plus / TrackBelt Plus
    5時間半使ってなおトラッカー側のバッテリー消費はナシ。
    VIVE Tracker 2018(旧型)で長時間フルトラを楽しむなら必須アイテムです。
  • その他小物類

機器の接続

f:id:ambient02:20210407160011p:plain

だいぶ端折っていますがこんな感じ。実質別の建物といっても過言ではない?

参考資料

Quest2でフルトラを実現する基本的な手順については、以下の記事を参考にしました。
USBデバイスサーバーを使わない場合はこれだけでOKです。

各デバイスの初期設定

ここから、USBデバイスサーバー DS-510が絡んだ環境構築のアレコレになります。
今後のSteamVRやOpenVR-SpaceCalibratorのバージョンアップ次第では、この手順での環境構築ができなくなる可能性があります。ご留意ください。

トラッカーのペアリングとセットアップ

僕の環境ではDS-510経由でのトラッカーのペアリングはうまくいかなかったので、初回のペアリングのみドングルをPCに直接接続して行いました。

  • Quest2からVirtual Desktopを起動し、PCに接続する。
  • Virtual Desktopのメニューから「Launch SteamVR」を選択し、SteamVRを起動する。
    (このときSteamVRをSteamから起動すると、このあとの作業がうまくいきませんでした)
  • トラッカーをひとつ用意し(以下、トラッカーA)、そのトラッカーと対になるドングル(以下、ドングルA)をPCのUSBポートに接続する。
  • トラッカーAとPCをUSBで接続し、電源を入れる。
  • トラッカーAとドングルAをペアリングする。
    SteamVR上で検出されるようになればOK。
  • トラッカーAの電源を切り、PCのUSBポートからドングルAを外す。
  • 確認のため、ドングルAをDS-510につなげたUSBハブに接続する。
  • SX Virtual LinkでPCとドングルAを接続する。
  • トラッカーAの電源を入れると自動でペアリングが始まり、SteamVR上でトラッカーAが検出されることを確認する。
  • トラッカーAの電源を切り、SX Virtual LinkでPCとドングルAを切断する。
  • USBハブからドングルAを外す。※重要!
    複数のドングルを接続したままペアリングは行わないこと。
  • これを残りのトラッカーに対して行い、すべてのトラッカーが別々のドングルとペアリングされた状態にする。
コントローラーのペアリングとセットアップ

コントローラーもトラッカー同様、初回のペアリングのみドングルをPCに直接接続して行いました。

  • トラッカーのセットアップで使用したドングルをすべて外す。※重要!
  • SteamVRを起動する。
    こちらはSteamから直接起動しても大丈夫でした。
  • ペアリングは片手ずつ行う。
    ドングルをPCのUSBポートに接続し、コントローラーの電源を入れ、SteamVRからコントローラーのペアリングを行う。
    ペアリングが完了したらコントローラーの電源を切り、ドングルを取り外す。
  • これを両手のコントローラーに対して行う。
    このときも複数のドングルを接続したままペアリングは行わないこと。
  • 最後に、DS-510経由でコントローラーが認識されることを確認する。
    手順はトラッカーのときと同様。
ベースステーションのセットアップ

この構成ではBluetoothが使えないため、SteamVR上でベースステーションのチャンネルを変更することができません。
ベースステーションの裏にある小さい穴に針金やクリップなどを差し込むと、手動でチャンネルを変更することが出来ます。

  • ベースステーションをふたつ、1m程度の距離をとって向かい合わせに仮設置する。
  • 中央にPCと接続済みのトラッカーをひとつ置く。
  • 両方のベースステーションの電源を入れる。
  • SteamVRでベースステーションが2台検出されるまで待つ。
  • 手動チャンネル変更で片方を1chに、片方を2chに設定する。
    (1~16chまでありました)

毎回プレイ前にやること

f:id:ambient02:20210409181757j:plain

さて、無事環境は構築できましたが、この構成ではプレイ前に正しい手順で儀式を行う必要があります。
手順が狂うと動作に様々な支障が出る可能性があるので、僕はいつもこの手順をなぞっています。

  • ベースステーションの電源を入れ、起動するまで待つ。
  • DS-510の電源を入れ、LANに接続する。
    このとき、DS-510にはコントローラー用2個、トラッカー用3個、計5個のドングルが接続されている。
  • Quest2からVirtual Desktopを起動し、PCに接続する前にVirtual DesktopのメニューからQuest2のコントローラーを無効にする。※重要
    1. Inputタブへ移動する
    2. 「Emulate gamepad on PC」にチェックを入れる
    3. 「Use touch controllers as gamepad」にチェックを入れる
    4. 「Emulate gamepad on PC」 のチェックを外す
    その後、PCに接続する。
    参考記事: Oculus QuestでIndexコントローラーを使う - Virtual Desktop応用編 - トナのブログ
  • SX Virtual LinkでPCとドングル5個を接続する。
  • Virtual DesktopのメニューからSteamVRを起動する。
    Quest2のコントローラーの出番はここまでだが、Virtual Desktopを操作するときには必要になるので、邪魔にならないところに置いておくと◎
  • INDEXコントローラーの電源を入れ、SteamVR上に表示されるまで待つ。
    これ以降はINDEXコントローラーで操作することになる。
  • トラッカー3個の電源を入れ、SteamVR上に表示されるまで待つ。
  • SteamVRでコントローラーとトラッカーがすべて検出されたことを確認する。
    位置がおかしい場合、このタイミングでキャリブレーションを行う。
    参考記事: Oculus Questで無線フルトラをする - 簡易設定編 - トナのブログ
f:id:ambient02:20210409191716p:plain
  • このとき、SX Virtual LinkとSteamVRではこのようにデバイスが接続および認識されているはず。
  • SteamVRメニューからVRChatを起動する。
  • めでたしめでたし!!

ちょっとした困りごと

Virtual Desktopでボイチェンを使用していると、ふとしたタイミングで声が出なくなったり、音声が遅延して喋ってからループバックまで1秒くらいかかる現象がよく発生します。
ボイチェンのOFF→ONで直ることもありますが、大抵の場合はVirtual Desktopを切断→再接続しないと直りません。
しかし、Virtual Desktopを再接続したタイミングでQuest2のコントローラーが再び有効化されるからか、再接続後はINDEXコントローラーがトラッカーとして認識されてしまいます。
これを解消するには、いまのところSteamVRを再起動するしかありません……

ややふべんだ!!

※重要で書いた手順をVirtual Desktopを切断→再接続するときに毎回実行してあげれば、再接続後もIndexコントローラーをちゃんとコントローラーとして認識してくれるようになります。
これでいちいちSteamVRを再起動する必要がなくなった!!めでたしめでたし!!

おわりに

無線フルトラはいいぞ!!
ケーブルの呪縛から解き放たれて自由になろう!!

おまけ

少しでも参考になったら踏んでもらえると嬉しいリンクたち。