Skip to content

Latest commit

 

History

History
72 lines (56 loc) · 10.3 KB

README.RU.md

File metadata and controls

72 lines (56 loc) · 10.3 KB

EN RU

OpenVR Arduino HMD

Драйвер для OpenVR / SteamVR, позволяющий отслеживать голову, с помощью любого Arduino трекера вращения, для самодельного VR шлема из HDMI дисплея и гарнитуры.

Настройка

  1. Подключите второй VR дисплей и установите расширенный режим в настройках мониторов.
  2. Установите SteamVR.
  3. Распакуйте драйвер в папку "...\Steam\steamapps\common\SteamVR\drivers". Настройте необходимые параметры (windowX, windowY, windowWidth, windowHeight и другие), в файле конфигурации "...\Steam\steamapps\common\SteamVR\drivers\arduinohmd\resources\settings\default.vrsettings".
  4. Запустите SteamVR и окне статуса SteamVR нажать -> Настройки комнаты -> Маленькая комната -> Калибровка -> 170 см. SteamVR демонстрация может быть закрыта, а запуск SteamVR Home может быть отключен в настройках SteamVR.
  5. Наденьте шлем, при необходимости отцентрируйте его, с помощью клавиши (по умолчанию Numpad 5 или CTRL + ALT + R, изменить кнопку можно в файле конфигурации, вписав нужное название кнопки).

Если вы используете Android смартфон, то вероятно будет удобнее использовать OpenTrack драйвер, там же можно прочитать инструкции о стриминге изображения на смартфон.

Быстро включать и выключать расширенный VR монитор шлема можно, с помощью оболочки HMD Assistant или MultiMonitorTool.

Arduino и трекеры вращения

Подойдут любые COM трекеры с выводом 3 float значения yaw, pitch, roll или 4 float значения кватерниона w, x, y, z. Скорость вывода должна составлять.

Для отслеживания поворотов головы понадобится купить Arduino Nano и подключить к ней плату с датчиками вращения, например, MPU 6050 GY-521, MPU 9250, MPU 3200 GY-85 или любую другую при наличии прошивки с выводом трёх float значений yaw, pitch, roll (рысканье, тангаж, крен) или 4 float значения кватерниона w, x, y, z и калибровкой. Вывод данных происходит бинарный (3 float или 4 float значения), пример можно посмотреть тут. При использовании кватерниона измените значение RotationQuaternion на true. Скорость вывода должна составлять 115200.

Готовая прошивка Arduino есть для MPU 3200 GY-85, называется она Razor AHRS. Вместе с ней идет программа для калибровки и демонстрации. После калибровки замените файл "Output.ino", в папке с прошивкой, на этот. Здесь важно отметить, что появились новые ревизии GY-85, которые несовместимы с этой прошивкой. Прошивкой поддерживаются следующие сенсоры: акселерометр ADXL345, гироскоп ITG-3200 и магнитометры HMC5843, HMC5883L. Инструкцию по калибровке можно найти на youtube.

Готовая прошивка Arduino есть для MPU 6050 GY-521. Необходимо спаять по схеме, загрузить библиотеки, распаковать их в папку "libraries" Arduino IDE. Положить трекер на ровную поверхость, прошить скетч "MPU6050_calibration.ino" и получить данные для калибровки. Далее нужно прошить скетч "HMD_MPU6050_DMP6.ino", вписав в него уже полученные данные калибровки.

Параметры файла конфигурации

Название Описание
COMPort Номер COM порта Arduino, можно посмотреть в диспетчере устройств. Используйте порты от 1 до 9, измените при необходимости его в свойствах устройства.
CenteringKey Код кнопки центрирования изображения, изменить кнопку можно в файле конфигурации, вписав нужное название кнопки).
CrouchPressKey Код кнопки приседания, изменить кнопку можно в файле конфигурации, вписав нужное название кнопки). Необходимо для связи с другими драйверами, например, используя контроллеры Razer Hydra и используя этот драйвер можно приседать.
CrouchOffset Высота приседания по нажатию кнопки.
FOV Градус поля зрения. Можно увеличить, в зависимости от линз VR гарнитуры.
IPD Межзрачковое расстояние.
DistanceBetweenEyes Расстояние между стерео изображениями, чем больше, тем ближе.
DistortionK1, DistortionK2 Коэффициенты искажения линз.
ScreenOffsetX Сдвиг изображения по горизонтали.
ZoomHeight, ZoomWidth Коэффициенты масштабирования стерео изображений.
DisplayFrequency Частота обновления экрана.
RenderWidth, RenderHeight Разрешение рендера изображения для одного глаза.
WindowWidth, WindowHeight Высота и ширина выводимого окна.
WindowX, WindowY Смещение окна, требуется для отображения на других мониторах (расширенных). Например, для отображения на втором дисплее, который отображается справа, нужно указать значение 1920 (при условии, что первый дисплей имеет разрешение 1920 на 1080). Точные данные можно просмотреть, с помощью MultiMonitorTool утилиты, которая также может выключать и включить второй монитор, через bat-файл.
DebugMode Режим отладки, заблокирован на 30 FPS. Рекомендуется после проверки отключить (поставить false).
ArduinoRequire Требование подключенного Arduino, для запуска драйвера. Параметр необходим для быстрых тестов контроллеров, чтобы не подключать и одевать шлем для тестов. Для отключения измените на false.

Горячие клавиши

Название Описание
Numpad 5, CTRL + ALT + R Центрирование изображения.
Page Up, Page Down Подняться или опуститься.
Numpad 8, 2, 4, 6 Перемещение вперед, назад, влево, вправо.
Numpad 1, 3 Изменить yaw (рысканье).
Numpad 7, 9 Изменить roll (крен).
Numpad - Сброс перемещений и поднятия.

Известные проблемы

  1. Красный экран. Исправить это можно выбрав окно "Headset Window".

Загрузка

Версия для x86 и x64.
Загрузить

Обратная связь

r57zone[собака]gmail.com