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