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

Фильтр Калмана — алгоритм в области статистики и теории управления, предназначенный для последовательной оценки неизвестных переменных по серии наблюдений, подверженных шуму и неточностям. Алгоритм построен как средство минимизации среднеквадратичной ошибки, оценивая совместное распределение вероятностей переменных на каждом шаге во времени[1]. Своё название фильтр получил по имени математикa Рудольфа Э. Калмана (англ. Rudolf E. Kálmán).

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

Работа фильтра Калмана основана на двух фазах: фазе предсказания и фазе обновления. Сначала алгоритм прогнозирует состояние системы и его неопределённость, а затем уточняет прогноз на основе новых измерений с помощью взвешенного среднего. Это рекурсивный алгоритм: для очередного шага необходимы только текущие наблюдения и состояние, полученное на предыдущем шаге.

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

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

Предшественники

До появления фильтра Калмана в 1960 году для решения задач линейной фильтрации и прогнозирования использовались два основных метода, которые стали его идеологическими и математическими предшественниками: метод наименьших квадратов и фильтр Винера — Колмогорова.

Метод наименьших квадратов (МНК), первое применение которого приписывается Карлу Фридриху Гауссу в 1795 году, а публикация — Адриену-Мари Лежандру в 1805 году, является фундаментальным методом оценки неизвестных величин. Его суть заключается в минимизации суммы квадратов отклонений между экспериментальными данными и значениями, предсказанными моделью[6]. Изначально МНК применялся для решения переопределённых систем линейных уравнений в астрономии и геодезии[7]. Однако классический МНК был предназначен для оценки постоянных, но неизвестных параметров системы и не подходил для фильтрации динамических процессов, то есть для оценки параметров, изменяющихся во времени[8].

Фильтр Винера — Колмогорова стал прямым предшественником фильтра Калмана в области обработки сигналов. Теоретические основы метода были заложены советским математиком Андреем Колмогоровым в 1941 году и, независимо от него, американским математиком Норбертом Винером в 1940-х годах[8]. Фильтр строился на основе критерия минимума среднеквадратической ошибки и предназначался для сглаживания, фильтрации и прогнозирования стационарных случайных процессов, статистические характеристики которых были известны[9]. Решение, известное как уравнение Винера — Хопфа, чаще всего реализовывалось в частотной области[9].

Основными ограничениями метода Винера — Колмогорова были:

  • Требование стационарности: метод предполагал, что статистические свойства сигнала и шума не меняются со временем, что ограничивало его применение[10].
  • Нерекурсивный характер: для получения оценки в каждый новый момент времени требовалась обработка всей доступной истории наблюдений, что было вычислительно затратно для систем, работающих в реальном времени[11].
  • Сложность реализации: практическая реализация требовала выполнения операции спектральной факторизации, что является вычислительно трудоёмкой задачей[10].

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

История

Метод фильтрации, который ныне носит имя Калмана, был предложен венгерским математиком Рудольфом Э. Калманом (англ. Rudolf E. Kálmán). Идея подхода, основанного на описании систем в пространстве состояний, возникла у Калмана в ноябре 1958 года[12], а в марте 1960 года он опубликовал свою ключевую работу «A New Approach to Linear Filtering and Prediction Problems» (рус. Новый подход к задачам линейной фильтрации и прогнозирования) в журнале Transactions of the ASME—Journal of Basic Engineering[13][14]. Тем не менее, аналогичные идеи встречаются ранее у Торвальда Николая Тиле и Питера Сверлинга, а вклад в развитие теории внёс Ричард С. Бьюси, в результате чего иногда встречается название фильтра Калмана—Бьюси[15].

Практическая реализация фильтра была впервые осуществлена С. Ф. Шмидтом, который применил идеи Калмана к задаче навигации в проекте «Аполлон», обеспечив вычисления на бортовом компьютере для отслеживания траектории полёта к Луне[16][17].

Фильтр Калмана был жизненно важен в реализации навигационных систем подводных лодок ВМС США, а также в системах управления крылатыми ракетами и ориентацией космических аппаратов[18].

Краткое описание расчёта

Фильтр Калмана — это эффективный рекурсивный байесовский фильтр, который оценивает внутреннее состояние динамической системы на основе ряда неполных и зашумлённых измерений[19][20]. Алгоритм работает во временной области и для расчёта текущего состояния ему необходимы только текущее измерение и оценка, полученная на предыдущем шаге, без хранения всей истории данных[21]. Для линейных систем с гауссовским шумом фильтр Калмана является оптимальным оценщиком, поскольку минимизирует среднеквадратическую ошибку оценки[19][22]. Главная идея — объединить данные от разных источников (например, датчиков) для получения оценки внутреннего состояния, более точной, чем любая из этих оценок по отдельности.

Работа алгоритма состоит из двух повторяющихся шагов: прогноза и коррекции[23].

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

Пример применения

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

Техническое описание и контекст применения

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

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

К числу разновидностей относятся классический «простой» фильтр Калмана, фильтр Калмана—Бьюси, расширенный фильтр Калмана, информационный фильтр и квадрат-корневые модификации.

Математическая модель динамической системы

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

\[ \mathbf{x}_k = \mathbf{F}_k \mathbf{x}_{k-1} +\mathbf{B}_k \mathbf{u}_{k} + \mathbf{w}_k \] где

  • \(\mathbf{x}_k\) — вектор состояния в момент времени \(k\)
  • \(\mathbf{F}_k\) — матрица перехода состояния
  • \(\mathbf{B}_k\) — матрица входа (управления)
  • \(\mathbf{u}_k\) — управляющий вектор
  • \(\mathbf{w}_k\) — вектор шума процесса, \(\mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k)\), где \(\mathbf{Q}_k\) — матрица ковариации

Измерения: \[ \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k \] где

  • \(\mathbf{H}_k\) — матрица преобразования состояния в пространство наблюдений
  • \(\mathbf{v}_k\) — шум измерения, \(\mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k)\), \(\mathbf{R}_k\) — ковариационная матрица измерения

Начальное состояние и шумовые векторы считаются независимыми.

Детали вычислений

Состояние фильтра задаётся двумя величинами:

  • \(\hat\mathbf{x}_{k|k}\) — апостериорное среднее оценки состояния на шаге \(k\)
  • \(\mathbf{P}_{k|k}\) — ковариационная матрица ошибки оценки

Алгоритм состоит из чередования фаз предсказания и обновления:

Предсказание

Предсказанное (априорное) состояние k-1} = \mathbf{F}_k \hat\mathbf{x}_{k-1|k-1} + \mathbf{B}_k \mathbf{u}_{k}\)
Предсказанная ковариация k-1} = \mathbf{F}_k \mathbf{P}_{k-1 | k-1} \mathbf{F}_k^\mathrm{T} + \mathbf{Q}_{k}\)

Обновление

Инновация (предсигнальный остаток) k-1}\)
Ковариация инновации k-1} \mathbf{H}_k^\mathrm{T} + \mathbf{R}_k\)
Оптимальное усиление Калмана k-1}\mathbf{H}_k^\mathrm{T} \mathbf{S}_k^{-1}\)
Обновлённая (апостериорная) оценка состояния k} = \hat{\mathbf{x}}_{k|k-1} + \mathbf{K}_k\tilde{\mathbf{y}}_k\)
Апостериорная ковариация ошибки (форма Джозефа) k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_{k | k - 1} (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k)^\mathrm{T} + \mathbf{K}_k \mathbf{R}_k \mathbf{K}_k^\mathrm{T}\)
Постфит-остаток измерения k} = \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k|k}\)

Модификации и обобщения

Классический фильтр Калмана предназначен для линейных систем[25], однако для расширения его применимости на более сложные случаи был разработан ряд обобщений и модификаций[26].

Модификации для нелинейных систем

Когда динамическая модель системы или модель измерений являются нелинейными, применяются специальные версии фильтра[25].

Расширенный фильтр Калмана (англ. Extended Kalman Filter, EKF) — одна из самых известных модификаций для нелинейных систем[25]. EKF использует линеаризацию нелинейных функций состояния и измерений в окрестности текущей оценки состояния на каждом шаге[25]. Для этого вычисляются матрицы Якоби (матрицы частных производных), которые заменяют соответствующие матрицы в уравнениях стандартного фильтра[27]. Разработка EKF велась в исследовательском центре Эймса (NASA) после создания оригинального фильтра в 1959—1961 годах[28], а его первая реализация часто приписывается Стэнли Ф. Шмидту[29]. Основными недостатками EKF являются сложность аналитического вычисления матриц Якоби и потенциальная нестабильность, если система сильно нелинейна[25].

Сигма-точечный фильтр Калмана (англ. Unscented Kalman Filter, UKF), также известный как бесцентный или сигма-точечный фильтр, не линеаризует функции[25]. Вместо этого он использует набор специально выбранных точек (сигма-точек), которые пропускаются через нелинейные преобразования[25]. Затем на основе преобразованных точек вычисляются среднее значение и ковариация, что позволяет получить более точную оценку по сравнению с EKF, особенно для сильно нелинейных систем[30]. UKF не требует вычисления матриц Якоби, что упрощает его реализацию[30]. Существуют его вариации, такие как фильтр Калмана центральной разности (англ. Central Difference Kalman Filter, CDKF) и их версии с использованием квадратного корня (SRUKF, SRCDKF) для повышения численной устойчивости[30].

Ансамблевый фильтр Калмана (англ. Ensemble Kalman Filter, EnKF) используется в системах с очень большой размерностью вектора состояния, например, в метеорологии и океанографии. EnKF аппроксимирует матрицу ковариации ошибок с помощью ансамбля (множества) случайных реализаций вектора состояния, что значительно снижает вычислительные затраты.

Другие обобщения

Фильтр Калмана — Бьюси (англ. Kalman–Bucy filter) является аналогом фильтра Калмана для систем, в которых и модель эволюции состояния, и процесс измерений описываются в непрерывном времени[31]. Его уравнения представляют собой дифференциальные уравнения для оценки состояния и ковариации ошибки[32].

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

Гибридный фильтр Калмана применяется для систем, где модель эволюции состояния непрерывна во времени, а измерения поступают в дискретные моменты. На этапе прогноза производится интегрирование дифференциальных уравнений, а на этапе коррекции используются уравнения дискретного фильтра Калмана.

Существуют также модификации для работы с коррелированными («цветными») шумами и для приведения негауссовых шумов к нормальному распределению.

Применение

Фильтр Калмана и его модификации широко применяются в науке и технике для оценки состояния динамических систем по зашумлённым и неполным данным[33]. Алгоритм используется как для решения классических задач, так и в передовых разработках, включая системы с искусственным интеллектом.

Навигация и аэрокосмическая отрасль

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

Робототехника и автономный транспорт

  • Автономные автомобили: объединение (слияние) данных с множества сенсоров (камеры, лидары, радары, GPS, IMU) для получения единой и точной оценки положения автомобиля, его скорости и траектории движения окружающих объектов[33]. Современные разработки включают двухэтапную стратегию слияния данных от бортовых датчиков и придорожной инфраструктуры (V2I) для решения проблемы перекрытий и слепых зон[36].
  • Мобильная робототехника: ориентация роботов в пространстве и решение задачи одновременной локализации и построения карты (SLAM).
  • Безопасность взаимодействия человека и робота: отслеживание и прогнозирование движений человека в реальном времени для обеспечения безопасности в коллаборативной робототехнике[37][38].

Компьютерное зрение и обработка сигналов

  • Отслеживание объектов: предсказание положения объекта в следующем кадре видео, что позволяет создавать плавные траектории и не терять объект при временном перекрытии[33]. Применяется в том числе для радиолокационного трекинга и в детекторах частиц.
  • Очистка данных и сигналов: удаление шумов из данных с различных датчиков, например, при обработке речи и аудиосигналов[39] или при предварительной обработке изображений для удаления коррелированного шума перед обучением автоэнкодеров[40].
  • Адаптивные фазированные антенные решётки: повышение отношения сигнал/шум[41].

Экономика и финансы

  • Эконометрика: анализ временных рядов, оценка параметров макроэкономических моделей и прогнозирование экономических показателей.
  • Финансовое моделирование: оценка скрытых переменных, влияющих на цены активов, прогнозирование волатильности и оптимизация инвестиционных портфелей[42].

Медицина и биология

  • Обработка медицинских сигналов: анализ и очистка от шумов сигналов ЭКГ с помощью адаптивных модификаций, таких как ADAEKF (Adaptive Dual Extended Kalman Filter)[43], и анализ медицинских изображений.
  • Интерфейсы «мозг-компьютер»: декодирование сигналов мозга для управления внешними устройствами[39].
  • Биомеханика: моделирование сенсомоторного контроля в центральной нервной системе[44] и прогнозирование развития заболеваний, например, глаукомы[45].

Интеграция с искусственным интеллектом

Современные исследования направлены на создание гибридных моделей, объединяющих фильтр Калмана с нейронными сетями (AI-aided Kalman Filters). В таких системах ИИ используется для идентификации параметров модели или характеристик шума в реальном времени, что повышает точность фильтра в сложных и динамичных средах[46][39]. Сам фильтр также может быть представлен как обучаемая модель машинного обучения[39].

Другие области

Примечания

Литература

  • Бар-Шалом, Яаков. Оценивание с приложениями к трекингу и навигации: теория, алгоритмы и программное обеспечение : [англ.] / Яаков Бар-Шалом, Сюэ-Жун Ли, Тьягалингам Кирубаражан. — Wiley, 2004.
  • Борман, Г.Дж. Матричные методы в дискретных последовательных оценках : [англ.]. — Dover, 1977.
  • Гелб, А. Прикладная оптимальная оценка : [англ.]. — MIT Press, 1974.
  • Калман, Р.Э. (1960). “Новый подход к задаче линейной фильтрации и предсказания” (PDF). Journal of Basic Engineering [англ.]. 82 (1): 35—45. DOI:10.1115/1.3662552. Дата обращения 2024-06-22.
  • Калман, Р.Э.; Бьюси, Р.С. (1961). “Новые результаты в теории линейной фильтрации и предсказания”. Journal of Basic Engineering [англ.]. 83: 95—108. DOI:10.1115/1.3658902.