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

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

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

В Simulink вы задаете эти функции в блоках Extended Kalman Filter и Unscented 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 функция использует эти значения в следующем временном шаге. Для лучшей числовой эффективности программное обеспечение использует квадратно-корневую факторизацию ковариационных матриц. Для получения дополнительной информации об этом факторизации см. [2].

Блок 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 блок используют неароматизированное преобразование, чтобы захватить распространение статистических свойств оценок состояния через нелинейные функции. Алгоритм сначала генерирует набор значений состояний, называемых sigma точек. Эти сигма- точки фиксируют среднее значение и ковариацию государственных оценок. Алгоритм использует каждую из точек сигмы как вход в функции перехода и измерения состояния, чтобы получить новый набор преобразованных точек состояния. Среднее значение и ковариация преобразованных точек затем используются, чтобы получить оценки состояния и ковариацию ошибки расчета состояния.

Предположим, что переходное и измерительное уравнения для нелинейной системы 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-й столбец cP.

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

      y^(i)[k|k1]=h(x^(i)[k|k1],um[k])        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[k]) 

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

Предыдущий алгоритм реализован, принимая условия аддитивного шума в уравнениях перехода и измерения. Для лучшей числовой эффективности программное обеспечение использует квадратно-корневую факторизацию ковариационных матриц. Для получения дополнительной информации об этом факторизации см. [2].

Если условия шума не аддитивны, основные изменения алгоритма:

  • correct команда генерирует 2*(M+V)+1 sigma точек использование P[k|k-1] и R[k], где V количество элементов в измерительном шуме v[k]. The R[k] термин больше не добавляется в шаг 2 (d) алгоритма, потому что дополнительные точки захватывают влияние шума измерения на Py.

  • predict команда генерирует 2*(M+W)+1 sigma точек использование P[k|k] и Q[k], где W количество элементов в технологическом шуме w[k]. The Q[k] термин больше не добавляется в шаг 3 (d) алгоритма, потому что дополнительная сигма точек захватывать влияние шума процесса на P[k+1|k].

Эффект параметров Альфа, Беты и Каппы

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

Разброс точек сигмы вокруг среднего значения состояния управляется двумя параметрами α и κ. Третий параметр, β, влияет на веса преобразованных точек во время ковариационных вычислений состояния и измерения.

  • α - Определяет разброс точек сигмы вокруг среднего значения состояния. Обычно это небольшое положительное значение. Разброс точек сигмы пропорционален α. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию.

  • κ - второй параметр масштабирования, который обычно устанавливается на 0. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию. Спред пропорционален квадратному корню κ.

  • β - Включает в себя предварительные знания о распределении состояния. Для Гауссовых распределений β = 2 оптимально.

Вы задаете эти параметры в Alpha, Kappa, и Beta свойства сигма-точечного фильтра Калмана. Если вы знаете распределение ковариации состояний и состояний, можно настроить эти параметры, чтобы захватить преобразование моментов более высокого порядка распределения. Алгоритм может отслеживать только один пик в распределение вероятностей состояния. Если в распределении состояний вашей системы есть несколько пиков, можно настроить эти параметры так, чтобы точки сигмы оставались около одного пика. Например, выберите небольшую Alpha чтобы сгенерировать сигму точек близкую к среднему значению состояния.

Ссылки

[1] Simon, Dan. Optimal State Estimation: Kalman, H Infinity и нелинейные подходы. Хобокен, Нью-Джерси: Джон Уайли и сыновья, 2006.

[2] Ван дер Мерве, Рудольф и Эрик А. Ван. «The Квадратного корня Сигма-точечного фильтра Калмана for State and Parameter-Estimation». 2001 Международная конференция IEEE по акустике, речи и обработке сигналов. Труды (кат. № 01CH37221), 6:3461–64. Солт-Лейк-Сити, ЮТ, США: IEEE, 2001. https://doi.org/10.1109/ICASSP.2001.940586.

См. также

Функции

Блоки

Внешние веб-сайты