TOKYO SECRETS 0/7
LAB開発中

PoseAnchor

Vive Tracker 向けの実験版

PoseAnchor は、SteamVR / Lighthouse 環境の Vive Tracker だけを対象に、短時間の異常な pose(位置と向き)や欠測の影響の緩和を目指す、実験的な Windows x64 向けサーバードライバです。正式版ではなく、改善効果は未実証の実験版です。

概要

vrserver.exe の中で動くフィルタ層として、Lighthouse ドライバが SteamVR へ報告する pose を途中で受け取り、Vive Tracker のものだけを検査・補正してから本来の受け口へ渡します。SteamVR と一緒に自動で起動し、常駐アプリは不要です。HMD、コントローラー、Base Station、他社の Tracker の pose には触れません。

1〜数フレームの外れ値を拒否し、異常や欠測の間は最大150ミリ秒まで、移動量の上限を設けた予測で補います。判断できないときは元の pose をそのまま通します(fail-open)。150ミリ秒を超えて信頼できない場合は、誤った位置を出し続けず、範囲外(Out-of-Range)として報告します。

同一条件の実機 ON/OFF 比較による、飛びの減少・位置精度・復帰時間・追加遅延の改善は確認していません。誤判定や予測で動きが悪化する可能性があり、長い遮蔽中の本当の位置は復元できません。SteamVR の更新で動かなくなる可能性があり、同じ関数をフックする OpenVR Space Calibrator などとの同時利用には対応していません。インストーラーは未署名です。

アーキテクチャ

構成
C++ の SteamVR サーバードライバです。外部のライブラリに依存しないフィルタ本体、SteamVR とのつなぎ込み、オンデマンドで開く状態画面に分かれています。ビルドは CMake と MSVC、インストーラーは Inno Setup です。
仕組み
Vive Tracker と確認できたデバイスだけを処理します。複数の条件で毎回の pose を判定し、外れ値は拒否、異常な間は減衰させた予測で補い、復帰時はなめらかに合わせます。
安全設計
フィルタの例外、未識別のデバイス、不正な値など、判断できないときは元の pose をそのまま通します。補間には、時間・移動量・回転量の上限を設けています。
プライバシー
ドライバーと状態画面に、独自のテレメトリ送信やクラウドアップロードの機能はありません。診断はローカルの SteamVR ログと登録情報を使います。
対応環境
Windows x64 と、SteamVR / Lighthouse 環境の Vive Tracker が対象です。CI では、ビルドとテストに加え、メモリの不正や未定義動作の検査も行っています。
種別
Vive Tracker 向けの実験版
区分
LAB(個人制作・実験)
状態
開発中
担当
企画・設計・開発
技術
  • C++20
  • CMake
  • OpenVR
  • Inno Setup
  • PowerShell
  • GitHub Actions