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

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

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

В Simulink вы указываете, что они функционируют в Расширенных блоках Фильтра Калмана и Сигма-точечного фильтра Калмана. Вы также задаете, являются ли условия шума процесса и измерения в функциях дополнением или недополнением. В блоках программное обеспечение решает порядок, в котором сделаны прогноз и исправление оценок состояния.

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

Команда 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.

В блоке программное обеспечение решает порядок прогноза и исправление оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите страницы с описанием correct и predict. Предположение, что вы реализуете команду 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 объекта сигма-точечного фильтра Калмана.

В блоке программное обеспечение решает порядок прогноза и исправление оценок состояния. В командной строке вы решаете порядок. Для получения информации о порядке, в котором можно выполнить эти команды, смотрите страницы с описанием correct и predict. Предположение, что вы реализуете команду 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.

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

Функции

Блоки