現在、Virtual Reality Peripheral Network (VRPN) を使用して、NDI Polaris Spectra 光学トラッキング デバイスを Vizard VR ソフトウェアに接続しようとしています。最終的な目標は、ヘッドとツールの追跡にデバイスを使用することです。
Polaris に付属のソフトウェアは正しく動作し、デバイスに同梱されている剛体をサブミリの精度で追跡します。VRPN は Polaris 追跡デバイスをサポートすると主張しており、Vizard には VRPN プラグインが含まれています。ただし、VRPN を使用して Polaris と接続すると、剛体と Polaris の両方が三脚に接続されている場合でも、VRPN によって報告される追跡データが大幅に異なるようです。
Polaris で VRPN を使用するために、vrpn.cfg ファイルを編集して、コメントを外した次の行を追加しました。
vrpn_Tracker_NDI_Polaris polaris COM2 1
../NdiToolDefinitions/8700449.rom
(Polaris デバイスが COM2 に接続されていることを確認しました。追跡する剛体は 1 つだけで、8700449.rom ファイルに記述されています。Polaris に付属の NDI ソフトウェアでも、これが正しいことを確認しました。追跡しようとしている剛体のファイルです。)
次に、vrpn_server.exe プログラムを実行すると、次のように報告されます。
DEBUG Tracker_NDI_Polaris: num of rigidbodies 1
DEBUG Tracker_NDI_Polaris: filename >../NdiToolDefinitions/8700449.rom<
connected to NDI Polaris at default 9600 baud on device:COM2.
done
VRPN_Tracker_NDI_Polaris: Switching NDI to higher baud rate, and then
reopening
com port at higher rate...done
VRPN wiki に従って、別のコマンド ウィンドウで vrpn_print_devices.exe を実行して、トラッキングが正しく機能していることをテストします。
> vrpn_print_devices.exe polaris@localhost
Opened polaris@localhost as: Tracker Button Analog Dial Text.
Press ^C to exit.
Tracker polaris@localhost, sensor 0:
pos ( 0.07, 0.91, 0.00); quat (0.00, 0.01, 0.01, 0.00)
Tracker polaris@localhost, sensor 0:
pos ( 0.07, 0.91, 0.01); quat (0.00, 0.01, 0.01, 0.00)
Tracker polaris@localhost, sensor 0:
pos ( 0.08, 0.90, 0.00); quat (0.00, 0.01, 0.01, 0.00)
Tracker polaris@localhost, sensor 0:
pos ( 0.11, 0.92, 0.99); quat (0.00, 0.01, 0.01, 0.00)
Tracker polaris@localhost, sensor 0:
pos ( 0.05, 0.92, 0.01); quat (0.00, 0.01, 0.01, 0.00)
ここでの目盛りがメートル単位であることを正しく理解していれば、これらの位置のジャンプは非常に大きいです。(vrpn_print_devices.exe によって出力されたデータが切り捨てられていることにも注意してください。)
Polaris に付属の NDI ソフトウェアは同じ剛体を非常に正確に追跡するため、位置のジャンプは環境要因によるものではないと想定しています (室内の赤外線光源など)。リジッド ボディは、NDI が提供するパッシブな再帰反射トラッキング ドットを使用しています。現在、Windows 7 で VRPN を実行しています。
問題は VRPN に関連していると思われますが、Vizard の VRPN プラグインが VRPN からデータを正しく読み取っていない可能性もあります。これは、追跡対象のオブジェクトをメイン ビューポイントにリンクするために使用した Vizard (python) コードです。
import viz
viz.go()
# add enviornment
viz.addChild('gallery.osgb')
# add tracker
vrpn = viz.add('vrpn7.dle')
tracker = vrpn.addTracker('polaris@localhost')
tracker.waitForConnection()
# link tracker to view
view = viz.MainView
viz.link(tracker,view)
ただし、これは VRPN に由来する問題のようです。見逃した構成や、このような不正確な追跡の理由はありますか?
ありがとう!
編集: VRPN が間違ったリトル/ビッグ エンディアン エンコーディングを想定している可能性はありますか?