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