Инерционный трекер своими руками

Необходимые материалы

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

Нам понадобится:

  1. Arduino Pro Micro, а точнее ее китайский клон за $4.42 (300 руб. с доставкой, на момент покупки). Важно купить плату именно с ATmega32U4.
  2. MPU-9250 за $5.10 (350 рублей с доставкой, на момент покупки)
  3. Кабель Micro USB, скорее всего у Вас найдется такой дома, я купил плоский 3-метровый за $1.65 (90 рублей)
  4. Любая миниатюрная тактовая кнопка для поверхностного монтажа (без торчащих ножек) — стоит около 10 рублей в Российских магазинах

Еще нам понадобятся несколько сантиметров тонкого монтажного провода (я предпочитаю МГТФ), двухсторонний скотч (рекомендую 3M для уличного применения), широкая термоусадка (не обязательно), капля суперклея и, совсем уж не обязательно, корпус разъема на 2 контакта (2P Dupont 2.54mm).

Итоговая стоимость: 750 рублей.

Сборка

Есть очень простая и подробная официальная инструкция. Нам же из нее нужна только таблица соединений.

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

Тут я бы дал две рекомендации. Первая: плата датчиков уже платы Arduino, а большинство подключений приходится на одну сторону (2,3,7,GNDx2), так что ее оставляем открытой (плату датчиков сдвигаем к другой стороне), а оставшиеся два провода (VCC и GND) лучше припаять до того, как склеим платы вместе, так как после этого будет уже сложнее. Вторая: сначала паять длинные провода (GND и INT), а потом уже короткие (SCL, SDA,AD0). Я, как видно на фотографии, ошибся с INT. И самое главное: не жалейте флюса! И если он нейтральный (например канифоль), то его можно не отмывать.

Кнопка просто припаивается одним концом к Arduino (10), а другим концом через провод к ближайшей земле (GND). В принципе, кнопка и так зафиксирована, но я дополнительно подклеил ее цианакрилатом.

И это все, можно пользоваться!

Прошивка, калибровка и настройка

Тут все более, чем просто. Скачиваем официальное приложение EDTracker GUI, распаковываем и запускаем.

Выбираем версию (EDTraket2_9250) и соответствующий порт. Если нужного порта нет, можно обновить список кнопкой «Scan Ports». Когда выбрали соответствующий порт, запускаем прошивку кнопкой Flash. По окончании прошивки начнется стандартная 20-ти секундная калибровка гироскопа, при которой необходимо держать трекер неподвижно. Такая же калибровка проводится при каждом включении устройства.

Дальше калибровка компаса:

  1. Справа открываем кладку Magnetometr
  2. Выставляем Sensevity примерно на 75% (3/4 шкалы)
  3. Жмем Restart и начинаем вращать наше устройство во всех возможных плоскостях
  4. Делать это нужно до тех пор, пока коэффициенты матрицы перестанут меняться, но должно накопиться не меньше 500 Points, больше — лучше

На картинке отображаются точки. Красные — сырые измерения с датчика, зеленые — пересчитанные. Все эта трехмерная картинка вращается вокруг нуля, т.е. середины сферы из зеленых точек.

Если не откалибровать компас, то отслеживание поворота головы корректно работать не будет.

Настроек тут не много:

  • Выбор режима осей (Экспоненциальный/Линейный)
  • Чувствительность по каждой оси
  • Сглаживание

Я не люблю косить глаза на монитор, поэтому использую экспоненциальный режим, чувствительность выше 100, сглаживание 75-90%. Мне так удобно.

Осталось только прикрепить к вашей любимой гарнитуре и можно вступать в бой! Единственная кнопка служит для центровки.

Впечатления

Впечатления крайне положительные. У меня уже был трекер на камере и метке (GTX vTrack MkI) и мне есть с чем сравнивать.

Плюсы:

  • низкая стоимость
  • компактность
  • отсутствие камеры (для параноиков)
  • и самое главное — вам не нужно фиксировать свое положение перед компьютером, я люблю в процессе игры спускаться ниже и подниматься, а с камерой приходилось держать себя всегда в центре кадра

Минусы

  • дребезжание в крайних положениях — расплата за высокую чувствительность и экспоненциальный режим
  • уплывает калибровка гироскопа, если гарнитура некоторое время лежит на столе, приходится перед использованием заново 20 секунд калибровать уже на голове
  • высокие значения чувствительности не сохраняются после отключения, перед каждым использованием приходится заново выставлять чувствительность — это, скорее всего, ошибка в прошивке
  • программа EDTracker UI падает с ошибкой после некоторого времени работы
  • на горячую клавишу нельзя назначить комбинацию кнопок, да и то, что программа падает периодически, делает использование HotKey невозможным. Хорошо, что достаточно кнопки на самом устройстве

Как по мне, минусы совсем незначительные. А так как ПО с открытым исходным кодом — всегда можно что-то исправить. Мне нравится устройство и я буду его использовать. Может профессиональные устройства типа TrackIR могут оказаться чем-то лучше, я не готов отказаться от тех плюсов, что дает это устройство.

Самодельный HeadTracker для FPV

Извините за некрасивое крепление трекера, скотч не приклеивается к козырьку видеоочков HeadPlay.
Меня всегда манила возможность осматриваться в полёте, получая необыкновенные ощущения реального полёта. Даже во время первых полётов в очках я самопроизвольно поворачивал голову.
На картинке показан пробный вариант хедтрекера. Почему пробный? Потому что я просто хотел проверить, может ли работать это чудо. Конечно, можно сделать красивый корпус, поставить термоусадку, но я решил не усложнять проект.
HeadTracker состоит из двух частей: из датчика положения и Arduino Nano.
Сначала нужно купить датчик положения и Ардуино. Я использовал такой c eBay: «Nine Axis Degree of Freedom IMU Sensor ITG/3200/ITG3205 ADXL345 HMC5883L Module»

(извините, вставка ссылок не работает на трёх браузерах, введите это название в поиске EBay)
Arduino Nano V3.0 продаётся на Паркфлаере.

Дальше нужно только ждать.
Когда мы всё это получим, нужно припаять контактную колодку к датчику положения. Если опыта достаточно, то можно спаять всё самостоятельно, но если опыта нет или не хотите рисковать, лучше обратиться в ремонт мобильных, там могут припаять. У меня опыта хватило, за 5 минут я припаял контакты с помощью паяльника 30Ватт с тонким жалом.
Потом нужно соединить датчик положения с Ардуино. У меня использовались провода с стандартными разъёмами для сервоприводов (по 3 см). Слева будет датчик положения, справа Ардуино.
VCC-IN——5V
GND———-GND
SCL————A5
SDA————A4
Теперь нужно прошить Ардуино. Ищем в любой поисковой системе «Arduino IDE». Переходим на официальный сайт и скачиваем прошивку 1,0,5 (я использовал такую).

Нажимаем на Windows Installer (если компьютер на Windows). Скачиваем, подключаем Ардуино через USB, открываем скачанное приложение, нажимаем далее, пока программа не начнёт прошивать. Всё делается автоматически.
Потом идём на сайт «code/google.com/p/open-headtracker/» (скопировать без кавычек и вставить в адресную строку). Переходим в вкладку «Downloads» и скачиваем версию 0,08

Открываем скачанный файл. Ищем внутри программу «DIY HeadTracker». Открываем его. Должно быть как на фото ниже:

Чтобы поставить ПО для хедтрекера, этого недостаточно. Переносим то, что я отметил красным в программу:

В результате должно получиться так:

Такое количество фотографий нужно для того, чтобы вы не ходили между трёх сосен, пытаясь найти причину неисправности. Мне потребовалось 3 часа, чтобы понять причину ошибки при компиляции. Потом нужно нажать «Сервис»->»Плата». Нужно выбрать Arduino Nano w/ATmega328. Потом нужно выбрать «Сервис»-«Последовательный порт» и поставить СОМ порт. Чтобы узнать какой порт используется, нужно зайти в «Устройства и принтеры» и найти наше устройство. Далее нужно нажать на кнопку компиляции:

Если вы всё сделали правильно, то компиляция пройдёт успешно. Если нет, то нужно изменить СОМ порт контроллера.
Закрываем программу. Открываем программу Magnetrometer. Устанавливаем СОМ порт. Жмём кнопку «Connect» Потом начинаем калибровку. Устанавливаем датчик положения в горизонтальную плоскость, жмём SET, поворачиваем датчик на 180 градусов (по картинкам понятно, в какое положение нужно ставить), нажимаем на SET, возвращаяем в первоначальное положение и переворачиваем, нажимаем кнопку SET. Потом нужно сохранить результаты, нажав на кнопку SAVE. Можно закрывать программу.
Ищем программу «DIY HeadTracker GUI» Выбираем СОМ порт и нажимаем Connect.

Нажимаем Start plot. Если вы сделали всё правильно, то вы увидете графики положения хедтрекера.

Можно сказать, что настройка подошла к концу. Осталось только проставить в этой же программе реверсы, конечные точки, чувствительность датчика, нумерацию каналов управления камерой.
Дальше нужно соединить плату ардуино и пульт. У меня Turnigy 9X. Проблема в том, что подключить через тренер-порт не получится: там нет питания 12В. Там только PPM и минусовой контакт.
Вскрываем пульт.

Красный: питание 12В, жёлтый: РРМ сигнал, зелёный: земля. Чтобы соединить хедтрекер с пультом, нужно подключить так: слева контакты пульта, справа контакты хедтрекера.
Красный (+)——-VIN
Жёлтый (РРМ)——D9
Зелёный (-)———GND
Разъём вывел через бок аппаратуры, убрав разъём для подзарядки.
Теперь нужно назначить каналы управления камеры в режиме «тренера». На этом всё. Если будут вопросы: с радостью помогу.
Цена DiY хедтрекера составляет 600 рублей против FatShark Trinity за 4500 рублей. Экономия на лицо.

У хедтрекера имеется 3 оси управления. В прошлой моей статье многие сомневались что пишу я. Если не верите, я могу подтвердить это через видеозвонок Skype