Фильтр Калмана
Фильтр Калмана — это рекурсивный алгоритм оценки состояния динамической системы по серии неполных и зашумлённых измерений. Он относится к классу байесовских фильтров и широко применяется в задачах навигации, слежения, управления и обработки сигналов. Фильтр Калмана обеспечивает оптимальную (в смысле минимума среднеквадратической ошибки) оценку для линейных систем с гауссовским шумом.
История
Основы фильтрации были заложены в 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ₖ:
- Вычисляется инновация (невязка): yₖ = zₖ − Hₖ·x̂ₖ|ₖ₋₁
- Вычисляется ковариация инновации: Sₖ = Hₖ·Pₖ|ₖ₋₁·Hₖᵀ + Rₖ
- Вычисляется коэффициент Калмана (оптимальное усиление): Kₖ = Pₖ|ₖ₋₁·Hₖᵀ·Sₖ⁻¹
- Обновляется апостериорная оценка состояния: x̂ₖ|ₖ = x̂ₖ|ₖ₋₁ + Kₖ·yₖ
- Обновляется апостериорная ковариация ошибки: 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 →