HMDなしでViveトラッカーを使いたい
はじめに
Viveトラッカーを使って様々な場面で位置トラッキングをしたい。
でも、HMDは使いたくない。そんなときのお話。
(研究の過程で調べたことをまとめた感じ)
使用したもの
HTC Vive(Viveトラッカー)
SteamVR
参考にしたページ
SteamVR Tracking without an HMD | Triad Semi Help Center
手順
- SteamVRなどHTCViveのセットアップに必要なものをインストール
- SteamVRの設定を変更する
- 設定ファイルの場所:C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings
- requireHmd を false にする
- activateMultipleDriversをtrueにする
- Viveトラッカー同梱のドングルをPCに接続する
- SteamVRを再起動
位置の取得
OpenVR APIを使用
C#の場合は以下を参考
Initializing OpenVR manually in C# :: SteamVR Developer Hardware General Discussions
以下のコードで、トラッキングされているデバイスの位置を取得できる(allPosesに結果が格納される)
vrSystem.GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin.TrackingUniverseStanding, 0, allPoses);
トラッキングの状態を取得することもできる(allPoses[deviceID].eTrackingResult)
結果は以下のEnum
public ETrackingResult
{
Uninitialized=1,
Calibrating_InProgress=100,
Calibrating_OutOfRange=101,(トラッキング範囲外)
Running_OK=200,(トラッキングされている)
Running_OutOfRange=201,
}
Pythonの場合は以下を参考(pyopenvrを使用)
注意点とか
ドングルの使用を忘れない
HMD使用時は、HMDに2個分のドングルが内蔵されているため、接続ができるが
Viveトラッカー単体の使用の際にはその個数分のドングルが必要
Viveトラッカー単体で位置トラッキングできると
ロボットとかドローンとかいろんなものの位置トラッキングに使えて夢が広がります
C#でViveトラッカーの位置や情報を取得するコードを書いたので