trackingIMM

Фильтр взаимодействующей многоуровневой модели (IMM) для объектного отслеживания

Описание

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

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

Создание

Синтаксис

imm = trackingIMM
imm = trackingIMM(trackingFilters)
imm = trackingIMM(trackingFilters,modelConversionFcn)
imm = trackingIMM(trackingFilters,modelConversionFcn,transitionProbabilities)
imm = trackingIMM(___,Name,Value)

Описание

imm = trackingIMM возвращает объект фильтра IMM со значением по умолчанию, отслеживающим фильтры {trackingEKF,trackingEKF,trackingEKF} с набором моделей движения как постоянная скорость, постоянное ускорение и постоянный поворот, соответственно. Фильтр использует функцию преобразования по умолчанию, @switchimm.

imm = trackingIMM(trackingFilters) задает свойство TrackingFilters и устанавливает все другие свойства на значения по умолчанию.

imm = trackingIMM(trackingFilters,modelConversionFcn) также задает свойство ModelConversionFcn.

imm = trackingIMM(trackingFilters,modelConversionFcn,transitionProbabilities) также задает свойство TransitionProbabilities.

пример

imm = trackingIMM(___,Name,Value) задает свойства фильтра с помощью одного или нескольких аргументов пары Name,Value. Любые незаданные свойства берут значения по умолчанию. Задайте любые другие входные параметры от предыдущих синтаксисов сначала.

Свойства

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

Состояние фильтра, заданное как M с действительным знаком - вектор элемента. Задайте начальное состояние при создании объекта с помощью пар "имя-значение".

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

Ошибочная ковариация состояния, заданная как M-by-M матрица, где M является размером состояния фильтра. Скалярный вход расширен к M-by-M матрица. Ковариационная матрица представляет неуверенность в состоянии фильтра. Задайте ковариацию начального состояния при создании объекта с помощью пар "имя-значение".

Пример: eye(6)

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

Список фильтров, заданных как массив ячеек отслеживания фильтров. По умолчанию фильтры имеют равную вероятность. Задайте ModelProbabilities, если фильтры имеют различные вероятности.

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

Функция, чтобы преобразовать ковариацию состояния или состояния, заданную как указатель на функцию. Функция преобразовывает ковариацию состояния или состояния от одного типа модели до другого. Функциональная подпись:

function x2 = modelConversionFcn(modelType1,x1,modelType2)

modelType1 и входные параметры modelType2 являются именами этих двух имен модели. x1 задает State или StateCovariance первой модели. x2 выводит State или StateCovariance

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

Вероятность переходов модели фильтра, заданных как положительный действительный скаляр, L - вектор элемента или L-by-L матрица, где L является количеством фильтров:

  • Когда задано как скаляр, вероятность универсальна для пребывания на каждом фильтре. Остающаяся вероятность (1-p) распределяется равномерно на других моделях движения.

  • Когда задано как вектор, каждый элемент задает вероятность пребывания на каждом фильтре. Остающаяся вероятность (1-p) распределяется равномерно на других моделях движения.

  • Когда задано как матрица, элемент (j,k) задает вероятность перехода от j th фильтр к k th фильтр. Все элементы должны лечь на интервал [0,1], и каждая строка и столбец должна суммировать к 1.

Пример: 0.75

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

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

Задайте MeasurementNoise перед любым вызовом метода correct.

Пример: 0.2

Вес каждого фильтра, заданного как вектор вероятностей от 0 до 1. По умолчанию вес каждого компонента фильтра равен. L является количеством фильтров.

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

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

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

Примеры

свернуть все

Этот пример показывает, как создать и запустить фильтр взаимодействующей многоуровневой модели (IMM) с помощью объекта trackingIMM. Вызовите predict и функции correct, чтобы отследить объект и исправить оценку состояния на основе измерений.

Создайте фильтр. Используйте пары "имя-значение", чтобы задать дополнительные свойства объекта.

detection = objectDetection(0, [1;1;0], 'MeasurementNoise', [1 0.2 0; 0.2 2 0; 0 0 1]);
filter = {initctekf(detection);initcvekf(detection)};
modelConv = @switchimm;
transProb = [0.9,0.9];
imm = trackingIMM('State',[1;1;3;1;5;1;1],'StateCovariance',eye(7),...
     'TransitionProbabilities',transProb,'TrackingFilters',filter,...
     'ModelConversionFcn',modelConv);

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

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

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

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

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

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

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

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

Введенный в R2018b