Jump to content

Собираем свой DIY FreeTracker (отслеживание положения головы)


Recommended Posts

Всем привет.

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

Но недавно звёзды сошлись в прямую линию и руки дотянулись до создания устройства и оно уже мною используется некоторое время.

 

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

 

Quote

!!!ВНИМАНИЕ

Я не претендую на авторские права на сам процесс создания, коду прошивки и прочему, что связано с данной инструкцией.

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

 

Хотел добавить в конце, но всё же лучше напишу именно в этом месте:

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

 

Ах, чуть не забыл про ссылку, вот она - софт для сборки датчика.

 

Что? Из чего? Для чего?

Spoiler

 

Что за трекер и нужен ли он мне?

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

 

Что по цене?

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

Что же по цене? В точности:

1. Датчик - 581 руб. (я брал этот)

2. Контроллер Arduino Nano - 146 руб. (брал этот !!ВАЖНО!! Выбирайте ATMEGA328P)

ПРИМЕЧАНИЕ:

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

3. Провода для подключения (опционально) - 65 руб. (например эти)

ИТОГО: 800 рублей

 

Что нужно для изготовления?

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

1. Датчик GY-85 (BMP085)

2. Контроллер Arduino Nano

3. Паяльник (если вы шарите в этом и есть провода)+сопутствующие материалы, например припой, флюс и т.п.

4. Провода 0,12 мм, например из шлейфа, главный критерий - не жёсткие.

5. Кабель USB A-miniUSB (кабель так же не должен быть достаточно жёстким, так же желательно иметь два таких кабеля, один для прошивки, второй для использования, который должен быть достаточной длины)

6. В зависимости от способа крепления, понадобятся стяжки, изолента или что-то подобное, тут на вкус и цвет.

 

 

Подготовка

Spoiler

 

Итак, у вас уже на руках всё необходимое, поздравляю, половина уже сделана))

Теперь вам нужно подготовить контакты на датчике и на контроллере, если вы заказали с уже установленными - вы пошли по более лёгкому пути))

 

На этом этапе вы должны подготовить всё необходимое для главного процесса изготовления устройства, а именно:

1. Контроллер Arduino Nano с распаянными контактами А4, А5, 5V и GND

2. Датчик GY-85 (BMP085) с так же распаянными контактами VCC_IN, SCL, SDA и GND

3. Кабель USB A-miniUSB (как выглядит)

 

Как именно вы распаяете контакты - это ваше дело, НО, одна из сторон должна быть разборной, т.е. вы должны без каких-либо проблем отключить датчик от контроллера или контроллер от датчика - это важный момент!

 

Всё готово? Отлично, тогда переходим к следующему этапу

 

 

Прошивка контроллера

Spoiler

 

Сразу скажу, что вам не нужно пугаться огромного текста, всё намного проще, чем вы думаете и сложностей в этом процессе не должно возникнуть. Много текста - только из-за подробного описания, чтобы практически каждый из вас мог повторить все шаги чтобы получить в результате трекер.

 

keycap-1-apple.png Итак, в первую очередь вам необходимо установить среду Arduino - это важная составляющая и без этого вы не сможете прошить контроллер. Загрузить установщик среды можете как с диска (ссылка выше), так и с официального сайта - там уж всегда актуальная версия)). 

Уточню несколько моментов для тех, кто будет устанавливать впервые: во время установки будут всплывать несколько сообщений об установке драйверов - так и должно быть, одобряйте установку.

keycap-2-apple.png Установите драйвер для контроллера ch340/341, вы сможете найти его по ссылке на диск (файл ch340_341_drivers.exe)

keycap-3-apple.png После установки среды Arduino и драйвера контроллера, перезагрузите ваш компьютер.

keycap-4-apple.png После перезагрузки компьютера подключите контроллер Arduino Nano к вашему ПК, желательно в корневой USB (в материнской плате)

keycap-5-whatsapp.png Откройте диспетчер устройств и убедитесь, что контроллер определился системой, должно выглядеть так - контроллер в диспетчере устройств. Если так, двигаемся дальше, запомнив номер порта, у меня он COM5, у вас будет наверняка с другим номером, так что запомните именно номер вашего порта - это будет нужно чуть позже. 

keycap-6-apple.png Скачайте папку Razor_AHRS с диска (скрин), поместите папку со вложенными файлами (7 файлов) на ваш диск в удобное место. ВАЖНО! в пути к этим файлам не должно быть киррилицы (русских букв)!

keycap-7-apple.png Откройте папку и двойным кликом откройте файл Razor_AHRS.ino , у вас должна открыться среда Arduino с семью вкладками - как выглядит.

keycap-8-whatsapp.png Теперь надо подготовить среду Arduino. Начнём с того, что вам нужно объяснить, что вы подключаете, поэтому нужно указать это - выбор платы. Затем указать порт, к которому вы подключили плату/контроллер (вы ведь запомнили номер порта в пункте 5? Делается это так же - выбор порта.

keycap-9-whatsapp.png Важный пункт! Поскольку контроллеры имеют разные загрузчики (в составе контроллера), нет никакой возможности узнать какой именно в вашей плате, поэтому выбирая процессор вы можете столкнуться с ощибками во время прошивки, поэтому в первую очередь попробуйте сменить процессор (загрузчик) - выбор загрузчика , но, как правило, выбирая первый вариант нет никаких проблем, так что выбираем именно его.

keycap-10-apple.png Ну что, поздравляю, вы уже очень близки к процессу прошивки, вам остаётся только запустить этот процесс. ВАЖНО!! в этот момент датчик НЕ должен быть подключен к контроллеру! - запускаем процесс прошивки. По окончанию прошивки вы должны увидеть сообщение об успешной прошивке. Иногда вы можете видеть такие ошибки , однако если в конце вы увидели сообщение об успешной прошивке - это не имеет значение.

Если вы получаете ошибку компиляции/прошивки , значит нужно проверить:

- определился ли контроллер в диспетчере устройств

- правильно ли вы указали порт контроллера из пункта 8

- Датчик не подключен к контроллеру

Если всё верно, тогда закройте среду Arduino и повторите шаги с пункта 4. Если вы снова получаете ошибку, попробуйте сменить тип загрузчика из пункта 10. При повторении ошибок напишите в комментариях, будем думать.

 

 

Первое включение

Spoiler

 

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

 

Теперь, когда контроллер готов, нам нужно познакомить его с трекером, подключив их друг к другу. Конечно, подключение должно быть особенным, но не переживайте, тут у вас не должно возникнуть проблем, поскольку, как правило, как на контроллере, так и на датчике каждый контакт подписан, так что нам остаётся только подключить всего 4 провода.

 

? Вот как должно выглядеть подключение:

 

Контроллер_____________Датчик
контакт__________________контакт

А4 ---------------------> SDA

A5 ---------------------> SCL

5V ---------------------> VCC_IN

GND -------------------> GND

 

? Подключение может быть разным, но важно, чтобы это было достаточно надёжным:

1. Вы можете на этом этапе впаять провода как в контроллер, так и в датчик

2. Вы можете впаять провода в датчик, а в контроллер вставить через разъём (чаще всего используется разъём BLD2+BLD3), как у меня - фото.

3. Вы можете впаять наоборот, в контроллер, а подключать через разъём на датчике.

4. Последний вариант это подключение через разъём как к контроллеру, так и к датчику.

 

? Для наглядности добавлю картинку, которую вы так же найдёте на диске (ещё раз добавлю ссылку ), но вот ссылка на само изображение подключения датчика к контроллеру.

? Теперь подключите кабель USB (USB A-miniUSB (как выглядит)) к вашему компьютеру, как на контроллере (фото), так и на датчике (фото) должны загореться индикаторы (светодиоды). Горят? Ми, значит всё идёт отлично!

 

 

Монтируем наш дейвайс

Spoiler

 

На этом этапе вам нужно установить/закрепить контроллер и датчик на ваших головных наушниках, ну или обруч - кто что использует))

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

Возможно тут допишу что-то, если эта строка всё ещё здесь - нечего было добавить)

 

Несколько фото как сделал я: фото раз и фото двас

 

 

Базовая настройка датчика

Spoiler

? Итак, теперь нам нужно сделать предварительную настройку датчика. Как предварительная, так и точная настройка "под себя" будут осуществляться в программе OpenTrack, которую вы так же сможете найти на облачном диске (актуальная на момент написания статьи версия!).

? Скачиваем программу и устанавливаем - тут всё стандартно и думаю с этим проблем не будет.

? Запускаем программу и первым делом создайте отдельный профиль, назвав его, например, ETS2 - куда нажать. Лучше так делать для каждой игры, где вы будете использовать датчик.

?  и в источнике данный выбираем "Natire Arduino"

? Во вкладке выходного интерфейса выбираем "freetrack 2.0 Enhanced"

? Во вкладке фильтрации/сглаживания выбираем "Accela" (тут вы можете выбрать и другие фильтры - легко можно поиграться и попробовать)

 

Тааакс, тут мы закончили и приступим к более глубокой настройке.

Во-первых, вам нужно подключиться к датчику, нажав в главном меню программы кнопку "Запустить". ВАЖНО!! Перед нажатием держите вашу голову прямо и ровно, а после нажатия на кнопку подождите отображения первых данных, прежде чем продолжить. Дело в том, что при запуске датчик калибруется и ваше текущее положение головы устанавливается как нулевое:

 

? Настроим источник данных (нажать тут?

- во вкладке "Command" выставляем так, как показано на этом скриншоте . (простите, я ленив чтобы расписать каждый пункт)

- во вкладке "General" мы устанавливаем галочки напротив тех осей (под Enable), которые вы хотите использовать.

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

- теперь становите оси, глядя на осминога, чтобы они соответствовали тому, что вы делаете головой:

? Yaw - голова влево-вправо

? Pitch - голова вверх-вниз

? Roll - наклон головы влево-вправо (почему-то это не работает, буду думать  над этим)

 

? Настроить оси так же можно в основных настройках -> выходной интерфейс. Не бойтесь экспериментировать) 

? Всё соответствует? Отлично, значит вы уже практически готовы, осталось немного.

 

 

Настройка датчика под себя

Spoiler

 

Всё, что осталось, это настроить работу датчика так, как вам будет комфортнее.

Делается это во вкладке "Кривые".

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

 

Взглянем подробнее что мы видим:

? Фильтр исходной оси - по-сути, это установка градусов, на которые вы будете поворачивать голову, чем больше градусов, тем плавнее будет в игре, но головой нужно поворачивать сильнее.

? Ассиметричная настройка кривых: тут всё просто, по умолчанию эта галочка не стоит, так что настройка в графике применяется как к повороту влево, так и вправо, но если вы устанавливаете галочку, то вы сможете настроить поведение камеры отдельно для поворота налево и направо, например если вам нужно, чтобы при повороте налево камера срабатывала быстрее при определённом повороте головы - вы настраиваете это здесь.

? Устанавливая мышкой точки на кривой, вы можете изменять эту кривую, например чтобы при повороте головы на 40 градусов камера резко повернулась, ну или наоборот, в общем, тут только опытным путём устанавливаете то, что вам нужно и удобно.

 

Ну, собственно и всё, подгоняете настройки под себя и вы великолепны!

 

 

Ещё больше настроек!

Spoiler

 

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

Так же есть возможность настроить здесь и даже здесь.

Кроме этого, вы можете настроить захват игры, тогда работа трекера будет запускаться вместе с игрой, я не заморачивался, так что не проверял работоспособность. UPD 04.05.2021: Проверил, работает отлично - меньше движений, программа висит в трее, подключаешь трекер, запускаешь игру и играешь - рекомендую! )

 

 

Проблемы и их решения

Spoiler

 

Тут буду добавлять информацию о проблемах и их решения по мере поступления.

 

1. Программа OpenTrack видит датчик, но в игре не работает мышка и трекер

? наиболее вероятное решение будет таким:

- откройте диспетчер устройств системы, найдите ваше устройство и откройте свойства , где нужно установить скорость порта 115200 (то же значение, как и в программе OpenTrack)

 

 

 

Вот как-то так. Тему буду дополнять и поправлять по мере необходимости. 

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

  • Like 6
  • Thanks 2
  • Upvote 3
  • True Story 1

ResTed.gif

Бронзовый призёр в номинации "Сотрудник поддержки 2016"

Game Moderator Leader of the Year 2019 - #2

TMPForum.png

 

Link to comment
Share on other sites

  • [Интегра] ResTed changed the title to Собираем свой DIY FreeTracker (отслеживание положения головы)
  • 3 weeks later...

Ко мне едет другой тип датчика (подешевле), если он будет работать так же хорошо, то обновлю статейку, в основном это скажется именно на цене устройства ))

  • Like 1
  • Woah! 1

ResTed.gif

Бронзовый призёр в номинации "Сотрудник поддержки 2016"

Game Moderator Leader of the Year 2019 - #2

TMPForum.png

 

Link to comment
Share on other sites

  • 2 weeks later...
1 hour ago, SanSay[16RUS] said:

Ну как ощущения, привык уже?

Не до конца, всё-таки с таким датчиком непривычно например глядя направо поворачивать налево, не хватает физического ощущения грузовика, но а так уже подпривык, без датчика уже не привычно))

  • Like 1

ResTed.gif

Бронзовый призёр в номинации "Сотрудник поддержки 2016"

Game Moderator Leader of the Year 2019 - #2

TMPForum.png

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

On 5/5/2021 at 2:10 PM, Jakarta said:

Проще купить готовый TrackIR у автора

Купить всегда проще ), главное быть готовым потратить необходимую сумму на вещь.

Например я не готов потратить 20 к на руль с мех.КПП (или сколько они там сейчас стоят), но сделать самому - это пожалуйста.

Опять же, купить самому на заработанные кровные или чтобы тебе "папа/мама/тетя/дядя/брат/сестра" купили, когда кто-то покупает, тогда цена вообще не имеет значения.

  • Upvote 1
Link to comment
Share on other sites

On 5/5/2021 at 2:10 PM, Jakarta said:

как будто по ощущению все делать геморрой

Если купить сразу готовые кабели для подключения ( ссылка в статье) а так же распаянные контакты датчика и ардуино, то останется установить драйвер, одну программу и прошить, нажав максимум 5-6 кнопок, затем правильно воткнуть провода датчика в ардуино и подключить к ПК - что тут гемморного, я не знаю. Конечно, в отличие от "воткнул и использую" есть действия, но это не из разряда сложных манипуляций с паяльникм, осциллографом и т.п., всё достаточно просто, только желание.

 

P.S.: по другому датчику, продавец с али немного накосепурил и выслал вместо датчика преобразователь USB в TLL, так что после общения он выслал новый датчик, вроде как верный, жду доставки)

  • Like 2

ResTed.gif

Бронзовый призёр в номинации "Сотрудник поддержки 2016"

Game Moderator Leader of the Year 2019 - #2

TMPForum.png

 

Link to comment
Share on other sites

  • 9 months later...

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

 

Итак, во-первых, трекер продолжает безупречно работать, что не может не радовать.

 

Во-вторых, поскольку фактически в моём трекере присутствует 9 осей, очень хотелось бы задействовать их в игре, или хотя бы 6. К сожалению, после многочисленных попыток, чтения тематических форумов  и более глубокого изучения прошивок, пришёл к выводу, что это не может осуществиться. 

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

 

Но по-прежнему есть вопросы и к самой игре: фактически в ETS2 и ATS используются две оси, хотя без каких-либо манипуляций "из коробки" в других играх работают те самые три оси . Например в City Cer Driving или DrirtRally 2.0 - работают три оси (наклоны, лево-право, верх-них), но никак не в играх SCS, что печалит. Так же заметил особенность, что камера при использовании трекера как-бы приклеивается к камере, которая привязана к камере при настройке сиденья (по F4), т.е. как там мы ограничены в повороте головы, наклоне и т.п., так и при использовании трекера.

 

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

Как-то так.

  • Like 1

ResTed.gif

Бронзовый призёр в номинации "Сотрудник поддержки 2016"

Game Moderator Leader of the Year 2019 - #2

TMPForum.png

 

Link to comment
Share on other sites

  • 1 year later...
On 2/18/2022 at 7:52 PM, [Интегра] ResTed said:

Во-вторых, поскольку фактически в моём трекере присутствует 9 осей, очень хотелось бы задействовать их в игре, или хотя бы 6. К сожалению, после многочисленных попыток, чтения тематических форумов  и более глубокого изучения прошивок, пришёл к выводу, что это не может осуществиться. 

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

я использую отслеживание freetrack на основе вебки и 3 инфракрасных диодов. Работает верх-вниз\влево-вправо\прибзится-отдалиться (Z ось)\смещение влево-вправо ( ось Y)\вверх-вниз (ось X). для удобства использую только верх-вниз\влево-вправо\прибзится-отдалиться (Z ось). Задержки минимальны, играть комфортно ( монитор 42" ), тошноты и головокружений не вызывает.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.