Почему VRPN сообщает о таких переменных данных отслеживания для стационарного объекта?

В настоящее время я пытаюсь использовать Периферийную сеть виртуальной реальности (VRPN) для подключения оптического устройства слежения NDI Polaris Spectra к программному обеспечению Vizard VR. Конечная цель - использовать устройство для отслеживания головы и инструмента.
Программное обеспечение, которое поставляется с Polaris, работает правильно, отслеживая твердые тела, упакованные с устройством, с точностью до миллиметра. VRPN утверждает, что поддерживает устройство слежения Polaris, а Vizard включает плагин VRPN. Тем не менее, когда я использую VRPN для взаимодействия с Polaris, данные отслеживания, представленные VRPN, по-видимому, значительно различаются, даже когда твердое тело и Polaris подключены к штативам.

Чтобы использовать VRPN с Polaris, я отредактировал файл vrpn.cfg, добавив следующие незакомментированные строки:

vrpn_Tracker_NDI_Polaris polaris COM2 1 
../NdiToolDefinitions/8700449.rom

(Я подтвердил, что устройство Polaris подключено к COM2. Необходимо отслеживать только одно твердое тело, которое описано в файле 8700449.rom. Я также подтвердил с помощью программного обеспечения NDI, поставляемого с Polaris, что это правильное файл для твердого тела, которое я пытаюсь отследить.)

Затем я запускаю программу 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, я проверяю, что отслеживание работает правильно, запустив vrpn_print_devices.exe в другом окне cmd:

> 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, усекаются.)
Поскольку программное обеспечение NDI, поставляемое с Polaris, очень точно отслеживает одно и то же твердое тело, я предполагаю, что скачки в положении не связаны с факторами окружающей среды (такими как источники инфракрасного света в комнате и т. Д.). Твердое тело использует пассивные световозвращающие точки отслеживания, которые обеспечивает NDI. В настоящее время я работаю VRPN на Windows 7.
Хотя я подозреваю, что проблема связана с VRPN, возможно также, что Vizard VPN не правильно считывает данные из 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 принимает неправильную кодировку little/big endian?

0 ответов

Другие вопросы по тегам