Фильтр Альфа — Бета. От теории к практике — часть 1

Альфа - БетаЗадача датчиков — предоставить информацию о положении робота и других объектов. Эти данные передаются в алгоритмы управления. Сигналы с датчиков ошибочные. Но, чтобы получить более подробную информацию о состоянии объекта, его оценка должна производиться на основании данных измерений.

Введение

Популярным методом решения этой проблемы, является фильтрация Калмана (кто уже об этом хоть что-то знает, тот поймет). Это статистически оптимальный метод оценки состояния. Это означает, что при заданных рабочих параметрах нет более точной оценки состояния объекта. Однако его реализация требует знания модели состояния объекта и ковариационной матрицы ошибок измерения и обработки, а также выполнения вычислений с матрицами. Поэтому мы бы хотели предложить упрощенный метод, который, однако, может дать очень хорошие результаты на практике.

Фильтр Alpha — Beta

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

Уравнения фильтра

Где y ^ — оценка положения, v — оценка скорости, y — измеренное положение, а ΔT — временной шаг между последовательными измерениями.

Выражение (t | t) означает значение в текущий момент времени на основе измерения до текущего момента времени, (t + 1 | t) означает значение в следующий момент времени на основе измерений до текущего момента времени. Момент времени, а (t | t-1) означает значение в текущий момент времени, основанное на измерениях до предыдущего момента времени.

Алгоритм делится на этап прогнозирования следующего состояния (первые два уравнения) и корректировку прогнозируемого значения на основе измерения (следующие два уравнения). Параметры альфа и бета используются для настройки фильтра. Их значения следует менять в диапазоне от 0 до 1.

Выполнение

Чтобы представить алгоритм на практике, мы написали простой скрипт на Matlab:

Измеренный сигнал представляет собой случайный сигнал с ожидаемым значением 0 и дисперсией 10. Через 5 секунд ожидаемое значение увеличивается до 100.

Фильтр альфа-бета содержится в четырех строках кода:

Результаты симуляции

Моделирование для альфа = 0,1 и бета = 0,05 дало следующий результат:

Результаты симуляции 1
а = 0,1, б = 0,05

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

Моделирование

Мы сделали еще одно моделирование для значений альфа = 0,1 и бета = 0,2:

Моделирование
а = 0,1 б = 0,2

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

Это эффект увеличения параметра бета.

В следующем моделировании мы установили альфа = 0,7, бета = 0,05:

Моделирование 2
а = 0,7 б = 0,05

Мы видим, что отфильтрованные значения не сильно отличаются от измеренных значений. В результате фильтр имеет низкую помехоустойчивость, но быстро реагирует на резкие изменения сигнала.

В последней симуляции мы установили альфа = 0,35, бета = 0,05:

Моделирование 3
а = 0,35 б = 0,05

На этот раз показатели у нас хуже, чем раньше, на скачкообразное изменение сигнала, но помехозащищенность определенно лучше.

Вывод

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

В следующей части статьи мы рассмотрим практическую реализацию альфа-бета-фильтра с гироскопом и микроконтроллером STM32 .

С Уважением, МониторБанк

Добавить комментарий