Можно использовать расширенное дискретное время и алгоритмы сигма-точечного фильтра Калмана для онлайновой оценки состояния дискретного времени нелинейные системы. Если у вас есть система с серьезной нелинейностью, алгоритм сигма-точечного фильтра Калмана может дать лучшие результаты оценки. Можно выполнить оценку состояния в Simulink® и в командной строке. Чтобы выполнить оценку состояния, вы сначала создаете нелинейную функцию изменения состояния и функцию измерения для вашей системы.
В командной строке вы используете функции, чтобы создать extendedKalmanFilter
или unscentedKalmanFilter
объект для желаемого алгоритма, и задает, являются ли шумовые части процесса и измерения в функциях дополнением или недополнением. После того, как вы создадите объект, вы используете predict
и correct
команды, чтобы оценить состояния с помощью данных реального времени. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict
и correct
страницы с описанием.
В Simulink вы указываете, что они функционируют в блоках Unscented Kalman Filter и Extended Kalman Filter. Вы также задаете, являются ли шумовые части процесса и измерения в функциях дополнением или недополнением. В блоках программное обеспечение решает порядок, в котором сделаны предсказание и коррекция оценок состояния.
extendedKalmanFilter
команда и блок Extended Kalman Filter реализуют алгоритм Фильтра Калмана дискретного времени первого порядка. Примите, что уравнения изменения состояния и измерения в течение дискретного времени нелинейная система имеют шумовые части неаддитивного процесса и измерения с нулевыми средними и ковариационными матрицами Q и R, соответственно:
Здесь f является нелинейной функцией изменения состояния, которая описывает эволюцию состояний x
от одного временного шага до следующего. Нелинейная функция измерения h связывает x
к измерениям y
на временном шаге k
. Эти функции могут также иметь дополнительные входные параметры, которые обозначаются us
и um
. Шумом процесса и измерения является w
и v
, соответственно. Вы обеспечиваете Q и R.
В блоке программное обеспечение решает порядок предсказания и коррекцию оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict
и correct
страницы с описанием. Предположение, что вы реализуете correct
команда прежде predict
, программное обеспечение реализует алгоритм можно следующим образом:
Инициализируйте объект фильтра начальными значениями состояния, x[0]
, и ошибочная ковариационная матрица оценки состояния, P.
Здесь оценка состояния и обозначает оценку состояния на временном шаге ka
использование измерений на временных шагах 0,1,...,kb
. Так лучшее предположение значения состояния, прежде чем вы сделаете любые измерения. Вы задаете это значение, когда вы создаете фильтр.
Для временных шагов k = 0,1,2,3..., выполняют следующее:
Вычислите якобиан функции измерения и обновите ошибочную ковариацию оценки состояния и оценки состояния с помощью результатов измерений, y[k]
. В командной строке, correct
команда выполняет это обновление.
Программное обеспечение вычисляет эти якобиевские матрицы численно, если вы не задаете аналитический якобиан.
Здесь K
усиление Кальмана.
Вычислите якобиан функции изменения состояния и предскажите ошибочную ковариацию оценки состояния и оценки состояния на следующем временном шаге. В программном обеспечении, predict
команда выполняет это предсказание.
Программное обеспечение вычисляет эти якобиевские матрицы численно, если вы не задаете аналитический якобиан. Этот численный расчет может увеличить время вычислений и числовую погрешность оценки состояния.
correct
функционируйте использует эти значения в следующем временном шаге. Для лучшей числовой эффективности программное обеспечение использует факторизацию квадратного корня ковариационных матриц. Для получения дополнительной информации об этой факторизации см. [2].
Блок Extended Kalman Filter поддерживает несколько функций измерения. Эти измерения могут иметь различные шаги расчета, пока их шаг расчета является целочисленным кратным шаг расчета изменения состояния. В этом случае отдельный шаг коррекции выполняется, соответствуя измерениям от каждой функции измерения.
Шаги алгоритма, описанные ранее, принимают, что у вас есть неаддитивные шумовые части в функциях изменения состояния и измерения. Если у вас есть аддитивные шумовые части в функциях, изменения в алгоритме:
Если шум процесса w
дополнение, которое является уравнением изменения состояния, имеет форму , затем якобиевский матричный G[k]
единичная матрица.
Если шум измерения v
дополнение, которое является уравнением измерения, имеет форму , затем якобиевский матричный S[k]
единичная матрица.
Аддитивные шумовые части в состоянии и функциях перехода уменьшают время вычислений.
Первый порядок расширил линейные аппроксимации использования Фильтра Калмана к нелинейным функциям изменения состояния и измерения. В результате алгоритм не может быть надежным, если нелинейность в вашей системе серьезна. Алгоритм сигма-точечного фильтра Калмана может привести к лучшим результатам в этом случае.
Алгоритм сигма-точечного фильтра Калмана и блок Unscented Kalman Filter используют недушистое преобразование, чтобы получить распространение статистических свойств оценок состояния через нелинейные функции. Алгоритм сначала генерирует набор названных точек сигмы значений состояния. Эти точки сигмы получают среднее значение и ковариацию оценок состояния. Алгоритм использует каждую из точек сигмы как вход к функциям изменения состояния и измерения, чтобы получить новый набор преобразованных точек состояния. Среднее значение и ковариация преобразованных точек затем используются, чтобы получить оценки состояния и ошибочную ковариацию оценки состояния.
Примите, что уравнения изменения состояния и измерения для M - дискретное время состояния нелинейная система имеют шумовые части аддитивного процесса и измерения с нулевым средним значением и ковариациями Q и R, соответственно:
Вы вводите начальные значения Q и R в ProcessNoise
и MeasurementNoise
свойства объекта сигма-точечного фильтра Калмана.
В блоке программное обеспечение решает порядок предсказания и коррекцию оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict
и correct
страницы с описанием. Предположение, что вы реализуете correct
команда прежде predict
, программное обеспечение реализует алгоритм можно следующим образом:
Инициализируйте объект фильтра начальными значениями состояния, x[0]
, и ошибочная ковариация оценки состояния, P.
Здесь оценка состояния и обозначает оценку состояния на временном шаге ka
использование измерений на временных шагах 0,1,...,kb
. Так лучшее предположение значения состояния, прежде чем вы сделаете любые измерения. Вы задаете это значение, когда вы создаете фильтр.
Для каждого временного шага k обновите ошибочную ковариацию оценки состояния и оценки состояния с помощью результатов измерений, y[k]
. В программном обеспечении, correct
команда выполняет это обновление.
Выберите точки сигмы на временном шаге k.
Где масштабный коэффициент на основе количества состояний M и параметры α и κ. Для получения дополнительной информации о параметрах, смотрите Эффект Альфы, Беты и Параметров Каппы. матричный квадратный корень из cP, таким образом что и i th столбец .
Используйте нелинейную функцию измерения, чтобы вычислить предсказанные измерения для каждой из точек сигмы.
Объедините предсказанные измерения, чтобы получить предсказанное измерение во время k.
Оцените ковариацию предсказанного измерения. Добавьте R[k]
с учетом аддитивного шума измерения.
Для получения информации о параметре β смотрите Эффект Альфы, Беты и Параметров Каппы.
Оцените перекрестную ковариацию между и .
Суммирование начинает с i = 1 потому что .
Получите предполагаемую ошибочную ковариацию оценки состояния и оценки состояния на временном шаге k.
Здесь K
усиление Кальмана.
Предскажите ошибочную ковариацию оценки состояния и оценки состояния на следующем временном шаге. В программном обеспечении, predict
команда выполняет это предсказание.
Выберите точки сигмы на временном шаге k.
Используйте нелинейную функцию изменения состояния, чтобы вычислить предсказанные состояния для каждой из точек сигмы.
Объедините предсказанные состояния, чтобы получить предсказанные состояния во время k+1. Эти значения используются correct
команда в следующем временном шаге.
Вычислите ковариацию предсказанного состояния. Добавьте Q[k]
с учетом шума аддитивного процесса. Эти значения используются correct
команда в следующем временном шаге.
Блок Unscented Kalman Filter поддерживает несколько функций измерения. Эти измерения могут иметь различные шаги расчета, пока их шаг расчета является целочисленным кратным шаг расчета изменения состояния. В этом случае отдельный шаг коррекции выполняется, соответствуя измерениям от каждой функции измерения.
Предыдущий алгоритм реализован, приняв аддитивные шумовые части в уравнениях изменения состояния и измерения. Для лучшей числовой эффективности программное обеспечение использует факторизацию квадратного корня ковариационных матриц. Для получения дополнительной информации об этой факторизации см. [2].
Если шумовые части являются недополнением, основные изменения в алгоритме:
correct
команда генерирует 2*(M+V)+1
точки сигмы с помощью P[k|k-1]
и R[k]
, где V
число элементов в шуме измерения v[k]
. R[k]
термин больше не добавляется на шаге 2 (d) алгоритма, потому что дополнительные точки сигмы получают удар шума измерения на Py
.
predict
команда генерирует 2*(M+W)+1
точки сигмы с помощью P[k|k]
и Q[k]
, где W
число элементов в шуме процесса w[k]
. Q[k]
термин больше не добавляется на шаге 3 (d) алгоритма, потому что дополнительные точки сигмы получают удар шума процесса на P[k+1|k]
.
Чтобы вычислить состояние и его статистические свойства на следующем временном шаге, алгоритм сигма-точечного фильтра Калмана генерирует набор значений состояния, распределенных вокруг среднего значения состояния. Алгоритм использует каждую сигму точки в качестве входа к функциям изменения состояния и измерения, чтобы получить новый набор преобразованных точек состояния. Среднее значение и ковариация преобразованных точек затем используются, чтобы получить оценки состояния и ошибочную ковариацию оценки состояния.
Распространением точек сигмы вокруг среднего значения состояния управляют два параметра α и κ. Третий параметр, β, влияет на веса преобразованных точек во время состояния и вычислений ковариации измерения.
α — Определяет распространение точек сигмы вокруг среднего значения состояния. Это обычно - маленькое положительное значение. Распространение точек сигмы пропорционально α. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию.
κ — Второй масштабный коэффициент, который обычно устанавливается в 0. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию. Распространение пропорционально квадратному корню κ.
β — Включает предварительные знания распределения состояния. Для Распределений Гаусса β = 2 оптимален.
Вы задаете эти параметры в Alpha
\kappa
, и Beta
свойства сигма-точечного фильтра Калмана. Если вы знаете распределение ковариации состояния и состояния, можно настроить эти параметры, чтобы получить преобразование моментов высшего порядка распределения. Алгоритм может отследить только один пик в вероятностном распределении состояния. Если существует несколько peaks в распределенности вашей системы, можно настроить эти параметры так, чтобы точки сигмы остались вокруг одного пика. Например, выберите маленький Alpha
сгенерировать точки сигмы близко к среднему значению состояния.
[1] Саймон, Дэн. Оптимальная оценка состояния: Кальман, H бесконечность и нелинейные подходы. Хобокен, NJ: Джон Вайли и сыновья, 2006.
[2] Ван дер Мерв, Рудольф и Эрик А. Вань. “Сигма-точечный фильтр Калмана Квадратного корня для состояния и Оценки Параметра”. 2 001 Международная конференция IEEE по вопросам Акустики, Речи и Обработки сигналов. Продолжения (CAT. № 01CH37221), 6:3461–64. Солт-Лейк-Сити, UT, США: IEEE, 2001. https://doi.org/10.1109/ICASSP.2001.940586.