exponenta event banner

trackingCKF

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

Описание

trackingCKF объект представляет кубатурный фильтр Калмана, предназначенный для отслеживания объектов, которые следуют нелинейной модели движения или измеряются нелинейной моделью измерения. Используйте фильтр, чтобы предсказать будущее местоположение объекта, уменьшить шум в измеряемом местоположении или помочь связать несколько обнаружений объектов с их дорожками.

Кубатурный фильтр Калмана оценивает неопределенность состояния и распространение этой неопределенности через нелинейное состояние и уравнения измерения. Существует фиксированное число кубатурных точек, выбранных на основе сферико-радиального преобразования, чтобы гарантировать точное приближение гауссова распределения до третьего момента. В результате, соответствующий фильтр является таким же, как незаметный фильтр Калмана, trackingUKF, с Alpha = 1, Beta = 0, и Kappa = 0.

Создание

Описание

ckf = trackingCKF возвращает кубатурный объект фильтра Калмана с функцией перехода состояния по умолчанию, функцией измерения, состоянием и аддитивной шумовой моделью.

пример

ckf = trackingCKF(transitionFcn,measuremntFcn,state) задает StateTransitionFcn, MeasurementFcn, и State непосредственно свойства.

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

Свойства

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

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

Пример: [200;0.2;150;0.1;0;0.25]

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

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

Пример: eye(6)

Функция перехода состояния, заданная как дескриптор функции. Эта функция вычисляет вектор состояния на шаге времени 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 - временной шаг trackingCKF фильтр, 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; 0.05 1.0 2.0; 0 2.0 1.0]

Зависимости

Этот параметр зависит от HasAdditiveNoise собственность.

Опция моделирования технологического шума в качестве добавки, указанная как 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, к измерению добавляется шум. В противном случае шум включается в функцию измерения.

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

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

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

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

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

Зависимости

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

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

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

Примеры

свернуть все

В этом примере показано, как создать и запустить trackingCKF фильтр. Позвоните в predict и correct функции для отслеживания объекта и коррекции оценки состояния на основе измерений.

Создайте фильтр. Укажите модель движения с постоянной скоростью, модель измерения и исходное состояние.

state = [0;0;0;0;0;0];
ckf = trackingCKF(@constvel,@cvmeas,state);

Звонить predict получить предсказанное состояние и ковариацию фильтра. Используйте 0,5-секундный шаг времени.

[xPred,pPred] = predict(ckf,0.5);

Звонить correct с заданным измерением.

meas = [1;1;0];
[xCorr,pCorr] = correct(ckf,meas);

Продолжайте прогнозировать состояние фильтра. При необходимости укажите требуемый временной шаг в секундах.

[xPred,pPred] = predict(ckf);         % Predict over 1 second
[xPred,pPred] = predict(ckf,2);       % Predict over 2 seconds

Ссылки

[1] Арасаратнам, Иенкаран и Симон Хайкин. «Кубатурные калмановые фильтры.» IEEE Операции по автоматическому управлению 54, № 6 (2009): 1254-1269.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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