Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 / Lab3

.pdf
Скачиваний:
0
Добавлен:
27.12.2025
Размер:
326.68 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

¾ЛЭТИ¿ ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра САПР

ЗАДАНИЕ по лабораторной работе №3

по дисциплине ¾Математические основы информатики¿ Тема: ¾Фильтр Калмана¿

Преподаватель:

Каримов А.И.

Санкт-Петербург 2025

Цель работы

Изучение теоретической и практической стороны применения фильтра Калмана на смоделированных данных.

Основные теоретические положения

Фильтр Калмана служит для фильтрации гауссова шума при известной математической модели процесса. Пусть динамика дискретной линейной системы определяется уравнениями в пространстве состояний:

xk+1 = Axk + Buk + wk;

yk = Cxk + vk;

где A матрица системы, xk вектор состояния, B матрица управления, uk вектор управления, wk шум процесса с нулевым математическим ожиданием и ковариационной матрицей Q, yk наблюдаемое состояние, C матрица выхода, vk шум наблюдения с нулевым математическим ожиданием и ковариационной матрицей R.

Задача состоит в том, чтобы по наблюдениям yk и модели системы найти x^k приближение к реальному значению состояния xk. Разумеется, идеально восстановить значение xk нельзя, но можно получить оптимальную оценку, которая будет наилучшей из всех возможных оценок при заданном уровне шума.

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

E(kx^k xkk2):

Фильтр Калмана алгоритм, который состоит из двух шагов: предиктора

x^k = Ax^k 1 + Buk Pk = APk 1A> + Q;

и корректора:

Kk = Pk C>(CPk C> + R) 1 x^k = x^k + Kk(yk Cx^k )

Pk = (1 KkC)Pk ;

где xk априорная оценка состояния в момент k, xk апостериорная оценка состояния в момент k, Pk априорная ковариационная матрица ошибок, Pk апостериорная ковариационная матрица ошибок, Kk матрица коэффициентов.

Если система нелинейная, т.е. вместо матриц A, B, C, система включает нелинейные функции f(xk; uk) и h(xk):

xk+1 = f(xk; uk) + wk; yk = h(xk) + vk;

то фильтр Калмана формулируется следующим образом. Предиктор:

x^k = f(^xk 1; uk)

Pk = FkPk 1Fk> + Q:

2

Корректор:

Kk = (Pk G>k )(GkPk G>k + R) 1 x^k = x^k + Kk(yk g(^xk ))

Pk = (I KkGk)Pk

Для использования фильтра Калмана нужно вычислять на каждом матрицы Якоби:

@f Fk =

@x x^k 1;uk

@g Gk = :

@x x^k

Обратите внимание, что при применении метода Эйлера или другого метода интегрирования для перехода к дискретной модели системы, берется матрица Якоби не функции правой части ОДУ, а матрица Якоби именно конечно-разностной схемы! Например, пусть некоторая система

x = F(x; u)

моделируется методом Эйлера с шагом h:

xk+1 = xk + hF(xk; uk);

(1)

и матрица Якоби функции F(xk; uk) равна

 

 

 

J

(x

k

; u ) =

@F

:

 

 

k

@x

xk;uk

 

Тогда матрца Якоби фильтра Калмана для этой системы будет вычисляться как

Fk = I + hJ (xk; uk);

что напрямую следует из уравнения конечно-разностной схемы (1).

Пример

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

8

< _ = !

:! = Lg sin !;

где угол отклонения маятника от вертикали, ! угловая скорость качания маятника, g ускорение свободного падения, L длина подвеса, коэффициент вязкого трения в среде. Решая представленные уравнения методом Эйлера, получим

8

< k+1 = k + h!k

g

:!k+1 = !k + h( L sin k !k);

где h шаг интегрирования. Предположим, на маятник действует сквозняк в виде случайного момента wk, представляющего собой случайную величину с гауссовым распределением со среднеквадратичным отклонением w, заставляя его отклоняться от невозмущенной траектории.

3

Обозначим xk = ( k; !k)>. Пусть матрица выхода единичная, т.е. yk = xk. Запишем итоговые дискретные уравнения маятника

8 !k+1 =

gh sin k + (1

 

h )!k!

+ 0

1 wk

>

k+1

k + h!k

 

0

0

 

L

 

 

 

 

>

 

 

 

 

 

 

<

>

>

:yk = Ixk + vk;

где I единичная матрица, случайный вектор vk состоит из двух нормально распределенных случайных величин с нулевым математическим ожиданием и среднеквадратичным отклонением v.

Для применения расширенного фильтра Калмана нам потребуется матрица Якоби маятника

 

hg cos k 1

h

h !

1

 

 

 

 

 

 

L

 

и матрица Якоби наблюдения G = I, а также ковариационные матрицы

Q = (GG>)

0

w2

=

0

w2

;

 

1

0

 

1

0

 

 

k k

 

0

v2

 

 

R = E[v v>] =

2

0

:

 

v

 

 

Описание предоставляемых материалов

В файле data1.txt находятся временные серии значений k и !k, записанные в два столбца, для первой и второй переменной, соответственно. Используются следующие численные зна-

чения параметров: h = 0:01, g = 9:8, L = 1, = 0:06, w = 0:05, v = 0:5. Начальные условия для фильтра Калмана следует взять как (0:1; 0:1)>. Начальные условия для моделирования

же брались как ( 2; 0)>.

В результате чтения файла и выполения программа должна нарисовать два изображения (рекомендуется использовать библиотеку matplotlib): временную диаграмму по переменной(см. Рис. 1) и фазовый портрет, т.е. изображение в координатных осях переменных состояния, и ! (см. Рис. 2).

Варианты

Лабораторная работа выполняется по вариантам.

1-й вариант выполняет фильтрацию сигнала маятника на основе данных data1.txt. 2-й вариант выполняет фильтрацию сигнала системы Лоренца

x = (y x)

y = x(r z) y

z = xy bz;

где x; y; z – переменные, ; r; b – параметры, их значения = 10; r = 28; b = 8=3. Все три переменные подвержены шуму процесса с w = 0:1, шум наблюдения v = 0:5, шаг моделирования методом Эйлера выбран равный h = 0:01, начальные условия моделирования x0 = (5; 5; 5)>, начальные условия фильтра Калмана взять x0 = (0:1; 0:1; 0:1)>. Временные ряды для фильтрации находятся в файле data2.txt.

3-й вариант выполняет фильтрацию сигнала системы Sprott Case I:

4

 

4

 

 

 

 

 

 

 

 

 

 

 

simulation

 

3

 

 

 

 

data

 

 

 

 

 

filtered data

 

 

 

 

 

 

 

2

 

 

 

 

 

 

1

 

 

 

 

 

3

0

 

 

 

 

 

 

!1

 

 

 

 

 

 

!2

 

 

 

 

 

 

!3

 

 

 

 

 

 

!4

 

 

 

 

 

 

0

2

4

6

8

10

 

 

 

 

t

 

 

 

 

Рис. 1: Временная диаграмма

 

 

x = 0:2y

y = x + z

z = x + y2 z;

где x; y; z – переменные. Все три переменные подвержены шуму процесса с w = 0:001, шум наблюдения v = 0:02, шаг моделирования методом Эйлера выбран равный h = 0:1, начальные условия моделирования x0 = (0:1; 0; 0)>, начальные условия фильтра Калмана взять x0 = (0:1; 0:1; 0:1)>. Временные ряды для фильтрации находятся в файле data3.txt.

Содержание работы

Программная часть лабораторной работы должна быть выполнена в виде одного файла main.py, разбитый на необходимые функции, реализующие фильтр Калмана и позволяющий сразу запускать программу из IDE. Рекомендуется использоватьсреду PyCharm. На сайт следует загрузить:

файл main.py

изображение F1.png, демонстрирующее временную область решения

изображение F2.png, демонстрирующее фазовую область решения (для вариантов 2 и 3 любую пару переменных состояния по усмотрению студента).

5

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

simulation

 

 

6

 

 

 

 

 

 

data

 

 

 

 

 

 

 

 

filtered data

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

!

0

 

 

 

 

 

 

 

 

 

!2

 

 

 

 

 

 

 

 

 

!4

 

 

 

 

 

 

 

 

 

!6

 

 

 

 

 

 

 

 

 

!8

 

 

 

 

 

 

 

 

 

!4

!3

!2

!1

0

1

2

3

4

 

 

 

 

 

3

 

 

 

 

 

 

 

Рис. 2: Фазовый портрет

 

 

 

6

Соседние файлы в папке 3