exponenta event banner

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) также указывает свойство TransiveProbabilities.

пример

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-на-L, где L - число фильтров:

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

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

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

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

Пример: 0.75

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

Ковариация шума измерения, заданная как положительная скалярная или положительно-определенная вещественно-значимая матрица. При задании в качестве скаляра матрица кратна единичной матрице N-на-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] Блэкман, Сэмюэл и Роберт Пополи. «Разработка и анализ современных систем слежения». Норвуд, Массачусетс: Artech House, 1999.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018b