Однотеплетный фузер
trackFuser Система object™ предохраняет дорожки, генерируемые датчиками слежения или трекерами, и проектирует децентрализованные системы слежения. trackFuser использует алгоритм глобального ближайшего соседа (GNN) для поддержания единственной гипотезы об объектах, которые он отслеживает. Входные дорожки называются исходными или локальными дорожками, а выходные дорожки называются центральными дорожками.
Для слияния дорожек с использованием этого объекта:
Создать trackFuser и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает track-to-track fuser, который использует алгоритм глобального ближайшего соседа (GNN) для поддержания единственной гипотезы об объектах, которые он отслеживает. fuser = trackFuser
задает свойства для fuser, используя одну или несколько пар имя-значение. Неопределенные свойства имеют значения по умолчанию. Заключите каждое имя свойства в отдельные кавычки.fuser = trackFuser(Name,Value)
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
FuserIndex - Уникальный индекс для путевого фузера1 (по умолчанию) | положительное целое числоУникальный индекс для фузера, заданный как положительное целое число. Это свойство используется для различения различных фузеров в среде с несколькими фузерами.
Пример:
2
MaxNumSources - Максимальное количество конфигураций источника20 (по умолчанию) | положительное целое числоМаксимальное количество исходных конфигураций, которые может поддерживать fuser, указанное как положительное целое число.
Пример:
200
SourceConfigurations - Конфигурации исходных системfuserSourceConfiguration объекты Конфигурации исходных систем, указанные как массив ячеек fuserSourceConfiguration объекты. Значением по умолчанию является 1-by-N массив ячеек fuserSourceConfiguration объекты, где N - значение MaxNumSources собственность. Это свойство можно указать во время создания как пару Имя (Name) - Значение (Value) или указать его после создания.
Типы данных: object
Assignment - Алгоритм назначения'MatchPairs' (по умолчанию) | 'Munkres' | 'Jonker-Volgenant' | 'Auction' | 'Custom'Алгоритм назначения, указанный как 'MatchPairs', 'Munkres', 'Jonker-Volgenant', 'Auction', или 'Custom'. Munkres является единственным алгоритмом назначения, который гарантирует оптимальное решение, но он также является самым медленным, особенно для большого количества обнаружений и дорожек. Другие алгоритмы не гарантируют оптимального решения, но могут быть быстрее для проблем с 20 или более дорожками и обнаружениями. Использовать'Custom' чтобы определить собственную функцию назначения и указать ее имя в CustomAssignmentFcn собственность.
Типы данных: char
CustomAssignmentFcn - Пользовательская функция назначенияПользовательская функция назначения, заданная как дескриптор функции. Функция назначения должна иметь следующий синтаксис:
[assignments,unassignedCentral,unassignedLocal] = f(cost,costNonAssignment)
assignmunkres.
Чтобы включить это свойство, установите значение Assignment свойство для 'Custom'.
Типы данных: function handle | string | char
AssignmentThreshold - Пороговое значение назначения «дорожка-дорожка»30*[1 Inf] (по умолчанию) | положительный скаляр | вектор 1 на 2 положительных значенийПорог назначения дорожек, заданный как положительный скаляр или вектор 1 на 2 [C1, C2], где C1 ≤ C2. Если указано как скаляр, указанное значение, val, расширяется до [val ,Inf].
Первоначально фузер выполняет грубую оценку для нормированного расстояния между всеми локальными и центральными дорожками. Фузер вычисляет только точное нормированное расстояние для локальной и центральной комбинаций, грубое нормированное расстояние которых меньше C2. Кроме того, фузер может назначать локальную дорожку центральной дорожке только в том случае, если их точное нормированное расстояние меньше C1. См. раздел distance функция, используемая с фильтрами слежения (trackingCKF и trackingEKF например) для пояснения расчета расстояния.
Совет:
Увеличьте значение C2, если существуют комбинации локальных и центральных путей, которые должны рассчитываться для присвоения, но не являются таковыми, уменьшите его, если расчет занимает слишком много времени.
Увеличьте значение C1, если есть локальные дорожки, которые должны быть назначены центральным трассам, но не. Уменьшите его, если есть локальные дорожки, которые назначены центральным трассам, которым они не должны быть назначены (слишком далеко).
StateTransitionFcn - Функция перехода к состоянию'constvel' (по умолчанию) | дескриптор функцииФункция перехода состояния, заданная как дескриптор функции. Эта функция вычисляет состояние на временном шаге k на основе состояния на временном шаге k-1.
Если HasAdditiveProcessNoise является true, функция должна использовать следующий синтаксис:
x(k) = f(x(k-1),dt)
x(k) - (Расчетное) состояние в момент времени k, задается как вектор или матрица. Если задано как матрица, то каждый столбец матрицы представляет один вектор состояния.
dt - Временной шаг для прогнозирования.
Если HasAdditiveProcessNoise является false, функция должна использовать следующий синтаксис:
x(k) = f(x(k-1),w(k-1),dt)
x(k) - (Расчетное) состояние в момент времени k, задается как вектор или матрица. Если задано как матрица, то каждый столбец матрицы представляет один вектор состояния.
w(k) - Технологический шум в момент времени k.
dt - Временной шаг для прогнозирования.
Пример: @constacc
Типы данных: function_handle | char | string
StateTransitionJacobianFcn - Якобян государственной переходной функции'' (по умолчанию) | дескриптор функцииЯкобиан функции перехода состояния, заданной как дескриптор функции. Если не указано, якобиан численно вычисляется, что может увеличить время обработки и числовую неточность. Если указано, функция должна поддерживать один из следующих двух синтаксисов:
Если HasAdditiveProcessNoise является true, функция должна использовать следующий синтаксис:
Jx(k) = statejacobianfcn(x(k),dt)
x(k) - (Расчетное) состояние в момент времени k, указанный как вектор M-by-1 вещественных значений.
dt - Временной шаг для прогнозирования.
Jx(k) - якобиан функции перехода состояния по отношению к государству, df/dx, оценивается в x(k). Якобиан возвращается в виде матрицы M-by-M.
Если HasAdditiveProcessNoise является false, функция должна использовать следующий синтаксис:
[Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k),dt)
x(k) - (Расчетное) состояние в момент времени k, указанный как вектор M-by-1 вещественных значений.
w(k) - Технологический шум в момент времени k, заданный как вектор W-by-1 вещественных значений.
dt - Временной шаг для прогнозирования.
Jx(k) - якобиан функции перехода состояния по отношению к государству, df/dx, оценивается в x(k). Якобиан возвращается в виде матрицы M-by-M.
Jw(k) - якобиан функции перехода состояния по отношению к шуму процесса, df/dw, оценивается в x(k) и w(k). Якобиан возвращается в виде матрицы M-by-W.
Пример: @constaccjac
Типы данных: function_handle | char | string
ProcessNoise - Ковариация технологического шумаeye(3) (по умолчанию) | положительный вещественный скаляр | положительная определенная матрицаКовариация шума процесса, заданная как положительный действительный скаляр или положительная определенная матрица.
Когда HasAdditiveProcessNoise является true, указать ковариацию шума процесса как положительный действительный скаляр или положительную определенную матрицу M-by-M. M - размерность вектора состояния. При задании в качестве скаляра матрица кратна единичной матрице M-by-M.
Когда HasAdditiveProcessNoise является falseукажите ковариацию шума процесса в виде матрицы W-by-W. W - размер вектора шума процесса.
Пример: [1.0 0.05; 0.05 2]
Типы данных: single | double
HasAdditiveProcessNoise - Модельный аддитивный технологический шумfalse (по умолчанию) | trueОпция моделирования технологического шума в качестве добавки, указанная как true или false. Когда это свойство true, к вектору состояния добавляется шум процесса. В противном случае шум включается в функцию перехода состояния.
StateParameters - Параметры опорного кадра состояния путиstruct() (по умолчанию) | структура | массив структурыПараметры опорного кадра состояния дорожки, заданные как структура или массив структуры. Фузер проходит свой StateParameters значения свойств для StateParameters свойства созданных дорожек. Эти параметры можно использовать для определения опорной рамки, в которой сообщается о дорожке, или других требуемых атрибутов сгенерированных дорожек.
Например, можно использовать следующую структуру для определения прямоугольной опорной рамки, исходная позиция которой находится в [10 10 0] м и чья исходная скорость составляет [2-2 0] м/с относительно кадра сценария.
| Имя поля | Стоимость |
|---|---|
Frame | "Rectangular" |
Position | [10 10 0] |
Velocity | [2 -2 0] |
Настраиваемый: Да
Типы данных: struct
ConfirmationThreshold - Пороговое значение для подтверждения центральной трассы[2 3] (по умолчанию) | положительное целое | вектор положительных целых чисел 1 на 2Порог для подтверждения центральной дорожки, указанный как положительное целое число M, или вектор 1 на 2 положительных целых чисел [M N] с M ≤ N. Центральная дорожка подтверждается , если она назначена локальным дорожкам не менее M раз за последние N обновлений. Если задано положительное целое число M, порог подтверждения увеличивается до [M, M].
Типы данных: single | double
DeletionThreshold - Пороговое значение для удаления центральной дорожки[5 5]
(по умолчанию) | положительное целое | вектор положительных целых чисел 1 на 2Порог удаления центральной дорожки, указанный как положительное целое число P, или вектор 1 на 2 положительных целых чисел [P R] с P ≤ R. Центральная дорожка удаляется , если дорожка не назначена локальным дорожкам по крайней мере P раз в последних обновлениях R. Если задано положительное целое число P, порог подтверждения увеличивается до [P, P].
Пример: [5 6]
Типы данных: single | double
FuseConfirmedOnly - Предохранители только подтвержденные локальные трассыtrue (по умолчанию) | falseПредохранитель, подтвержденный только локальными путями, указанный как false или true. Установить для этого свойства значение false если вы хотите слить все локальные дорожки независимо от их статуса подтверждения.
Типы данных: logical
FuseCoasted - Запал, закачанный локальными путямиfalse (по умолчанию) | trueПредохранитель, закачанный локальными путями, указанный как true или false. Установить для этого свойства значение true если вы хотите сплавить локальные трассы (IsCoasted поле или свойство localTracks вход - true). Установить для него значение false если вы хотите сплавить только локальные дорожки, которые не покрыты.
Пример: true
Типы данных: logical
StateFusion - Алгоритм слияния состояний'Cross' (по умолчанию) | 'Intersection' | 'Custom'Алгоритм слияния состояний, указанный как:
'Cross' - Использует алгоритм слияния перекрестных ковариаций
'Intersection' - использует алгоритм слияния ковариационных пересечений
'Custom' - Позволяет указать настраиваемую функцию слияния
Используйте StateFusionParameters для указания дополнительных параметров, используемых алгоритмом слияния состояний.
Типы данных: char
CustomStateFusionFcn - Пользовательская функция слияния состояний'' (по умолчанию) | дескриптор функцииФункция слияния пользовательских состояний, заданная как дескриптор функции. Функция слияния состояний должна поддерживать один из следующих синтаксисов:
[fusedState,fusedCov] = f(trackState,trackCov) [fusedState,fusedCov] = f(trackState,trackCov,fuseParams)
trackState задается как матрица N-by-M. N - размерность состояния дорожки, а M - количество дорожек.
trackCov задается как матрица N-by-N-M. N - размерность состояния дорожки, а M - количество дорожек.
fuseParams является необязательными параметрами, определенными в StateFusionParameters собственность.
fusedState возвращается как вектор N-by-1.
fusedCov возвращается в виде матрицы N-к-N.
Чтобы включить это свойство, установите значение StateFusion свойство для 'Custom'.
Типы данных: function_handle | char | string
StateFusionParameters - Параметры функции слияния состояний[] (по умолчанию)Параметры функции слияния состояний. В зависимости от выбора StateFusion алгоритм, можно указать StateFusionParameters как:
Если StateFusion является 'Cross', укажите его как скаляр в (0,1). Посмотрите fusexcov для получения дополнительной информации.
Если StateFusion является 'Intersection', укажите его как 'det' или 'trace'. Посмотрите fusecovint для получения дополнительной информации.
Если StateFusion является 'Custom', можно указать эти параметры в любом типе переменной, если они соответствуют настройке необязательного fuseParams ввод функции слияния пользовательских состояний, указанной в CustomStateFusionFcn собственность.
По умолчанию свойство пустое.
NumCentralTracks - Количество дорожек центрального уровняЭто свойство доступно только для чтения.
Количество центральных дорожек, которые в настоящее время поддерживаются фузером, возвращаемое как неотрицательное целое число.
Типы данных: double
NumConfirmedCentralTracks - Количество подтвержденных центральных путейЭто свойство доступно только для чтения.
Количество подтвержденных центральных дорожек, в настоящее время поддерживаемых фузером, возвращаемых как неотрицательное целое число.
Типы данных: double
возвращает список подтвержденных дорожек из списка локальных дорожек. Подтвержденные дорожки прогнозируются до времени обновления, confirmedTracks = fuser(localTracks,tFusion)tFusion.
[ также возвращает список предварительных дорожек, список всех дорожек и информацию анализа.confirmedTracks,tentativeTracks,allTracks,analysisInformation] = fuser(localTracks,tFusion)
localTracks - Локальные трассыobjectTrack объекты | массив структурЛокальные дорожки, указанные как массив objectTrack объекты или массив структур с именами полей, которые соответствуют именам свойств objectTrack объект. Локальные дорожки - это дорожки, генерируемые трекерами в системе исходных дорожек.
Типы данных: object | struct
tFusion - Время обновленияВремя обновления, указанное как скаляр. Фьюзер прогнозирует все центральные трассы на это время. Единицы измерения в секундах.
Типы данных: single | double
confirmedTracks - Подтвержденные трекиobjectTrack объекты | массив структурПодтвержденные дорожки, возвращенные в виде массива objectTrack объекты в MATLAB ® и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.
Дорожка подтверждается, если она удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры true.
Типы данных: struct | object
tentativeTracks - Предварительные направленияobjectTrack объекты | массив структурПредварительные треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.
Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры false.
Типы данных: struct | object
allTracks - Все трекиobjectTrack объекты | массив структурВсе треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack. Все треки состоят из подтвержденных и предварительных треков.
Типы данных: struct | object
analysisInformation - Дополнительная информация для анализа обновлений отслеживанияДополнительная информация для анализа обновлений отслеживания, возвращенная в виде структуры. К полям этой структуры относятся:
| Область | Описание |
TrackIDsAtStepBeginning | Отслеживать идентификаторы при начале шага |
CostMatrix | Матрица стоимости назначения |
Assignments | Назначения, возвращенные функцией назначения |
UnassignedCentralTracks | Идентификаторы неприсвоенных центральных путей |
UnassignedLocalTracks | Идентификаторы неназначенных локальных дорожек |
NonInitializingLocalTracks | Идентификаторы локальных дорожек, которые не были назначены, но не использовались для инициализации центральной дорожки |
InitiatedCentralTrackIDs | Идентификаторы центральных путей, инициированные во время шага |
UpdatedCentralTrackIDs | Идентификаторы центральных дорожек, обновленные во время шага |
DeletedTrackIDs | Идентификаторы центральных дорожек удалены во время шага |
TrackIDsAtStepEnd | Идентификаторы центральных дорожек по окончании шага |
Типы данных: struct
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
trackFuserpredictTrackToTime | Прогнозировать состояние дорожки |
initializeTrack | Инициализировать новую дорожку |
deleteTrack | Удалить существующую дорожку |
sourceIndices | Индексы источника фузера |
Определите два источника отслеживания: один внутренний и один внешний. SourceIndex каждый источник должен быть уникальным.
internalSource = fuserSourceConfiguration(1,'IsInternalSource',true); externalSource = fuserSourceConfiguration(2,'IsInternalSource',false);
Создать trackFuser с FuserIndex равно 3. Фузер принимает два источника, определенные выше, и использует 'Cross' StateFusion модель.
fuser = trackFuser('FuserIndex',3, 'MaxNumSources',2, ... 'SourceConfigurations',{internalSource;externalSource}, ... 'StateFusion','Cross');
Обновите фузер двумя дорожками из двух источников. Используйте 3-D состояние постоянной скорости, в котором состояния задаются в порядке [x; vx; y; vy; z; vz]. Состояния двух дорожек одинаковы, но их ковариации различны. Для первого трека создайте большую ковариацию в оси X. Для второго трека создайте большую ковариацию в оси Y.
tracks = [objectTrack('SourceIndex',1,'State',[10;0;0;0;0;0], ... 'StateCovariance',diag([100,1000,1,10,1,10])); ... objectTrack('SourceIndex',2,'State',[10;0;0;0;0;0], ... 'StateCovariance',diag([1,10,100,1000,1,10]))];
Сплавить дорожку со временем слияния, равным 0.
time = 0; confirmedTracks = fuser(tracks,time);
Получение положений и ковариаций положения исходных дорожек и подтвержденных дорожек.
positionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0 1 0]; % [x; y; z]
[inputPos,inputCov] = getTrackPositions(tracks,positionSelector);
[outputPos,outputCov] = getTrackPositions(confirmedTracks,positionSelector);Визуализация результатов с помощью trackPlotter.
tPlotter = theaterPlot('XLim',[0, 20],'YLim',[-10, 10],'ZLim',[-10, 10]); tPlotter1 = trackPlotter(tPlotter,'DisplayName','Input Tracks','MarkerEdgeColor','blue'); tPlotter2 = trackPlotter(tPlotter,'DisplayName','Fused Tracks','MarkerEdgeColor','green'); plotTrack(tPlotter1,inputPos,inputCov) plotTrack(tPlotter2,outputPos,outputCov) title('Cross-covariance fusion')

[1] Блэкман, С. и Пополи, Р., 1999. Проектирование и анализ современных систем слежения (Книга). Норвуд, Массачусетс: Artech House, 1999.
[2] Чонг, Чи-И, Сёдзо Мори, Уильям Х. Баркер и Куо-Чу Чанг. «Архитектуры и алгоритмы для ассоциации и слияния дорожек». IEEE Aerospace and Electronic Systems Magazine 15, No. 1 (2000): 5-13.
[3] Тянь, Синь, Яаков Бар-Шалом, Д. Чукрун, Я. Ошман, Дж. Тьенель и М. Идан. «Обзор Fusion-архитектур Track-to-Track». В книге «Достижения в области оценки, навигации и управления космическими аппаратами». Спрингер, 2015.
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Необходимо указать MaxNumSources имущество во время строительства. Кроме того, свойство доступно только для чтения при создании кода.
Необходимо указать SourceConfigurations для всех источников во время строительства. Дополнительно,
Все элементы SourceConfigurations должны использовать то же самое LocalToCentralTransformFcn.
Все элементы SourceConfigurations должны использовать то же самое CentralToLocalTransformFcn.
Входные дорожки должны быть массивом структуры вместо objectTrack массив объектов.
Выходы дорожки (все три) каждый являются массивом структуры вместо objectTrack массив объектов.
ObjectAttributes структура всех входных исходных дорожек должна быть в одном формате (одинаковые имена полей и типы данных).
StateParameters структура для всех входных исходных дорожек должна быть в том же формате (те же имена полей и типы данных), что и StateParameters конструкция путевого фузера.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.