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-by-Q единичная матрица.

Пример: [1.0 0.05 0; 0.05 1.0 2.0; 0 2.0 1.0]

Зависимости

Этот параметр зависит от HasAdditiveNoise свойство.

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

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

Шум измерения covariance:.

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

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

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

Пример: 0.2

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

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

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

Примеры

свернуть все

В этом примере показано, как создать и запустить 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] Arasaratnam, Инкаран и Саймон Хейкин. "Фильтры Калмана кубатуры". Транзакции IEEE на автоматическом управлении 54, № 6 (2009): 1254-1269.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2018b