Открыть сервис

Фильтр Калмана

Фильтр Калмана — это рекурсивный алгоритм оценки состояния динамической системы по серии неполных и зашумлённых измерений. Он относится к классу байесовских фильтров и широко применяется в задачах навигации, слежения, управления и обработки сигналов. Фильтр Калмана обеспечивает оптимальную (в смысле минимума среднеквадратической ошибки) оценку для линейных систем с гауссовским шумом.

История

Основы фильтрации были заложены в 1940-х годах Андреем Колмогоровым и Норбертом Винером (фильтр Винера). Однако их подход требовал обработки всей предыстории измерений, что делало его непригодным для рекурсивного применения в реальном времени.

В 1960 году венгерско-американский математик Рудольф Калман опубликовал статью «A New Approach to Linear Filtering and Prediction Problems», в которой предложил рекурсивный алгоритм оценки состояния системы, использующий только текущее измерение и предыдущую оценку. В том же году Калман совместно с Ричардом Бьюси разработал версию фильтра для непрерывного времени (фильтр Калмана — Бьюси).

Первое практическое применение фильтра Калмана связано с программой «Аполлон» (NASA): алгоритм использовался для оценки траектории космического корабля при полёте к Луне. Впоследствии фильтр стал стандартным инструментом в авионике, робототехнике и экономике.

Математическая постановка

Фильтр Калмана решает задачу оценки состояния x ∈ ℝⁿ линейной динамической системы, описываемой уравнениями:

  • Уравнение состояния (модель процесса):

xₖ = Fₖ·xₖ₋₁ + Bₖ·uₖ + wₖ где Fₖ — матрица перехода состояния, Bₖ — матрица управления, uₖ — вектор управления, wₖ — шум процесса (гауссовский с нулевым средним и ковариацией Qₖ).

  • Уравнение измерения:

zₖ = Hₖ·xₖ + vₖ где Hₖ — матрица измерений, vₖ — шум измерения (гауссовский с нулевым средним и ковариацией Rₖ).

Шумы wₖ и vₖ предполагаются независимыми друг от друга и от начального состояния.

Алгоритм работы

Фильтр Калмана работает в два этапа: предсказание (прогноз) и коррекция (обновление).

Этап предсказания (прогноз)

На этом этапе вычисляется априорная оценка состояния x̂ₖ|ₖ₋₁ и априорная ковариация ошибки Pₖ|ₖ₋₁ на основе предыдущего состояния и модели процесса:

  • x̂ₖ|ₖ₋₁ = Fₖ·x̂ₖ₋₁|ₖ₋₁ + Bₖ·uₖ
  • Pₖ|ₖ₋₁ = Fₖ·Pₖ₋₁|ₖ₋₁·Fₖᵀ + Qₖ

Этап коррекции (обновление)

На этом этапе априорная оценка корректируется с учётом текущего измерения zₖ:

  1. Вычисляется инновация (невязка): yₖ = zₖ − Hₖ·x̂ₖ|ₖ₋₁
  2. Вычисляется ковариация инновации: Sₖ = Hₖ·Pₖ|ₖ₋₁·Hₖᵀ + Rₖ
  3. Вычисляется коэффициент Калмана (оптимальное усиление): Kₖ = Pₖ|ₖ₋₁·Hₖᵀ·Sₖ⁻¹
  4. Обновляется апостериорная оценка состояния: x̂ₖ|ₖ = x̂ₖ|ₖ₋₁ + Kₖ·yₖ
  5. Обновляется апостериорная ковариация ошибки: Pₖ|ₖ = (I − Kₖ·Hₖ)·Pₖ|ₖ₋₁

Коэффициент Калмана Kₖ определяет, насколько сильно фильтр доверяет новому измерению по сравнению с прогнозом. Если шум измерения мал (Rₖ мала), Kₖ велик — фильтр больше корректирует оценку по измерению. Если шум процесса мал (Qₖ мала), Kₖ мал — фильтр больше доверяет прогнозу.

Свойства и ограничения

Достоинства

  • Рекурсивность: не требуется хранить всю историю измерений, достаточно предыдущей оценки и ковариации.
  • Оптимальность: для линейных систем с гауссовским шумом фильтр даёт оценку с минимальной среднеквадратической ошибкой.
  • Вычислительная эффективность: алгоритм требует O(n³) операций на шаг, где n — размерность состояния.

Ограничения

  • Линейность: классический фильтр Калмана применим только к линейным системам. Для нелинейных систем используются расширения: расширенный фильтр Калмана (EKF), сигма-точечный фильтр Калмана (UKF) или фильтр на основе ансамблей (EnKF).
  • Гауссовость шума: если шумы негауссовские, фильтр перестаёт быть оптимальным.
  • Точность модели: ошибки в модели процесса (F, Q) или измерений (H, R) могут привести к расходимости фильтра.

Разновидности

Расширенный фильтр Калмана (EKF)

Применяется для нелинейных систем. Нелинейные функции состояния и измерения линеаризуются в окрестности текущей оценки с помощью разложения в ряд Тейлора первого порядка. EKF широко используется в навигации (например, GPS/ИНС) и робототехнике, но может быть чувствителен к сильной нелинейности.

Сигма-точечный фильтр Калмана (UKF)

Использует детерминированное множество точек (сигма-точек) для аппроксимации распределения состояния. Не требует вычисления якобианов, что упрощает реализацию и повышает точность для умеренно нелинейных систем.

Ансамблевый фильтр Калмана (EnKF)

Применяется в задачах с очень большой размерностью состояния (например, в метеорологии и океанологии). Вместо ковариационной матрицы используется ансамбль реализаций состояния, что снижает вычислительные затраты.

Информационный фильтр

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

Применение

  • Авионика: оценка положения, скорости и ориентации летательных аппаратов по данным инерциальных навигационных систем (ИНС), GPS и других датчиков.
  • Космическая техника: определение орбит спутников, наведение ракет-носителей, стыковка космических аппаратов.
  • Автономные автомобили: слияние данных от лидаров, радаров, камер и одометрии для построения траектории и локализации.

Робототехника

  • SLAM (Simultaneous Localization and Mapping): одновременное построение карты и определение местоположения робота. Фильтр Калмана (обычно EKF или UKF) используется для оценки положения робота и координат ориентиров.
  • Отслеживание объектов: сопровождение целей в системах видеонаблюдения и управления манипуляторами.

Обработка сигналов

  • Адаптивная фильтрация: подавление шума в аудио- и видеосигналах, эквалайзинг каналов связи.
  • Эконометрика: оценка скрытых экономических показателей (например, ВВП, инфляции) по зашумлённым временным рядам.

Метеорология и геофизика

  • Ассимиляция данных: объединение результатов численного прогноза погоды с данными наблюдений (спутниковые снимки, радиозонды). Ансамблевый фильтр Калмана является одним из основных методов в оперативных системах прогноза.

Биомедицина

  • Обработка ЭКГ и ЭЭГ: фильтрация артефактов, оценка параметров биосигналов.
  • Трекинг движений: восстановление траекторий движений конечностей по данным инерциальных датчиков.

Пример: одномерный фильтр Калмана

Рассмотрим задачу оценки постоянной температуры T в комнате по зашумлённым показаниям термометра. Пусть T = 20 °C, шум измерения имеет дисперсию R = 4, начальная оценка T̂₀ = 10 °C с ковариацией P₀ = 100. Модель процесса: Tₖ = Tₖ₋₁ (F = 1, Q = 0.01).

Шаг 1: прогноз T̂₁|₀ = T̂₀ = 10, P₁|₀ = P₀ + Q = 100.01

Шаг 2: измерение z₁ = 22 y₁ = 22 − 10 = 12 S₁ = 100.01 + 4 = 104.01 K₁ = 100.01 / 104.01 ≈ 0.961 T̂₁|₁ = 10 + 0.961·12 ≈ 21.53 P₁|₁ = (1 − 0.961)·100.01 ≈ 3.90

На втором шаге с измерением z₂ = 19: Прогноз: T̂₂|₁ = 21.53, P₂|₁ = 3.90 + 0.01 = 3.91 y₂ = 19 − 21.53 = −2.53 S₂ = 3.91 + 4 = 7.91 K₂ = 3.91 / 7.91 ≈ 0.494 T̂₂|₂ = 21.53 + 0.494·(−2.53) ≈ 20.28 P₂|₂ = (1 − 0.494)·3.91 ≈ 1.98

После нескольких шагов оценка сходится к истинному значению 20 °C, а ковариация ошибки уменьшается.

Критика и ограничения

  • Чувствительность к аномалиям: при резких изменениях состояния (например, маневр цели) фильтр может медленно адаптироваться, если не предусмотрен механизм обнаружения манёвров.
  • Субъективность задания шумов: ковариации Q и R часто выбираются эвристически, что влияет на качество фильтрации. Неправильный выбор может привести к расходимости.
  • Вычислительная сложность для больших систем: полная ковариационная матрица размера n×n требует O(n²) памяти и O(n³) операций, что неприемлемо для задач с n > 10⁶ (например, метеорология).

Интересные факты

  • Рудольф Калман первоначально столкнулся со скептицизмом инженеров, которые считали его метод слишком математизированным. Широкое признание пришло после успешного применения в программе «Аполлон».
  • Фильтр Калмана является частным случаем байесовского фильтра для линейных гауссовских систем. В общем случае байесовская фильтрация решается с помощью фильтра частиц (Particle Filter).
  • В 2008 году Институт инженеров электротехники и электроники (IEEE) учредил медаль имени Рудольфа Калмана за выдающиеся вклады в теорию и практику фильтрации.

Источники

  • Kalman, R. E. (1960). «A New Approach to Linear Filtering and Prediction Problems». Journal of Basic Engineering, 82(1), 35–45.
  • Welch, G., & Bishop, G. (1995). «An Introduction to the Kalman Filter». University of North Carolina at Chapel Hill.
  • Simon, D. (2006). «Optimal State Estimation: Kalman, H∞, and Nonlinear Approaches». Wiley-Interscience.
  • Grewal, M. S., & Andrews, A. P. (2014). «Kalman Filtering: Theory and Practice with MATLAB». Wiley.
  • Bar-Shalom, Y., Li, X. R., & Kirubarajan, T. (2001). «Estimation with Applications to Tracking and Navigation». Wiley.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →