trackAssignmentMetrics

Отслеживайте метрики установления, обслуживания и удаления

Описание

The trackAssignmentMetrics Система object™ сравнивает дорожки из многообъектной системы отслеживания с известной истиной путем автоматического присвоения дорожек известным истинам при каждом обновлении дорожки. Метрика расстояния назначения определяет максимальное расстояние, для которого дорожка может быть назначена объекту truth. Метрика расстояния расхождения определяет, когда ранее назначенная дорожка может быть переназначена другому объекту истинности, когда расстояние превышает другой установленный порог.

Чтобы сгенерировать метрики назначения дорожек:

  1. Создайте trackAssignmentMetrics Объекту и установите его свойства.

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

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

Создание

Описание

assignmentMetics = trackAssignmentMetrics создает trackAssignmentMetrics Системный объект, assignmentMetics, со значениями свойств по умолчанию.

пример

assignmentMetics = trackAssignmentMetrics(Name,Value) устанавливает свойства для trackAssignmentMetrics объект с использованием одной или нескольких пар "имя-значение". Для примера, assignmentMetics = trackAssignmentMetrics('AssignmentThreshold',5) создает trackAssignmentMetrics объект с порогом назначения 5. Заключайте имена свойства в кавычки.

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Максимально допустимое расстояние присвоения между вновь встречающейся или расходящейся дорожкой и объектом истинности, заданное как неотрицательная скаляра. Для расстояний, превышающих это значение, назначения между дорожкой и истиной не могут иметь место. Модули измерения находятся в нормированной ошибке расчета в квадрате (NEES).

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

Максимально допустимое расстояние расхождения между состоянием дорожки и состоянием назначенного объекта truth, заданное как неотрицательный скаляр. Для расстояний, превышающих это значение, треки имеют право на переназначение другому объекту истинности. Модули находятся в NEES.

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

Формат функции расстояния, заданный как 'built-in' или 'custom'.

  • 'built-in' - Включите MotionModel, AssignmentDistance, и DivergenceDistance свойства. Эти свойства являются удобными интерфейсами, когда треки сообщаются любым встроенным многообъектным трекером (таким как trackerGNN) и истины, сообщенные platformPoses функция объекта trackingScenario объект.

  • 'custom' - Включить пользовательские свойства: AssignmentDistanceFcn, DivergenceDistanceFcn, IsInsideCoverageAreaFcn, TruthIdentifierFcn, и TrackIdentifierFcns. Можно использовать эти свойства для построения расстояний принятия или расхождения, зон покрытия и идентификаторов для произвольных массивов входа 'tracks' и 'truth'.

Желаемая модель движения платформы, заданная как 'constvel', 'constacc', 'constturn', или 'singer'. Это свойство выбирает модель движения, используемую tracks вход.

Модели движения ожидают 'State' поле tracks иметь вектор-столбец, содержащую следующие значения:

  • 'constvel' - Положение находится в элементах [1 3 5], а скорость - в элементах [2 4 6].

  • 'constacc' - Положение находится в элементах [1 4 7], скорость - в элементах [2 5 8], а ускорение - в элементах [3 6 9].

  • 'constturn' - Положение находится в элементах [1 3 6], скорость - в элементах [2 4 7], а скорость рыскания - в элементе 5.

  • 'singer' - Положение находится в элементах [1 4 7], скорость - в элементах [2 5 8], а ускорение - в элементах [3 6 9].

The 'StateCovariance' поле tracks вход должен иметь ковариации положения, скорости и скорости поворота в строках и столбцах, соответствующих позиции, скорости и скорости поворота 'State' поле входных параметров дорожек.

Тип расстояния назначения, заданный как 'posnees', 'velnees', 'posabserr', или 'velabserr'. Тип определяет физическое количество, используемое для присвоения. Когда обнаруживается новая дорожка или дорожка становится дивергентной, дорожка сравнивается с истинной, используя эту величину. Назначение ищет ближайшую истину в пределах порога, заданного AssignmentThreshold свойство.

  • 'posnees' - Ошибка NEES положения пути

  • 'velnees' - Ошибка NEES в скорости пути

  • 'posabserr' - Абсолютная ошибка положения пути

  • 'velabserr' - Абсолютная ошибка скорости пути

Зависимости

Чтобы включить это свойство, установите DistanceFunctionFormat свойство к 'built-in'.

Тип расстояния расхождения, заданный как 'posnees', 'velnees', 'posabserr', или 'velabserr'. Тип определяет физическое количество, используемое для оценки расхождения. Когда дорожка ранее была присвоена истине, расстояние между ними сравнивается с этим количеством на последующих шагах обновления. Любой трек, чье расстояние расхождения до его назначения истинности превышает значение DivergenceThreshold считается расходящимся и может быть переопределен на новую истину.

  • 'posnees' - Ошибка NEES положения пути

  • 'velnees' - Ошибка NEES в скорости пути

  • 'posabserr' - Абсолютная ошибка положения пути

  • 'velabserr' - Абсолютная ошибка скорости пути

Зависимости

Чтобы включить это свойство, установите DistanceFunctionFormat свойство к 'built-in'.

Функция расстояния назначения, заданная как указатель на функцию. Эта функция определяет расстояние присвоения между истинами и треками. Всякий раз, когда новая дорожка обнаруживается или существующая дорожка становится дивергентной, дорожка должна сравниваться со всеми истинами на текущем шаге. Эта функция помогает найти ближайшую истину относительно дорожки в пределах порога, заданного AssignmentThreshold свойство.

Функция должна иметь следующий синтаксис:

dist = assignmentdistance(onetrack,onetruth)
Функция должна вернуть неотрицательное расстояние назначения, dist, обычно выраженная в единицах NEES. onetrack является элементом tracks входной параметр массива. onetruth является элементом truths входной параметр массива.

Зависимости

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

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

Функция расстояния расхождения, заданная как указатель на функцию. Эта функция определяет расстояние расхождения между истинами и треками. Если расстояние расхождения от дорожки до ее назначения истинности превышает DivergenceThreshold, трасса считается расходящейся и может быть переназначена на новую истину.

Функция должна иметь следующий синтаксис:

dist = divergencedistance(onetrack,onetruth)
Функция должна вернуть неотрицательное расстояние расхождения, dist, обычно выраженная в единицах NEES. onetrack является элементом tracks входной параметр массива. onetruth является элементом truths входной параметр массива.

Зависимости

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

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

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

Функция должна иметь следующий синтаксис:

status = isinsidecoveragearea(truths)
и верните логический массив, status. truths - массив объектов истинности, которые, как ожидается, будут переданы на каждом шаге. status является логическим массивом с таким же размером, как и truths вход. Запись status является true когда соответствующий объект истинности задан как truths находится в пределах зоны действия датчиков.

Зависимости

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

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

Отследите функцию идентификатора для tracks вход, заданный как указатель на функцию. Идентификаторы дорожки являются уникальными строками или числовыми значениями.

Функция должна иметь следующий синтаксис

trackids = trackidentifier(tracks)
и верните числовой массив, trackids. trackids должен иметь тот же размер, что и tracks входной параметр. Функция идентификации дорожки по умолчанию принимает Tracks - массив struct или класса со TrackID поле или свойство.

Зависимости

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

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

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

Функция должна иметь следующий синтаксис

truthids = truthidentifier(truths)
и верните числовой массив, truthids. truthids должны иметь тот же размер, что и truths входной параметр. Функция идентификации истинности по умолчанию принимает truths - массив struct или класса со PlatformID поле или свойство.

Зависимости

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

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

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

Пример: -1

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

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

Пример: -1

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

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

Чтобы вычислить метрики, вызывайте метрики назначения дорожки с аргументами, как если бы это была функция (описанная здесь).

Описание

[tracksummary,truthsummary] = assignmentMetics(tracks,truths) возвращает структуры, tracksummary и truthsummary, содержащие совокупные метрики по всем tracks и truths, полученный из предыдущего обновления объекта.

Входные параметры

расширить все

Отследите информацию, заданную как массив объектов или массив структур. Если на DistanceFunctionFormat свойство задается как 'built-in', затем tracks должен содержать State, StateCovariance, и TrackID как имена свойства или имена полей. Выходы трека от встроенных трекеров, таких как trackerGNN, совместимы с tracks вход.

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

Информация истинности, заданная как структура или массив структур. При использовании trackingScenario, истинная информация может быть получена из platformPoses функция объекта.

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

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

расширить все

Кумулятивные метрики по всем трекам, возвращенные как структура. Метрики вычисляются по всем трекам с момента последнего вызова reset функция объекта. Структура имеет следующие поля:

ОбластьОписание
TotalNumTracks

Общее количество обнаруженных уникальных идентификаторов дорожек

NumFalseTracks

Количество треков, никогда не присвоенных какой-либо истине

MaxSwapCount

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

TotalSwapCount

Общее количество свопов треков для каждого трека. Обмен дорожками происходит каждый раз, когда дорожка назначается другой истине.

MaxDivergenceCount

Максимальное количество расхождений. Дорожка расходится, когда результат DivergenceDistanceFcn больше порога расхождения.

TotalDivergenceCount

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

MaxDivergenceLength

Максимальное количество обновлений, во время которых каждый трек находился в дивергентном состоянии

TotalDivergenceLength

Общее количество обновлений, во время которых каждый трек находился в дивергентном состоянии

MaxRedundancyCount

Максимальное количество дополнительных треков, назначенных той же истине

TotalRedundancyCount

Общее количество дополнительных треков, присвоенных той же истине

MaxRedundancyLength

Максимальное количество обновлений, во время которых каждый трек находился в избыточном состоянии

TotalRedundancyLength

Общее количество обновлений, во время которых каждый трек находился в избыточном состоянии

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

Кумулятивные метрики присвоения по всем истинам, возвращенные как структура. Метрики вычисляются по всем истинам с момента последнего вызова reset функция объекта. Структура имеет следующие поля:

ОбластьОписание
TotalNumTruths

Общее количество уникальных идентификаторов истинности

NumMissingTruths

Количество истин, никогда не установленных ни в одном треке

MaxEstablishmentLength

Максимальное количество обновлений до истины было связано с любой дорожкой в зоне покрытия. Длины недостающих истин не учитываются в этой суммарной метрике.

TotalEstablishmentLength

Общее количество обновлений до истины было связано с любым треком в зоне покрытия. Длины недостающих истин не учитываются в этой суммарной метрике.

MaxBreakCount

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

TotalBreakCount

Общее количество раз каждая истина была не связана каким-либо путем после установления.

MaxBreakLength

Максимальное количество обновлений, во время которых каждая истина находилась в сломанном состоянии

TotalBreakLength

Общее количество обновлений, во время которых каждая истина находилась в разбитом состоянии

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

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

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

release(obj)

расширить все

currentAssignmentОтображение треков с правдой
trackMetricsTableСравнение треков с правдой
truthMetricsTableСравните правду с треками
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта
isLockedОпределите, используется ли системный объект
cloneСоздайте повторяющийся системный объект

Примеры

свернуть все

Исследуйте назначения и ошибки для системы, отслеживающей две цели.

Во-первых, загрузите сохраненные данные дорожки.

load trackmetricex tracklog truthlog

Создайте объекты для анализа присвоения и метрики ошибок.

tam = trackAssignmentMetrics;
tem = trackErrorMetrics;

Создайте выходные переменные.

posRMSE = zeros(numel(tracklog),1);
velRMSE = zeros(numel(tracklog),1);
posANEES = zeros(numel(tracklog),1);
velANEES = zeros(numel(tracklog),1);

Цикл по всем трекам:

  • Извлеките треки и основную истину в i-м обновлении трекера.

  • Анализируйте и извлеките текущее назначение track-to-truth.

  • Анализируйте мгновенные метрики ошибок по всем трекам и истинам.

for i=1:numel(tracklog)
    tracks = tracklog{i};
    truths = truthlog{i};
    [trackAM,truthAM] = tam(tracks, truths);
    [trackIDs,truthIDs] = currentAssignment(tam);
    [posRMSE(i),velRMSE(i),posANEES(i),velANEES(i)] = ...
        tem(tracks,trackIDs,truths,truthIDs);
end

Отобразите таблицу метрики трека.

trackMetricsTable(tam)
ans=4×15 table
    TrackID    AssignedTruthID    Surviving    TotalLength    DeletionStatus    DeletionLength    DivergenceStatus    DivergenceCount    DivergenceLength    RedundancyStatus    RedundancyCount    RedundancyLength    FalseTrackStatus    FalseTrackLength    SwapCount
    _______    _______________    _________    ___________    ______________    ______________    ________________    _______________    ________________    ________________    _______________    ________________    ________________    ________________    _________

       1             NaN            false         1120            false               0                false                 3                   3                false                 0                   0                false                  0               0    
       2             NaN            false         1736            false               0                false                 8                  88                false                 0                   0                false                 28               3    
       6               3            true          1138            false               0                false                 4                 314                false                 1                  28                false                  0               2    
       8               2            true           662            false               0                false                 2                  29                false                 1                 169                false                 28               0    

Показать таблицу метрик истинности.

truthMetricsTable(tam)
ans=2×10 table
    TruthID    AssociatedTrackID    DeletionStatus    TotalLength    BreakStatus    BreakCount    BreakLength    InCoverageArea    EstablishmentStatus    EstablishmentLength
    _______    _________________    ______________    ___________    ___________    __________    ___________    ______________    ___________________    ___________________

       2               8                false            2678           false           4             168            true                 true                    56         
       3               6                false            2678           false           3             645            true                 true                    84         

Постройте график показателей ошибок RMSE и ANEES.

subplot(2,2,1)
plot(posRMSE)
title('Position Error')
xlabel('tracker update')
ylabel('RMSE (m)')

subplot(2,2,2)
plot(velRMSE)
title('Velocity Error')
xlabel('tracker update')
ylabel('RMSE (m/s)')

subplot(2,2,3)
plot(posANEES)
title('Position Error')
xlabel('tracker update')
ylabel('ANEES')

subplot(2,2,4)
plot(velANEES)
title('Velocity Error')
xlabel('tracker update')
ylabel('ANEES')

Figure contains 4 axes. Axes 1 with title Position Error contains an object of type line. Axes 2 with title Velocity Error contains an object of type line. Axes 3 with title Position Error contains an object of type line. Axes 4 with title Velocity Error contains an object of type line.

Показать текущие метрики ошибок для каждой отдельной записанной дорожки.

currentTrackMetrics(tem)
ans=2×5 table
    TrackID    posRMS    velRMS    posANEES    velANEES
    _______    ______    ______    ________    ________

       6       44.712    20.988    0.05974     0.31325 
       8       129.26    12.739     1.6745      0.2453 

Показать текущие метрики ошибок для каждого отдельного записанного объекта истинности.

currentTruthMetrics(tem)
ans=2×5 table
    TruthID    posRMS    velRMS    posANEES    velANEES
    _______    ______    ______    ________    ________

       2       129.26    12.739     1.6745      0.2453 
       3       44.712    20.988    0.05974     0.31325 

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

cumulativeTrackMetrics(tem)
ans=4×5 table
    TrackID    posRMS    velRMS    posANEES    velANEES
    _______    ______    ______    ________    ________

       1       117.69    43.951    0.58338     0.44127 
       2        129.7      42.8    0.81094     0.42509 
       6       371.35    87.083     4.5208      1.6952 
       8       130.45    53.914     1.0448     0.44813 

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

cumulativeTruthMetrics(tem)
ans=2×5 table
    TruthID    posRMS    velRMS    posANEES    velANEES
    _______    ______    ______    ________    ________

       2       258.21    65.078     2.2514     0.93359 
       3       134.41    48.253    0.96314     0.49183 

Введенный в R2018b