Razor_AHRS_5DOF [20180715]: Калибровка и настройка трекера

Для калибровки и настройки 5DOF трекера используется программа: Razor_AHRS_5DOF_Calibrator

Распакуйте архив в любую папку. Подключите Ардуино с подсоединенными модулями Head и Neck к USB и запустите программу: Razor_AHRS_5DOF_Calibrator.exe.

Чтобы подключиться к трекеру Razor_AHRS_5DOF нажмите кнопку [Connect] При первом подключении вероятно появление окна с ошибкой:

Значит, в EEPROM еще нет результатов калибровки. Скоро мы это исправим.

На экране видим 3D модели двух модулей:

  • Верхний модуль “Head”

  • Нижний модуль “Neck”

Если виден только один модуль, значит, нижний модуль не подключен и трекер работает в режиме 3DOF. Это тоже нормальный режим работы трекера. Для переключения в режим 5DOF отключите питание (отсоедините USB кабель) и подключите нижний модуль. В режиме 5DOF на Ардуино светится светодиод PIN13.

Модель верхнего модуля должна соответствовать реально используемому модулю. Если показана не та модель, то следует проверить правильность выбора варианта прошивки в файле Menu.h, и прошить верный вариант.

Зажмите кнопку мыши и перемещайте мышь. Так можно развернуть точку обзора для более удобного наблюдения. Колесом мыши можно изменять размер изображения. Кнопками [Z], [Y], [X] центрировать камеру вдоль одной из осей координат. Можно развернуть окно на весь экран. Работать будет удобнее.

Первым делом нужно сделать предварительную калибровку Магнитометра, чтобы не отвлекаться на “пружину по Yaw”. Можно пока не устанавливать модуль на оголовье наушников: Калибровка Магнитометра

Итак, Магнитометр откалиброван. В комбобоксе "Выбор режимов" выберите режим [Test Row]:


Тест работы по сырым значениям датчиков [Test Row]

В этом режиме в программу поступают неоткалиброванные значения Гироскопа, Акселерометра и Магнитометра от обоих модулей. Программа по результатам измерений корректирует значения датчиков и вычисляет Yaw, Pitch, Roll, X, Z. Затем соответственно поворачиваются 3D модели верхнего и нижнего модулей:

Здесь:

1. комбобокс [Head / Neck] выбирает настройку верхнего модуля “Head” или нижнего модуля “Neck”. При выборе “Neck” элементы управления настройками модуля помечены желтым цветом:

2. вычисленные значения Yaw, Pitch, Roll для модуля “Head”, в градусах

3. вычисленные значения Pitch, Roll для модуля “Neck”, в градусах

4. вычисленные значения смещений X, Z.

5. откалиброванные, усреднённые за крайние две секунды, значения длин векторов входных сигналов Магнитометра, Акселерометра и Гироскопа, для модуля “Head”. При неподвижном датчике значения "M" и "A" должны быть близки к единице (0,95 ... 1,05), а значение "G" не более 1,00°/s.

Если значения выходят за границы допустимого диапазона, то необходимо откалибровать датчики верхнего модуля “Head”. Калибровка датчиков описана здесь.

6. откалиброванные, усреднённые за крайние две секунды, значения длин векторов входных сигналов Акселерометра и Гироскопа, для модуля “Neck”. При неподвижном датчике значение "a" должно быть близко к единице (0,95 ... 1,05), а значение "g" не более 1,00°/s.

Если значения выходят за границы допустимого диапазона, то необходимо откалибровать датчики нижнего модуля “Neck”. Калибровка датчиков описана здесь.

7. значения максимальных отклонений координат за крайние две секунды, по всем пяти координатам Yaw, Pitch, Roll, X, Z. Имеет смысл только при неподвижных модулях.

8. комбобоксы "M", "A", "G" позволяют выбрать тип коррекции данных с верхнего модуля “Head” или нижнего модуля “Neck”, в зависимости от комбобокса [Head / Neck]:

  • [ none ] - данные не корректируются.

  • [ standard] - стандартная калибровка.

  • [extended] - расширенная калибровка.

Посмотрите, как влияет выбор разных типов калибровки на реакцию 3D моделей модулей. Наилучшим вариантом, по моему опыту, является выбор:

  • [M extended],

  • [A standard],

  • [G standard].

9. комбобокс выбора ориентации верхнего модуля “Head” или нижнего модуля “Neck”, в зависимости от комбобокса [Head / Neck]:

Здесь нужно выбрать, какие направления у модуля считать:

  • направлением вверх "Up",

  • направлением вперёд на монитор "Forward".

Учитывайте, как вы собираетесь расположить модули на голове и шее. Всего существует 24 варианта ориентации для каждого модуля. Направления "Forward" (вперёд) обозначено треугольными стрелками в виде клюва. Зеленая часть стрелки (с ноздрями) - верхняя. Синяя часть стрелки - нижняя. Направление осей X и Y обычно нанесено на плату модуля.

Следует учесть, что при вертикальной ориентации оси Y модуля “Head” практически не действует коррекция по Магнитометру, поэтому нежелательно выбирать восемь режимов, начинающихся с "Y+" или "Y-". Иначе взгляд на прицел, без наклона головы, может быть нестабилен. Эти восемь режимов затенены серым цветом. В нижнем модуле “Neck” магнитометр не используется, поэтому можно выбирать любой из 24 вариантов ориентации.

Ориентации нужно указать для обоих модулей “Head” и “Neck”.


Сохранение настроек в Ардуино

Наконец, мы выбрали устраивающий нас режим работы трекера. Теперь нужно записать результаты калибровки и настроек в Ардуино. Для этого нужно нажать кнопку [Arduino...]. Появится окно " Arduino ". Если есть, что сохранять (были сделаны какие-либо изменения в настройках или калибровке), то в заголовке окна появится звездочка: " Arduino * ":

Здесь:

1. Версия прошитого скетча “20180715” и версия прошитого варианта головного сенсора “SensorVariant 8”

2. Дата и Время калибровки и настройки.

3. Кнопка [Read Arduino]. Считать все калибровки и настройки из Ардуино. Если вы что-либо откалибровали или настроили и до сих пор не сохранили, то все изменения будут потеряны. Придется калибровать и настраивать заново.

4. Кнопка [Write Arduino]. Записать калибровки и настройки в энергонезависимую память Ардуино (EEPROM). Теперь настройки будут действовать даже после следующих включений компьютера.

5. Кнопка [Open File]. Считать все калибровки и настройки из Файла. Если вы что-либо откалибровали или настроили и до сих пор не сохранили, то все изменения будут потеряны. Придется калибровать и настраивать заново.

6. Кнопка [Save to File]. Записать калибровки и настройки в файл. Теперь настройки можно будет считать из файла и записать в Ардуино в любое время.

Как вы уже догадались, сейчас нужно нажать кнопку [ Write Arduino ].

Полезно также записать настройки в файл [ Save to File ]. Тогда при замене Ардуино можно считать калибровки для модулей сенсоров из файла.

Итак, настройки сохранены. Теперь нужно проверить работу трекера по протоколу Hatire, который нам нужен для связи с OpenTrack. В комбобоксе "Выбор режимов" выберите режим [OpenTrack]:


Проверка работы по протоколу Hatire [OpenTrack]

В этом режиме в программу поступают готовые значения Yaw, Pitch, Roll, X, Z по протоколу Hatire/Facetrack. Программа соответственно поворачивает и смещает 3D модели модулей. Зелёный шарик на координатной сетке показывает смещение по осям X “влево - вправо” и Z “вперёд - назад” в пределах от -30,0 до +30,0 по обеим осям. Поворот модели нижнего модуля осуществляется по восстановленным значениям из координат X и Z и поэтому лежит в диапазоне от -45° до +45° по обеим осям: Pitch и Roll.

1. В чекбоксе [Center YPR] нужно выбрать тип центровки для каждого из модулей “Head” и “Neck”:

  • [Center Yaw] - центрируется и становится равной нулю только координата Yaw. Этого достаточно, если ваш монитор установлен вертикально и на уровне головы.

  • [Center Y,P] - центрируются и становятся равными нулю координаты Yaw и Pitch. Это более универсальный случай. Монитор может быть установлен наклонно и выше или ниже головы. Например, как в ноутбуке.

  • [Center YPR] - центрируются и становятся равными нулю все координаты: Yaw, Pitch и Roll. В этом случае монитор может быть установлен как угодно, даже наискосок или "вверх ногами". Но при центровке следует точно сориентировать голову, иначе управление обзором будет искажено.

2. Кнопка [FT reset ] сбрасывает действие центровки. В Ардуино передается команда #or.

3. Кнопку [FT center ] следует нажать, направив указатель на монитор. В Ардуино будет передана команда #oz. Ардуино будет считать это направление центральным, соответствующим направлению на монитор. Проверьте правильность центровки, поворачивая голову во всех направлениях и возвращая ее в центр.

4. Кнопка [Save center] сохраняет центровку в EEPROM. Теперь Ардуино будет помнить направление на монитор и при следующих подключениях к компьютеру.

После любого изменения способа центровки (1), нужно повторить саму центровку (3), и повторить сохранение центровки в Ардуино (4).

Из моего опыта следует, что для модуля “Head” больше всего подходит центровка [Center Y,P], а для модуля “Neck” больше всего подходит центровка [Center YPR].

Проверьте еще раз поведение 3D моделей модулей. Если все устраивает, то запишите новые настройки в Ардуино: [Arduino…] , [Write Arduino…] , [OK].

Теперь можете закрыть программу калибровки.

На этом калибровка Razor_AHRS_5DOF завершена, поздравляю!

Осталось настроить OpenTrack для работы с входными данными из Razor_AHRS_5DOF:

Razor_AHRS_5DOF [20180715]: Настройка OpenTrack


Скачать программу калибровки: Razor_AHRS_5DOF_Calibrator


Razor AHRS 5DOF [20180715]: Самодельный инерционный 5DOF трекер