exponenta event banner

trackingArchitecture

Архитектура системы отслеживания

Описание

trackingArchitecture Система object™ позволяет систематически моделировать архитектуру системы слежения, состоящей из трекеров и гусениц.

Чтобы построить и запустить архитектуру отслеживания, выполните следующие действия.

  1. Создать trackingArchitecture и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

ta = trackingArchitecture создает trackingArchitecture Системный объект, позволяющий проектировать систему слежения, состоящую из датчиков, трекеров и гусениц.

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

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

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

  • Используйте show функция визуализации архитектуры.

Свойства

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

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Список трекеров, указанный как массив ячеек трекеров. Каждый элемент ячейки является одним из следующих объектов трекера:

Можно также использовать настраиваемый трекер, наследующий от fusion.trackingArchitecture.Tracker класс.

Список трековых фузеров, указанных как массив ячеек trackFuser объекты.

Можно также использовать настраиваемый путевой фузер, наследующий от fusion.trackingArchitecture.TrackFuser класс.

Использование

Описание

пример

[tracks1,...,tracksN] = ta(detections,sourceTracks,time) запускает trackingArchitecture объект, taи возвращает подтвержденные дорожки.

Входные аргументы

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

Список обнаружения, указанный как массив objectDetection объекты, массив ячеек objectDetection объекты или массив структур. Если указано как структуры, имена полей каждой структуры должны совпадать с именами свойств objectDetection объект. Архитектура направляет обнаружение на трекер, которому соответствует ArchitectureInputs значения в архитектуре содержат SensorIndex значение обнаружения.

Исходные дорожки, указанные как массив objectTrack объекты или массив структур. Если указано как структуры, имена полей каждой структуры должны совпадать с именами свойств objectTrack объект. Архитектура направляет исходную дорожку к фузеру, чья соответствующая FuserInputs значения в архитектуре содержат SourceIndex значение дорожки.

Используйте SourceConfigurations имущества trackFuser для указания источников ввода фузера.

Время обновления, указанное как скаляр. Архитектура обновляет все трекеры и фюзеры до этого времени. Единицы измерения в секундах.

time должно быть больше или равно наибольшему Time значение в массивах detections и sourceTracks входные данные. time должен увеличиваться с каждым обновлением архитектуры.

Выходные аргументы

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

Дорожки с выхода N-ой архитектуры, возвращаемые в виде массива objectTrack объекты в MATLAB ® и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack. tracksN генерируется из трекера или путевого фузера, соответствующий ArchitectureOutput значение в архитектуре равно N.

Типы данных: struct | object

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

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

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

addTrackerДобавление трекера в архитектуру отслеживания
addTrackFuserДобавление путевого фузера в архитектуру отслеживания
summaryОтображение табличной сводки архитектуры отслеживания
showПоказать архитектуру отслеживания на рисунке
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
isLockedОпределить, используется ли объект System
cloneСоздать повторяющийся объект System
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Создайте архитектуру отслеживания.

ta = trackingArchitecture;

Создать trackerGNN объект. Трекер получает входные данные обнаружения от датчиков 1 и 2. Добавьте трекер в архитектуру отслеживания.

tracker1 = trackerGNN('TrackerIndex',1);
addTracker(ta,tracker1,'SensorIndices',[1,2]);

Создать trackerPHD объект. Трекер получает входные данные обнаружения от датчиков 3 и 4. Добавьте трекер в архитектуру отслеживания и отключите его прямой вывод.

tracker2 = trackerPHD('TrackerIndex',2,'SensorConfigurations',...
    {trackingSensorConfiguration(3),trackingSensorConfiguration(4)});
addTracker(ta,tracker2,'ToOutput',false); % Disable ouput

Создать trackFuser объект. Путевой фузер принимает путевые входные данные от двух трекеров.

fuser = trackFuser('FuserIndex',3,'SourceConfigurations',...
    {fuserSourceConfiguration(1),fuserSourceConfiguration(2)});
addTrackFuser(ta,fuser);

Отображение сводки по архитектуре отслеживания.

sum = summary(ta)
sum=3×4 table
         System          ArchitectureInputs       FuserInputs        ArchitectureOutput
    _________________    __________________    __________________    __________________

    {'T1:trackerGNN'}        {'1  2'  }        {'Not applicable'}       {[       1]}   
    {'T2:trackerPHD'}        {'3  4'  }        {'Not applicable'}       {0x0 double}   
    {'F3:trackFuser'}        {0x0 char}        {'1  2'          }       {[       2]}   

Показать архитектуру отслеживания.

show(ta)

Figure contains an axes. The axes with title Tracking Architecture: ta contains 38 objects of type rectangle, text, line, patch.

Эта архитектура имеет два трекера:

  • Трекер 1: a trackerGNN который принимает сигналы обнаружения от датчиков 1 и 2.

  • Трекер 2: a trackerJPDA который принимает сигналы обнаружения от датчика 3.

Оба трекера передают дорожки trackFuser который также принимает дорожки непосредственно от датчика 4 слежения.

Создать trackingArchitecure объект. Добавьте два трекера с указанными индексами датчиков.

ta = trackingArchitecture; 
addTracker(ta,trackerGNN('TrackerIndex',1),'SensorIndices',[1 2]);
addTracker(ta,trackerJPDA('TrackerIndex',2),'SensorIndices',3);

Создать trackFuser. Укажите его источники с помощью SourceConfigurations собственность. Добавьте фузер в архитектуру отслеживания.

fuser = trackFuser('FuserIndex',3,'MaxNumSources',3, ...
     'SourceConfigurations',{fuserSourceConfiguration(1); ...
     fuserSourceConfiguration(2); fuserSourceConfiguration(4)});
addTrackFuser(ta,fuser);

Просмотрите сводку по архитектуре.

disp(summary(ta))
          System          ArchitectureInputs       FuserInputs        ArchitectureOutput
    __________________    __________________    __________________    __________________

    {'T1:trackerGNN' }         {'1  2'}         {'Not applicable'}            1         
    {'T2:trackerJPDA'}         {'3'   }         {'Not applicable'}            2         
    {'F3:trackFuser' }         {'4'   }         {'1  2'          }            3         

Отображение архитектуры на рисунке.

figure
show(ta)

Figure contains an axes. The axes with title Tracking Architecture: ta contains 42 objects of type rectangle, text, line, patch.

Создание экрана с помощью theaterPlot для визуализации дорожек, генерируемых trackingArchitecture позже.

figure
ax1 = subplot(3,1,1);
p1 = theaterPlot('Parent',ax1,'XLimits',[-100 150],'YLimits',[-5 15]);
view(2) 
title('GNN tracks')
t1 = trackPlotter(p1,'ConnectHistory','on','ColorizeHistory','on','DisplayName','Tracks');

ax2 =subplot(3,1,2);
p2 = theaterPlot('Parent',ax2,'XLimits',[-100 150],'YLimits',[-5 15]);
t2 = trackPlotter(p2,'ConnectHistory','on','ColorizeHistory','on','DisplayName','Tracks');
view(2)
title('JPDA tracks')

ax3 =subplot(3,1,3);
p3 = theaterPlot('Parent',ax3,'XLimits',[-100 150],'YLimits',[-5 15]);
t3 = trackPlotter(p3,'ConnectHistory','on','ColorizeHistory','on','DisplayName','Tracks');
view(2)
title('Fused tracks')

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

load('archInputs','detections','tracks');
positionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0;0 0 0 0 1 0];
for i = 1:numel(detections)
    [gnnTrks,jpdaTrks,fusedTrks] = ta(detections{i},tracks{i},i);
    plotTrack(t1, getTrackPositions(gnnTrks,positionSelector),string([gnnTrks.TrackID]));
    plotTrack(t2, getTrackPositions(jpdaTrks,positionSelector),string([jpdaTrks.TrackID]));
    plotTrack(t3, getTrackPositions(fusedTrks,positionSelector),string([fusedTrks.TrackID]));
end

Figure contains 3 axes. Axes 1 with title GNN tracks contains 5 objects of type line, text. These objects represent Tracks, (history). Axes 2 with title JPDA tracks contains 5 objects of type line, text. These objects represent Tracks, (history). Axes 3 with title Fused tracks contains 5 objects of type line, text. These objects represent Tracks, (history).

Представлен в R2021a