Введение. Фильтрация Калмана - полезный инструмент для самых разных приложений. Тем не менее, эта методика не проста в понимании из-за высокого уровня детализации в существующих публикациях по этой теме. Хотя может быть нецелесообразно ожидать повсеместного глубокого понимания стохастической теории, лежащей в основе методов фильтрации Калмана, разумно ожидать, что многие смогут использовать этот вычислительный инструмент для различных приложений. Эта статья нацелена на представление фильтра Калмана с точки зрения практического использования. Цель данной статьи - дать людям без необходимого уровня понимания теории возможность использовать эту статью, чтобы внедрить собственный фильтр Калмана.
Основные понятия. Начнем с термина фильтр Калмана. Название фильтра происходит от основного разработчика фильтра, Рудольфа Калмана. Так что это просто имя, которое присваивается фильтрам определенного типа. Фильтрацию Калмана также иногда называют «линейной квадратичной оценкой». Теперь разберёмся что такое фильтр. Все фильтры имеют общую цель: пропустить что-то, а что-то - нет. Примером, который мог встречаться многим людям, является кофейный фильтр. Этот фильтр для кофе позволит жидкости проходить, оставляя остатки кофейного зерна. Вы также можете подумать о фильтре низких частот, который пропускает низкие частоты, одновременно ослабляя высокие частоты. Фильтр Калмана также действует как фильтр, но его работа немного более комплексная и сложная для понимания. Фильтр Калмана принимает информацию, которая, как известно, имеет некоторую ошибку, неопределенность или шум. Целью фильтра является получение этой несовершенной информации, сортировка полезных частей, представляющих интерес, и уменьшение неопределенности или шума. Диаграммы этих трех примеров фильтрации представлены на рисунке 1.
Рисунок 1. Три примера диаграмм типов фильтров
Определение проблемы фильтрации. Фильтр Калмана предназначен для работы в системах в формате линейного пространства состояний [1], т.е.
xk = Fk−1xk−1 +Gk−1uk−1 + wk−1 (1)
yk = Hkxk + vk (2)
где х-вектор состояния, y- вектор выхода, u- вектор управления, w-вектор шума процесса, v- вектор шума измерения, F – матрица системы, G – матрица управления, H-матрица наблюдений, а размерность: x-nx ×1; y-ny×1; u-nu×1; w-nx×1; v-ny×1; F-nx×nx; G-nx×nu; H-ny×nx.
Обратите внимание, что число состояний, выходов и входов является независимым, и поэтому матрицы G и H могут быть не квадратными, но F всегда является квадратной матрицей. Динамика состояния описывается формулой (1), а выходные уравнения - (2).
Вектор состояния x - это значения, которые будут оцениваться фильтром. Используя аналогию с фильтром, компоненты этого вектора - это то, что должно пройти сквозь фильтр. Иногда в вектор состояния может включатся больше элементов, чем действительно нужно, если они необходимы для определения того, что необходимо получить в конце. Например, если нужно определить положение объекта, используя информацию об ускорении, вам, вероятно, также потребуется определить и скорость. Это важное различие между векторами состояния и векторами выхода. В то время как в других ситуациях «выход» - это то, что вы пытаетесь получить, для задач оценки состояния с использованием фильтрации Калмана «состояние» фактически является желаемым результатом.
Вектор выхода y - это не то, что вы пытаетесь получить из фильтра, а то, что вы можете измерить. Вы должны быть в состоянии выразить ваши измерения в терминах состояний, чтобы вы могли сравнить их с измерениями, то есть вам нужно сопоставить яблоки с яблоками, чтобы знать, как много (или мало) нужно исправить. Не все измерения должны присутствовать в выходном векторе для конкретной формулировки. Иногда определенные измерения необходимы для использования в динамике состояния (1). Вектор выхода должен состоять из значений, которые могут быть определены как математически из состояний, так и с помощью некоторой независимой системы измерения, то есть измерения не используются где-либо еще в фильтре.
Вектор управления, u, вероятно, самая сложная часть фильтра Калмана. Этот вектор содержит информацию, которая должна поступить в фильтр для определения динамики системы. Эти значения могут быть измерениями датчиков, однако в этом случае необходимо учитывать неопределенность этих входных значений. Как правило, при определении уравнений системы (1) и (2) после определения необходимых состояний любые другие члены, которые появляются в фильтре, которые не нужно оценивать как состояния, могут рассматриваться как входные данные. Например, чтобы найти динамику состояния скорости, можно включить измерение ускорения в качестве входных данных.
Переменные w и v, которые соответствуют векторам шума процесса и измерения для системы, интересны тем, что они обычно не появляются непосредственно в интересующих уравнениях. Вместо этого эти переменные используются для моделирования неопределенности (или шума) в самих уравнениях. Она может проявиться несколькими способами. Первый - это ошибка моделирования, которая является неопределенностью в самом уравнении. Некоторые уравнения, полученные, например, из физических принципов, имеют незначительную ошибку моделирования. Однако в некоторых ситуациях встречаются эвристически определенные уравнения, которые нельзя использовать с полной уверенностью в их правильности. В этом случае можно считать, что определенная величина ошибки появляется в уравнении в виде w или v. Другим возможным источником ошибки является ошибка в измерениях датчиков, используемых в уравнениях. Переменные w и v могут использоваться для включения ошибок, связанных с измерениями датчиков. Фактически, наиболее распространено использование v в выходных уравнениях для учета погрешности измерения выходного сигнала. Обратите внимание, что эта ошибка не в самом уравнении, а оценка того, насколько хорошо уравнение должно соотносится с измерениями. Обратите внимание, что w и v на самом деле не реализованы в уравнениях (1) и (2), поскольку они предполагаются случайными ошибками с нулевым средним, а скорее используются только для определения информации о шумах процесса и измерения в ковариационных матрицах Q и R.
Что касается матриц системы F, G и H, эти матрицы будут зависеть от рассматриваемой проблемы и используются для представления уравнений в виде линейной системы состояний и входов. F будет содержать коэффициенты слагаемых состояния в динамике состояния (1), а H выполняет аналогичную функцию в выходных уравнениях (2). Матрица G содержит коэффициенты входных членов в динамике состояний (1). Эти матрицы, как правило, могут изменяться со временем, но не могут изменяться в зависимости от состояний или входов. Для многих задач эти матрицы постоянны.
Алгоритм фильтрации Калмана. Фильтр Калмана использует прогноз с последующей коррекцией для определения состояний фильтра. Это иногда называют предсказателем-корректором или предсказанием-обновлением. Основная идея состоит в том, что, используя информацию о динамике состояния, фильтр будет проецировать вперед и прогнозировать, каким будет следующее состояние. Простым примером этого может быть то, что если я знаю, где я был раньше (предыдущее состояние) и как быстро я двигался (динамика состояния), я могу догадаться, где я сейчас нахожусь (текущее состояние). Это может быть метод численного интегрирования, такой как метод Эйлера или Рунге-Кутта [12]. Затем часть исправления или обновления включает сравнение измерения с тем, каким измерение должно быть основываться на наших предсказанных состояниях. Теперь обсудим технику фильтрации Калмана в формате уравнения. Начиная с некоторой оценки начального состояния, x̂0 и ковариационной матрицы ошибок начального состояния, P0, формат предсказатель-корректор применяется рекурсивно на каждом временном шаге. Сначала вектор состояния прогнозируется из уравнения динамики состояния с использованием формулы
x̂k|k−1 =Fk−1x̂k−1+Gk−1uk−1 (3)
где x̂k|k−1 - прогнозируемый вектор состояния, x̂k−1 - предыдущий оцененный вектор состояния, u - входной вектор, а F и G - матрицы, определяющие динамику системы. Обратите внимание, что индекс k | k-1 читается как «k учитывая k-1» и является сокращенной записью для состояния в дискретное время k, учитывая его предыдущее состояние в дискретное время k-1, то есть это является предсказанием состояния с использованием модели системы проецируется вперед на один шаг во времени. Затем ковариационная матрица ошибок состояния также должна быть предсказана с использованием формулы
Pk | k-1=Fk-1Pk-1FTk-1+Qk-1 (4)
где Pk|k-1 представляет собой ковариационную матрицу ошибки предсказанного состояния, Pk-1 - ковариационную матрицу ошибки оцененного состояния предыдущего уровня, а Q - ковариационную матрицу шума процесса. Опять же, k | k-1 указывает, что это ожидаемая ковариационная матрица в k, основанная на модели системы и ковариации в k-1. Как только предсказанные значения получены, матрица усиления Калмана, Kk, вычисляется как
Kk=Pk|k-1HTk(HkPk|k-1HTk+Rk)-1 (5)
где H - матрица, необходимая для определения выходного уравнения, а R - ковариация шума измерения. Затем вектор состояния обновляется путем масштабирования «инновации», которая представляет собой разницу между измерением выходного сигнала zk и прогнозируемого выходного сигнала, Hkx̂k|k−1 (иногда называемый ŷk|k−1) вычисленной матрицей усиления Калмана, чтобы скорректировать прогноз на соответствующую величину, как в
x̂k=x̂k|k−1+Kk(zk-Hkx̂k|k−1) (6)
Аналогично, ковариация ошибок состояния обновляется
Pk=(I-KkHkPk|k−1) (7)
где I является единичной матрицей.
Основная нотационная разница между источниками заключается в использовании индекса дискретного времени k. Существуют три различных формата дискретного времени, которые можно найти в литературе.
Каждый эквивалентен, но приводит к различным индексам в (1) и (2). Различное форматирование времени суммировано в Таблице 1.
Таблица 1. Различное форматирование дискретного времени
Формат времени |
Динамика состояния (1) |
Выходные уравнения (2) |
k и k – 1 |
xk=Fk−1xk−1+Gk−1uk−1+wk−1 |
yk=Hkxk+vk |
K+1 и k с выходом k |
xk+1=Fkx k+Gkuk+wk |
yk=Hkxk+vk |
K+1 и k с выходом k+1 |
xk+1=Fkxk+Gkuk+wk |
yk+1=Hk+1xk+1+vk+1 |
Другие нотационные различия, обнаруженные в различных ресурсах по фильтрации Калмана, суммированы в Таблице 2, включая примеры источников, которые используют это обозначение.
Таблица 2. Сводные обозначения различий в литературе
Переменная |
Эта статья |
Другие источники |
вектор состояния |
х |
z |
вектор выхода |
y |
z |
матрица системы |
F |
A, Φ |
матрица управления |
G |
B |
матрица наблюдений |
H |
C |
матрица ковариантности ошибок состояния |
P |
Σ |
дискретный указатель времени |
k |
n |
Фильтры Калмана с непрерывным и дискретным временем. Эта статья посвящена фильтру Калмана с дискретным временем. Существует также аналог для непрерывного времени, который иногда называют фильтром Калмана-Бьюси [3]. Поскольку большинство приложений фильтрации Калмана реализованы на цифровых компьютерах, внедрение фильтров Калмана в непрерывное время не практично во многих ситуациях. Из-за этого случаи с непрерывным временем оставлены для других источников [3]. Обратите внимание, что это не означает, что к непрерывным моделям систем нельзя приблизиться с помощью фильтра Калмана с дискретным временем. Рассмотрим непрерывную систему следующего вида
ẋ(t)=Fc(t)x(t)+Gc(t)u(t)+wc(t) (8)
где Fc и Gc указывают системные матрицы для непрерывной системы, а wc - вектор шума процесса с непрерывным временем с ковариационной матрицей Qc. Непрерывная модель может быть дискретизирована, например, используя приближение 1-го порядка, как в
xk=xk-1+Δtẋk (9)
где ∆t - время выборки или продолжительность одного дискретного временного шага, в результате чего получается t = k∆t. Также модель непрерывного времени дает
xk= xk-1+Δt[Fc(t)x(t)+Gc(t)u(t)+wc(t)] (10)
который может быть упрощен, чтобы получить следующую систему дискретного времени
xk= (I+ΔtFc(kΔt))xk-1+ ΔtGc(kΔt)uk+ Δtwc(kΔt) (11)
Обратите внимание, что следующие определения могут быть сделаны для соответствия общей системе дискретного времени, как указано в (1)
Fk−1=I+∆tFc(k∆t)
Gk−1=∆tGc(k∆t) (12)
wk−1=∆twc(k∆t)
Таким образом, ковариационные матрицы для шума процесса связаны по формуле
Qk−1=(∆t)2Qc(t) (13)
Выходные уравнения для непрерывного времени и дискретного времени эквивалентны, т. е. не имеет значения, если k или t используется для времени в уравнении, это то же самое соотношение.
Влияние предположений о шумовой ковариации. Выбор предполагаемых ковариационных матриц Q, R и P0 может оказать существенное влияние на эффективность оценки фильтра Калмана. Выбор P0 связан с предполагаемым начальным состоянием и влияет на начальную сходимость фильтра. Во многих ситуациях влияние P0 не является значительным, и на самом деле его часто произвольно инициализируют в единичную матрицу для простоты. Эффекты Q и R гораздо более значительны и влияют на общую производительность фильтра. Основной взгляд на Q и R состоит в том, что они являются весовыми коэффициентами между уравнениями прогнозирования (состояния) и уравнениями измерения (выхода). Это соотношение показано в уравнении усиления Калмана (5). Рассмотрение большего Q эквивалентно рассмотрению большей неопределенности в уравнениях состояния, что эквивалентно меньшему доверию результата этих уравнений, что фактически означает, что фильтр должен корректировать больше с обновлением измерений. Точно так же рассмотрение большего R эквивалентно рассмотрению большей неопределенности в измерении, что эквивалентно меньшему доверию к измерению, что фактически означает, что фильтр должен исправлять меньше с обновлением измерения.
Цель матрицы H состоит в том, чтобы по существу преобразовать состояния в выходные данные. Для линейного фильтра Калмана это происходит путем рассмотрения некоторой линейной комбинации состояний, т.е. H является линейным преобразованием. В некоторых простых случаях H просто используется для выбора определенных состояний, которые измеряются, а другие состояния - нет. Например, если первое, второе и пятое состояния 5-мерного вектора состояния являются измеримыми, матрица H будет определяться как
(14)
так что
yk=Hkxk (15)
Матрица H также может использоваться для учета эффектов масштабирования. Например, если радиус является состоянием, но диаметр может быть измерен, выходное уравнение может быть представлено как
yk=Hkxk (16)
yk=dk Hk=2 xk=rk
Другое использование H может заключаться в рассмотрении комбинаций состояний. Например, если длины трех сторон треугольника являются состояниями, но периметр может быть измерен, выходное уравнение может быть представлено как
yk=x1+x2+x3, Hk=[1 1 1], (17)
Расширенный фильтр Калмана. Расширенный фильтр Калмана (EKF) является лишь расширением фильтра Калмана для нелинейных систем. Это означает, что отличие EKF состоит в том, что состояние и / или выходные уравнения могут содержать нелинейные функции. Таким образом, вместо рассмотрения систем вида (1) и (2), EKF может рассмотреть более общую нелинейную систему уравнений:
xk=f(xk-1,uk-1)+wk-1 (18)
yk=h(xk)+vk (19)
где f - векторная нелинейная функция перехода состояния, а h - векторная нелинейная функция наблюдения или вывода. Для обработки нелинейных функций матрицы Якоби вычисляются для линеаризации уравнений на каждом временном шаге относительно предыдущего состояния, как в
(20)
(21)
Используя эти вычисленные матрицы Якоби, алгоритм EKF можно представить как
Обратите внимание, что уравнения EKF очень похожи на уравнения фильтра Калмана, но с некоторыми исключениями. Одно из отличий состоит в том, что значения F и H определяются из расчетов матрицы Якоби на каждом временном шаге. Другое отличие состоит в том, что нелинейные функции f и h используются непосредственно при прогнозировании состояний и выходных данных, а не используют линеаризованную версию, т.е. EKF использует f(xk-1,uk-1) вместо Fk-1x̂k|k-1+Gk-1yk-1 и h(x̂k|k-1) вместо Hkx̂k|k-1. Помимо этих различий, работа и использование EKF сравнимо с фильтром Калмана.
Расширенный фильтр Калмана - не единственная нелинейная методика фильтрации Калмана. Возможно, наиболее распространенная альтернатива EKF - это сигма-точечный фильтр Калмана (SPKF или UKF). Вместо того, чтобы использовать матрицы Якоби для обработки нелинейных систем, UKF использует метод статистической линеаризации, называемый unscented transformation. UKF демонстрирует некоторые преимущества в более точной линеаризации, особенно в сильно нелинейных задачах, однако в некоторых ситуациях он дает результаты, аналогичные EKF [4]. EKF имеет тенденцию быть более вычислительно эффективным, чем UKF, что делает его более желательным для приложений реального времени [5,6]. Кроме того, EKF немного легче понять концептуально. UKF, однако, может обеспечить превосходную линеаризацию в определенных ситуациях, а также может быть проще в реализации, поскольку нет необходимости вычислять матрицы Якоби.
Заключение. Эта статья предоставляет базовое представление о фильтрации Калмана, как инструменте, который может оценивать переменные широкого спектра процессов, а также дается определение основных понятий и терминов, связанных с методом фильтрации Калмана, приводится соответствие разных нотаций и обозначений применяемых в различных публикациях по данной теме. В данной статье описан алгоритм работы фильтра Калмана, различия версий фильтра для систем с непрерывным и дискретным временем, рассматривается расширенный фильтр Калмана и сигма-точечный фильтр Калмана.
Библиографическая ссылка
Белоус А.Н., Белов Ю.С. ПЕРСПЕКТИВЫ ПРИМЕНЕНИЯ ПРОГРАММНО-АППАРАТНОЙ ФИЛЬТРАЦИИ КАЛМАНА В СИСТЕМАХ ЗАХВАТА ДВИЖЕНИЯ // Международный студенческий научный вестник. – 2019. – № 2. ;URL: https://eduherald.ru/ru/article/view?id=19595 (дата обращения: 17.08.2024).