【SlimeVR】VRChatで足を動かすためにTrackerを自作した

はじめに

Quest 2などのヘッドセットのみでは頭と両手しか動かない。両足や体、肘を正しく動かすためには別途トラッカーと呼ばれるセンサーが必要がある。 トラッカーは様々なものが販売されており、

VIVE Tracker VIVE™ | VIVE Tracker

Uni motion Uni-motion|フルトラッキングモーションキャプチャシステム

HaritoraX HaritoraX 1.1 - 株式会社Shiftall

Tundra Tracker Kickstarter 日本 | Tundra Tracker

などがある。

もちろんこれらを購入し、装着すれば簡単にフルトラッキングが可能となる。

しかし、今回は自作トラッカーに興味があったため、その中の一つであるSlime VRを利用し、自作トラッカーを作成した。

SlimeVRとは

VRにおけるフルボディトラッキングを低コストで実現するソリューションです。 フォワードキネマティクス(FK)を使用し、ヘッドセットとコントローラのみが絶対位置として認識され、個々のトラッカーの回転から計算された骨格のモデルを構築します。

docs.slimevr.dev

Slime VRでは最小で胸、両もも、両くるぶしの5個のトラッカー、最大で胸、腰、腰下(尻)、両もも、両くるぶし、両足、両肘の11個のトラッカーを利用できます。 詳しくはここを参照してください。 Putting on your trackers - SlimeVR Docs

材料

今回は両もも、両くるぶしのための4個のトラッカーを作成した。また、Slime VRの最小トラッカー数の推奨である5個を満たすため、胸のトラッカーにはNintendo switchのJoyConを利用した。

購入物

物品 使用個数 金額
ESP32 2 1919円
MPU6050 4 1200円
マジックテープ ゴムバンド 4 1100円
ユニバーサル基盤 2 46円
コネクタ類 * 50円
合計 4315円

元からあったもの

はんだ・適当なワイヤ・フィラメント・Nintendo switchのJoyCon

memo

コントローラからセンサを直結する場合、基盤やコネクタは不要。

また、Slime VRではESP32の代わりにESP8266も使用可能です(未検証)。ESP8266はESP32よりも安く購入することができるので低コスト化できる可能性が高い。

手順

ハードウェアの作成

基本的には以下のように配線します。この組み合わせでももとくるぶし(=1足分)のセンサーとして装着すると仮定し、2個作成した。また、コントローラーから離れる側の足までは60cm以上のワイヤ長が必要です。

上の回路に従って組み立てたものが以下の写真のものです。

ファームウェアの書き込み

Updating the tracker firmware - SlimeVR Docs に従って行います。

大まかな手順としては以下の通りです。

  1. https://github.com/SlimeVR/SlimeVR-Tracker-ESP.gitをcloneする
  2. platformio.iniを環境に合わせて編集
  3. defines.hを Configuring the firmware project - SlimeVR Docs を使って生成、置き換える。
  4. build & write

また、筆者環境ではオンラインのファームウェア書き込み機としてドキュメント内で紹介されていた SlimeVR Firmware Tool はビルドが終わらず、使用することができませんでした。

ケース

Slime VRではコミュニティの作成したいくつかのケースが紹介されています。 Community-built cases - SlimeVR Docs

今回私が作ったものはこれらのケースを利用できなかったので適当に3Dプリンターで作成した。

また体に装着するためのバンドが必要です。座位、立位を往復する場合ゴムバンドなどを利用したほうがいいです。今回は幅5cm,長さ80cmのゴムバンドを利用しました。(長すぎたので60cm程度でもよかったと思っています。)

装着位置に関しては Putting on your trackers - SlimeVR Docs を参照してください。

SlimeVR Serverの準備

SlimeVR setup - SlimeVR Docs に従って行います。

大まかな手順としては以下の通りです。

  1. https://github.com/SlimeVR/SlimeVR-Installer/releases/latest/download/slimevr_web_installer.exe からServerのインストーラーを入手、インストールする。
  2. インストールしたSlimeVR Serverと作成したトラッカーを起動し、ServerのGUIに表示されるまで待つ。
  3. 表示されたトラッカーの位置、配置設定を行う。
    設定例
  4. 装着したトラッカーに従ってServer GUIの右側下部SteamVR Trackersの設定を行う。今回の場合、Feet, Chest, Kneesにチェックを入れた。
  5. Body proportions の設定を行う
  6. 直立し、Server GUI中央上のResetを押す

Body proportions の自動設定の使い方

SlimeVRではBody proportionsの設定が必要です。簡単化のために、自動で設定できる機能があります。大まかな手順としては以下の通りです。

  1. Server GUI 右側にあるReset Allを押し、リセットを行います。
  2. Autoを押し、自動設定ウィンドウを表示します。
  3. 以下の動画を見て、自動設定時の動きを確認します www.youtube.com
  4. Start Recordingを押して、上の動画のように動きましょう
  5. Auto-Adjustを押して、計算を待ちます。
  6. 計算が完了したらApply Valuesを押すと、Server GUIのBody proportionsに反映されます。自動設定ウィンドウは閉じて問題ないです。

もっと詳しい説明は Body proportions configuration - SlimeVR Docs を見てください。

JoyConをSlime VRのトラッカーとして利用する

GitHub - carl-anders/slimevr-wrangler: Use Joycons as SlimeVR trackers with this middleware application を使うとJoyConをSlimeVRのトラッカーとして利用することができます。

大まかな手順としては以下の通りです。

  1. https://github.com/carl-anders/slimevr-wrangler/releases/latest/download/slimevr-wrangler.exe から最新のexeをダウンロードする
  2. JoyConの内側にある黒いペアリングボタンを長押ししてJoyConをペアリングモードにする
  3. PCからJoyConとペアリング、接続を行う
  4. slimevr-wrangler.exeを開き、Search for Joy-Con'sを押してJoyConを追加する
  5. SlimeVR Serverに認識されているかを確認する

このソフトウェアはまだアルファ版のようです。またBluetoothドングルによっては、振り向くと接続が安定しない可能性があるようです。

VRChatで使う

この部分は他のトラッカーと違いはありません。

手順としては以下のようになります。

  1. SlimeVR Server, SteamVR, VRChatを起動する
  2. VRChatメニュー内Calibrate FBTを押す
  3. Trackerの位置に白い球が表示されるのでアバターの各部位に大まかに合わせ、両手のTriggerを押す

おわりに

VRChatであなたの足は動くようになったでしょうか?

あなたのVRライフがより良くなることを祈っています。

今回記事内で利用したSlime VRでは一つのコントローラーに二つのセンサーしか接続できませんが、GitHub - Loler920a/L.i.me-Slimes: A twist of lime on the case and hardware of SlimeVRを利用すると4つのセンサーを接続できるようです。もし将来的に多くのトラッカーを追加する場合、いい選択肢になるでしょう。

またはI2Cのマルチプレクサを利用すれば複数のセンサーを接続できるかもしれません。(そもそもコントローラーがそれほど処理できるのか疑問ですが、、、)

自作トラッカーは自分で好きなように遊べるので電子工作ができる人ならよい選択肢だと思います。ぜひ試してみてください。