Я прочитал описание фильтра Калмана, но мне неясно, как он работает на практике. Похоже, что он в первую очередь нацелен на механические или электрические системы, поскольку ему нужны линейные переходы состояний и что он бесполезен для обнаружения аномалий или локализации переходов состояний по той же причине (он хочет линейные переходы состояний), это правильно? На практике, как найти компоненты, которые, как ожидается, будут известны заранее, для использования фильтра Калмана. Я перечислил компоненты, пожалуйста, исправьте меня, если мое понимание того, что нужно знать заранее, неверно.
Я считаю, что это не нужно знать "заранее"
- Процесс шума
- Наблюдательный шум
- Фактическое состояние (это то, что пытается оценить фильтр Калмана)
Я считаю, что это нужно знать заранее, чтобы использовать фильтр Калмана:
- Модель линейного перехода состояния, которую мы применяем к (нам нужно знать это заранее, поэтому наши состояния должны регулироваться известными законами, т.е. фильтр Калмана полезен для коррекции измерений, когда переход из одного состояния в другое хорошо понятен и детерминированный с небольшим шумом - это не средство поиска аномалий или инструмент для поиска случайных изменений состояния)
- Управляющий вектор
- Модель входного сигнала управления, которая применяется для управления вектором (нам нужно знать это заранее, поэтому, чтобы использовать фильтр Калмана, нам также необходимо заранее знать, как значения наших элементов управления влияют на модель, до не более чем некоторого гауссовского шума, и эффект должен быть линейным)
- Ковариантность технологического шума (который, как представляется, зависит от времени в статье в Википедии, т.е. зависит от времени k ) - кажется, нам нужно знать это заранее, и со временем, я предполагаю, что на практике он принимается постоянным ?
- A (линейная) модель наблюдения
- Ковариант (который также зависит от времени в статье в Википедии) - проблемы, аналогичные Q
PS И да, я знаю, что многие из них зависят от времени, я просто отбросил весь беспорядок. Не стесняйтесь представить маленькую букву справа и вниз от имени каждой переменной, если хотите.
источник
Ответы:
Для некоторого контекста давайте вернемся к уравнениям фильтра Калмана:
.x(k+1)=F(k)x(k)+G(k)u(k)+w(k)z(k)=H(k)x(k)+v(k)
Короче говоря, для простого ванильного KF:
должен быть полностью определен. Это прямо из дифференциальных уравнений системы. Если нет, у вас естьдвойная проблема оценки(т.е. оцените как состояние, так и модель системы). Если у вас нет дифференциальных уравнений системы, то KF не для вас!F(k)
по определению непостижимо. В конце концов, если бы вы знали это, это не было бы проблемой оценки!x(k)
Существует огромное количество «уловок», которые можно сделать, чтобы обойти ограничения в простой ванильной KF, но они выходят далеко за рамки этого вопроса.
Запоздалая мысль:
Несмотря на то, что поиск в «Kalman Filter» приводит к миллиону просмотров, есть пара вещей, на которые, я думаю, стоит обратить внимание. Страница Википедии слишком загромождена, чтобы учиться эффективно :(
На AVR Freaks есть вступление «без уравнения» к фильтру Калмана, которое я написал некоторое время назад, чтобы попытаться представить, где оно используется на самом деле.
Если вы не боитесь математики, есть несколько книг, которые стоит прочесть на уровне старших и младших курсов. Попробуйте либо Брауна, либо Хванга, который включает в себя всю теорию и множество примеров систем. Другой, который очень рекомендуется, но я не читал, это Гелб , у которого есть явное преимущество быть дешевым!
источник