Всем доброго.
В ходе реализации на stm32 фильтра Маджвика для системы акселерометр-магнетометр-гироскоп столкнулся с проблемой, что азимут считается неверно. Например плата находится в горизонтальной плоскости, а ось Z датчика направлена вниз (нормальное положение, А). Далее переворачиваем плату на 180 градусов так, что бы ось Z датчика была направлена вверх (инверсное положение, Б). И видим, что рассчитанный азимут изменился на 20-30 градусов (пока точнее я сказать не могу, нет стенда). При этом углы крена и дифферента считаются нормально для данной системы и фильтра.
Добавил рассчёт модуля векторов ускорения и магнитной индукции. Начинаю менять положение платы, и если модуль ускорения изменяется в малых пределах (в основном из-за вибрации), то вектор индукции сильно растягивается строго в соответствии с положением платы. Физически в данной конкретной точке пространства магнитное поле Земли имеет определённое значение и направление, соответственно то что происходит, неверно. У меня есть подозрение, что проблема с рассчётом азимута кроется в этом, т.к. на азимут в случае, если плата находится в горизонтальной плоскости, влияет именно магнетометр (влияние гироскопа в стационарном случае можно не учитывать для простоты).
Коллеги, есть ли соображения по этому поводу?
|