совершенно нормально, если у вас нет магнитометр, чтобы дать исправленный заголовок.
Только гироскоп измеряет скорость вращения и не имеет представления о ориентации в любой момент времени на любой оси. Интеграция скорости поворота дает заголовок, если вы знаете начальный заголовок, а гироскоп на 100% точнее. В любом случае, он дрейфует, даже если он полностью откалиброван, поскольку вы отбираете дискретные интервалы, а не непрерывно.
Добавление акселерометра будет по крайней мере фиксировать направление вниз (поскольку оно измеряет гравитацию, которая направлена к центру Земли). Это приведет к тому, что решение оси Z будет выровнено по вертикали, но оно не будет фиксировать горизонтальное направление (заголовок или рыскание). Это будет продолжаться, как вы видите.
Добавление магнитометра будет фиксировать заголовок относительно магнитного поля Земли. Это даст вам курс относительно магнитного Севера. Вам нужно будет применить сдвиг для локального магнитного склонения, чтобы получить «Истинный Север». Они обычно доступны в режиме онлайн и достаточно постоянны в течение десятков километров. Google ITREF.
Некоторые встроенные датчики не имеют магнитометра. Вот почему курс дрейфует. Такие устройства, как MPU6050, имеют встроенное микропрограммное обеспечение и могут получить доступ к магнитометру, но обычная прошивка не использует его, поэтому в любом случае вы должны использовать Madgwick и т. Д. На вашем микроконтроллере или подключенном ПК. У Bosch есть новый единый модуль с встроенным процессором. Надеюсь, он использует 9 DOF, а не 6, которые вы получаете с DMP на MPU6050.
Магнитные датчики с точностью до 2 градусов. Локальные поправки магнитного склонения также имеют ошибку. Вы можете выполнить дополнительные калибровки, используя GPS на длинной базовой линии, чтобы получить лучшие результаты. Также стоит отметить, что курс и курс, сделанный хорошо, часто различны, из-за бокового или поперечного течений.
Алгоритм Madgwick довольно стабилен и прост в реализации и использует меньше ресурсов, чем фильтр Калмана, который должен выполнять инверсию матрицы. Он по-прежнему дает незначительный дрожание, но незначительное сглаживание результатов не должно вызывать слишком большого запаздывания.