Comments 68
Попробуйте сглаживать не скользящим средним (чувствительным к выбросам), а скользящей медианой. Сразу заметите улучшение.
Только не забывайте проверять фазовый сдвиг. Если постоянную угловую скорость измерять, то можно увеличивать инерционность алгоритма. Но нельзя забывать о полосе пропускания.
А может быть подскажете что-то внятное про фильтры Калмана? Везде вижу отсылки на них, но пока не нашел доходчивых описаний о том, как использовать и какие в из основе лежат принципы.
> гироскоп находится в состоянии покоя
Это как?! На Земле он не может быть в покое… Максимум по двум из трех осей.
Пошел читать что такое mems гироскоп, последний раз в детстве я видел гироскопы с танка. Такими их и запомнил.
Эх, чудеса миниатюризиции. Полноценный трёхосный гироскоп такого размера — такое себе представить лет пятнадцать назад было просто невозможно. Любопытно спилить у него крышку да заглянуть к нему внутрь — как оно там устроено.
С другой стороны такой корпус отсекает довольно большее количество радиолюбителей — не у каждого ведь есть печка для пайки, да и печатную плату надо заказывать — лаком да хлорным железом тут не обойтись.
Часто датчики поставляются в виде Evaluation Board или Breakout Board. К примеру у AnalogDevices есть оценочные платы для ADXRS401 и других датчиков (см. постфикс «EB», Evaluation Board).

> такое себе представить лет пятнадцать назад было просто невозможно
Не представляли, а уже использовали.
Тем более, что представленный в посте гироскоп — это ширпотреб с очень плохими характеристиками (оно и понятно — за $6).
Верно, для любителей такие платы производит, например, SparkFun, правда это сильно удорожает устройство по сравнению с голыми чипами. Я себе брал модуль с ITG3200/ADXL345 (гироскоп и 3х-осевой акселерометр) примерно за $71 с доставкой.
Понятно, что дорого… Хоть производители и позиционируют их как оценочные (не для продакшн), выполнены все равно качественно. В случае с микромеханикой калибровать блоки все равно надо, так что возможные неточности изготовления этих платок будут пренебрежимо малы, как мне кажется.
> производит, например, SparkFun
AD, STMicroelectronics, Sensonor вроде для своих датчиков делают платы. У сторонних, естественно дороже будет.
LGA в домашних условиях вполне паяется, печка не нужна, достаточно фена. Особые джедаи умудрялись даже обычным паяльником припаять. Годная инструкция, например, вот.
Дорожки 0.2-0.3, нужные для этого гироскопа, также без проблем разводятся методом лазера и утюга, не говоря уже о фоторезисте.
Есть предложение написать про дрейф этого гироскопа. Главная беда недорогих гироскопов — случайное смещение нуля, которое изменяется во времени и от включения к включению. Если есть платформа, которую можно выставить достаточно точно в горизонт, то по координатам места, можно вычислить вертикальную составляющую скорости вращения планеты:
1) Земля вращается со скоростью 15гр/час или 0.0041(6) гр/сек (примерно).
2) Умножаем на косинус широты — получаем вертикальную составляющую.
3) Из этого нужно вычесть среднее (плавающее или по др. алгоритму) за определенный период -> получим смещение нуля.

В вашем случае график «в состоянии покоя» — в гр/сек. Потому и кажется, что гироскоп показывает ноль. Если построить график в гр/час, то будет нагляднее.

ПС: гироскоп Вы взяли, кажется, ООЧЕНЬ «шумный». Погляжу по даташиту характеристики.
> Если есть платформа, которую можно выставить достаточно точно в горизонт
А можно и проще: сориентировать гироскоп в двух плоскостях так, чтобы он показывал максимум -> оценить по максимуму смещение. Но это очень неточно, т.к. шкала гироскопа нелинейна.
Никакой из современных MEMS-гироскопов НЕ способен фиксировать суточное вращение Земли, значение это лежит ниже цены деления в самом чувствительном режиме и полностью забивается собственными шумами и дрейфом. Для них справедливо утверждение, что он находится в покое, если просто лежит на столе.

Если бы им можно было фиксировать суточное вращение, то уже бы появились компактные гироскопические компасы, указывающие на реальный север, а не на магнитный.
> Никакой из современных MEMS-гироскопов НЕ способен фиксировать суточное вращение Земли
А вы уверены?
Там:
«One of the most recently developed MEMS IMUs is by Northrop Grumman/Litef with performance announced at better than 5 deg/h and 3 milli g. Currently it appears that a MEMS system with performance of around 1 deg/hr and hundreds of µg may be available by 2009. This will be a serious threat to tactical RLG and IFOG systems.»

На самом деле в Гирокомпасах микромеханику нет смысла использовать (все-таки слишком шумит). А вот в БИНС можно, при использовании корректирования.
И ведь не самый свежий документ. Странно, если у них ошибка набегает 5 градусов в час, то уже скорее всего требуется учитывать вращение Земли. Интересно было бы почитать про аппаратную составляющую такой системы. Но для компаса такой точности в любом случае не достаточно.
> если у них ошибка набегает 5 градусов в час, то уже скорее всего требуется учитывать вращение Земли.
MEMS IMU -> Инерциальный Измерительный Блок. В нем учитывать ничего не нужно — как вращается то и выдает. Построение БИНС учет вращения Земли подразумевает само собой.
А про дрейф: в первую очередь он зависит от температуры. Например, если положить палец на датчик, то ноль уползет «прямо на глазах». Не зря в L3G4200 предусмотрен датчик температуры. Вот только компенсационную таблицу, на сколько я понял требуется строить индивидуально для каждого датчика.

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

Смещение нуля можно определить просто усреднив первые N-выборок при гарантированном состоянии покоя, а температурно скомпенсировать за счет таблиц (или некого вычисленного полинома), то что делать с долговременным уползанием — лично я не представляю. Хотя, может быть, данным процесс как раз можно пренебречь.
> Так же у него есть долговременные колебания
Как раз температурный дрейф меньшая из проблем — она алгоритмически просто компенсируется, а вот случайные колебания нуля (не обязательно долговременные) — это уже серьезная проблема.
По оси Х — время в секундах? Температура постоянна?
Надо тоже попробовать такие графики снять, а то я пока в масштабах времени более 10 минут не рассматривал.
Думаю да… В доке оригинальном не нашел указания. Единица по ОХ получается почти 3 часа, но это все равно не длительный период. За сутки даже может понадобиться учитывать.
Собственно про оси вопрос глупый был, там же все написано (des/s).

Так, а не 12 часов? 45000/3600 = 12.5.
А за сутки ошибка в любом случае набежит на несколько оборотов, если не будет хоть чего-то более-менее абсолютного для коррекции. Для меня пока час-два уже очень длительный интервал. :)

И еще по графикам вопрос: «after filtering» — это некая обработка показаний со всех 3х гироскопов?
Т.е. они используют несколько датчиков для повышения точности?
> Собственно про оси вопрос глупый был, там же все написано (des/s).
Формально ни разу не глупый. deg/s — гр/сек — единицы измерения по OY. По ОХ необязательно секунды.
After filtering — там два каскада Калмановой Фильтрации. На графике выше — результат первой фильтрации — против высокой дисперсии. Второй каскад ФК убивает случайное среднее (дрейф). Настроены, как я понимаю, совершенно по-разному два каскада.
Я где-то в камментах тут ссылку на док оставлял.

> Т.е. они используют несколько датчиков для повышения точности?
Об этом пока не прочитал… Вообще ФК может быть построен и в виде системы с одним входом и одним выходом.
Так, а не 12 часов? 45000/3600 = 12.5.
Я про общее время подумал, а вы по цену деления писали…
Для сравнения посмотрите характеристики ADXRS613 (Page 8)
За 140 часов смещение нуля меняется в диапазоне ± 0,05 гр/сек.
я так понимаю простое и надежное решение использовать дополнительные датчики, акселерометры и магнетометры. Дорого, конечно, но можно достичь хорошей точности.

Хочу собрать эдакий супер точный определитель всех углов и направлений на базе Arduino. Плату с датчиками пока немогу выбрать, так как не знаю преимуществ тех или иных моделей датчиков. Пока нашел вот такие платы
www.sparkfun.com/products/10724
www.ebay.com/itm/HMC5883L-BMA180-BMP085-ITG3200-sensor-board-5V-LLC-/260766408107?pt=Radio_Control_Vehicles&hash=item3cb6e39dab#ht_821wt_1163

на обоих есть гироскоп, магнетометр, акселерометр. Все датчики по трем осям.
По акселям (в смысле, линейным) вы ориентацию не определите. А на АРДЕ алгоритмы БИНС не взлетят…
так я считать уже на компе буду, с Arduino только показания голые снимать.
ps. я возможно глупость сейчас сказал… со всей этой темой знаком только неделю 8)
Как вариант, можно прикупить матушку MiniITX (17х17 см) и на ней сделать более-менее мобильный компьютер. От стационара какой прок?
Для моего проекта пока важна только максимальная точность, ради нее могу жертвовать всем остальным. Но согласен, о мобильности придется рано или поздно думать.
То есть вы собираетесь в движении произвести запись, а потом обрабатывать в режиме офф-лайн?
Последний раз при посещении одной электронно-ориентированной конторы взгляд зацепился за это, платформа на атоме в формате 95х95мм. Есть и еще меньше, по размерам схожий с MiniPCI.

А от стационара прок во время отладки, у меня, к примеру, сейчас железо вообще функцию моста I2C-USB выполняет. Все показания обрабатываются исключительно на компе. В дальнейшем буду переносить в железо.
И чем же? В Атоме наличествуют SSE2, SSE3, SSSE3 — наборы SIMD-инструкций, перевариваются по 4 вещественных числа, если не ошибаюсь даже двойная точность есть. Ну и отдельный FPU с одинарной-двойной точностью, вот на нем и впрямь сильно не разгонишься. Как-то не вижу возможных проблем с производительностью. Хотя чипы из серии TMS320, к примеру, будут и выгоднее по стоимости и экономичнее по потреблению (а значит более неприхотливые в плане рабочих температур и по охлаждению).
Видимо, я как раз и судил по печальной производительности FPU… Надо бы попробовать скомпилять из исходников с настройкой на проц.
СПАСИБО!
Но все равно не хватает аппаратных интерфейсов. Мне лично не хватает SPI.
Прикрутить к гироскопу магнетометр и акселерометр — задача далеко не тривиальная и по-моему в любом случае реализация будет иметь ряд допущений. Т.е. такую ИНС можно будет «обмануть», двигая по хитрым траекториям, другие дело что в реальной ситуации такая траектория вряд ли будет повторима.

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

Вот интересная ссылка по теме: forum.rcdesign.ru/f8/thread216494.html
У человека грамотный подход и в обработке сигналов он судя по всему шарит хорошо, что в этой задаче очень важно. Взял он вообще DSP проц с аппаратной плавающей точкой и просто бешеной производительностью.

Я же пока в основу взял Cortex-M3 (если интересно опишу все составные части), но если на каких-то этапах упрусь в скорость, то буду думать о переходе на более мощные камни.
> такую ИНС можно будет «обмануть», двигая по хитрым траекториям, другие дело что в реальной ситуации такая траектория вряд ли будет повторима.
Про какие траектории речь?

> У человека грамотный подход и в обработке сигналов он судя по всему шарит хорошо
По ссылке:
Автор — «При наличии нормальной вычислительной мощности и правильной организиции процесса разработки это совсем не проблема. Поверьте.
Все алгоритмы описаны в учебниках МАИ уже лет 50 назад. Все остальное это проблемы адоптации. В этом нам поможет мощьный процессор и средства отладки. „
Оппонент — “Выбранные вами датчики — неточные, с большим дрейфом и т.д. и т.п. Их удел — телефоны, игровые приставки и т.д. Никакой обработкой, даже на „быстром“ (якобы) процессоре вы не сможете убрать дрейф и поганую точность датчиков.

То, что вы пишете про алгоритмы — понятно и простительно, у вас просто опыта нету в этих вещах.
Аналогично и про глюки.
По сути — верно, а вот в жизни все совсем по другому..»
Автор — «Если честно, то я еще даже не думал о деталях, но раз Вы задали вопрос про дрейф и точность гироскопа, то я попробую ответить в качестве наброса.»

Мне не кажется такой подход грамотным.
> Про какие траектории речь?
Все зависит от самих допущений. Вот здесь, если я не прав и все-таки имея, к примеру, 3х осевой гироскоп и 3х осевой акселерометр, можно построить ИНС гарантированно определяющую тангаж и крен (с некой погрешностью естественно, но не накапливаемой со временем), то это очень хорошо. :)

К примеру, есть гироскоп и акселерометр. По гироскопу определяем вращения локальной системы координат. Все хорошо, но со временем накапливается ошибка. Есть акселерометр, который показывает ускорение — сумму из текущего ускорения и ускорения свободного падения. Одна часть постоянна (g), а вот другая (a) меняется. Можно предположить, что тело не будет двигаться постоянно с каким-то определенным a, а будет все же менять направление и т.д. В данном случае, используя глубокий lowpass-фильтр можно фильтровать ускорение с акселерометра и предположить, что это значение примерно соответствует ускорению свободного падения. По нему и корректировать положение. Но вот незадача, если запустить такую ИНС по окружности, то со временем появится ошибка по крену.

Может быть здесь я в чем-то существенно заблуждаюсь, тем более с тематикой ИНС я только разбираюсь.

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

Я слежу понемногу за развитием темы, вроде бы все получается у него, хотя пока по большому счету на словах. Во всяком случае, у него не было некоторых других ошибок, которые совершил я, начиная разработку своего «велосипеда» (к примеру, я довольно далек от обработки сигналов, до сих пор не могу разобраться с Калманом, имею прочие пробелы в мат.аппарате). В общем с моей «колокольни» мне показалось что начал он правильно, хотя некоторых существенных проблем не видел.
> Я слежу понемногу за развитием темы
Ради интереса следите…
> К примеру, есть гироскоп и акселерометр. По гироскопу определяем вращения локальной системы координат. Все хорошо, но со временем накапливается ошибка…
Изобретение велосипеда с треугольным и квадратным колесами, на мой взгляд.
Все не так просто… Поищите «Основы построения БИНС» Вот к примеру
Книжек про это написано тьма-тьмущая. Причем Дмитрий там ссылается на учебники, но вместо изложенных там постулатов приводит свои велосипеды. Видимо не осилил математику.
А задача там с переходами от одной системы координат в другую, с матрицами поворотов и пр.
Плюс интегрирование, которое также можно по разному реализовать. Можно просто плюсовать, но численные ошибки будут значительными. Если глубоко не копаться, то можно подумать, что там раз плюнуть реализовать все. А вот как дойдет дело до выяснения, почему готовый агрегат выдает фиг знает что, то уже не выяснишь где спрятался «биг факап».
Для начала я хотел сделать по-простому, к примеру подобие того алгоритма, что описал выше. Да, я понимаю что это велосипед, да еще и не самого лучшего качества, но это как этап, скорее осознания, что так все просто сделать не получится и что надо грызть теорию. :)
Я пока читал ту ветку все не покидала мысль о знакомой теме (в смысле подхода к разработке).
Есть два полярных подхода:
1) «Ввяжемся в драку, а там разберемся» или «Война план покажет»
2) «План побега» — сначала все обдумаем, взесим, разложим по полочкам и т.д.
В аутсорсинге — один из центровых тренингов для ПМов этому посвящяется обязательно.

Нужно искать золотую середину. Детали всегда важны ("Принцип Парето"). Многих серьезных проблем перед выходом на продакшн можно было бы избежать, если б изначально в проект была заложена ДОСТАТОЧНАЯ гибкость.

Применительно к данной теме: в учебниках постулаты прописаны… они придуманы не просто так и решают многие проблемы. Следовать им в точности не обязательно, но отказавшись от изучения теории получаем большой шанс создать проблемы, которые потом крайне сложно решить.
Ждем статьи «чтение данных с подстроечного резистора».
Жесть, у автора есть печка, он аккуратно напаивает микрофигулину на плату, сверху прих*?%:*?: чивает огромный электролит, в провода 100 ваттным паяльником вживляет (по другому не скажешь), пуллапы (У ТЕБЯ ЖЕ НА ДИСКАВЕРИ ГРЕБЕНКА ЕСТЬ — НАСАДИ ТУДА)
После этого пишет многозначительную фразу «На самом деле, данные с гироскопа сильно зашумлены и требуют основательной математической обработки.» и сворачивают статью.

Вопрос — о чем статья?
О том, что такое MEMS? — нет.
О том, как работать с i2c? — нет.
О том, как паять TFQP-корпуса? — нет.
О том, как обрабатывать данные? — тоже нет.
а что с кондером не так? Слишком массивный? Пайка неаккуратная? Я в схемотехнике слаб, хочу знать про эти конкретные грабли.
1) Была возможность припаять в печке, у меня её нет в наличии.
2) Маленького конденсатора не нашлось нужной емкости.
3) Да все остальное паяльником и дома уже делалось кроме него ничего не было под рукой к сожалению.
4) Ну не хочу чтобы они болтались в том месте, да согласен что криво это, потому что плату не до конца продумали.
5) Статья о том что было сделано и что получилось. Самое главное по сути что на мой взгляд для начинаний это не так уж и плохо! ;) мир!
Мир уже хотя бы за то, что статья собрала такие комментарии.
о том, как паять TQFP корпуса и не нужно — DiHALT уже написал, я по его статье без проблем запаял Atmega168PA-AU. Всего 5 минут работы с первой попытки. Здесь, правда датчик в LQFP использован, вот его я без фена точно не припаяю.
Очень интересно. У меня есть STM32VLDiscovery и плата IMU Digital Combo Board — 6 Degrees of Freedom ITG3200/ADXL345 от Sparkfun.
Не поделитесь кодом? У меня руки еще не дошли до этого модуля, а опыта работы с Cortex M3 почти нет.
UFO landed and left these words here
UFO landed and left these words here
А вот я не понимаю ничего и вы мне объясните: зачем использовать такой маленький клевый гироскоп если к нему обвязки еще на 2кг?
Это у автора так сделано. Никто не мешает использовать миниатюрные элементы. Правда, для уменьшения шумов, скорее всего, конденсатор все-таки придется лепить приличный.
Но, вполне возможно, что более дорогие и качественные гироскопы меньше шумят.
> Правда, для уменьшения шумов, скорее всего, конденсатор все-таки придется лепить приличный.
Если вы про частотную фильтрацию, то ее можно и в контроллере реализовать.
Аналоговую фильтрацию проще выполнить, а для цифровой понадобится довольно приличная скорость работы контроллера, т.е. контроллером за 100 рублей здесь не обойдешься :)
ФНЧ в цифровых алгоритмах это система алгебраических уравнений с двумя-тремя уравнениями. Чего тут нагрузочного. Раз в 10-20 мсек обсчитывать такую задачу даже для 50 МГц контроллера несложная задача.
А может и реже при правильном подборе характеристик фильтра и периода квантования.
Можете взглянуть на исходные коды для Pololu MiniMu-9 это 3х осевые гироскоп + акселерометр + магнитометр.
Only those users with full accounts are able to leave comments. Log in, please.