Отслеживайте метрики установления, обслуживания и удаления
The trackAssignmentMetrics
Система object™ сравнивает дорожки из многообъектной системы отслеживания с известной истиной путем автоматического присвоения дорожек известным истинам при каждом обновлении дорожки. Метрика расстояния назначения определяет максимальное расстояние, для которого дорожка может быть назначена объекту truth. Метрика расстояния расхождения определяет, когда ранее назначенная дорожка может быть переназначена другому объекту истинности, когда расстояние превышает другой установленный порог.
Чтобы сгенерировать метрики назначения дорожек:
Создайте trackAssignmentMetrics
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
создает assignmentMetics
= trackAssignmentMetricstrackAssignmentMetrics
Системный объект, assignmentMetics
, со значениями свойств по умолчанию.
устанавливает свойства для assignmentMetics
= trackAssignmentMetrics(Name,Value
)trackAssignmentMetrics
объект с использованием одной или нескольких пар "имя-значение". Для примера, assignmentMetics = trackAssignmentMetrics('AssignmentThreshold',5)
создает trackAssignmentMetrics
объект с порогом назначения 5. Заключайте имена свойства в кавычки.
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
AssignmentThreshold
- Максимально допустимое расстояние назначения1
(по умолчанию) | неотрицательной скаляромМаксимально допустимое расстояние присвоения между вновь встречающейся или расходящейся дорожкой и объектом истинности, заданное как неотрицательная скаляра. Для расстояний, превышающих это значение, назначения между дорожкой и истиной не могут иметь место. Модули измерения находятся в нормированной ошибке расчета в квадрате (NEES).
Типы данных: single
| double
DivergenceThreshold
- Максимально допустимое расстояние расхождения2
(по умолчанию) | неотрицательной скаляромМаксимально допустимое расстояние расхождения между состоянием дорожки и состоянием назначенного объекта truth, заданное как неотрицательный скаляр. Для расстояний, превышающих это значение, треки имеют право на переназначение другому объекту истинности. Модули находятся в NEES.
Типы данных: single
| double
DistanceFunctionFormat
- Формат функции расстояния'built-in'
(по умолчанию) | 'custom'
Формат функции расстояния, заданный как 'built-in'
или 'custom'
.
'built-in'
- Включите MotionModel
, AssignmentDistance
, и DivergenceDistance
свойства. Эти свойства являются удобными интерфейсами, когда треки сообщаются любым встроенным многообъектным трекером (таким как trackerGNN
) и истины, сообщенные platformPoses
функция объекта trackingScenario
объект.
'custom'
- Включить пользовательские свойства: AssignmentDistanceFcn
, DivergenceDistanceFcn
, IsInsideCoverageAreaFcn
, TruthIdentifierFcn
, и TrackIdentifierFcns
. Можно использовать эти свойства для построения расстояний принятия или расхождения, зон покрытия и идентификаторов для произвольных массивов входа 'tracks' и 'truth'.
MotionModel
- Желаемая модель движения платформы'constvel'
(по умолчанию) | 'constacc'
| 'constturn'
| 'singer'
Желаемая модель движения платформы, заданная как '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'
поле входных параметров дорожек.
AssignmentDistance
- Тип расстояния назначения'posnees'
(по умолчанию) | 'velnees'
| 'posabserr'
| 'velabserr'
Тип расстояния назначения, заданный как 'posnees'
, 'velnees'
, 'posabserr'
, или 'velabserr'
. Тип определяет физическое количество, используемое для присвоения. Когда обнаруживается новая дорожка или дорожка становится дивергентной, дорожка сравнивается с истинной, используя эту величину. Назначение ищет ближайшую истину в пределах порога, заданного AssignmentThreshold
свойство.
'posnees'
- Ошибка NEES положения пути
'velnees'
- Ошибка NEES в скорости пути
'posabserr'
- Абсолютная ошибка положения пути
'velabserr'
- Абсолютная ошибка скорости пути
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'built-in'
.
DivergenceDistance
- Тип расстояния назначения'posnees'
(по умолчанию) | 'velnees'
| 'posabserr'
| 'velabserr'
Тип расстояния расхождения, заданный как 'posnees'
, 'velnees'
, 'posabserr'
, или 'velabserr'
. Тип определяет физическое количество, используемое для оценки расхождения. Когда дорожка ранее была присвоена истине, расстояние между ними сравнивается с этим количеством на последующих шагах обновления. Любой трек, чье расстояние расхождения до его назначения истинности превышает значение DivergenceThreshold
считается расходящимся и может быть переопределен на новую истину.
'posnees'
- Ошибка NEES положения пути
'velnees'
- Ошибка NEES в скорости пути
'posabserr'
- Абсолютная ошибка положения пути
'velabserr'
- Абсолютная ошибка скорости пути
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'built-in'
.
AssignmentDistanceFcn
- Функция расстояния назначенияФункция расстояния назначения, заданная как указатель на функцию. Эта функция определяет расстояние присвоения между истинами и треками. Всякий раз, когда новая дорожка обнаруживается или существующая дорожка становится дивергентной, дорожка должна сравниваться со всеми истинами на текущем шаге. Эта функция помогает найти ближайшую истину относительно дорожки в пределах порога, заданного AssignmentThreshold
свойство.
Функция должна иметь следующий синтаксис:
dist = assignmentdistance(onetrack,onetruth)
dist
, обычно выраженная в единицах NEES. onetrack
является элементом tracks
входной параметр массива. onetruth
является элементом truths
входной параметр массива.
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'custom'
.
Типы данных: function_handle
DivergenceDistanceFcn
- функция расстояния расхожденияФункция расстояния расхождения, заданная как указатель на функцию. Эта функция определяет расстояние расхождения между истинами и треками. Если расстояние расхождения от дорожки до ее назначения истинности превышает DivergenceThreshold
, трасса считается расходящейся и может быть переназначена на новую истину.
Функция должна иметь следующий синтаксис:
dist = divergencedistance(onetrack,onetruth)
dist
, обычно выраженная в единицах NEES. onetrack
является элементом tracks
входной параметр массива. onetruth
является элементом truths
входной параметр массива.
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'custom'
.
Типы данных: function_handle
IsInsideCoverageAreaFcn
- Определите время, когда объект истинности обнаруживаетсяФункция для определения времени обнаружения объекта truth, заданная как указатель на функцию. Эта функция определяет время, когда объект истинности находится внутри зоны покрытия датчиков и, следовательно, обнаруживается.
Функция должна иметь следующий синтаксис:
status = isinsidecoveragearea(truths)
status
. truths
- массив объектов истинности, которые, как ожидается, будут переданы на каждом шаге. status
является логическим массивом с таким же размером, как и truths
вход. Запись status
является true
когда соответствующий объект истинности задан как truths
находится в пределах зоны действия датчиков.
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'custom'
.
Типы данных: function_handle
TrackIdentifierFcn
- Функция идентификатора трекаОтследите функцию идентификатора для tracks
вход, заданный как указатель на функцию. Идентификаторы дорожки являются уникальными строками или числовыми значениями.
Функция должна иметь следующий синтаксис
trackids = trackidentifier(tracks)
trackids
. trackids
должен иметь тот же размер, что и tracks
входной параметр. Функция идентификации дорожки по умолчанию принимает Tracks
- массив struct или класса со TrackID
поле или свойство.
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'custom'
.
Типы данных: function_handle
TruthIdentifierFcn
- Функция идентификатора истинностиФункция идентификатора истинности для truths
вход, заданный как указатель на функцию. Идентификаторы истинности являются уникальными строками или числовыми значениями.
Функция должна иметь следующий синтаксис
truthids = truthidentifier(truths)
truthids
. truthids
должны иметь тот же размер, что и truths
входной параметр. Функция идентификации истинности по умолчанию принимает truths
- массив struct или класса со PlatformID
поле или свойство.
Чтобы включить это свойство, установите DistanceFunctionFormat
свойство к 'custom'
.
Типы данных: function_handle
InvalidTrackIdentifier
- Отслеживайте идентификатор для недопустимого назначенияNaN
(по умолчанию) | скалярную строку |Проследите идентификатор для недопустимого назначения, заданный как скаляр или строка. Это значение возвращается, когда назначение дорожки недопустимо. Значение должно быть того же класса, что и возвращенное указателем на функцию, заданным в TrackIdentifierFcn
.
Пример: -1
Типы данных: single
| double
| string
InvalidTruthIdentifier
- Идентификатор истинности для недопустимого назначенияNaN
(по умолчанию) | скалярную строку |Идентификатор истинности для недопустимого назначения, заданный как скаляр или строка. Это значение возвращается, когда назначение истинности недопустимо. Значение должно быть того же класса, что и возвращенное указателем на функцию, заданным в TruthIdentifierFcn
.
Пример: -1
Типы данных: single
| double
| string
Чтобы вычислить метрики, вызывайте метрики назначения дорожки с аргументами, как если бы это была функция (описанная здесь).
[
возвращает структуры, tracksummary
,truthsummary
] = assignmentMetics(tracks
,truths
)tracksummary
и truthsummary
, содержащие совокупные метрики по всем tracks
и truths
, полученный из предыдущего обновления объекта.
tracks
- Отслеживать информациюОтследите информацию, заданную как массив объектов или массив структур. Если на DistanceFunctionFormat
свойство задается как 'built-in'
, затем tracks
должен содержать State
, StateCovariance
, и TrackID
как имена свойства или имена полей. Выходы трека от встроенных трекеров, таких как trackerGNN
, совместимы с tracks
вход.
Типы данных: struct
truths
- Информация об истинностиИнформация истинности, заданная как структура или массив структур. При использовании trackingScenario
, истинная информация может быть получена из platformPoses
функция объекта.
Типы данных: struct
tracksummary
- Совокупные метрики назначения дорожекКумулятивные метрики по всем трекам, возвращенные как структура. Метрики вычисляются по всем трекам с момента последнего вызова reset
функция объекта. Структура имеет следующие поля:
Область | Описание |
TotalNumTracks | Общее количество обнаруженных уникальных идентификаторов дорожек |
NumFalseTracks | Количество треков, никогда не присвоенных какой-либо истине |
MaxSwapCount | Максимальное количество дорожечных свопов каждой дорожки. Обмен дорожками происходит каждый раз, когда дорожка назначается другой истине. |
TotalSwapCount | Общее количество свопов треков для каждого трека. Обмен дорожками происходит каждый раз, когда дорожка назначается другой истине. |
MaxDivergenceCount | Максимальное количество расхождений. Дорожка расходится, когда результат |
TotalDivergenceCount | Общее количество расхождений. Дорожка расходится, когда результат функции расстояния расхождения больше порога расхождения. |
MaxDivergenceLength | Максимальное количество обновлений, во время которых каждый трек находился в дивергентном состоянии |
TotalDivergenceLength | Общее количество обновлений, во время которых каждый трек находился в дивергентном состоянии |
MaxRedundancyCount | Максимальное количество дополнительных треков, назначенных той же истине |
TotalRedundancyCount | Общее количество дополнительных треков, присвоенных той же истине |
MaxRedundancyLength | Максимальное количество обновлений, во время которых каждый трек находился в избыточном состоянии |
TotalRedundancyLength | Общее количество обновлений, во время которых каждый трек находился в избыточном состоянии |
Типы данных: struct
truthsummary
- Совокупные метрики назначения истинностиКумулятивные метрики присвоения по всем истинам, возвращенные как структура. Метрики вычисляются по всем истинам с момента последнего вызова reset
функция объекта. Структура имеет следующие поля:
Область | Описание |
TotalNumTruths | Общее количество уникальных идентификаторов истинности |
NumMissingTruths | Количество истин, никогда не установленных ни в одном треке |
MaxEstablishmentLength | Максимальное количество обновлений до истины было связано с любой дорожкой в зоне покрытия. Длины недостающих истин не учитываются в этой суммарной метрике. |
TotalEstablishmentLength | Общее количество обновлений до истины было связано с любым треком в зоне покрытия. Длины недостающих истин не учитываются в этой суммарной метрике. |
MaxBreakCount | Максимальное количество раз каждая истина не ассоциировалась каким-либо путем после установления. |
TotalBreakCount | Общее количество раз каждая истина была не связана каким-либо путем после установления. |
MaxBreakLength | Максимальное количество обновлений, во время которых каждая истина находилась в сломанном состоянии |
TotalBreakLength | Общее количество обновлений, во время которых каждая истина находилась в разбитом состоянии |
Типы данных: struct
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
trackAssignmentMetrics
currentAssignment | Отображение треков с правдой |
trackMetricsTable | Сравнение треков с правдой |
truthMetricsTable | Сравните правду с треками |
Исследуйте назначения и ошибки для системы, отслеживающей две цели.
Во-первых, загрузите сохраненные данные дорожки.
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')
Показать текущие метрики ошибок для каждой отдельной записанной дорожки.
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
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.