Фи́льтр Ка́лмана — эффективный рекурсивный фильтр, оценивающий вектор состояния динамической системы, используя ряд неполных и зашумленных измерений. Назван в честь Рудольфа Калмана.

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

В большинстве приложений размерность вектора состояния объекта превосходит размерность вектора данных наблюдения. При этом фильтр Калмана позволяет оценивать полное внутреннее состояние объекта.

Фильтр Калмана предназначен для рекурсивного дооценивания вектора состояния априорно известной динамической системы, то есть для расчёта текущего состояния системы необходимо знать текущее измерение, а также предыдущее состояние самого фильтра. Таким образом, фильтр Калмана, подобно другим рекурсивным фильтрам, реализован во временно́м, а не в частотном представлении, но, в отличие от других подобных фильтров, фильтр Калмана оперирует не только оценками состояния, а ещё и оценками неопределённости (плотности распределения) вектора состояния, опираясь на формулу Байеса условной вероятности.

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

Бытует ошибочное мнение, что для правильной работы фильтра Калмана якобы требуется гауссовское распределение входных данных. В исходной работе Калмана результаты о минимуме ковариации фильтра были получены на базе ортогональных проекций, без предположений о гауссовости ошибок измеренийKalman, R.E. (1960). «A new approach to linear filtering and prediction problems». Journal of Basic Engineering 82 (1): pp. 35—45. Затем просто было показано, что для специального случая распределения ошибок по Гауссу фильтр даёт точную оценку условной вероятности распределения состояния системы.

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

Введение Фильтр Калмана оперирует понятием вектора состояния системы (набором параметров, описывающих состояние системы на некоторый момент времени) и его статистическим описанием. В общем случае динамика некоторого вектора состояния описывается плотностями вероятности распределения его компонент в каждый момент времени. При наличии определённой математической модели производимых наблюдений за системой, а также модели априорного изменения параметров вектора состояния (а именно — в качестве марковского формирующего процесса) можно записать уравнение для апостериорной плотности вероятности вектора состояния в любой момент времени. Данное дифференциальное уравнение носит название уравнение Стратоновича. Уравнение Стратоновича в общем виде не решается. Аналитическое решение удается получить только в случае ряда ограничений (предположений): гауссовые априорные и апостериорные плотности вероятности вектора состояния на любой момент времени (в том числе начальный) гауссовые формирующие шумы гауссовые шумы наблюдений белые шумы наблюдений линейность модели наблюдений линейность модели формирующего процесса (который, напомним, должен являться марковским процессом)

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

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

Существует несколько разновидностей фильтра Калмана, отличающихся приближениями и ухищрениями, которые приходится применять для сведения фильтра к описанному виду и уменьшения его размерности: (EKF, Extended Kalman filter). Сведение нелинейных моделей наблюдений и формирующего процесса с помощью линеаризации посредством разложения в ряд Тейлора; сигма-точечный фильтр Калмана (UKF, Unscented Kalman filter). Используется в задачах, в которых простая линеаризация приводит к уничтожению полезных связей между компонентами вектора состояния. В этом случае «линеаризация» основана на ; Ensemble Kalman filter (EnKF). Используется для уменьшения размерности задачи; возможны варианты с нелинейным дополнительным фильтром, позволяющим привести негауссовые наблюдения к нормальным; возможны варианты с «обеляющим» фильтром, позволяющим работать с «цветными» шумами; и т. д.

Кроме того, имеются аналоги фильтра Калмана, использующие полностью или частично модель непрерывного времени: фильтр Калмана — Бьюси, в котором и эволюция системы, и измерения имеют вид функций от непрерывного времени; гибридный фильтр Калмана, использующий непрерывное время при описании эволюции системы и дискретные моменты времени для измерений.

Исторический обзор и имена Фильтр назван в честь венгерского математика Рудольфа Э.Калмана, эмигрировавшего в США, хотя Торвальд Николай Тиле He derives a recursive procedure for estimating the regression component and predicting the Brownian motion. The procedure is now known as Kalman filtering.<ref> He solves the problem of estimating the regression coefficients and predicting the values of the Brownian motion by the method of least squares and gives an elegant recursive procedure for carrying out the calculations. The procedure is nowadays known as Kalman filtering.</ref> и разработали подобный алгоритм раньше (Тиле рассмотрел лишь некоторую частную постановку, в то время как алгоритм Сверлинга практически идентичен калмановскому). Ричард С.Бьюси из Университета Южной Калифорнии сделал вклад в теорию, которая привела к так называемому фильтру Калмана — Бьюси. считается первым, кто реализовал фильтр Калмана во время визита Калмана в Исследовательский центр Эймса, так что Калман увидел применимость своих идей к задаче оценки траекторий для программы «Аполлон», что привело в конечном счёте к включению этого фильтра в компьютерную систему навигации «Аполлона». Фильтр Калмана был впервые описан и частично разработан в работах Сверлинга (1958), Калмана (1960) и Калмана и Бьюси (1961).

Фильтры Калмана оказались критически важными для реализации навигационных систем подводных лодок ВМС США с ядерными баллистическими ракетами на борту, в навигационных системах крылатых ракет, например, «Томагавков». Он также использовался в навигационных и управляющих системах проекта НАСА «Спейс шаттл», используется в системах управления и навигации МКС.

Цифровой фильтр Калмана иногда называют фильтром Стратоновича — Калмана — Бьюси, поскольку он является частным случаем более общего нелинейного фильтра, разработанного несколько раньше советским математиком Р. Л. СтратоновичемStratonovich, R.L. (1959). Optimum nonlinear systems which bring about a separation of a signal with constant parameters from noise. Radiofizika, 2:6, pp. 892—901.Stratonovich, R.L. (1959). On the theory of optimal non-linear filtering of random functions. Theory of Probability and its Applications, 4, pp. 223—225.Stratonovich, R.L. (1960) Application of the Markov processes theory to optimal filtering. Radio Engineering and Electronic Physics, 5:11, pp. 1—19.Stratonovich, R.L. (1960). Conditional Markov Processes. Theory of Probability and its Applications, 5, pp. 156—178.. Фактически некоторые из уравнений для частных случаев линейного фильтра появились в этих работах Стратоновича, опубликованных до лета 1960 года, когда Калман встретился со Стратоновичем во время конференции в Москве.

Используемая модель динамической системы Фильтры Калмана базируются на дискретизированных по времени линейных динамических системах. Такие системы моделируются цепями Маркова при помощи линейных операторов и слагаемых с нормальным распределением. Состояние системы описывается вектором конечной размерности — вектором состояния. В каждый такт времени линейный оператор действует на вектор состояния и переводит его в другой вектор состояния (детерминированное изменение состояния), добавляется некоторый вектор нормального шума (случайные факторы) и в общем случае вектор управления, моделирующий воздействие системы управления. Фильтр Калмана можно рассматривать как аналог скрытым моделям Маркова, с тем отличием, что переменные, описывающие состояние системы, являются элементами бесконечного множества действительных чисел (в отличие от конечного множества пространства состояний в скрытых моделях Маркова). Кроме того, скрытые модели Маркова могут использовать произвольные распределения для последующих значений вектора состояния, в отличие от фильтра Калмана, использующего модель нормально распределенного шума. Существует строгая взаимосвязь между уравнениями фильтра Калмана и скрытой модели Маркова. Обзор этих и других моделей дан Roweis и Chahramani (1999)Roweis, S. and Ghahramani, Z., A unifying review of linear Gaussian models , Neural Comput. Vol. 11, No. 2, (February 1999), pp. 305—345..

При использовании фильтра Калмана для получения оценок вектора состояния процесса по серии зашумленных измерений необходимо представить модель данного процесса в соответствии со структурой фильтра — в виде матричного уравнения определённого типа. Для каждого такта работы фильтра необходимо в соответствии с приведённым ниже описанием определить матрицы: эволюции процесса ; матрицу наблюдений ; ковариационную матрицу процесса ; ковариационную матрицу шума измерений ; при наличии управляющих воздействий — матрицу их коэффициентов .

Модель системы (процесса) подразумевает, что истинное состояние в момент получается из истинного состояния в момент в соответствии с уравнением ,

где

 — матрица эволюции системы (процесса), которая воздействует на вектор (вектор состояния в момент );  — матрица управления, которая прикладывается к вектору управляющих воздействий ;  — нормальный случайный процесс с нулевым математическим ожиданием и ковариационной матрицей , который описывает случайный характер эволюции системы (процесса):

В момент k производится наблюдение (измерение) истинного вектора состояния , которые связаны между собой уравнением ,

где  — матрица измерений, связывающая истинный вектор состояния и вектор произведенных измерений,  — белый гауссовский шум измерений с нулевым математическим ожиданием и ковариационной матрицей :

Начальное состояние и векторы случайных процессов на каждом такте {, , …, , , …, } считаются независимыми.