trackingCKF

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

Описание

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

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

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

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

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

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

Пример: @cameas

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

Измерение шума ковариации:.

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

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

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

  • Используйте smooth функция, предусмотренная в Sensor Fusion and 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++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b