工作 約 8 分

自作フルトラの記録_

ここ最近、VRChatにハマっている。

VRChatはVRゴーグルをかぶって好きなアバターを使って色々な人と話すゲームなんだけど、没入感が普通のPCゲームとは比べ物にならない。

で、このVRChatを更に楽しむためにフルトラになろうと思ったわけ。

もちろんフルトラになるためのデバイス、mocopiや Haritoraとか既存の製品は色々あるんだけど、まあやっぱり、NYStudioのこだわり?というか組み込みエンジニアなら自作してみようや、ってことで作る。

自作トラッカーは既に多くの先人が作っているので、ネットに情報が溢れている。

SlimeVRというOSS の自作トラッカーのプロジェクトがあって、コミュニティもあるので大体の情報はそこにまとまっている。今回はこれを参考にしつつ、ハード構成はオリジナルで作っていく。

バージョン1

まずは設計からだ。

特徴としては

  • バッテリーは一個。
  • マイコンは王道を往くESP32
  • IMU センサーは BNO085
  • 膝、くるぶし、腰の 5 ヶ所

バッテリーを一個で済ませるということは、それぞれのIMUをLANケーブルでつないで、一つのマイコンで処理することになる。初代Haritoraと似たような構成だな。

また、I2CでマイコンにIMUを接続できる数は2つまでなので、2つ以上つなげるためにマルチプレクサというモジュールをマイコンに追加する必要もあった。

細かい技術的な説明はClaudeちゃんよろしく~

Claude
Claude
BNO085のI2Cアドレスは0x4Aと0x4Bの2つに固定されていて、ADDRピンのHigh/Lowで切り替える仕様です。なので1本のI2Cラインには2個までしか繋げません。
Claude
Claude
そこでI2Cマルチプレクサ (TCA9548Aなど) を間に挟みます。1本のI2Cを8系統に分岐できるスイッチのようなICで、同じアドレスのセンサーを並べてもチャンネルを切り替えながら順に読めば衝突しません。
Claude
Claude
配線にLANケーブルを使ったのは、I2Cに必要な4本 (データ2本 + 電源2本) を1本にまとめられるからですね。Cat 5eは中に8本入っているので余裕で、コネクタもRJ45なのでワンタッチで着脱できます。トラッカーが壊れた時の交換も楽です。

これらの部品はアリエクで買った。

ということでね、以上の構成ではんだ付けして実際に組み立ててみると、こんな感じになった。

剝き出しの基板で自作感マシマシだよね。 こういう見た目は嫌いじゃない。

次にESP32にUSBを挿して、SlimeVRのファームウェアを書き込む。 ここはドキュメントに沿って全く問題なく進められた。

早速着けて動かしてみよう。

マジックテープで各トラッカーを身体に巻いて、キャリブレーションをしていざVRChatへ!!!

使いにくい!!!

LANケーブルが足に絡まって気になるし、基板のサイズと重さが邪魔臭くて仕方がない!

バッテリー1個にした恩恵ってあんまない?

まあ、トラッカーとして動くことは分かったから改善していこう…

Claude
Claude
そうですね。改善点はだいたい3つあると思います。
Claude
Claude
まずLANケーブルの取り回し。これは「全IMUを1つのマイコンに集める」設計の宿命なので、トラッカーごとに小型マイコンを載せて独立させれば配線そのものが消えます。
Claude
Claude
次に基板のサイズと重さ。ユニバーサル基板からPCB化して部品もSMDで組めば一気に小さくできます。JLCPCBなら5枚数ドルで発注できるので、個人開発でも気楽に試せます。
Claude
Claude
そして通信方式。Wi-Fiは通信範囲が広い反面、消費電力が大きくバッテリーが持ちません。SlimeVRには低消費電力な無線を使う軽量版 (SmolSlimeVR) があるので、そちらに乗り換える手があります。

バージョン2

そういうわけで、バージョン1から構成を一新する。

特徴としては

  • マイコンを各トラッカーに分散
  • 通信はWi-Fiから低消費電力な2.4GHz無線 (SmolSlimeVR方式) へ
  • 基板はJLCPCBで起こす

SmolSlimeVRは公式SlimeVRの軽量版で、Wi-FiではなくESBというNordic独自の2.4GHzプロトコルを使う方式。WiFi版との比較はこう。

公式 WiFi トラッカーSmol トラッカー
通信2.4GHz Wi-Fi強化型 ShockBurst (ESB)
重さ約 50g約 10〜15g
バッテリー寿命18〜20 時間40〜60 時間
通信範囲Wi-Fi カバレッジ受信機から 7〜12m

要するにSmol形式は軽くて長持ちで低遅延ってことだ。その代わり通信範囲は狭くなるけど、室内VRなら問題ない。

細かい技術的な説明はClaudeちゃんよろしく~

Claude
Claude
ESB (Enhanced ShockBurst) はNordic Semiconductor独自の2.4GHzプロトコルです。同じ2.4GHz帯を使うのでBluetoothと混同されがちですが、PHYや変調が違うためBLEスタックとは互換性がありません。オーバーヘッドが小さいぶん低レイテンシ・低消費電力に振れるので、SlimeVRコミュニティで採用されています。
Claude
Claude
そのためSmol構成ではnRF52840 (Nordicのチップ) が事実上の必須選択です。Wi-Fiに依存しないので、トラッカーごとに小型のNordicモジュールを載せて独立動作させやすく、ProMicro型のブレイクアウトボードも安く出回っているのが追い風ですね。
Claude
Claude
V1ではマルチプレクサが必要でしたが、V2ではトラッカーごとに1つのnRF52840 + 1つのIMUの構成になります。各I2Cバスにセンサーが1個ずつしか乗らないのでアドレス衝突が起きず、マルチプレクサは不要になります。
Claude
Claude
構成全体としては、各トラッカー (nRF52840 + IMU) がESBでデータを飛ばし、PCに挿した受信用USBドングル (これもnRF52840) が受け取って、USBシリアル経由でPC上のSlimeVRサーバーに渡す形になります。標準のBluetoothスタックではESBを受信できないので、Nordicチップ搭載の専用ドングルが必須です。
Claude
Claude
まとめると、軽量トラッカー (Nordicの2.4GHz無線) を各部位に独立配置し、専用USBドングルでPCに集めるWi-Fi不要の分散構成、ということです。

基板はJLCPCBに発注する。 JLCPCBは中国の格安PCB製造サービスだ。 バージョン1で用意したモジュールと違って、特化した回路になるので余計な部品が必要なくなる。

設計した回路図をうにょうにょしてJLCPCBに依頼すれば、回路基板が数日で送られてくる。

回路図書いて…

回路基板設計して…

何回も見直して…

3Dモデルを読み込み中...
V2基板の3D。マウスで回転・ズーム可能

完成!!バージョン1と比べるとずいぶんスッキリした。

JLCPCBはチップ素子をはんだ付けしておいてくれるサービスもあるので、これも同時に注文しておこう。

コスパの良さからIMUはLSM6DSVQTR、あとチップ抵抗とチップコンデンサを注文した。 回路10枚分で51ドル約8000円だった。

え?自分ではんだ付けしないのかって?マイコンはともかくチップは俺には無理だよそれは! だってチップ抵抗の大きさって米粒より小さいんだから! チップはんだ用のリフローホットプレートなんて持ってないよ!!

その他の部品は

でアリエクとJLCPCBから荷物が届いて、早速組み立てたのだが…

LiPoバッテリーのコネクタがJST PH 1.25mmだったようで、JST PH 2.0mmで用意していた回路に刺せないことが判明した!!

LiPoバッテリーのコネクタの規格をよく確認していなかった~~~ミスった~~。

仕方ないのでバッテリーのリード線を直接回路にはんだ付けしよう。

バッテリーがショートしないように細心の注意を払いながら、何とか10個分問題なくはんだ付けできた。

念のためリード線にガムテープを貼って絶縁処理をしとこう。

基板むき出しのままじゃ肌に痛いし、配線も剥き出しで装着中に断線しそうだからケースを作ろう。

ケースv1。バンドで巻く前提の形状

これでバンドを使って、身体に着けてみよう。

動きすぎて壊れたぞ~ 暴れんなよ…暴れんなよ…

再設計!

ケースv2。36mm × 36mm × 1.2mm / 17gの薄型再設計

結局、シンプルな薄型で取り付けは安定した。

キャリブレーションした後、VRChatで10分ほど遊んでみると多少ドリフトしてたけれど、この程度なら十分使えそう。

SlimeVRの設定をさらに調節すればもっと安定するのかもしれない。

身体にトラッカーをどう付けるかが悩みどころ。

身体にテープで直接つけるのが一番しっかり固定できるけどめんどくさいし肌にストレスがかかる。

全身スーツにマジックテープを縫い付けて、トラッカー側にもう片方のマジックテープをつけた着脱式にするのが良いかもと思って試行錯誤中。

色々あって総額は結構かかってるんだけどバージョン2だけに限れば材料費は2万ぐらいかな。

2万でこの精度なら割とコスパいいほうじゃない?

これでさらにVRCが楽しくなること間違いなし!!