RAZOR AHRS: Программа Ahrs_Razor_All_in_1

Скачайте программу AHRS_RAZOR_ALLin1_[20170701] и распакуйте архив в любую папку. Подключите Ардуино с подпаянным датчиком к USB. Запустите программу Ahrs_Razor_All_in_1.exe. Появится окно:

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

Чтобы подключиться к AHRS_RAZOR нажмите кнопку [Connect]

При первом подключении вероятно появление окна с ошибкой:

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

Проконтролируйте соответствие поворотов изображения датчика на экране реальным поворотам датчика. Видите несоответствие? "Пружинит" по Yaw? Необходима калибровка.

Начнем с самой простой части калибровки:

Калибровка гироскопа [Calibr Gyro].

В комбобоксе "Выбор режимов" выберите режим [Calibr Gyro]. Появится система координат с голубым шариком. Шарик показывает текущие нескорректированные выходные координаты гироскопа.

Калибровку можно производить только при полном покое датчика. И даже есть подозрение, что ориентация в пространстве датчика тоже влияет на результат калибровки.

Положите датчик на стол не перепутав верхнюю и нижнюю стороны, т.е. так как он будет крепиться к голове.

Датчик нужно зафиксировать скотчем итп. Я просто придавил его клавиатурой. Важно на время калибровки гироскопа (и акселерометра тоже) убрать из комнаты все источники вибрации:

  • Выключить вентиляторы,

  • Закрыть форточки,

  • Выключить музыку,

  • Убрать из комнаты домашних животных, детей итд.

Готовы? Теперь нажмите кнопку [Start]. На экране появится надпись "Пожалуйста подождите 5 секунд" и пойдет обратный отсчет. За это время вам нужно выйти из комнаты на время калибровки, чтобы не добавлять вибрации. Калибровка гироскопа занимает 3 минуты 20 секунд. Через это время возвращайтесь. Вы увидите окно "Сохранить в файл результаты измерений Гироскопа". Введите имя файла и нажмите . По умолчанию файлу предлагается дать имя "Gyro__YYMMDDhhmm.fltG", где YYMMDDhhmm - текущие дата и время.

Теперь на экране уже два шарика: голубой и зеленый. Зеленый показывает откорректированные данные гироскопа. Он заметно ближе к центру. Индикатор "|Gyr In/Gyr St|" в левой части экрана показывает отклонение входные/выходные данные гироскопа. Переключать можно чекбоксом [(x)Standard]. При удачной калибровке показания |Gyr St| не превышают 10, при неподвижном сенсоре.

Перейдем к самой сложной части:

Калибровка Акселерометра [Calibr Accel].

Все меры устранения вибраций должны быть приняты и при калибровке акселерометра. Ранее описывались способы калибровки путем медленного поворота сенсора в руках. Считаю их недостаточно точными, так как даже небольшие ускорения сенсора сильно влияют на точность калибровки.

В программе применен метод калибровки по шести точкам. Датчик при этом находится по очереди в шести разных положениях, оставаясь неподвижным. При калибровке нужно по очереди положить датчик каждой из шести граней на стол и закрепить скотчем или прищепкой. Порядок и точность положений не важна:

Итак, приступим.

В комбобоксе "Выбор режимов" выберите режим [Calibr Accel]. Появится система координат с желтым шариком. Шарик показывает текущие нескорректированные выходные координаты акселерометра.

Установите акселерометр в одно из шести положений (см. рисунок выше). Теперь замрите и нажмите кнопку [Start]. Калибровка в каждом из шести положений занимает 33 секунды.

Затем повторите калибровку для оставшихся пяти положений. Для этого устанавливайте датчик по очереди на одну из оставшихся граней. В некоторых положениях придется крепить датчик прищепкой или скотчем, не допуская электрических замыканий в плате датчика. Затем нажимайте кнопку [Next].

После шестого положения сохраните результаты измерений Акселерометра в файл.

В результате у вас должно быть на экране что-то вроде этого:

Здесь:

  1. Желтый шарик показывает текущее неоткалиброванное положение акселерометра.

  2. Зеленый шарик показывает текущее откалиброванное положение акселерометра.

  3. Сиреневые точки - входные результаты измерений.

  4. Зеленые, красные и синие точки - выходные откалиброванные результаты измерений:

    • красные: длина вектора больше нормы на +1%

    • синие: длина вектора меньше нормы на -1%

    • зеленые: отклонение длина вектора от нормы не более +/-1%.

  5. Rmax/Rmin - отношение максимальной к минимальной длины вектора акселерометра. Чем это значение ближе к единице, тем качественнее выполнена калибровка.

  6. Красный и синий векторы указывают на точки Rmax и Rmin соответственно.

  7. Индикатор "|Acc In/Acc St/Acc Ext|" среднее за крайние 2 секунды значение расстояния от центра координат Акселерометра.

  8. Чекбокс [(x)Filter All] отсеивает лишние точки, расстояние от центра которых больше или меньше двух соседних. Хорошо фильтрует случайные помехи.

  9. Чекбокс [(x)Input] - разрешает показывать входные данные (см. пункты 1 и 3).

  10. Чекбокс [(x)Standard] - разрешает показывать выходные данные со Стандартной калибровкой (влияет на показания пункта 7, а также на пункты 2,4 и 5).

  11. Чекбокс [(x)Extended] - разрешает показывать выходные данные с Расширенной калибровкой (влияет на показания пункта 7, а также на пункты 2,4 и 5).

Для совместимости оставлена возможность калибровки Акселерометра по старому (классическому) способу. Для этого на панели "Parts" выберите [1]. После нажатия [Start] крайне медленно поворачивайте датчик по всем направлениям так, чтобы получилось что-то вроде шершавого шара из желтых точек на экране. Лучше не нажимать [Stop] и проделать все 10000 измерений за 3 минуты 20 секунд. Так будет точнее.

Теперь сравните Rmax/Rmin в этом режиме и в режиме калибровки по шести точкам. Будете удивлены.

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

Калибровка Магнетометра [Calibr Magn].

Вибрации совершенно не влияют на калибровку Магнитометра. (Верните в комнату детей и кошек) Зато сильно влияют электромагнитные помехи. Такие, как лампы дневного света в момент включения, сотовые телефоны, мощные холодильники итд итп. Следует все это на время калибровки выключить или удалить из комнаты.

Не менее важным является влияние крепление датчика и положение его в комнате. Калибровку Магнитометра следует проводить, уже закрепив окончательно датчик на оголовье наушников, и именно в той точке пространства, где будет ваша голова во время управления самолетом. При правильной калибровке стальной каркас наушников не страшен. Но он может намагнититься со временем, тогда калибровку Магнитометра следует повторить.

Готовы к калибровке Магнитометра? Тогда начнем:

В комбобоксе "Выбор режимов" выберите режим [Calibr Magn]. Появится система координат с красным шариком. Шарик показывает текущие нескорректированные входные координаты Магнитометра.

Возьмите в руки наушники с закрепленным датчиком и расположите его в той точке пространства, где будет находиться ваша голова во время управления самолетом.

Нажмите кнопку [Start]. Вращайте датчик, не сдвигаясь с этого места, во всех направлениях, по всем осям. Периодически свободной рукой нажимайте на кнопки [Z],[Y],[X] так, чтобы образовалось пространственная форма из желтых точек в виде трехосевого эллипсоида. После окончания измерений сохраните результаты в файл.

На экране должно получиться что-то вроде этого:

Здесь все аналогично калибровке Акселерометра:

  1. Красный шарик показывает текущее неоткалиброванное положение Магнитометра.

  2. Зеленый шарик показывает текущее откалиброванное положение Магнитометра.

  3. Сиреневые точки - входные результаты измерений.

  4. Зеленые, красные и синие точки - выходные откалиброванные результаты измерений:

        • красные: длина вектора больше нормы на +1%

        • синие: длина вектора меньше нормы на -1%

        • зеленые: отклонение длина вектора от нормы не более +/-1%.

Таким образом, чем больше зеленых точек и меньше синих и красных тем калибровка точнее.

  1. Rmax/Rmin - отношение максимальной к минимальной длины вектора Магнитометра. Чем это значение ближе к единице, тем качественнее выполнена калибровка.

  2. Красный и синий векторы указывают на точки Rmax и Rmin соответственно.

  3. Индикатор "|Mag In / Mag St / Mag Ext|" среднее за крайние 2 секунды значение расстояния от центра координат Магнитометра.

  4. Чекбокс [(x)Filter All] отсеивает лишние точки, расстояние от центра которых больше или меньше двух соседних. Хорошо фильтрует случайные помехи.

  5. Чекбокс [(x)Input] - разрешает показывать входные данные (см. пункты 1 и 3).

  6. Чекбокс [(x)Standard] - разрешает показывать выходные данные со Стандартной калибровкой (влияет на показания пункта 7, а также на пункты 2,4 и 5).

  7. Чекбокс [(x)Extended] - разрешает показывать выходные данные с Расширенной калибровкой (влияет на показания пункта 7, а также на пункты 2,4 и 5).

Проверьте Rmax/Rmin. Должно получиться не более 1,100. Если больше, необходимо повторить калибровку Магнитометра.

Итак, теперь откалиброваны Гироскоп, Акселерометр и Магнитометр. Проверим. В комбобоксе "Выбор режимов" выберите режим:

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

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

Здесь:

  1. вычисленные значения Yaw, Pitch, Roll в градусах.

  2. откалиброванные значения длины векторов входных сигналов Магнитометра, Акселерометра и Гироскопа. При неподвижном датчике значения "M" и "A" должны быть близки к единице (0.950 ... 1.050), а значение "G" не более 10.

  3. комбобоксы "M","A","G" позволяют выбрать тип коррекции данных с датчиков:

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

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

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

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

      • [M extended],

      • [A standard],

      • [G standard].

  1. комбобокс выбора ориентации сенсора.

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

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

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

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

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

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

Здесь:

  1. Результаты калибровки и настройки. Здесь особо интересного сейчас для нас ничего нет. Можно обратить внимание на строчку "// -- YY/MM/DD hh:mm:" Это Дата и Время калибровки-настройки.

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

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

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

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

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

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

Итак, настройки записаны. Перейдем к тому, из-за чего все это затевалось - проверки работы по протоколу FaceTrack/OpenTrack. В комбобоксе "Выбор режимов" выберите режим:

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

В этом режиме в программу поступают готовые значения Yaw, Pitch, Roll по протоколу FaceTrack/OpenTrack. Программа соответственно поворачивает 3D модель сенсора.

Неожиданно видим три новых контрола:

  1. Кнопка [FT center ],

  2. Кнопка [FT reset ],

  3. Комбобокс [Center YPR].

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

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

3. В чекбоксе [Center YPR] можете выбрать тип центровки:

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

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

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

Проще попробовать, чем описать.

Выбрали метод центровки? Теперь проверьте еще раз поведение 3D модели сенсора.

Если все устраивает, то запишите новые настройки в Ардуино. Теперь можете закрыть программу Ahrs_Razor_All_in_1.

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

Но давайте вспомним, для чего мы это все делали. Это все нужно для работы с программой OpenTrack, которая принимает данные с входных устройств разных типов и преобразует их в один из протоколов, поддерживаемых Вашей любимой игрой.

Рассмотрим настройку OpenTrack для работы с входными данными из AHRS RAZOR:

RAZOR AHRS: Работа с OpenTrack

Download

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

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