trackFuser

Термофиксатор от дорожки к дорожке одно гипотезы

Описание

trackFuser Система object™ дорожки предохранителей, сгенерированные путем отслеживания датчиков или средств отслеживания и архитектора, децентрализовала системы слежения. trackFuser использует алгоритм глобального самого близкого соседа (GNN), чтобы обеспечить одну гипотезу об объектах, которые он отслеживает. Входные дорожки называются source или дорожками local, и выходные дорожки называются дорожками central.

Плавить дорожки с помощью этого объекта:

  1. Создайте trackFuser объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

fuser = trackFuser создает термофиксатор от дорожки к дорожке, который использует алгоритм глобального самого близкого соседа (GNN), чтобы обеспечить одну гипотезу об объектах, которые он отслеживает.

пример

fuser = trackFuser(Name,Value) свойства наборов для термофиксатора с помощью одной или нескольких пар "имя-значение". Незаданные свойства имеют значения по умолчанию. Заключите каждое имя свойства в одинарные кавычки.

Свойства

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

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

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

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

Уникальный индекс для термофиксатора в виде положительного целого числа. Используйте это свойство отличить различные термофиксаторы в среде нескольких-термофиксаторов.

Пример 2

Максимальное количество исходных настроек, которые термофиксатор может обеспечить в виде положительного целого числа.

Пример: 200

Настройки исходных систем в виде массива ячеек fuserSourceConfiguration объекты. Значением по умолчанию является 1 N массивом ячеек fuserSourceConfiguration объекты, где N является значением MaxNumSources свойство. Можно задать это свойство во время создания как Пара "имя-значение" или задать его после создания.

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

Алгоритм присвоения в виде 'MatchPairs', 'Munkres', 'Jonker-Volgenant', 'Auction', или 'Custom'. Munkres является единственным алгоритмом присвоения, который гарантирует оптимальное решение, но это является также самым медленным, особенно для больших количеств обнаружений и дорожек. Другие алгоритмы не гарантируют оптимального решения, но могут быть быстрее для проблем с 20 или больше дорожками и обнаружениями. Use'Custom' чтобы задать ваше собственное присвоение функционируют и задают его имя в CustomAssignmentFcn свойство.

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

Пользовательская функция присвоения в виде указателя на функцию. Функция присвоения должна иметь следующий синтаксис:

 [assignments,unassignedCentral,unassignedLocal] = f(cost,costNonAssignment)
Для примера функции присвоения и описания ее аргументов, смотрите assignmunkres.

Зависимости

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

Типы данных: function handle | string | char

Порог присвоения от дорожки к дорожке в виде положительной скалярной величины или вектора 1 на 2 [C 1,C2], где C 1C 2. Если задано как скаляр, заданное значение, val, расширено до [val, Inf].

Первоначально, термофиксатор выполняет крупную оценку для нормированного расстояния между всеми локальными и центральными дорожками. Термофиксатор только вычисляет точное нормированное расстояние для локальных и центральных комбинаций, крупное нормированное расстояние которых меньше C 2. Кроме того, термофиксатор может только присвоить локальную дорожку центральной дорожке, если их точное нормированное расстояние меньше C 1. Смотрите distance функция используется с отслеживанием фильтров (trackingCKF и trackingEKF например) для объяснения расчета расстояния.

Советы:

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

  • Увеличьте значение C 1, если существуют локальные дорожки, которые должны быть присвоены центральным дорожкам, но не являются. Уменьшите его, если существуют локальные дорожки, которые присвоены центральным дорожкам, которым они не должны быть присвоены (слишком далеко).

Функция изменения состояния в виде указателя на функцию. Эта функция вычисляет состояние на временном шаге 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

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

  • Если 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

Ковариация шума процесса в виде положительного действительного скаляра или положительной определенной матрицы.

  • Когда HasAdditiveProcessNoise true, задайте ковариацию шума процесса как положительный действительный скаляр или положительный определенный M-by-M матрица. M является размерностью вектора состояния. Когда задано как скаляр, матрица является кратной M-by-M единичная матрица.

  • Когда HasAdditiveProcessNoise false, задайте ковариацию шума процесса как W-by-W матрица. W является размерностью вектора шума процесса.

Пример: [1.0 0.05; 0.05 2]

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

Опция к шуму процесса модели как дополнение в виде true или false. Когда этим свойством является true, шум процесса добавляется к вектору состояния. В противном случае шум включен в функцию изменения состояния.

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

Например, можно использовать следующую структуру, чтобы задать прямоугольную систему координат, положение источника которой в [10 10 0] метры и чья скорость источника является [2 - 2 0] метрами в секунду относительно системы координат сценария.

Имя поляЗначение
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

Настраиваемый: да

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

Порог для центрального подтверждения дорожки в виде положительного целочисленного M или вектор 1 на 2 положительных целых чисел [M N] с M N. Центральная дорожка подтверждена, если она присвоена локальным дорожкам, по крайней мере, времена M в последних обновлениях N. Если задано положительный целочисленный M, порог подтверждения расширен до [M, M].

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

Порог для центрального удаления дорожки в виде положительного целочисленного P или вектор 1 на 2 положительных целых чисел [P R] с P R. Центральная дорожка удалена, если дорожка не присвоена локальным дорожкам, по крайней мере, времена P в последних обновлениях R. Если задано положительный целочисленный P, порог подтверждения расширен до [P, P].

Пример: [5 6]

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

Плавьте только подтвержденные локальные дорожки в виде false или true. Установите это свойство на false если вы хотите плавить все локальные дорожки независимо от их состояния подтверждения.

Типы данных: логический

Предохранитель курсировал локальные дорожки в виде true или false. Установите это свойство на true если вы хотите соединиться, курсировал локальные дорожки (IsCoasted поле или свойство localTracks входом является true). Установите его на false если вы хотите только плавить локальные дорожки, которые не курсируются.

Пример: true

Типы данных: логический

Алгоритм сплава состояния в виде:

  • 'Cross' — Использует алгоритм сплава перекрестной ковариации

  • 'Intersection' — Использует перекрестный алгоритм сплава ковариации

  • 'Custom' — Позволяет вам задавать индивидуально настраиваемую функцию сплава

Используйте StateFusionParameters свойство задать дополнительные параметры, используемые алгоритмом сплава состояния.

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

Пользовательский сплав состояния функционирует в виде указателя на функцию. Функция сплава состояния должна поддержать один из следующих синтаксисов:

[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-by-N матрица.

Зависимости

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

Типы данных: function_handle | char | string

Параметры для функции сплава состояния. В зависимости от выбора StateFusion алгоритм, можно задать StateFusionParameters как:

  • Если StateFusion 'Cross', задайте его как скаляр в (0,1). Смотрите fusexcov для получения дополнительной информации.

  • Если StateFusion 'Intersection', задайте его как 'det' или 'trace'. Смотрите fusecovint для получения дополнительной информации.

  • Если StateFusion 'Custom', можно задать эти параметры в любом типе переменной, пока они совпадают с настройкой дополнительного fuseParams вход пользовательской функции сплава состояния задан в CustomStateFusionFcn свойство.

По умолчанию свойство пусто.

Это свойство доступно только для чтения.

Количество центральных дорожек в настоящее время обеспечено термофиксатором, возвращенным как неотрицательное целое число.

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

Это свойство доступно только для чтения.

Количество подтвержденных центральных дорожек в настоящее время обеспечено термофиксатором, возвращенным как неотрицательное целое число.

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

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

Описание

confirmedTracks = fuser(localTracks,tFusion) возвращает список подтвержденных дорожек из списка локальных дорожек. Подтвержденные дорожки предсказаны ко времени обновления, tFusion.

[confirmedTracks,tentativeTracks,allTracks,analysisInformation] = fuser(localTracks,tFusion) также возвращает список предварительных дорожек, список всех дорожек и информацию об анализе.

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

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

Локальные дорожки в виде массива objectTrack объекты или массив структур с именами полей, которые совпадают с именами свойства objectTrack объект. Локальные дорожки являются дорожками, сгенерированными от средств отслеживания в исходной системе транспортировки.

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

Обновите время в виде скаляра. Термофиксатор предсказывает все центральные дорожки к этому времени. Модули находятся в секундах.

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

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

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

Подтвержденные дорожки, возвращенные как массив objectTrack объекты в MATLAB®, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack.

Дорожка подтверждена, если она удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold свойство. В этом случае, IsConfirmed свойством объекта или полем структуры является true.

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

Предварительные дорожки, возвращенные как массив objectTrack объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack.

Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold свойство. В этом случае, IsConfirmed свойством объекта или полем структуры является false.

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

Все дорожки, возвращенные как массив objectTrack объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack. Все дорожки состоят из подтвержденных и предварительных дорожек.

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

Дополнительная информация для анализа обновлений дорожки, возвращенных как структура. Поля этой структуры:

Поле Описание
TrackIDsAtStepBeginning

Отследите идентификаторы, когда шаг начался

CostMatrix

Стоимость матрицы присвоения

Assignments

Присвоения возвращены в функцию присвоения

UnassignedCentralTracks

Идентификаторы неприсвоенных центральных дорожек

UnassignedLocalTracks

Идентификаторы неприсвоенных локальных дорожек

NonInitializingLocalTracksИдентификаторы локальных дорожек, которые были неприсвоенными, но не использовались, чтобы инициализировать центральную дорожку
InitiatedCentralTrackIDs

Идентификаторы центральных дорожек инициируются во время шага

UpdatedCentralTrackIDsИдентификаторы центральных дорожек обновляются во время шага
DeletedTrackIDs

Идентификаторы центральных дорожек удалены во время шага

TrackIDsAtStepEnd

Идентификаторы центральных дорожек, когда законченный шаг

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

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

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

release(obj)

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

predictTrackToTimeПредскажите состояние дорожки
initializeTrackИнициализируйте новый трек
deleteTrackУдалите существующую дорожку
sourceIndicesИсходные индексы термофиксатора
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
cloneСоздайте объект дублированной системы
isLockedОпределите, используется ли Системный объект
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Задайте два источника отслеживания: одно внутреннее и одно внешнее. 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')

Figure contains an axes. The axes with title Cross-covariance fusion contains 2 objects of type line. These objects represent Input Tracks, Fused Tracks.

Ссылки

[1] Блэкмен, S. и Пополи, R., 1999. Проект и анализ современных систем слежения (Книга). Норвуд, MA: Дом Artech, 1999.

[2] Чон, Чи-Ии, Соцо Мори, Уильям Х. Баркер, и Kuo-Чу Чанг. "Архитектуры и алгоритмы для ассоциации дорожки и сплава". Космос IEEE и Журнал 15 Электронных систем, № 1 (2000): 5-13.

[3] Тянь, Синь, Панель Шалом Яакова, Д. Чукрун, И. Ошмен, Дж. Тинель и М. Идэн. "Анализ Архитектур-A Fusion от дорожки к дорожке". В книге “Усовершенствования по Оценке, Навигации и Относящемуся к космическому кораблю Управлению”. Спрингер, 2015.

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

Введенный в R2019b