Фильтр калмана, руководство полного идиота

Это интересно


 

Содержание

Фильтр Калмана, руководство полного идиота

Фильтру Калмана посвящено множество статей и книг, совсем недавно была опубликована статья на хабре. Однако, чтение подобных статей у меня всегда опасение: а не идиот ли я? К сожалению, разобраться в чем же собственно суть дела, за всеми этими многоэтажными индексами и закорючками довольно сложно. Да и нужно ли? Здесь я не буду в очередной раз расписывать алгоритм и его математические основы, об этом можно почитать в книжках, википедии или где угодно еще. Сегодня я постараюсь изложить практическую сторону вопроса.

Итак, что же такое фильтр Калмана. Предположим у вас есть некая величина X изменяющаяся во времени. У вас есть некий прибор, измеряющий величину X с некоторой погрешностью. Вы хотите оценить, чему на самом деле равна величина X. Например, в случае акций Xk может быть истинной ценой акции в момент времени k (она определяется доходами компании, курсом валют, ожиданиями инвесторов итп). У нас есть только один способ измерить эту величину — пойти на биржу и посмотреть котировки. Но котировки на бирже подвержены влиянию массы факторов, цены колеблются в широком диапазоне и измеренная величина Yk может отличаться от Xx. Алгоритм Калмана позволяет нам оценить истинное значение Xk на основе истории изменения измеряемой величины Yk. При этом, естественно, делается ряд предположений о связи между Y и X и характере изменения X.

Предположение номер 1

Т.е. величина X в момент времени k представляет собой линейную комбинацию величины X в прошлый момент времени, управляющего сигнала U и шума W. В реальных задачах часто управляющий сигнал U отсутствует.

Что такое управляющий сигнал? Вернемся к нашему примеру с акциями. Предположим, что ФРС США активно печатает деньги, например 600 млрд долларов, эти деньги льются широкой рекой на рынок и неизбежно двигают цены акций вверх. Это и есть управляющий сигнал.

Но вернемся к нашей формуле, нам потребуется сделать еще одно важное уточнение. Шум w должен иметь нормальное распределение с дисперсией dW. На практике, часто так оно и есть, здесь на руку нам играет центральная предельная теорема. ведь шум это, как правило, совокупность большого множества неизвестных факторов.

Предположение номер 2

Т.е. наша измеряемая величина Y это линейная комбинация реальной величины X и погрешности измерения V. При этом, делается дополнительное предположение что погрешность измерения тоже имеет нормальное распределение со своей дисперсией dV. Очень часто на практике H = 1.

Что мы только что сделали? Мы построили модель, описывающую нашу систему, при этом, заметьте, пока никакого фильтра Калмана не упоминалось.

Что мы хотим сделать?

Мы хотим получить некое уравнение

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

Дальше обычно идут многостраничные математические выкладки, включающие в себя взятие частных производных, экстраполяции, коррекции. Опустим всё это, интересующиеся легко найдут массу материала в гугле. В конце концов, получается выражение для оценки X:

Где Kk — это Калмановский коэффициент усиления. Именно эту величину, в процессе работы и определяет алгоритм фильтра Калмана. При этом фильтр Калмана находит оптимальную величину коэффициента усиления при заданных дисперсиях dW и dV. Чем лучше вы оцените эти дисперсии, тем лучше будет работать фильтр Калмана.

А теперь, представьте, что X и Y это не одномерные величины, а вектор. A, B и H — матрицы. Погрешность и шум V и W тоже векторы. Оказывается, что при этом, все уравнения будут работать точно так же, и алгоритм фильтра Калмана легко обобщается на многомерные величины.

А теперь, по традиции, пример на R

Фильтр Калмана можно найти в нескольких модулях R, для примера я буду использовать реализацию из модуля dlm. В данном примере мы применим фильтр Калмана к значениям индекса S что управляющего сигнала нет, это конечно, на самом деле, не так, но оценка управляющего сигнала это отдельная задача. Кроме того, отдельными задачами являются оценки параметров дисперсий dV и dW. Для нашего примера я просто подобрал некоторые значения эмпирическим путем. Если же подойти к этой задаче основательно, то их вполне можно оценить исходя из волатильности на рынке.

Итак, пример:

Для сравнения, на график, зеленым цветом, было добавлено 10-дневное экспоненциальное скользящее среднее Получилась картинка:


 

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

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

Допустим, состояние исследуемой системы описывается вектором \(\mathbf_k\). где \(k = 0, 1, 2,\ldots\) — дискретные моменты времени. Нам неизвестно состояние системы, но мы можем наблюдать (измерять) некоторые её параметры, описываемые вектором \(\mathbf_k\) .

Мы можем использовать некоторую модель исследуемой системы, которая позволяет вычислять новое состояние системы по её предыдущему состоянию. Предположим, наша модель следующая:

(1) \[\mathbf_k = \mathbf_k \mathbf_ + \mathbf_k \mathbf_ + \mathbf_k ,\]

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

Измерения производятся с некоторой ошибкой \(\mathbf_k\) :

(2) \[\mathbf_k = \mathbf_k \mathbf_k + \mathbf_k ,\]
где \(\mathbf
_k\) — матрица измерений, которая связывает истинный вектор состояния \(\mathbf_k\) и вектор проведённых измерений \(\mathbf
_k\). Будем считать, что процесс \(\mathbf_k\) имеет нулевое мат.ожидание и ковариационную матрицу \(\mathbf_k\) .

Например, \(x_k\) может представлять некоторое усреднённое трендовое движение цены финансового инструмента, а \(v_k\) — случайные флуктуации цены.

Фильтр Калмана пытается оценить состояние системы в текущий момент времени, основываясь на своей оценке в предыдущий момент времени, а также на новых результатах измерений. Обозначим априорную оценку (до получения результатов измерения \(\mathbf

_k\) ) состояния системы в \(k\) -й момент времени: \(\mathbf\hat_\). Апостериорную оценку (после получения результатов измерения \(\mathbf_k\) ) обозначим \(\mathbf\hat_\) .
Обозначим \(\mathbf_\) апостериорную ковариационную матрицу ошибок, которая задаёт оценку точности полученной оценки вектора состояния. Она включает в себя оценку дисперсий погрешности вычисленного состояния и ковариации, показывающие выявленные взаимосвязи между параметрами состояния системы.

На очередном ( \(k\) -м шаге) до прихода результатов измерения \(\mathbf

_k\). фильтр Калмана пытается по формуле, соответствующей заданной модели системы, оценить новое состояние (априорная оценка состояния системы):

(3) \[\mathbf\hat_ = \mathbf_k \mathbf\hat_ + \mathbf_k \mathbf_k\]

(т.е. априориная оценка в \(k\) -й момент времени вычисляется по апостериорной оценке в предыдущий, \(k-1\) -й момент времени) и новую ковариационную матрицу (априорная оценка ошибки):

(4) \[\mathbf_ = \textsf(\mathbf_k — \mathbf\hat_) = \mathbf_k \mathbf_\mathbf^T_ + \mathbf_k .\]

По априорной оценке состояния \(\mathbf\hat

_\) можно вычислить прогноз измерения

После того, как получено очередное измерение \(\mathbf

_k\). фильтр рассчитывает ошибку своего прогноза \(k\) -го измерения

где \(\mathbf\) — единичная матрица.

Можно доказать, что ковариационная матрица ошибки оценки измерения \(\mathbf_k\) равна

(9) \[\mathbf_k = \textsf(\mathbf_k) = \mathbf_k \mathbf_ \mathbf^T_k + \mathbf_k ,\]

а матрица коэффициентов фильтра, при которой достигается минимальная ошибка оценки состояния системы:

(10) \[\mathbf_k = \mathbf_ \mathbf^T_k \mathbf^-1_k .\]

Формула (8) верна, если матрица коэффициентов рассчитывается по (10). в общем случае она имеет более сложный вид.

Традиционно выделяют три возможные постановки задач, в которых используется фильтр Калмана:

  • фильтрация (filtering) — оценивание (estimation) истинного текущего значения случайного процесса на основе неточных измерений его прошлых значений (вплоть до текущего);
  • сглаживание (интерполяция, smoothing) — оценивание прошлых значений случайного процесса на основе неточных измерений его значений (прошлых и текущего);
  • прогнозирование (экстраполяция, предсказание, prediction) — оценивание будущего значения случайного процесса на основе неточных измерений его прошлых значений (вплоть до текущего).

Измерение константы с помощью скалярного фильтра Калмана


 

Рассмотрим простой пример. Требуется оценить значение постоянной величины (константы), проведя последовательность измерений. Т.к. константа всего одна, то модель состояния системы получается одномерная (скалярная):

(11) \[x_k = x_ + w_k ,\]

т.е. матрица перехода вырождается в скалярный коэффициент 1, а матрица управления — в скалярный коэффициент 0.

Модель измерения:

(12) \[y_k = x_k + v_k ,\]

т.е. матрица измерений вырождается в скалярный коэффициент 1.

Ковариационные матрицы \(\mathbf\). \(\mathbf\) и \(\mathbf\) в скалярном случае превращаются в дисперсии \(R\). \(Q\) и \(P\) .

На очередном ( \(k\) -м шаге) до прихода результатов измерения \(y_k\). скалярный фильтр Калмана пытается по формуле, соответствующей заданной модели системы, оценить новое состояние:

(13) \[\hat_ = \hat_\]

Использование фильтра калмана в задаче определения ориентации тела, подвешенного на струне руководство по лабораторной работе

министерство образования и науки российской федерации

Федеральное агентство по образованию

Государственное образовательное учреждение

Московский физико-технический институт

(государственный университет)

Кафедра теоретической механики

ИСПОЛЬЗОВАНИЕ ФИЛЬТРА КАЛМАНА В ЗАДАЧЕ ОПРЕДЕЛЕНИЯ ОРИЕНТАЦИИ ТЕЛА,

ПОДВЕШЕННОГО НА СТРУНЕ

Руководство по лабораторной работе

Составители: Д.С.Иванов, М.Ю.Овчинников, С.С.Ткачев

москва 2008

УДК 629.78, 531.38

Использование фильтра Калмана в задаче определения ориентации тела, подвешенного на струне. Руководство по лабораторной работе / Сост. Д.С. Иванов, М.Ю. Овчинников, С.С. Ткачев — М. МФТИ, 2008. — 29 с.

В рамках Инновационной Образовательной Программы «Наукоемкие технологии и экономика инноваций» создается учебный процесс, основными целями которого являются развитие у студентов системного подхода к решению задач исследования движения сложных информационно-механических систем и повышение эффективности учебного процесса при изучении различных разделов теоретической механики и прикладной математики. В Руководстве изложены элементы теории адаптивного расширенного фильтра Калмана. На примере тела, подвешенного на струне, демонстрируется применение фильтра Калмана в задаче определения ориентации по измерениям гироскопа. Приведены методики проведения измерений и обработки полученных данных.

УДК 531.38: 629.78

© Московский физико-технический институт

(государственный университет), 2008

Содержание

1. Фильтр Калмана 5

1.1 Линейная задача. Основные понятия 5

1.2 Коэффициент обратной связи 7


 

4.1 Работа программы 21

4.2 Интерфейс 22

4.3 Управление ПО 23

5. Порядок выполнения лабораторной работы 24

6. Контрольные вопросы 27

7. Приложение 28

8. Литература 30

Введение

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

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

на примере тела, подвешенного на струне, получить навыки работы с фильтром Калмана;

провести сравнительный анализ двух фильтров Калмана, основанных на разных моделях движения;

ознакомиться с принципом работы современных датчиков угловой скорости;

получить навыки работы в среде Matlab.

^ 1. Фильтр Калмана

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

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

Гончарова Елена Николаевна. Численное дифференцирование временных рядов с использованием фильтра Калмана-Бьюси. Дис. канд. физ.-мат. наук. 05.13.18. Ставрополь, 2004 124 c. РГБ ОД, 61:05-1/71

Выводы 29

2.1.1. Представление полиномиальных функций в виде решения системы

Преобразование системы линейных дифференциальных уравнений к уравнениям в пространстве состояний 32

Исследование метода адаптивной оценки сигналов

Исследование метода адаптивной оценки сигналов

УДК 621.37:621.391

А. И. ЧУПАЙЛО, Ю. П. ИВАНОВ

(Государственный Университет Аэрокосмического Приборостроения С.-Петербург).

ИССЛЕДОВАНИЕ МЕТОДА АДАПТИВНОЙ ОЦЕНКИ СИГНАЛОВ

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

Введение

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

Предлагаемый доклад посвящен адаптивному методу фильтрации сигналов, который основан на теореме ортогонального проецирования и на её следствиях.


 

Основная часть

Теория адаптивного фильтра

Теорема ортогонального проецирования звучит следующим образом: необходимым и достаточным условием наилучшего обобщенного среднеквадратического приближения случайного полезного сигнала X(t) оценкой , принадлежащей линейному пространству L, является выполнение равенства 1:

(1)

где Z(t). – произвольная и оптимальная оценки полезного сигнала X(t). принадлежащие линейному пространству.

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

Метод адаптивной фильтрации рассматривался при следующих условиях:

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

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

Модель измерения — линейная аддитивная:

(2)

где Z(t) – наблюдаемый сигнал, X(t) – полезный сигнал, H(t) – помеха;

Помеха не коррелированна с полезным сигналом;

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

Параметры полезного сигнала (дисперсия, корреляционная функция) и помехи (дисперсия) неизвестны. Порядок марковости полезного сигнала также не определен.

Математическая постановка задачи адаптивной фильтрации

Из следствия теоремы ортогонального проецирования известно, что оптимальный по критерию среднего квадрата ошибки оценки оператор А определяется по формуле 3:

(3)

где Kxz и Kzz – смешанная и взаимная матрицы корреляционных моментов полезного сигнала X и наблюдаемого сигнала Z.

Оценка полезного сигнала определяется по формуле 4:

(4)

Соответственно оценка полезного сигнала X сводится к оценке матриц корреляционных моментов Kxz и Kzz.

Для создания реккурентности вычисления оценки вектор Z(t) составлен следующим образом: первым элемент – наблюдаемый сигнал в момент времени t, второй элемент – оценка полезного сигнала в момент времени (t-1) (так как оценка полезного сигнала содержит в себе информацию об измерениях на всех шагах, а не только на предпоследнем шаге). Таким образом, в данном методе осуществляется не только фильтрация, но и оптимальная интерполяция полезного сигнала. В случае с марковским сигналом второго порядка помимо составляющих о полезном сигнале, вектор Z содержит в себе информацию о производных полезного сигнала, что позволяет произвести оценку скорости изменения полезного сигнала.

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

Каким образом это достигнуто, представлено в формуле 5. При определении матриц корреляционных моментов производится следующая замена:

(5)

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

Адаптивный метод позволяет рассчитать значение оптимальной дисперсии ошибки полезного сигнала по формуле 6:

(6)

где Koo – взаимная матрица корриляционных моментов оценок полезного сигнала.

В работе так же была рассчитано произвольное значение дисперсии ошибки оценки полезного сигнала по формуле 7:

(7)

Заключение

При анализе адаптивного метода оценки полезного сигнала были получены следующие графики дисперсий ошибки оценки полезного сигнала (графики представлены для случая марковского процесса первого порядка):

Рис.1 Дисперсии ошибок оценки полезного сигнала (1,2 – оптимальная и произвольная дисперсии ошибки оценки для адаптивного фильтра (в случае параметрической априорной неопределенности), 3 – оптимальная дисперсия ошибки оценки фильтра Калмана, 4 – 50-процентная зона дисперсии фильтра Калмана)

Рис.2 Дисперсии ошибок оценки полезного сигнала (1,2 – оптимальная и произвольная дисперсии ошибки оценки для адаптивного фильтра (в случае полной априорной определенности), 3 – оптимальная дисперсия ошибки оценки фильтра Калмана, 4 – 50-процентная зона дисперсии фильтра Калмана).

Также были определены эффективности оценки (отношение дисперсии помехи к дисперсии ошибки оценки) на конечный момент времени. Результаты представлены в таблице 1.

Т а б л и ц а 1

Эффективности оценки полезного сигнала на конечный момент времени

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *