trackingCKF

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

Описание

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

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

Создание

Синтаксис

ckf = trackingCKF
ckf = trackingCKF(transitionFcn,measuremntFcn,state)
ckf = trackingCKF(___,Name,Value)

Описание

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

пример

ckf = trackingCKF(transitionFcn,measuremntFcn,state) задает StateTranstionFcn, 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 является true, задайте функцию с помощью одного из этих синтаксисов:

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

  • Если HasAdditiveProcessNoise является false, задайте функцию с помощью одного из этих синтаксисов:

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

Пример: @constacc

Зависимости

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

Типы данных: 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

Зависимости

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

Типы данных: 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

Зависимости

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

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

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

predictПредскажите ошибочную ковариацию оценки состояния и оценки состояния
correctПравильная ошибочная ковариация оценки состояния и оценки состояния
correctjpdaПравильная ошибочная ковариация оценки состояния и оценки состояния с помощью JPDA
distanceРасстояния между измерениями и предсказанными измерениями
residualНевязка измерения и остаточный шум
likelihoodВероятность измерения
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

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

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

Введенный в R2018b