trackingIMM

Взаимодействие нескольких моделей (IMM) фильтра для отслеживания объектов

Описание

The 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)

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

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

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

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

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

  • Когда задан как матрица, элемент (j,k) задает вероятность перехода от j-го фильтра к k-му фильтру. Все элементы должны лежать на интервале [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] Бар-Шалом, Яаков, Питер К. Виллетт и Синь Тянь. Отслеживание и слияние данных. Storrs, CT, USA:: YBS publishing, 2011.

[2] Блэкман, Сэмюэль и Роберт Пополи. «Проект и анализ современных систем слежения». Norwood, MA: Artech House, 1999.

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

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

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