Прочитал на Хабр статью [1], в которой автор простым языком даёт достаточно глубокое представление такого сложного и важного математического объекта как фильтр Калмана и захотел предложить читателям посмотреть на него (фильтр Калмана) несколько с другого ракурса. Сразу хочу предупредить, что перед чтением данной статьи хорошо бы прочесть статью [1], так как даже формулы были специально взяты ровно оттуда, дабы данная статья базировалась на материале упомянутой работы [1].
Представим, что у нас есть объект, работу которого необходимо отслеживать, но для этого нет прямой, а есть только косвенная информация. Например, мы имеем дело с погружным нефтяным насосом и необходима информация о его работе, в частности частота вращения двигателя данного насоса. В своём распоряжении мы имеем информацию лишь о напряжениях и токах его фаз и нам необходимо разработать виртуальный тахометр.
Общая идея такова: берём математическую модель двигателя и в режиме реального времени “запитываем” её показаниями датчиков напряжений фаз работающего двигателя насоса. Показания датчиков тока используем для того, чтобы в реальном времени втянуть виртуальную модель в такой режим, при котором виртуальные показания квазидатчиков тока математической модели станут равны показаниям реальных датчиков тока. То есть в этом случае мы получим виртуальную real time модель из которой можем взять любую информацию, которой она располагает, в частности частоту вращения электродвигателя.
А теперь, изложенную идею попробуем воплотить в виде математических абстракций.
Детально разберём модель (1):
- матрица дискретной модели наблюдаемого объекта, в данном случае это двигатель погружного насоса;
- случайный вектор пространства состояний фильтра Калмана с ковариационной матрицей
характеризующей разброс
вокруг его математического ожидания
в нашем случае
-это вектор, состоящий из координат, характеризующих электрические и механические процессы в моделируемом двигателе погружного насоса, в частности одна из его координат является интересующей нас скоростью вращения ротора электродвигателя;
- ковариационная матрица шума внешних возмущающих воздействий на вектор пространства состояний
математической модели электродвигателя, например неоднородность нефтяной фракции, закачиваемой погружным насосом, что стохастически воздействует на электромеханические процессы двигателя;
- вектор детерминированных внешних воздействий с согласующей этот вектор с моделью двигателя матрицей
в данном случае это реальные напряжения фаз двигателя погружного насоса.
Так же
- случайный вектор показаний квазидатчиков токов фаз математической модели двигателя насоса, где
- матрица согласования вектора пространства состояний
с вектором показаний квазидатчиков
- ковариационная матрица случайного вектора показаний квазидатчиков
характеризующая разброс этих показаний вокруг математического ожидания
- случайный вектор показаний реальных датчиков тока фаз двигателя с ковариационной матрицей
характеризующей шумовой разброс показаний
вокруг математического ожидания
Итак, мы имеем два случайных вектора
показаний виртуальных и реальных датчиков тока фаз электродвигателя и соответствующих им ковариационных матриц
соответственно. Положим, надо объединить показания виртуальных квазидатчиков с показаниями реальных датчиков при помощи произведения двух случайных величин, в данном случае это
и получить случайный вектор
Новая случайная векторная величина
будет иметь вероятностную характеристику, представляющую собой компромисс между реальным измерением и виртуальным прогнозом.
Случайный вектор
показаний квазидатчиков тока математической модели двигателя и его ковариационную матрицу
представим в виде :
Случайный вектор
показаний реальных датчиков тока математической модели двигателя и его ковариационную матрицу
представим в виде :
В результате произведения
получаем векторную случайную величину
и её ковариационную матрицу
которые можно выразить через
и их ковариационные матрицы следующим образом:
Причём
Исходя из (2),(3),(4),(5), получим:
Исходя из (2),(3),(4) коэффициент усиления Калмана
будет иметь вид
Мы можем убрать
из начала каждого члена в двух предыдущих уравнениях (6) (обратите внимание, что один скрывается в K ), а
убрать из конца всех членов второго уравнения системы (6).
Окончательно приходим к следующим выражениям:
К которым добавим систему (1):
— это новое наилучшее возможное значение, и мы можем дальше передавать его вместе с
на очередной этап вычислений, полагая
Ну и что? Скажете Вы, тот же фильтр Калмана, что и в [1]. Но давайте в первое уравнение системы (8) вместо
подставим первое уравнение системы (1), и получим
наблюдатель в каноническом виде, где
- это часть, которая отвечает за математическую модель наблюдаемого объекта, в нашем случае это электродвигатель,
- внешнее детерминированное воздействие, в нашем случае это напряжения фаз, измеренные реальными датчиками,
- измеряемые величины, в нашем случае это показания датчиков тока двигателя насоса.
- матричный коэффициент усиления наблюдателя, который устроен так, что благодаря ему
стремится к нулю, но так как
- это показания датчиков реальных, а
- показания квазидатчиков виртуальных, то это означает, что показания датчиков виртуальных станут равны показаниям датчиков реальных. То есть, математическая модель будет запитана тем же напряжением и будет выдавать те же токи, что и наблюдаемый объект, а это означает, что значения координат вектора
будут соответствовать реальным текущим значениям наблюдаемого объекта, а что касается нашего случая, то одна из координат
будет соответствовать реальному значению скорости вращения ротора электродвигателя погружного нефтяного насоса.
Тогда причём здесь фильтрация?
Задача наблюдения, сформулированная в стохастических терминах, именуется задачей фильтрации [2].
То есть фильтр Калмана – это оптимальный наблюдатель.
К. Браммер Г. Зиффлинг Фильтр Калмана – Бьюси. Детерминированное наблюдение и стохастическая фильтрация
