trackingIMM

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

Описание

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

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

Создание

Описание

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 является количеством фильтров. Фильтр IMM обновляется, вес каждого просачиваются шаг предсказания.

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

Включите сглаживание состояния в виде false или true. Когда задано как true, вы можете

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

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

Примечание

Возможность сглаживания только поддерживается когда trackingIMM объект сконфигурирован с Гауссовыми фильтрами.

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

Зависимости

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

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

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

Примеры

свернуть все

В этом примере показано, как создать и запустить фильтр взаимодействующей многоуровневой модели (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

Ссылки

[1] Панель шалом, Яаков, Питер К. Виллетт и Синь Тянь. Отслеживание и сплав данных. Сторрз, CT, США:: публикация YBS, 2011.

[2] Блэкмен, Сэмюэль и Роберт Пополи. "Проект и анализ современных систем слежения". Норвуд, MA: Дом Artech, 1999.

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

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

Введенный в R2018b
Для просмотра документации необходимо авторизоваться на сайте