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

Содержимое карманов

суббота, 20 сентября 2014 г.

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

IMG 0772

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

Принцип действия

Широко известен и описан, в том числе на форуме (имеется в виду forum.warthunder.ru). Представляет собой комбинацию гироскопа, акселерометра и магнитометра, устроенных в одной, двух или трёх микросхемах. Оцифрованные значения этих трёх датчиков отправляются на обработку в процессор, чаще всего Atmega в исполнении Arduino или клонов. Положение головы (или того, к чему прикрепили плату с датчиками), выраженное в угловой форме, по USB передаётся на PC для дальнейшего употребления. Я пробовал заставить эту конструкцию изображать из себя джойстик, но решил, что это не так удобно, как протокол Freetrack или Trackir, поэтому решил (и предлагаю) использовать FaceTrackNoIR со специальным плагином.

За и против

Железо

Где взять
Aliexpress, DX, eBay. По ключевым словам.

Предупреждение: не покупайте ардуино и COM-USB переходники с чипами от FTDI: производитель встроил в свой новый драйвер закладку, которая убивает «левые» чипы. Как отличить: в описании товара будет написано RT232RL или FTDI. Если есть сомнения, лучше свяжитесь с продавцом. Сам я беру платы с чипом CH340.
Для тех, кто уже купил, восстановление: http://habrahabr.ru/post/241299/

Процессорная плата:
Arduino Nano: мой выбор [на момент написания исходной статьи]

nano

Arduino Pro Micro: приемлемо

promicro

Arduino Leonardo: то же самое, что и микро

Датчики:
GY-85[на момент написания статьи] лучший из всех, что я пробовал, работает сразу и без калибровки
GY-86 – работает хорошо, но при каждом включении нужно дать ему время на автокалибровку ок. 1 минуты. Плюс к тому, хорошее разрешение датчиков и умеет выдавать кватернион
GY-80 – работает; но на том коде, что я использовал, почему-то «пружинит», т.е. сам возвращается в нулевое положение
MPU-9150кода в открытом доступе нет. Код есть, датчик работает. Прошивку пока не написал, но собираюсь
GY-521не надо использовать, у него нет магнитометра Можно использовать совместно с GY-271/GY-273

Что с ними делать
Спаять, как на фото (или лучше). Обратите внимание, чтобы датчик не был расположен слишком близко к ардуино – иногда от этого начинает хуже работать (наводки на компас?)

Схема пайки:
Датчик->Arduino Nano
VCC_IN->3v3 или 5v
SCL->A5
SDA->A4
GND->GND

Датчик Arduino Pro Nano
VCC_IN 3v3 или 5v
GND GND
SCL A5
SDA A4

Датчик Arduino Pro Micro (Leonardo)
VCC_IN VCC
GND GND
SCL 3
SDA 2

Настройка FaceTrackNOIR
Цепляем конструкцию к наушникам, подключаем к компьютеру (если ещё не). Открываем программу, в разделе Tracker Source 1 выбираем «Hatire Arduino», в настройках (кнопка Settings) выбираем COM-порт, на котором находится Arduino, в закладке Command Serial parameters 115200/8/none/1/CTS-RTS, Delay init 1000, delay start 1000. Нажимаем Start.
Через пару секунд начнут приходить данные (зелёные и серые цифры начнут меняться), а лицо с желтым прицелом придёт в движение.
Заходим в Curves и настраиваем чувствительность по желанию. При этом полезно запустить Warthunder в пробный вылет, чтобы проверять настройки «в живую». Возможно, потребуется изменить конфигурацию осей (кнопка Settings) и их полярность (Global Settings на основном экране).

Результат:

Источник

Delfer

Еще один сайт на WordPress

EDTracker — DIY head tracker своими руками

edtracker 1Это один из самых удачных проектов head tracker’ов, который я только встречал. Используются самые передовые технологии — акселерометр, гироскоп и компас, такие же, как и в гарнитурах виртуальной реальности Gear VR, Playstation VR, Oculus Rift и прочих. А для создания достаточно лишь минимального умения паять и более чем скромной суммы денег. А теперь по порядку.

Читайте также:  Головной убор птицы своими руками

Варианты

Конечно же я выбрал последний вариант.

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

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

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

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

Сборка

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

edtracker connections

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

edtracker 1

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

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

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

edtracker 2edtracker 3edtracker 4

Улучшения

Помните, я упоминал о разъеме на два контакта в самом начале? Он нужен для упора. Клеится на суперклей прямо под кнопкой. Достаточно двух маленьких капель.

edtracker 5

В принципе, мне нравится внешний вид устройства, да и испортить его довольно сложно. Но, для пущей надежности, все же спрятал его в термоусадку.

edtracker 6

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

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

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

img 2016 06 18 17 30 34

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

img 2016 06 18 17 39 33

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

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

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

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

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

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

Впечатления

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

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

Читайте также:  Декорируем квартиру своими руками фото

Источник

Инерционный трекер на базе Arduino и GY-85

a112fe1a023e474ab4df4ca194390c24

Привет geektimes. Head tracker, иногда его же называют инерционный трекер — устройство, которое отслеживает движение головы в пространстве, то есть в трёх осях — X,Y,Z.

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

— Arduino, лучшее решение в данном случае это Arduino Nano V3(стоит недорого, относительно небольшие размеры), обязательно чтобы плата была с микроконтроллером ATmega328 на борту. Так же было бы не плохо, чтобы в ардуинке был USB to UART преобразователь на чипе CH340:

91ee14f41d7d4a9db6973defaa765de8

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

3b3ad91d29a54ef1b9fe75af48a2a7d9

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

Драйвера к чипу CH340G ищите в первых ссылках по запросу «ch340g driver» в гугле, или же в архиве к данной статье.

— Датчик GY-85, это трех осевой гироскоп MPU3200, акселерометр ADXL345 и магнитометр HMC5883L на одной плате. Этого более чем достаточно чтобы ориентироваться в пространстве в трёх осях.

f31150b2829047a1968717ceb8f2ced9

Он лучше всего себя показал, не требует предварительных калибровок, подключили, прошили ардуинку и работает. Хотя AHRS(Курсовертикаль) прошивка и позволяет калибровку, но это отдельная тема, которая, как я считаю, раскрыта более чем полностью на форуме по игре WarThunder;

— Разная мелочь — провода, паяльник (без него не обойтись, потому, как Arduino Nano и GY-85 приходят из Китая в распаянном состоянии),USB удлинитель, Mini-USB кабель для Arduino Nano V3.

Сборка Head Tracker’а:

Подключаем Arduino и GY-85, в случае Arduino Nano это будет так:

4f00544f7381424781355e83bd80bdd4

Подаём питание на ардуино — на датчике должен засветился светодиод.

В случае Head Tracker’а датчик идеально прикрепить на ободок наушников, вот так по «криворукому» это сделал я:

b180cdd8c3e545348bb6c39e5d430a26

Уверен, что вы это сделаете куда аккуратнее, чем меня.

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

f70b516f07b84462946510f922231467

По поводу не теребить плату, я просто скрутил USB кабель и провод наушника тем же проводком от витой пары.

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

1861aae52bdb4d2eb9a0199787e2b662

Под датчик, как и под ардуинку, подложил кусочек вспененного полиэтилена, чтобы они не царапали мне наушники, да и так лучше держится всё это.

Правда тут есть кое-какие моменты, важно датчик располагать таким образом, чтобы стрелка Y указывала на монитор.

22d6cd483e0b42df8e970be2496e42e4

Так же надо датчик держать подальше от металлических предметов, рекомендуемое расстояние 5-10 см. В противном случае могут быть искажение показаний, глюки в работе датчика. Это актуально для тех, у кого металлический ободок наушников. Хотя искажать показания может не только металл, но и сама ардуинка или даже провода, что и было продемонстрировано на видео, так что постарайтесь отдалить всё это от датчика хотя бы на расстояние 5-10 см.

Самое простое решение с металлическим ободком наушников — губка для мытья посуды:

Читайте также:  Зеленый светофильтр своими руками

9e6e2f0101844c29b5fea840fbe494f1

Так как у меня ободок пластиковый (было проверенно магнитом), я забил на всё это.

Прошивка:
Если у вас всё ещё не установлена последняя версия Arduino IDE — качаем и устанавливаем. На момент написания статьи это 1.6.8.

В нашем инерционном трекере будем использовать кастомную прошивку проекта AHRS Firmware for the SparkFun 9DOF Razor IMU and SparkFun 9DOF Sensor Stick(архив со всем необходимым в низу статьи). В Arduino IDE открываем файл Razor_AHRS.ino, который лежит в архиве по пути DIY headtracker\RazorAHRS_FaceTrack\Razor_AHRS:

757c851d9dce4d2eacab79f35bf0eea0

И загружаем прошивку в ардуино:

96f1a10d8f344338a35222e0d131e1a9

OpenTrack — это бесплатная программа с открытым исходным кодом, предназначена для отслеживания движений головы пользователя и их преобразование в координаты. Умеет работать с разными устройствами ввода, включая ИК-рамку и Oculus Rift или же со смартфонами.

На видео, чувак играет в культовую игру Elite Dangerous, используя свой Android смартфон в качестве мыши:

Это позволило задействовать обе руки для игрового процесса. Согласитесь, выглядит очень круто. Правда мне в этой реализации не нравится несколько нюансов, а именно, смартфон относительно громоздкий и тяжёлый, GY-85 явно занимает места и весит меньше, к тому же от него не долбит в голову излучение от WiFi передатчика смартфона.

Но давайте вернёмся к нашим баранам Arduino и GY-85. Для начала нужно скачать и установить последнюю версию программы(на данный момент это opentrack-2.3 rc21p11), запускаем:

0cc6e6ea3b8548018e236b073d517fdf

Теперь нам надо настроить программу — в поле «Tracker» выбираем «Hatire Arduino» и нажимаем кнопку «. » и мы увидим что-то типа этого:

14a4330a96da4c94bd264e0f451a66e7

Здесь надо изменить «Serial port» на COM порт нашей ардуинки, в моём случае это COM42. Дальше переходим во вкладку «Command», прописываем там, в полях «Init» и «Start» 1000, затем выставляем «BaudRate» 115200, и напоследок жмём «Save» и «OK».

Дальше в главном окне программы нажимаем кнопку «Start», начинаем вращать датчик в разных осях и следить за осьминогом. Скорее всего, движения датчика и осьминога будут отличаться, по крайней мере, в моём случае так получилось, не останавливая трекинг жмём кнопку «. » в поле «Tracker». Здесь нам нужно настроить «Axis Configuration» таким образом, чтобы движения датчика совпадали с движениями осьминога в программе — выставляем для «Yaw», «Pich» и «Roll» значения RotX/RotY/RotZ в нужной последовательности, в этом нам поможет вот эта картинка:

d1e5934adf1c4354a4cc34558ec40d8c

Как получилось у меня, можете увидеть на скрине настроек «Hatire Arduino» что выше. Ось «Roll» пришлось инвертировать, потому что осьминог крутился в обратные стороны.

Так же программа позволяет настраивать чувствительность для каждой из осей — кнопка «Mapping» в главном окне программы:

8e87605d72ca432dbc1b1136826caf01

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

11c7ab57f2464d01b0266c89e2bdc713

Вкладка «Filter» в головном окне программы позволяет изменять тип фильтра, или же вообще его отключить, в этом случае показания будут очень нестабильными и резкими. У меня тип фильтра стоит «Accela» вот с такими настройками:

6df1cf7dfc9f4c03ba8c86a71a1030d7

При желании можете поиграться с настройками.

Переходим к настройке эмуляции мыши, для этого во вкладке «Protocol» выбираем «mouse emulation» и нажимаем кнопку «. «, там надо выставить «Yaw» и «Pich» для осей X, Y:

8621bae017fa46f38941b35d31a1df15

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

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

Источник

Делаю сам
Adblock
detector