Я попробовал несколько алгоритмов, чтобы получить тангаж, крен и рыскание при непрерывных линейных ускорениях и вибрациях (меньше 0,4 г, частота ниже 10 Гц). Ни один из них не дает хороших результатов, потому что показания либо дрейфуют, либо слишком сильно зависят от линейных ускорений. Чего я хочу добиться - это когда внешнее ускорение меньше + -0,4 г, ошибка на шаг и крен должна быть меньше + -1 град.
Я попробовал эти алгоритмы:
Алгоритм Мэджвика . Когда усиление бета установлено очень высоко, сходимость быстрая, но углы более восприимчивы к линейным ускорениям. Я уменьшил его и уменьшил погрешность при линейных ускорениях до + -0,5 градуса. Однако, если вибрация постоянная, показания будут дрейфовать, и для того, чтобы приблизиться к истинным значениям, потребуется вечность. Это имеет смысл, потому что при линейных ускорениях гироскопу доверяют больше, и рассчитанные углы смещаются по мере дрейфа интеграции гироскопа.
Алгоритм Махони . В отличие от Madgwick, он вообще не дрейфует независимо от того, какие значения я использую для Ki и Kp. Однако на него всегда влияют линейные ускорения. (Ошибки больше + -6 градусов)
Традиционный фильтр Калмана . Много времени было потрачено на настройку этих огромных векторов R и Q. Пока у него такая же производительность, как у Махони.
Я использую бритву ИДУ . Я знаю, с дешевыми датчиками невозможно достичь того же результата, что и этот .
Есть еще несколько вариантов, таких как UKF, но это сложно понять или реализовать.
Любое предложение приветствуется.