exponenta event banner

trackingUKF

Незараженный фильтр Калмана для отслеживания объектов

Описание

trackingUKF объект - дискретный некачественный фильтр Калмана, используемый для отслеживания положений и скоростей целей и объектов.

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

Используйте фильтр Калмана без запаха, если применяется одно из следующих условий:

  • Текущее состояние является нелинейной функцией предыдущего состояния.

  • Измерения являются нелинейными функциями состояния.

Незаметный фильтр Калмана оценивает неопределенность состояния и его распространение через нелинейное состояние и уравнения измерения, используя фиксированное число сигма-точек. Точки Sigma выбираются с помощью непредусмотренного преобразования, как параметризовано Alpha, Beta, и Kappa свойства.

Создание

Описание

filter = trackingUKF создает некачественный объект фильтра Калмана для дискретно-временной системы, используя значения по умолчанию для StateTransitionFcn, MeasurementFcn, и State свойства. Предполагается, что шумы процесса и измерения являются аддитивными.

filter = trackingUKF(transitionfcn,measurementfcn,state) определяет функцию перехода состояния, transitionfcn, функция измерения, measurementfcnи начальное состояние системы, state.

пример

filter = trackingUKF(___,Name,Value) настраивает свойства объекта фильтра Калмана без запаха с помощью одного или нескольких Name,Value пары аргументов и любого из предыдущих синтаксисов. Все неопределенные свойства имеют значения по умолчанию.

Свойства

развернуть все

Состояние фильтра Калмана, указанное как вектор M-элемента с действительным значением, где M - размер состояния фильтра.

Пример: [200; 0.2]

Типы данных: double

Ковариация ошибок состояния, заданная как положительно-определенная вещественно-значная матрица M-by-M, где M - размер состояния фильтра. Ковариационная матрица представляет неопределенность в состоянии фильтра.

Пример: [20 0.1; 0.1 1]

Функция перехода состояния, заданная как дескриптор функции. Эта функция вычисляет вектор состояния на шаге времени k из вектора состояния на шаге времени k – 1. Функция может принимать дополнительные входные параметры, такие как управляющие входные данные или размер временного шага. Функция также может включать значения шума.

Допустимые синтаксисы для функции перехода состояния зависят от того, имеет ли фильтр аддитивный шум процесса. В таблице показаны допустимые синтаксисы на основе значения HasAdditiveProcessNoise собственность.

Допустимые синтаксисы (HasAdditiveProcessNoise = true)Допустимые синтаксисы (HasAdditiveProcessNoise = false)
x(k) = statetransitionfcn(x(k-1))
x(k) = statetransitionfcn(x(k-1),parameters)
  • x(k) - состояние в момент времени k.

  • parameters обозначает все дополнительные аргументы, требуемые функцией перехода состояния.

x(k) = statetransitionfcn(x(k-1),w(k-1))
x(k) = statetransitionfcn(x(k-1),w(k-1),dt)
x(k) = statetransitionfcn(__,parameters)
  • x(k) - состояние в момент времени k.

  • w(k) является значением для технологического шума в момент времени k.

  • dt - временной шаг trackingUKF фильтр, filter, указанный в последнем вызове predict функция. dt применяется при использовании фильтра в трекере и вызове predict функция с фильтром для прогнозирования состояния трекера на следующем шаге времени. Для случая неаддитивного шума процесса трекер предполагает, что вы явно указываете временной шаг, используя следующий синтаксис: predict(filter,dt).

  • parameters обозначает все дополнительные аргументы, требуемые функцией перехода состояния.

Пример: @constacc

Типы данных: function_handle

Ковариация шума процесса, заданная как скаляр или матрица.

  • Когда HasAdditiveProcessNoise является true, указать ковариацию шума процесса как положительный вещественный скаляр или положительно-определенную действительную матрицу M-by-M. M - размерность вектора состояния. При задании в качестве скаляра матрица кратна единичной матрице M-by-M.

  • Когда HasAdditiveProcessNoise является false, укажите ковариацию шума процесса как матрицу Q-by-Q. Q - размер вектора шума процесса.

    Необходимо указать ProcessNoise перед любым вызовом predict функция. В более поздних вызовах predict, можно дополнительно указать шум процесса как скаляр. В этом случае матрица шума процесса является кратной единичной матрице Q-на-Q.

Пример: [1.0 0.05; 0.05 2]

Опция моделирования технологического шума в качестве добавки, указанная как true или false. Когда это свойство true, к вектору состояния добавляется шум процесса. В противном случае шум включается в функцию перехода состояния.

Функция модели измерения, заданная как дескриптор функции. Эта функция может быть нелинейной функцией, моделирующей измерения из предсказанного состояния. На входе в функцию находится вектор состояния М-элемента. Выходной сигнал представляет собой вектор измерения N-элементов. Функция может принимать дополнительные входные аргументы, такие как положение датчика и ориентация.

  • Если HasAdditiveMeasurementNoise является true, укажите функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k))
    
    z(k) = measurementfcn(x(k),parameters)
    x(k) - состояние в момент времени k и z(k) - прогнозируемое измерение в момент времени k. parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

  • Если HasAdditiveMeasurementNoise является false, укажите функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k),v(k))
    
    z(k) = measurementfcn(x(k),v(k),parameters)
    x(k) - состояние в момент времени k и v(k) - шум измерения в момент времени k. parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

Пример: @cameas

Типы данных: function_handle

Ковариация шума измерения, заданная как положительная скалярная или положительно-определенная вещественно-значимая матрица.

  • Когда HasAdditiveMeasurementNoise является true, укажите ковариацию шума измерения как скаляр или матрицу N-на-N. N - размер вектора измерения. При задании в качестве скаляра матрица кратна единичной матрице N-на-N.

  • Когда HasAdditiveMeasurementNoise является false, укажите ковариацию шума измерения в виде матрицы R-by-R. R - размер вектора шума измерения.

    Необходимо указать MeasurementNoise перед любым вызовом correct функция. После первого звонка на correct, можно дополнительно указать шум измерения как скаляр. В этом случае матрица измеренного шума кратна матрице R-на-R-тождественности.

Пример: 0.2

Опция включения шума измерения присадки, указанная как true или false. Когда это свойство true, к измерению добавляется шум. В противном случае шум включается в функцию измерения.

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

Распределение сигма-точек, указанное как неотрицательный скаляр. Этот параметр включает в себя знание распределения шума состояний для генерации сигма-точек. Для гауссовых распределений, настройка Beta Значение 2 является оптимальным.

Вторичный коэффициент масштабирования для генерации сигма-точек, заданный как скаляр от 0 до 3. Этот параметр помогает задать генерацию сигма-точек.

Включить сглаживание состояния, указанное как false или true. Установка для этого свойства значения true требуется лицензия Sensor Fusion and Tracking Toolbox™. Если указано как true, вы можете:

  • Используйте smooth функция, предоставляемая в панели инструментов Sensor Fusion и Tracking Toolbox, для сглаживания оценок состояния на предыдущих шагах. Внутри фильтра сохраняются результаты предыдущих шагов для обеспечения возможности обратного сглаживания.

  • Укажите максимальное количество шагов сглаживания с помощью MaxNumSmoothingSteps свойства фильтра отслеживания.

Максимальное количество шагов обратного сглаживания, указанное как положительное целое число.

Зависимости

Чтобы включить это свойство, установите значение EnableSmoothing свойство для true.

Функции объекта

predictКовариация состояния и ошибки оценки состояния фильтра слежения
correctКорректная ковариация ошибок оценки состояния и состояния с помощью фильтра слежения
correctjpdaПравильная ковариация ошибок оценки состояния и состояния с использованием фильтра отслеживания и JPDA
distanceРасстояния между текущими и прогнозируемыми измерениями фильтра слежения
likelihoodВероятность измерения от фильтра слежения
cloneСоздать повторяющийся фильтр отслеживания
residualИзмерение остаточного и остаточного шума от фильтра слежения
smoothОценки плавного состояния фильтра слежения в обратном направлении
initializeИнициализация состояния и ковариации фильтра слежения

Примеры

свернуть все

Создать trackingUKF объект с использованием предопределенной модели движения с постоянной скоростью, constvelи связанную с этим модель измерения, cvmeas. Эти модели предполагают, что вектор состояния имеет вид [x; vx; y; vy] и что измерение положения осуществляется в декартовых координатах, [x; y; z]. Установите для свойства расширения сигма-точки значение 1e-2.

filter = trackingUKF(@constvel,@cvmeas,[0;0;0;0],'Alpha',1e-2);

Запустите фильтр. Используйте predict и correct для распространения состояния. Вы можете позвонить predict и correct в любом порядке и сколько угодно раз.

meas = [1;1;0]; 
[xpred, Ppred] = predict(filter);
[xcorr, Pcorr] = correct(filter,meas);
[xpred, Ppred] = predict(filter);
[xpred, Ppred] = predict(filter)
xpred = 4×1

    1.2500
    0.2500
    1.2500
    0.2500

Ppred = 4×4

   11.7500    4.7500   -0.0000    0.0000
    4.7500    3.7500    0.0000   -0.0000
   -0.0000    0.0000   11.7500    4.7500
    0.0000   -0.0000    4.7500    3.7500

Подробнее

развернуть все

Алгоритмы

Незаметный фильтр Калмана оценивает состояние процесса, управляемого нелинейным стохастическим уравнением

xk + 1 = f (xk, uk, wk, t)

где xk - состояние на шаге k. f () - функция перехода состояния, uk - элементы управления процессом. На движение могут влиять случайные шумовые возмущения, wk. Фильтр также поддерживает упрощенную форму ,

xk + 1 = f (xk, uk, t) + wk

Для использования упрощенной формы установите HasAdditiveProcessNoise кому true.

В незаметном фильтре Кальмана измерения также являются общими функциями государства,

zk = h (xk, vk, t)

где h (xk, vk, t) - функция измерения, которая определяет измерения как функции состояния. Типичными измерениями являются положение и скорость или некоторая их функция. Измерения также могут включать шум, представленный vk. Снова класс предлагает более простую формулировку

zk = h (xk, t) + vk

Для использования упрощенной формы установите HasAdditiveMeasurmentNoise кому true.

Эти уравнения представляют фактическое движение объекта и фактические измерения. Однако вклад шума на каждом этапе неизвестен и не может быть смоделирован точно. Известны только статистические свойства шума.

Ссылки

[1] Браун, Р.Г. и P.Y.C. Ван. Введение в анализ случайных сигналов и прикладную фильтрацию Калмана. 3-е издание. Нью-Йорк: John Wiley & Sons, 1997.

[2] Калман, Р. Э. «Новый подход к проблемам линейной фильтрации и прогнозирования». Транзакции ASME-журнала базового инжиниринга. том 82, серия D, март 1960, стр. 35-45.

[3] Ван, Эрик А. и Р. ван дер Мерве. «Незаметный фильтр Калмана для нелинейной оценки». Адаптивные системы обработки сигналов, связи и управления. AS-SPCC, IEEE, 2000, стр.153-158.

[4] Ван, Мерл. «Незараженный фильтр Калмана». В Калманских фильтрующих и нейронных сетях. Под редакцией Симона Хайкина. John Wiley & Sons, Inc., 2001.

[5] Саркка С. «Рекурсивный байесовский вывод о стохастических дифференциальных уравнениях». Докторская диссертация. Хельсинкский технологический университет, Финляндия. 2006.

[6] Блэкман, Сэмюэл. Слежение за несколькими целями с помощью радиолокационных приложений. Artech House, 1986.

Расширенные возможности

.
Представлен в R2018b