ROUGH DRAFT authorea.com/113478
Main Data History
Export
Show Index Toggle 0 comments
  •  Quick Edit
  • Kalman filter example for Kirillov A.N.

    Выполнил: Басимов Владислав Альбертович (гр.22508)

    Преподаватель: Кириллов Александр Николаевич

    Введение. Постановка задачи

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

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

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

    Фильтр Калмана. Пример

    Амплитуда исходного сигнала удовлетворяет закону ниже и представлена на рис.1.

    \begin{equation} a\cdot x(t)+t\cdot sin(t),\\ \\ \end{equation}

    где \(a\) - некоторая заданная константа.

    Поскольку предполагается, что моделирование эксперимента проводится в обычной комнате (не в профессиональной звукоизолирующей студии), то могут случайно попасть в измерения посторонние звуки-шумы, для обозначения которых введём случайную величину \(\xi_{k}\):

    \begin{equation} x_{k}=a\cdot x(k)+k\cdot sin(k)+\xi_{k}\\ \\ \end{equation}

    Микрофон при записи данных может накладывать свои помехи на входящий сигнал. Например, скачки напряжения, высокий износ микрофона, порождающий ненужные возмущения диафрагмы микрофона. По этой причине, на вход подается сигнал с помехами наблюдения \(\eta_{k}\):

    \begin{equation} {y_{k}=b\cdot x_{k}+\eta_{k}}\\ \\ \end{equation}

    где \(b=0.93\). Задача состоит в том, чтобы по некоторым не совсем верным показаниям сенсора \(z_{k}\) найти хорошее приближение для истинного вида амплитуды входящего сигнала \(x_{k}\), которое обозначим \(x_{k}^{opt}\).

    Уравнения для значения амплитуды и показания сенсора будут иметь следующий вид:

    \begin{equation} \left\{\begin{matrix}x_{k+1}=x_{k}+u{k}+\xi_{k}\\ y_{k}=x_{k}+\eta_{k}\end{matrix}\right.{}\\ \end{equation}

    где \(u_{k}\) - это известная величина, контролирующая эволюцию системы, известная по построенной физической модели, \(\xi_{k}\) - ошибка модели (случайная величина), \(\eta_{k}\) - ошибка сенсора (случайная величина)

    Нам известно:

    • cредние значения ошибок равны нулю: \(E\xi_{k}=E\eta_{k}=0\);

    • известны дисперсии случайных величин, которые не зависят от \(k\): \(\sigma_{\xi}^{2}\) и \(\sigma_{\eta}^{2}\)

    • все случайные ошибки независимы друг от друга.щз

    Для описания работы алгоритма возьмем \(k\)-й шаг шаг и предположим, что для него уже найдено \(x_{k}^{opt}\) - значение, отфильтрованное фильтром Калмана, и которое довольно хорошо приближает истинное значение амплитуды. Поскольку заранее известно управление \(u\) из вашеописанной системы уравнений, то можно предположить, что на следующем шаге система изменится согласно этому закону и значение с сенсора будут близки к \(x_{k}^{opt}+u_{k}\).

    Идея Калмана: необходимо получить наилучшее приближение к истинному значению амплитуды \(x_{k+1}\). Для этого нужно выбрать ”золотую середину” между показанием неточного сенсора и ожидаемым значением.(Khudaverdyan 2013)

    Для этого введем Коэффициент Калмана \(K\), который зависит от шага итерации. Показанию сенсора будет соответствовать вес \(K_{k+1}\), а предсказанному значению \(1-K_{k+1}\):

    \begin{equation} x_{k+1}^{opt}=K_{k+1}+y_{k+1}+(1-K_{k+1})\cdot(x_{k}^{opt}+u_{k}){}\\ \end{equation}

    Необходимо выбрать коэффициент Калмана \(K_{k+1}\) таким, чтобы получившееся оптимальное значение амплитуды \(x_{k+1}^{opt}\) было бы наиболее близко к истинному .

    В общем случае, для нахождения значения коэффициента Калмана необходимо минимизировать ошибку:

    \begin{equation} e_{k+1}=x_{k+1}-x_{k+1}^{opt}.\\ \\ \end{equation}

    Подставляя данное выражение в (2) получаем:

    \begin{equation} \\ e_{k+1}=(1-K_{k+1})(e_{k+1}+\xi_{k+1})-K_{k+1}\cdot\eta_{k