[SlimeVR]2000円以内で作る格安トラッカー

VRChatにかなりのめり込んでいるHaruです.

格安でFull Body Tracking,実現したくありませんか?
私はしたいです.

かと言って,FBTを実現するために,Viveトラッカー*4,ベースステーション(必要分)を揃える金銭的な余裕はありません.
OwO Track+SlimeVRを使用して実現することも考えましたが,それに対応した携帯電話が足りませんし,装着が面倒です.
Arduino Uno R3を使用してトラッカーを自作することも試みましたが,どの分野も理解が浅く,作成できそうにありませんでした.

この影響でMPU6050が余ってしまったので,ここを参考にして,トラッカーを作ることにしました.

注意事項

この記事は,こちらの記事を参考に,私に必要な部分だけを作成しています.
違いは

  • 内蔵バッテリなし(外部電源,モバイルバッテリからの供給を想定)
  • 作成するトラッカは4点のみ
    • LEG(L,R)
    • ANKLE(L,R)
    • FOOT(L,R)←ここでは作成しません
  • WAISTは携帯電話(OwO Track)で代用

膝,足首以外に足もトラッキングしたい場合は,膝を単体で作成,足首と足先を1つにまとめて作成する必要があります.
また,この記事は一部間違いを含んでいる可能性があります.随時更新していきますのでご指摘ください.
とりあえず足が動けば問題ない人はこのまま進んでください.

装着イメージ

ハードウェアを作成する

使ったもの

適当にAmazonで揃えました.
リード線やユニバーサル基板は実店舗で買ったのでノーカウント.

商品名価格(購入時)
WeMos D1 Mini x2999
MPU6050 x4699
合計1,698
腰,胸を作成する場合,WeMos D1 Miniが+1,MPU6050が+2必要になります

作業する

Image

WeMos D1 MiniとMPU6050はピンヘッダがついていないので,ピンヘッダをハンダ付けします.
直にケーブル接続する場合は不要です.
久々の半田付けなので,かなり手こずりました.

Image
失敗

接続する

以下の表のように接続します.
ここではユニバーサル基板に載せていますが,別に基板でなくても大丈夫です.

WeMos D1 MiniMPU6050(LEG)MPU6050(ANKLE)
3V3VCCVCC,ADD
GGNDGND
D1SCLSCL
D2SDASDA
Image
クソみたいなハンダ付け

ハードウェアはこれで完成です.

固定方法は割愛します

ファームウェアを作成する

トラッカーのファームウェアをビルドし,トラッカーに適用させます.
設定書く程度なのでそこまで難しくないです.

環境構築

VSCodeのインストール

https://azure.microsoft.com/ja-jp/products/visual-studio-code/ からダウンロード,インストールします

PlatformIO IDEのインストール

ここから,またはVSCodeの拡張機能からインストールします.

ドライバのインストール

ここからデバイスドライバをダウンロード,解凍し,インストールします.

Gitのインストール

ここから自分のPCにあったGitをダウンロード,インストールしてください

トラッカーのソースコードをクローンする

開始(Start)内のGitリポジトリのクローンを選択し,出てくるテキストボックスへ,以下のように入力します.

https://github.com/SlimeVR/SlimeVR-Tracker-ESP.git

保存先のディレクトリを選択すると,クローンが完了します.
ディレクトリが開かれなかったら手動で開いてください

設定を書く

設定を変更するファイルは次のとおりです.

  • platformio.ini
  • src/defines.h

platformio.iniを編集する

23,24行目のコメントを解除し,SSIDを接続するWiFiネットワークのSSIDに,PASSWORDを接続するWiFiネットワークのパスワードに置換してください.
クォーテーションマーク'” “‘は削除しないでください.

src/defines.hを編集する

29-33行目を以下のように編集します

#define IMU IMU_MPU6050
#define SECOND_IMU IMU_MPU6050
#define BOARD BOARD_WEMOSD1MINI
#define IMU_ROTATION DEG_任意の値(0,90,180,270)
#define SECOND_IMU_ROTATION DEG_任意の値(0,90,180,270)
IMU_ROTATIONについて

以下の画像に対応しています.
画像上側が頭です.

ファームウェアのビルド,転送

はじめはMicroUSBケーブルを接続して転送する必要がありますが,1度ファームウェアを転送し,WiFiに接続できるようになると,ネットワーク経由で転送することができるようになります.

ビルドする

VSCode下部のバーにある,✔をクリックするとビルドが開始します.
問題がなければSUCCESSと表示されます.表示されなかったらなにか間違えています.エラーを読みましょう.

転送する

VSCode下部のバーにある→をクリックすると,転送が開始します.

SUCCESSと表示されると転送成功です.うまく行かない場合は,ボードを再接続,ケーブルを交換するなど試してください.

OTA経由での更新

WiFi,ネットワーク経由でファームウェアを転送できます.
platformio.iniをの34-37行目のコメントを解除します.
upload_portに書かれているIPアドレスを,トラッカーに割り当てられているIPアドレスに変更します.

トラッカーのIPアドレスは,DHCPサーバの払い出し状況や,SlimeVR Serverから確認できます.

# show status dhcp
DHCPスコープ番号: 1
   ネットワークアドレス: 10.128.1.0
...
               割り当て中アドレス: 10.128.1.4
 クライアントイーサネットアドレス: 
                         ホスト名: SlimeVR FBT Tracker
                     リース残時間: 2日 14時間 1分 52秒
               割り当て中アドレス: 10.128.1.6
 クライアントイーサネットアドレス: 
                         ホスト名: SlimeVR FBT Tracker
                     リース残時間: 2日 14時間 1分 52秒
...

設定後,再ビルドし,トラッカーを再起動してからアップロードすると,更新できます

SlimeVRのセットアップ

インストール

https://github.com/SlimeVR/SlimeVR-Server にあるWebインストーラでインストールすると楽です

体の設定

https://docs.slimevr.dev/server-setup/body-config.html を参考に設定してください.ここでは割愛します.

トラッカーの割当

接続直後はトラッカーの割当がされていません.

手動でトラッカーを割り当てる必要があります.
以下の表に対応しています

SlimeVRの表示装着位置
NONE割当なし
HMDVRHMD
CHEST胸部
WAIST
HIP尻(不明)
LEFT_LEG左膝
RIGHT_LEG右膝
LEFT_ANKLE左足首
RIGHT_ANKLE右足首
LEFT_FOOT左足先
RIGHT_FOOT右足先
LEFT_CONTROLLER左手
RIGHT_CONTROLLER右手
LEFT_ELBOW左肘
RIGHT_ELBOW右肘

正面に装着する場合はFRONTで問題ありません.

トラッカーを使う

電源を接続するとトラッカーが起動します.
自動的にキャリブレーションが始まるので,動かさずに待ちます.

SlimeVR Serverに表示される値がふらつかなくなったらキャリブレーション終了です.
トラッカーを所定の位置に装着してください.

次にSteamVRに割り当てるトラッカーを設定します.

SlimeVR Server内のSteamVR Trackersで,WaistとLegsにチェックを入れます.
これで腰と足がSteamVRに表示されます.

VRChatのik-betaでは膝のトラッキングにも対応している(はず)ので,Kneesを有効にしたら膝トラッカーが出現します.
キャリブレーションが少し面倒くさいので私はしていません.

SlimeVRでのキャリブレーション

装着直後は各トラッカーが変な場所にいるので,位置をリセットする必要があります.

直立状態でCTRL+ALT+SHIFT+YかResetボタンを押します.
Resetボタンに表示されるカウントダウンが終了すると,トラッカーの位置が初期位置に戻ります.

VRChat等のVRゲームでキャリブレーションをすれば完了です.
お疲れ様でした.

使用感

絶対位置を取っているわけではないため,定期的にキャリブレーションしないと少しずつズレていきます.
また,左右対称の位置にトラッカーを装着しないと,左右でズレが生じます.着席時がわかりやすい例です.
本格的に動きたい場合は,Viveトラッカーを使用するメソッドのほうが良いでしょう.

Demo

後で撮ります…

Related Posts:

コメントを残す

メールアドレスが公開されることはありません。