Расширенный и алгоритмы сигма-точечного фильтра Калмана для онлайновой оценки состояния

Можно использовать расширенное дискретное время и алгоритмы сигма-точечного фильтра Калмана для онлайновой оценки состояния дискретного времени нелинейные системы. Если у вас есть система с серьезной нелинейностью, алгоритм сигма-точечного фильтра Калмана может дать лучшие результаты оценки. Можно выполнить оценку состояния в Simulink® и в командной строке. Чтобы выполнить оценку состояния, вы сначала создаете нелинейную функцию изменения состояния и функцию измерения для вашей системы.

В командной строке вы используете функции, чтобы создать extendedKalmanFilter или unscentedKalmanFilter объект для желаемого алгоритма, и задает, являются ли условия шума процесса и измерения в функциях дополнением или недополнением. После того, как вы создадите объект, вы используете predict и correct команды, чтобы оценить состояния с помощью данных реального времени. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict и correct страницы с описанием.

В Simulink вы указываете, что они функционируют в блоках Unscented Kalman Filter и Extended Kalman Filter. Вы также задаете, являются ли условия шума процесса и измерения в функциях дополнением или недополнением. В блоках программное обеспечение решает порядок, в котором сделаны предсказание и коррекция оценок состояния.

Расширенный алгоритм фильтра Калмана

extendedKalmanFilter команда и блок Extended Kalman Filter реализуют алгоритм Фильтра Калмана дискретного времени первого порядка. Примите, что уравнения изменения состояния и измерения в течение дискретного времени нелинейная система имеют условия шума неаддитивного процесса и измерения с нулевыми средними и ковариационными матрицами Q и R, соответственно:

x[k+1]=f(x[k],w[k],us[k])y[k]=h(x[k],v[k],um[k])w[k]~(0,Q[k])v[k]~(0,R[k])

Здесь f является нелинейной функцией изменения состояния, которая описывает эволюцию состояний x от одного временного шага до следующего. Нелинейная функция измерения h связывает x к измерениям y на временном шаге k. Эти функции могут также иметь дополнительные входные параметры, которые обозначаются us и um. Шумом процесса и измерения является w и v, соответственно. Вы обеспечиваете Q и R.

В блоке программное обеспечение решает порядок предсказания и коррекцию оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict и correct страницы с описанием. Предположение, что вы реализуете correct команда перед predict, программное обеспечение реализует алгоритм можно следующим образом:

  1. Инициализируйте объект фильтра начальными значениями состояния, x[0], и ошибочная ковариационная матрица оценки состояния, P.

    x^[0|1]=E(x[0])P[0|1]=E(x[0]x^[0|1])(x[0]x^[0|1])T

    Здесь x^ оценка состояния и x^[ka|kb] обозначает оценку состояния на временном шаге ka использование измерений на временных шагах 0,1,...,kb. Так x^[0|1] лучшее предположение значения состояния, прежде чем вы сделаете любые измерения. Вы задаете это значение, когда вы создаете фильтр.

  2. Для временных шагов k = 0,1,2,3..., выполняют следующее:

    1. Вычислите якобиан функции измерения и обновите ошибочную ковариацию оценки состояния и оценки состояния с помощью результатов измерений, y[k]. В командной строке, correct команда выполняет это обновление.

      C[k]=hx|x^[k|k1]S[k]=hv|x^[k|k1]

      Программное обеспечение вычисляет эти якобиевские матрицы численно, если вы не задаете аналитический якобиан.

      K[k]=P[k|k1]C[k]T(C[k]P[k|k1]C[k]T+S[k]R[k]S[k]T)1x^[k|k]=x^[k|k1]+K[k](y[k]h(x^[k|k1],0,um[k])P^[k|k]=P[k|k-1]K[k] C[k] P[k|k-1]

      Здесь K усиление Кальмана.

    2. Вычислите якобиан функции изменения состояния и предскажите ошибочную ковариацию оценки состояния и оценки состояния на следующем временном шаге. В программном обеспечении, predict команда выполняет это предсказание.

      A[k]=fx|x^[k|k]G[k]=fw|x^[k|k]

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

      P[k+1|k]=A[k]P[k|k]A[k]T+G[k]Q[k]G[k]Tx^[k+1|k]=f(x^[k|k],0,us[k])

      Эти значения используются correct команда в следующем временном шаге.

Блок Extended Kalman Filter поддерживает несколько функций измерения. Эти измерения могут иметь различные шаги расчета, пока их шаг расчета является целочисленным кратным шаг расчета изменения состояния. В этом случае отдельный шаг коррекции выполняется, соответствуя измерениям от каждой функции измерения.

Шаги алгоритма, описанные ранее, принимают, что у вас есть неаддитивные шумовые условия в функциях изменения состояния и измерения. Если у вас есть аддитивные шумовые условия в функциях, изменения в алгоритме:

  • Если шум процесса w дополнение, которое является уравнением изменения состояния, имеет форму x[k]=f(x[k1],us[k1])+w[k1], затем якобиевский матричный G[k] единичная матрица.

  • Если шум измерения v дополнение, которое является уравнением измерения, имеет форму y[k]=h(x[k],um[k])+v[k], затем якобиевский матричный S[k] единичная матрица.

Аддитивные шумовые условия в состоянии и функциях перехода уменьшают время вычислений.

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

Алгоритм сигма-точечного фильтра Калмана

Алгоритм сигма-точечного фильтра Калмана и блок Unscented Kalman Filter используют недушистое преобразование, чтобы получить распространение статистических свойств оценок состояния через нелинейные функции. Алгоритм сначала генерирует набор названных точек сигмы значений состояния. Эти точки сигмы получают среднее значение и ковариацию оценок состояния. Алгоритм использует каждую из точек сигмы как вход к функциям изменения состояния и измерения, чтобы получить новый набор преобразованных точек состояния. Среднее значение и ковариация преобразованных точек затем используются, чтобы получить оценки состояния и ошибочную ковариацию оценки состояния.

Примите, что уравнения изменения состояния и измерения для M - дискретное время состояния нелинейная система имеют условия шума аддитивного процесса и измерения с нулевым средним значением и ковариациями Q и R, соответственно:

x[k+1]=f(x[k],us[k])+w[k]y[k]=h(x[k],um[k])+v[k]w[k]~(0,Q[k])v[k]~(0,R[k])

Вы вводите начальные значения Q и R в ProcessNoise и MeasurementNoise свойства объекта сигма-точечного фильтра Калмана.

В блоке программное обеспечение решает порядок предсказания и коррекцию оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите predict и correct страницы с описанием. Предположение, что вы реализуете correct команда перед predict, программное обеспечение реализует алгоритм можно следующим образом:

  1. Инициализируйте объект фильтра начальными значениями состояния, x[0], и ошибочная ковариация оценки состояния, P.

    x^[0|1]=E(x[0])P[0|1]=E(x[0]x^[0|1])(x[0]x^[0|1])T

    Здесь x^ оценка состояния и x^[ka|kb] обозначает оценку состояния на временном шаге ka использование измерений на временных шагах 0,1,...,kb. Так x^[0|1] лучшее предположение значения состояния, прежде чем вы сделаете любые измерения. Вы задаете это значение, когда вы создаете фильтр.

  2. Для каждого временного шага k обновите ошибочную ковариацию оценки состояния и оценки состояния с помощью результатов измерений, y[k]. В программном обеспечении, correct команда выполняет это обновление.

    1. Выберите точки сигмы x^(i)[k|k1] на временном шаге k.

      x^(0)[k|k1]= x^[k|k1]x^(i)[k|k1]   =  x^[k|k1]+Δx(i)        i=1,...,2MΔx(i)     =  (cP[k|k1]) i   i=1,...,MΔx(M+i)= (cP[k|k1])i   i=1,...,M

      Где c=α2(M+κ) масштабный коэффициент на основе количества состояний M и параметры α и κ. Для получения дополнительной информации о параметрах, смотрите Эффект Альфы, Беты и Параметров Каппы. cP матричный квадратный корень из cP, таким образом что cP (cP)T=cP и (cP)i i th столбец cP.

    2. Используйте нелинейную функцию измерения, чтобы вычислить предсказанные измерения для каждой из точек сигмы.

      y^(i)[k|k1]=h(x^(i)[k|k1],umK        i=0,1,...,2M

    3. Объедините предсказанные измерения, чтобы получить предсказанное измерение во время k.

      y^[k]=i=02MWM(i)y^(i)[k|k1]WM(0)=1Mα2(M+κ)WMi=12α2(M+κ)       i=1,2,...,2M

    4. Оцените ковариацию предсказанного измерения. Добавьте R[k] составлять аддитивный шум измерения.

      Py=i=02MWc(i)(y^(i)[k|k1]y^[k])(y^(i)[k|k1]y^[k])T+R[k]Wc(0)=(2α2+β)Mα2(M+κ)Wci=1/(2α2(M+κ))       i=1,2,...,2M

      Для получения информации о параметре β смотрите Эффект Альфы, Беты и Параметров Каппы.

    5. Оцените перекрестную ковариацию между x^[k|k1] и y^[k].

      Pxy=12α2(m+κ)i=12M(x^(i)[k|k1]x^[k|k1])(y^(i)[k|k1]y^[k])T

      Суммирование начинает с i = 1 потому что x^(0)[k|k1]x^[k|k1]=0.

    6. Получите предполагаемую ошибочную ковариацию оценки состояния и оценки состояния на временном шаге k.

      K=PxyPy1x^[k|k]=x^[k|k1]+K(y[k]y^[k])P[k|k]=P[k|k1]KPyKkT

      Здесь K усиление Кальмана.

  3. Предскажите ошибочную ковариацию оценки состояния и оценки состояния на следующем временном шаге. В программном обеспечении, predict команда выполняет это предсказание.

    1. Выберите точки сигмы x^(i)[k|k] на временном шаге k.

      x^(0)[k|k] =  x^[k|k]x^(i)[k|k]     =  x^[k|k]+Δx(i)        i=1,...,2MΔx(i)     =  (cP[k|k]) i   i=1,...,MΔx(M+i)= (cP[k|k])i   i=1,...,M

    2. Используйте нелинейную функцию изменения состояния, чтобы вычислить предсказанные состояния для каждой из точек сигмы.

      x^(i)[k+1|k]=f(x^(i)[k|k],us

    3. Объедините предсказанные состояния, чтобы получить предсказанные состояния во время k+1. Эти значения используются correct команда в следующем временном шаге.

      x^[k+1|k]=i=02MWM(i)x^(i)[k+1|k]WM(0)=1Mα2(M+κ)WMi=12α2(M+κ)     i=1,2,...,2M

    4. Вычислите ковариацию предсказанного состояния. Добавьте Q[k] составлять шум аддитивного процесса. Эти значения используются correct команда в следующем временном шаге.

      P[k+1|k]=i=02MWc(i)(x^(i)[k+1|k]x^[k+1|k])(x^(i)[k+1|k]x^[k+1|k])T+Q[k]Wc(0)=(2α2+β)Mα2(M+κ)Wci=1/(2α2(M+κ))   i=1,2,...,2M

Блок Unscented Kalman Filter поддерживает несколько функций измерения. Эти измерения могут иметь различные шаги расчета, пока их шаг расчета является целочисленным кратным шаг расчета изменения состояния. В этом случае отдельный шаг коррекции выполняется, соответствуя измерениям от каждой функции измерения.

Предыдущий алгоритм реализован, приняв аддитивные шумовые условия в уравнениях изменения состояния и измерения. Если шумовые условия являются недополнением, основные изменения в алгоритме:

  • 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] Саймон, D. Оптимальная оценка состояния: Кальман, H бесконечность и нелинейные подходы. John Wiley and Sons Inc., 2006.

Смотрите также

Функции

Блоки