Делаем HeadTracker на гироскопе

В процессе разработки Head Tracker на основе гироскопа IDG-300 RUS ENG, купленного в Сингапурском интернет-магазине.

Напомню, что Head Tracker - устройство, отслеживающее повороты и наклоны головы пилота, управляющего самолетом по камере, в вирутальных очках (FPV). Эти перемещения при помощи тренерского разъема передатчика подмешиваются в PPM сигнал и на борту управляют работой сервомашинок, направляющих камеру. В результате достигается абсолютнейший эффект присутствия и можно делать многие вещи, недоступные при полете с фиксированной камерой - точные развороты между препятствиями, высший пилотаж, при котором надо смотреть на крыло, а также можно смотреть банально взирать по сторонам не вмешиваясь в полет.

<font color=“#000080”>Пока все сыровато, дрифт большой, особенно в начале работы, пока не установился, видимо, температурный режим гироскопа. В общем на видео видно. Прошивка и исходники открыты и прилагаются. Схема тривиальная, из прошивки и макетной все ясно. 😇 Для кардинальной борьбы с дрифтом есть кнопка переустановки нулевой позиции, которая я хочу вынести на корпус передатчика где-то на левом боку.</font>

<font color=“#ff0000”>Буду рад любым замечаниям к этой разработке.</font> 😃 В исходниках много лишних функций, связанных с борьбой с шумом, которые сейчас отключены. Предназначены они были для Head Tracker’а VRFL на акселерометрах, но у гироскопа другие проблемы, и этот код оказался пока не нужен.

Прошивка

Видео:

<font color=“#006400”></font>

<font color=“#006400”>Направления дальнейшей разработки</font>
<font color=“#006400”>1. Уяснить, можно ли как-то с уменьшить или скомпенсировать дрифт. В инструкции к коммерческим HeadTracker’ами упоминается какая-то калибровочная процедура - интересно, что она делает?</font>
<font color=“#006400”>2. Сделать режим программирования: каналы для Pan и Tilt, расходы по каналам, центральная точка для Tilt, реверсы каналов, триммирование;</font>
<font color=“#006400”>3. Сделать потрескивание бипером, когда меняются позиции гироскопа, и пикание, когда голова входит в нулевую точку.</font>
<font color=“#006400”>4. Добавить кнопку управления затвором фотоаппарата и кнопку для переключения вида с камеры на вид с фотоаппарата (для лучшего кадрирования снимков).</font>
<font color=“#006400”>4. Перейти на многоножный и быстрый процессор типа PIC18. Это позволит увеличить частоту опроса гироскопа и лучшую реакцию на высочастотные перемещения - хотя возможно это и тупиковый путь и ВЧ надо наоборот отфильтровывать.</font>
<font color=“#006400”>5. По советам на форуме буду делать термокомпенсацию гироскопа. Попробую наклеить датчик типа DS18B20U(Z) или пленочный терморезистор на микросхему гироскопа и в процессе калибровки сниму зависимости дрифта от температуры. Потом буду вычитать его из показаний и, как обещают, получу на порядок большую стабильность показаний.</font>

P.S. Касательно примерно 1-2 года назад появившейся коммерческой разработки TrackR1 на rcgroups писали, что ее дрифт - 1 щелчок серво в 5 сек, что дает 30 градусов в минуту.

<font color=“#8b0000”>Кстати, я кажется уяснил из инструкции к TrackR1, откуда берется странное и резкой смещение позиции по одной из осей гироскопа - это вызвано перемещением по 3-ей, неподдерживаемой, оси (наклоны головы) во время движения по другим осям: “A 2 axis gyro is blind in the roll axis, not normally a problem, but imagine what happens when movement is sensed by one of the supported axes, followed by a movement in the ‘blind’ axis, and then followed by a negating movement in the same axis. Basically… we don’t end up where we started, and this looks like drift to the untrained eye.”.</font>

<font color=“#006400”>Ссылки</font>
<font color=“#006400”>Сравнение разных разработок</font>
<font color=“#006400”>Поворотные системы для камер</font>
<font color=“#006400”>Патент на магнитный HeadTracker (на компасах)</font>
<font color=“#006400”>Страница, посвященная магнитному HeadTracker’у разработки Antonio.</font>
<font color=“#006400”>Компенсация температурного дрифта</font>
<font color=“#006400”>Презентация про гироскопы, компасы и т.д.</font>
<font color=“#006400”>Простая и надежная поворотная система для камеры</font>

<font color=“#006400”>Советы</font>
<font color=“#006400”>Для Pan рекомендуют использовать серву Hitec HS85-MG (быстрая и мощная), переделанную с помощью надфиля и 2-х резисторов по 2кОм под угол в 180 градусов, и Hitec HS56 для Tilt (у нее карбонитовые шестеренки).</font>
<font color=“#006400”>Еще одна серва: www.rcgroups.com/forums/showthread.php?t=849467</font>

VRFL_H.zip

  • 3981
Comments
ubd

А это вообще, что такое? Где его использовать?

Brandvik

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

timxotic

Доблестные китайцы уже сварганили подобную систему, если нужна ссылка, - оно у меня есть…
система рабочая, ей уже более полу года.
Держал в руках, пробовал,… скоро будут продавать у нас… 😉

Prikupets
timxotic

Доблестные китайцы уже сварганили подобную систему, если нужна ссылка, - оно у меня есть…
система рабочая, ей уже более полу года.
Держал в руках, пробовал,… скоро будут продавать у нас… 😉

Очень интересно, и как называется и почем ?

GEOPHISIC

Доброго времени суток. Хотел полюбопытствовать - вы довели этот проект до “ума” или он так и остался на полпути к финишу? 😃 Суть в том, что я стою перед непростым выбором:

  1. Купить недорогой трекер типа X-1000 Gyro и потом маяться с ним?
  2. Купить дорогой хороший трекер? Вряд ли - дело даже не в жабе, просто не могу себе позволить отвалить 160 дохлых президентов на это дело.
  3. Разработать самому (я разработчик электроники и по профессии и по увлечению)? Влом - на работе куча проектов одновременно, ещё один не потяну.
  4. Собрать разработанный кем нибудь со свободными исходниками? Был бы идеальный вариант. Вот так я и попал на эту Вашу страничку. 😃

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

Prikupets

Правильный путь - это сделать его из проекта MultiWii - там поддерживаются гиры и акселерометры, и стоят они копейки. И магнетометры - хотя они вроде дороже.
Выкинуть управление моторами (чтение PPM там и так есть) и сделать формирование PPM.

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

GEOPHISIC

Понятно. То есть по сути прикупить манипулятор Wii, раскурочить его и подтянуть под свои задачи? 😃 Весьма любопытная мысль, как то сразу и не додумался. Наверное потому что играми практически не интересуюсь. 😃 А что, кстати, было не так с Вашим проектом - на видео вроде всё пучком работает - плавненько так, адекватненько… 😃

Prikupets

Да дрейф гиры - вот что все губило.
Не просто прикупить Wii, а прочитать тему по MultiWii на rcdesign, и сделать все правильно. Скажу сразу - датчики надо подключать напрямую, не через Wii-интерфейсы, иначе - куча глюков.

GEOPHISIC

По Wii в целом понятно, хотя всё что нашёл имеет отношение только к разного рода коптерам. По дрейфу - насколько сильный дрейф (хотя бы примерно в град/мин)? По обеим осям?

GEOPHISIC

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

  1. Wii Motion Plus - некая платка (элемент) пространственного манипулятора игровой системы (как я уже говорил - в игры не играю и смутно ориентируюсь как в новинках, так и в уже тех, которые давно на рынке). Сия платка является функционально законченным устройством с интерфейсом i2c (очень хорошо знаю и часто пользую этот интерфейс в своих разработках). Тогда вопросы - где накопать протокол обмена (сиречь - адресация, система команд, регистры и прочие ресурсы…) с этим девайсом? Где накопать параметры генерируемых этим девайсом данных - формат, разрешающая способность по осям и так далее…
    2.Nunchuk - что за зверь, какие функции выполняет приWii Motion Plus. Если без него никак, то применительно к нему повторяются вопросы пункта 1 .
  2. Для реализации трекера вполне достаточно только платы **Wii Motion Plus **или требуется что то ещё? Управляющий МК, естественно, не в счёт. 😃
  3. Почему не рекомендуете использовать стоковый порт i2c? Надо ли так понимать, что достаточно выпилить кусочек платы (как показано в одном из постов ведущей темы) и подпаяться к трём соответствующим выводам, взяв с них таким образом аналоговые сигнал по трём осям? Будут ли эти сигналы уже “готовыми” к использованию: термо-/вибро-ипрочее- компенсированными или потребуют таки дополнительной цифровой обработки и фильтрации?

Вот пока это главное что меня сильно интересует. Самостоятельно разобраться тоже можно, но я в буржуйских языках не шибко силён, поэтому “авторский” сайт читать подробно не могу, а на этой конференции и прочих ресурсах, где удалось найти хоть какие то упоминания об этой системе всё так размыто и разрозненно… К тому же всё “замазано” тем, что применяется сия система в разного рода коптерах и слишком много информации, связанной именно с этим - это сильно “вуалирует” необходимую для моих задач часть полезной инфы. Буду очень Вам признателен за небольшой экскурс в тему и ликбез по интересующим меня девайсам. С дальнейшим (разработка схемотехники, конструктива, написание проги под PIC) справлюсь сам - опыт немалый. 😃

Заранее признателен

Prikupets

Дрейф я видел в отсчетах ADC, примерно 1 отсчет в 2-3 секунды - не знаю сколько это в градусах.
Wii Motion - гира. Кстати, тут я думаю никто отчетливо не представляет как данный девайс используется в играх - все их немедленно открывают и паяют.
Протокол обмена там зашифрован (как бы), но в исходниках MultiWii есть его поддержка. Советую все таки разобраться с англоязычным сайтом (тем более начинателем этого проекта был француз, для него это тоже иностранный язык). Повторюсь - если работать через этот протокол возможны глюки - лучше отрезать процессор MultiWii (как написано опять же в теме) и работать по I2C напрямую - в исходниках MultiWii и для этого есть поддержка.
Nunchuk - процессор с акселерометром, может работать через Wii Motion. Опять же, резать и напрямую подключаться через ADC к аналоговым выводам осей.
Что такое стоковый порт я не знаю, хотя возможно выше я уже ответил 😃
Насчет полсотни страниц темы по MultiWii - это opensource проект и чтобы в нем понимать надо быть в теме 😃 Я просмотрел 2-3 сотни страниц на rcgroups и еще всякойязычные блоги чтобы найти ответы на мои вопросы. Не стесняйтесь, и Google Translate Вам в помощь!

leprud

Для задач хедтрекера достаточно будет и подключение не напрямую, а по Wii протоколам, ведь супер быстрое обновление тут не нужно. Т.е. мультивии времен 1.4-1.5

GEOPHISIC

Ну что же, уже кое что. Будем подумать. Есть кое-какие мысли по несложной цифровой фильтрации дрейфа ITG300 (ITG3200) - возможно удастся всё таки пройти по этому пути с нуля, а не рихтовать запорожец под мерседес (это я про переделку Wii под сабж). 😃 30ppm/мин - это не так много, даже я бы сказал мало. При 16-битном АЦП на каждую ось это получается… АЦП полностью заполнится за 65535/30=2184.5 мин Более чем прилично. Для 10-битного АЦП 1023/30=34.1 мин. Тоже неплохо. Почему Вам показалось это недопустимым дрейфом - не пойму… Ну да это дело субъективное. В общем тоже сделаю попытку оседлать двух-трёхосевые MEMS-гиры. Возможно тут и фильтрация не потребуется. 😃
За инфу по Wii - спасибо, возможно ещё пригодится. 😃

Prikupets

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

GEOPHISIC

>> Так что проще будут купить IMU с контроллеров на плате и сделать из него
Ссылочку не сможете засветить? 😃

ЗЫ Магнитометры - новый канал получения погрешностей за счёт чувствительности к э/м излучениям и ферромагнетикам. 😃 Имхо, пока рулят обыкновенные гироскопы. Хорошего качества. 😃

ЗЫЗЫ Хотел полюбопытствовать - а нормальные (не ширпотребные копеечные) вертолётные гиры нельзя ли приспособить под это дело?

Prikupets

Дело в том, что обычно не покупаю комплектующие - они щас все так сделаны что их не припаяешь без микроскопа 😃 Также нет желания покупать какой-нибудь супер-гироскоп за 50-100$, когда за эти деньги можно взять, например, кучу моторов с регуляторами.
Поэтому предпочитаю low-end сенсоры в обвязке - как WII.

IMU: www.sparkfun.com/products/10125
www.sparkfun.com/products/9956

GEOPHISIC

Доброго времени суток Андрей. Получил я парочку ITG3200 (на работу по шумок выписал 😉). Изучил доку, собрал тестовую платку. Немного помыкавшись - завёл сей девайс. Весьма и весьма неплохая штучка, скажу я Вам. Однако… В даташите я не нашёл формата данных по осям и что вообще он пишет в “осевые” регистры при оцифровке. Передавая данные полученные по i2c в терминалку (через UART) вижу что данные меняются вроде логично, но тем не менее закономерности так и не обнаружил. Полагаю, что опробованный Вами ITG300 и ITG3200, которые у меня, по формату данных должны быть идентичны. Не будете ли вы так любезны поделиться со мной инфой по этим данным? Что там и как? Как мне их расшифровать и привести в “съедобное” состояние? 😃 Буду очень признателен.

Prikupets

Пожалуйста изучите исходники проекта MultiWii (google it) - там это должно быть очень понятно написано. Сам я ничего про них не знаю.

GEOPHISIC

Ясно. Спасибо и на этом.