Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2020, 08:01

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 05 дек 2018, 18:53 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
Доброго времени суток.
Делаю БИНС, конкретно сейчас - вычисление углов вращения с помощью фильтра Маджвика. Датчик - микруха LSM9DS1, на фильтр подаю сырые данные, калибровки датчика пока не проводил.
Дело в том, что на выходе фильтра, после преобразования кватерниона в "самолетные" углы Эйлера, помимо складывания рамок, происходящего при 90 градусах тангажа, также угол рысканья "съезжает" при вращении вокруг оси крена. Предполагал, что проблема в реализации фильтра, которая была взята с сайта автора, но когда я на него подавал образцовую выборку показаний гироскопа, акселерометра и магнетометра, которая также была взята из матлабового скрипта автора, то на выходе углы Эйлера ведут себя адекватно - собственно, так, как и в самом матлабовом скрипте автора. При этом также встраивал коррекцию складывания рамок, взятую отсюда - http://www.euclideanspace.com/maths/geo ... /index.htm - но, как очевидно, от "паразитного" вращение вокруг оси рысканья это не помогает.
Собственно говоря, прикрепляю график углов Эйлера на выходе фильтра.
В чем может быть проблема? Я понимаю, что из-за возможной взаимной неортогональности осей в самом датчике углы могут немного "уезжать" друг за другом (что видно и в примере автора алгоритма), но не до такой степени! Это только из-за наличия смещения и неоткалиброванного датчика? Или еще могут быть какие-либо причины?


Вложения:
euler.PNG
euler.PNG [ 44.04 Кб | Просмотров: 2065 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 05 дек 2018, 18:54 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
Также прикрепляю графики сырых данных. По порядку сверху вниз: показания магнетометра, акселерометра, гироскопа.
Если потребуется, прикреплю также и кватернион.


Вложения:
magneto.PNG
magneto.PNG [ 47.52 Кб | Просмотров: 2064 ]
accel.PNG
accel.PNG [ 45.53 Кб | Просмотров: 2064 ]
gyro.PNG
gyro.PNG [ 49.19 Кб | Просмотров: 2064 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 06 дек 2018, 10:59 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 832
sdv_cyborg писал(а):
Датчик - микруха LSM9DS1, на фильтр подаю сырые данные, калибровки датчика пока не проводил.

Без калибровки всегда будет мусор. Там каждая ось имеет своё уникальное смещение и чувствительность, + всё это зависит от температуры (графики есть в доках). Ещё, уровень шума из доков - это нечто абстрактное, для идеального датчика из всей партии, в полном вакууме, и идеальной измерительной аппаратуры. В реальности всё это дело шумит как радио на средних волнах.
Ни один из датчиков имеющий внутренний цифровой фильтр - не имеет полного описания. Это всегда чёрный квадрат, на который навесили функцию. Я сомневаюсь в наличии математического процессора, фильтр больше смахивает на аналоговый. Потому как шумы квантования не уходят.
По этому нужен собственный фильтр предварительной обработки. А для этого лучше задействовать отдельный мк. Который только этим и будет заниматься.

Небольшое пособие по калибровке https://habr.com/post/384075/ .
Там нет многих вещей для низкого старта, однако сам алгоритм имеет верную последовательность.

Фильтр Маджвика работает с абсолютными величинами. То-есть для того чтобы оно работало корректно - показания всех трёх датчиков должны иметь равную образцовую чувствительность. Это критично для акселерометра, у него вообще ни один из режимов усиления не попадает в этот диапазон. Придётся корректировать для номинального значения, и умножать для остальных диапазонов.

Ну и конкретно по вопросу.
Неадекватное поведение может быть результатом отсутствия компенсации магнитного склонения для магнитометра. (лечится начальной фиксацией гео_позиции).
Физическое несовершенство при сборке датчика, кристаллы там сварены домиком. Лечится калибровкой.
И самое простое - питание датчика. Чип жрёт ток неравномерно и достаточно ощутимо. Одной керамики тут недостаточно, нужны стабилизаторы и разные земли. Например если доска имеет чип стабилизатора 3,3в, и работает внешнего напряжения 3,3в (актуально для st) - то провалы напряжения видно даже на осциллографе. (не лечится в принципе)

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 06 дек 2018, 11:23 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
AVI-crak писал(а):
Ни один из датчиков имеющий внутренний цифровой фильтр - не имеет полного описания. Это всегда чёрный квадрат, на который навесили функцию. Я сомневаюсь в наличии математического процессора, фильтр больше смахивает на аналоговый. Потому как шумы квантования не уходят.
По этому нужен собственный фильтр предварительной обработки. А для этого лучше задействовать отдельный мк. Который только этим и будет заниматься.

Собственно, я фильтрам на кристалле и не особо-то доверяю и буду на мк их все и делать.

AVI-crak писал(а):
Фильтр Маджвика работает с абсолютными величинами. То-есть для того чтобы оно работало корректно - показания всех трёх датчиков должны иметь равную образцовую чувствительность. Это критично для акселерометра, у него вообще ни один из режимов усиления не попадает в этот диапазон. Придётся корректировать для номинального значения, и умножать для остальных диапазонов.


Т.е., надо дополнительно еще нормировать до входа на сам фильтр Маджвика, верно?

AVI-crak писал(а):
Ну и конкретно по вопросу.
Неадекватное поведение может быть результатом отсутствия компенсации магнитного склонения для магнитометра. (лечится начальной фиксацией гео_позиции).
Физическое несовершенство при сборке датчика, кристаллы там сварены домиком. Лечится калибровкой.
И самое простое - питание датчика. Чип жрёт ток неравномерно и достаточно ощутимо. Одной керамики тут недостаточно, нужны стабилизаторы и разные земли. Например если доска имеет чип стабилизатора 3,3в, и работает внешнего напряжения 3,3в (актуально для st) - то провалы напряжения видно даже на осциллографе. (не лечится в принципе)


Про фиксацию геопозиции я в оригинальной статье автора алгоритма читал, но пока не догнал, как геопозицию преобразовать в магнитное склонение. Потому что прибор будет стоять на железяке, которая, потенциально, по всей нашей необъятной может ездить, соответственно магнитное склонение оно должно компенсировать по GPS'у постоянно. В общем, буду копать еще...
Про питание не подумал, спасибо также за наводку, буду рассматривать, какого оно там качества. Видать, надо и впрямь подальше их разнести, STM'ку и датчик друг от друга и землями отделить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 06 дек 2018, 13:26 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
И да, вот что еще: допустим, согласно статье на хабре, мы можем сделать калибровку - это не домашний колхоз, а завод, поэтому вместо глобуса сделают карданный подвес. НО! Он будет из металла - и как на нем магнетометр калибровать? Он же врать во все стороны тогда будет.

UPD: И еще, по поводу магнитного склонения. Как я уже сказал, ареал использования прибора, в котором будет стоять БИНС, большой, и коли так, то магнитное склонение нужно не на заводе закладывать, а брать откуда-то. Посчитать его невозможно, не имея карты магнитного склонения... Как его тогда получить? Не вводить же вручную.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 06 дек 2018, 16:25 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 832
sdv_cyborg писал(а):
Т.е., надо дополнительно еще нормировать до входа на сам фильтр Маджвика, верно?

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

sdv_cyborg писал(а):
Он будет из металла - и как на нем магнетометр калибровать? Он же врать во все стороны тогда будет.

Если нужен магнитометр - то магнитов рядом быть не должно. Калибровку не обязательно делать на глобусе, точнее он вообще не нужен. Там иначе и проще - датчик нужно вращать во всех направлениях, жир накапливать. А после этот жир обработать - найти мин и мах для каждой оси, найти центр всех линий - это будет сдвиг, найти множитель для всех трёх осей - виртуальные шарики должны иметь одинаковый размер.
Попасть руками на минимум/максимум - практически невозможно, да и не требуется. Вместо этого точки объединяются в кривые (с учётом шума есно), ну а у кривой всегда есть точный мин/мах.
В процессе калибровки - считывать показания акселя и гироскопа одновременно и синхронно с магнитометром. Для акселя строится точно такое-же облако, где линейное перемещение должно компенсироваться показаниями гироскопа. По сути это такой мини_трекер получается, его основная задача - компенсация ускорения от человеческого фактора. Нам требуется регистрировать только ускорение свободного падения.

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

Гироскоп калибровать сложнее всего. На старте достаточно данных из документации, но конкретный датчик всегда будет врать на несколько процентов. Дело в том что невозможно идеально припаять датчик к печатной плате, всегда будет ошибка. Вот тут пригодится виниловый проигрыватель. :)
Цель калибровки - найти наклон плоскости кристалла. В идеале только одна ось должна иметь стабильные показания. В реальности все три будут плавно плавать. Я не могу подсказать как математически производить калибровку гироскопа, этим другой человек занимался. Ещё более чокнутый чем я.

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

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 06 дек 2018, 16:32 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
Ясно, спасибо за подробные разъяснения, буду теперь ковыряться.
Кстати, похоже, проблема действительно в магнитном склонении - полистал в гугле, у многих даже история с осью рысканья, которая уплывает за креном или тангажом - магнетометр врет и не может найти север. Значит, этим надо в первую очередь заняться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 07 дек 2018, 13:40 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Фильтр мэджвика хорошо отлаживать поэтапно.

Сначала показания фильтра корректируются только гироскопом.
Потом гироскопом и акселерометром.
И наконец гироскопом, акселерометром и магнетометром.

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

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

И вот тогда уже, когда акселерометр и гироскоп покажут, что работают, стоит перейти к настройке магнетометра.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 07 дек 2018, 15:22 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
Mirmik писал(а):
Фильтр мэджвика хорошо отлаживать поэтапно.


Собственно, отчитываюсь по этапам.

Mirmik писал(а):
Если в варианте с гироскопом модель в покое уплывает слишком быстро - смещение нулей гироскопа.


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

Mirmik писал(а):
В варианте с акселерометром и гироскопом - если после движения по крену фильтр пройдет истинное положение и далее будет отрабатывать назад по коррекции акселерометра - можно будет сразу же понять что, масштабный коэффициент гироскопа задан плохо.


Истинное положение не проходит, по крену двигаю, останавливаю - и встает как вкопанный. Единственное, что - с акселерометром появились смещения углов, значит у акселерометра присутствуют эти самые смещения.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 07 дек 2018, 15:33 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Да... Яйцо требует коррекции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 10 дек 2018, 16:29 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
Подниму тред.
В общем, калибровку в первом приближении произвел, смещения и масштабы осей для акселя и магнитометра учел, в самом алгоритме Маджвика переопределил оси (исходя из рекомендаций, что оси акселя и магнетометра должны быть выстроены в порядке "север-восток-вниз"). Стало лучше, курс перестал коррелировать с креном и тангажом (по-крайней мере гораздо меньше, чем раньше), но появились два новых эффекта. Во-первых, курс при вращении БИНСа в горизонтальной плоскости стал "осциллировать", т.е. возникает что-то вроде резонанса фильтра по оси курса (при том, что у других осей такого нет, ну разве что если только не крутануть резко на 270 градусов), а во-вторых, по оси крена появилось смещение на -180 градусов. Может кто-нибудь объяснить природу этих эффектов, они тоже связаны с погрешностью показаний датчиков и следует еще точнее откалибровать? Или еще что? Конечно, можно к тому же выходу крена прибавить просто 180 градусов, но это как-то неспортивно... По идее, такого быть не должно.

Еще из того, что забыл упомянуть: частота сбора данных с датчика 119 Гц (тактируется прерыванием микросхемы), частота работы фильтра Маджвика 714 Гц, коэффициент бета равен 0.9.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 02:54 
Заглядывает иногда

Зарегистрирован: 11 дек 2013, 17:52
Сообщения: 69
В указанном Вами алгоритме важно, чтобы вычисление происходило с каждым отсчетом гироскопа (точнее ДУСа), так как именно его показания интегрируются. Не менее важна (а точнее критична) частота семплирования, точнее ее постоянство.
На моей памяти Мэдвиг (или как его правильно я хз) выдает наружу кватернион состояния. Важно не только кормить алгоритм показаниями датчика, но и правильно соориентировать акселерометр и магнетометр по отношению к осям гироскопа, иначе будете ловить знатные "спецэффекты". Так вот, в большинстве случаев, выход Мэдвига пересчитывается в углы Эйлера, которыми, видимо (поправьте если я не прав), Вы оперируете. Пересчет из кватернионов в эти углы должен так же производиться по правильным формулам.
ПС: обратите внимание на эффект gimbal lock или "карданного подвеса" при пересчете. Удачи Вам в этом нелегком, но очень занимательном и интересном вопросе!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 10:33 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
lleeloo писал(а):
В указанном Вами алгоритме важно, чтобы вычисление происходило с каждым отсчетом гироскопа (точнее ДУСа), так как именно его показания интегрируются. Не менее важна (а точнее критична) частота семплирования, точнее ее постоянство.
На моей памяти Мэдвиг (или как его правильно я хз) выдает наружу кватернион состояния. Важно не только кормить алгоритм показаниями датчика, но и правильно соориентировать акселерометр и магнетометр по отношению к осям гироскопа, иначе будете ловить знатные "спецэффекты". Так вот, в большинстве случаев, выход Мэдвига пересчитывается в углы Эйлера, которыми, видимо (поправьте если я не прав), Вы оперируете. Пересчет из кватернионов в эти углы должен так же производиться по правильным формулам.
ПС: обратите внимание на эффект gimbal lock или "карданного подвеса" при пересчете. Удачи Вам в этом нелегком, но очень занимательном и интересном вопросе!


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 17:19 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 832
Тут такое дело, pi+0.7pi+0.3pi != 0rad.
Я не уверен в ваших компиляторах, но мне пришлось писать собственные функции математики под одинарную плавающую точку. С двойной точкой проблем нет, кроме потери производительности.

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 17:25 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
AVI-crak писал(а):
Тут такое дело, pi+0.7pi+0.3pi != 0rad.
Я не уверен в ваших компиляторах, но мне пришлось писать собственные функции математики под одинарную плавающую точку. С двойной точкой проблем нет, кроме потери производительности.


В смысле? Речь идет об atan2f и asinf? Я не задавался этим вопросом пока еще, использую Atollic, контроллер STM32F407, все это время уповал на аппаратный FPU контроллера. Надо будет посмотреть, как с этим дела обстоят.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 21:41 
Старожил

Зарегистрирован: 13 фев 2012, 23:48
Сообщения: 755
Откуда: Украина, Харьков
Использую фильтр Маджвика на STM32F303 с одинарной точностью и на STM32F767 с двойной точностью. Ни каких калибровок. В условиях шумов и вибраций получают устойчивые значения ориентации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Паразитное вращение на выходе фильтра Маджвика
СообщениеДобавлено: 11 дек 2018, 22:58 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 505
__bl__ писал(а):
Использую фильтр Маджвика на STM32F303 с одинарной точностью и на STM32F767 с двойной точностью. Ни каких калибровок. В условиях шумов и вибраций получают устойчивые значения ориентации.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB