Фузер «трек-трек» с одной гипотезой
The trackFuser
Система object™ взрывает треки, сгенерированные датчиками слежения или трекерами и архитекторскими децентрализованными системами слежения. trackFuser
использует глобальный алгоритм ближайшего соседа (GNN), чтобы сохранить одну гипотезу об объектах, которые он отслеживает. Входные дорожки называются source или local дорожками, а выходы - central дорожками.
Чтобы сплавить дорожки, используя этот объект:
Создайте trackFuser
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
создает фузер track-to-track, который использует глобальный алгоритм ближайшего соседа (GNN) для поддержания одной гипотезы об объектах, которые он отслеживает. fuser
= trackFuser
устанавливает свойства для fuser с помощью одной или нескольких пар "имя-значение". Неопределенные свойства имеют значения по умолчанию. Заключайте каждое имя свойства в одинарные кавычки.fuser
= trackFuser(Name,Value
)
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
FuserIndex
- Уникальный индекс для track fuser1
(по умолчанию) | положительное целое числоУникальный индекс для fuser, заданный как положительное целое число. Используйте это свойство для различения различных фузеров в окружении с несколькими фузерами.
Пример: 2
MaxNumSources
- Максимальное количество исходных строений20
(по умолчанию) | положительное целое числоМаксимальное количество исходных строений, которые может поддерживать fuser, заданное в виде положительного целого числа.
Пример:
200
SourceConfigurations
- Строения исходных системfuserSourceConfiguration
объекты Строения исходных систем, заданные как массив ячеек fuserSourceConfiguration
объекты. Значение по умолчанию является массивом ячеек N 1 байт fuserSourceConfiguration
объекты, где N является значением MaxNumSources
свойство. Можно задать это свойство во время создания как паре "имя-значение" или задать его после создания.
Типы данных: 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 значения [C 1 ,C 2], где C 1 ≤ C 2. Если задано в виде скаляра, заданное значение, val, расширяется до [val, Inf
].
Первоначально fuser выполняет грубую оценку нормированного расстояния между всеми локальными и центральными дорожками. Fuser вычисляет только точное нормированное расстояние для локальных и центральных комбинаций, грубое нормированное расстояние которых меньше C 2. Кроме того, fuser может только назначить локальную дорожку центральной дорожке, если их точное нормированное расстояние меньше C 1. См. distance
функция, используемая с отслеживающими фильтрами (trackingCKF
и trackingEKF
для примера) для пояснения расчета расстояния.
Совет:
Увеличьте значение C 2, если существуют комбинации локальных и центральных дорожек, которые должны быть рассчитаны для назначения, но не являются. Уменьшите его, если вычисление занимает слишком много времени.
Увеличьте значение C 1, если есть локальные дорожки, которые должны быть назначены центральным дорожкам, но не. Уменьшите его, если есть локальные дорожки, которые назначены центральным дорожкам, им не следует назначать (слишком далеко ).
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 vector целых чисел [<reservedrangesplaceholder9> <reservedrangesplaceholder8>] с <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5>. Центральный трек подтверждается, если он назначается локальным трекам по крайней мере M раз за последние обновления N. Если задано положительное целое число M, порог подтверждения расширяется до [M, M].
Типы данных: single
| double
DeletionThreshold
- Порог для удаления центрального трека[5 5]
(по умолчанию) | положительное целое число | вектор 1 на 2 положительных целые числаПорог для центрального удаления следа, определенного как положительное целое число P, или положительных 1 на 2 vector целых чисел [<reservedrangesplaceholder9> <reservedrangesplaceholder8>] с <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5>. Центральная дорожка удаляется, если дорожка не назначена локальным трекам по крайней мере 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 -by 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
- Количество путей центрального уровняЭто свойство доступно только для чтения.
Количество центральных дорожек, поддерживаемых в настоящее время fuser, возвращаемое в виде неотрицательного целого числа.
Типы данных: double
NumConfirmedCentralTracks
- Количество подтвержденных центральных путейЭто свойство доступно только для чтения.
Количество подтвержденных центральных треков, поддерживаемых в настоящее время fuser, возвращаемое в виде неотрицательного целого числа.
Типы данных: 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
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
trackFuser
predictTrackToTime | Предсказать состояние дорожки |
initializeTrack | Инициализация новой дорожки |
deleteTrack | Удалить существующий трек |
sourceIndices | Исходные индексы Fuser |
Задайте два источника отслеживания: один внутренний и один внешний. The SourceIndex
каждого источника должен быть уникальным.
internalSource = fuserSourceConfiguration(1,'IsInternalSource',true); externalSource = fuserSourceConfiguration(2,'IsInternalSource',false);
Создайте trackFuser
с FuserIndex
равным 3. fuser принимает два источника, определенных выше, и использует '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] Blackman, S. and Popoli, R., 1999. Проект и анализ современных систем слежения (Книга). Norwood, MA: Artech House, 1999.
[2] Chong, Chee-Yee, Shozo Mori, William H. Barker, and Kuo-Chu Chang. «Архитектуры и алгоритмы объединения треков и слияния». IEEE Aerospace and Electronic Systems Magazine 15, № 1 (2000): 5-13.
[3] Tian, Xin, Yaakov Bar-Shalom, D. Choukroun, Y. Oshman, J. Thienel, and M. Idan. «Track-to-Track Fusion Architectures-A Review». В книге «Усовершенствований в оценке, навигации и управлении космическими аппаратами». Спрингер, 2015.
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
Вы должны задать MaxNumSources
свойство во время конструкции. Кроме того, свойство считывается только для генерации кода.
Вы должны задать SourceConfigurations
свойство для всех источников при конструкции. Дополнительно,
Все элементы SourceConfigurations
необходимо использовать ту же LocalToCentralTransformFcn
.
Все элементы SourceConfigurations
необходимо использовать ту же CentralToLocalTransformFcn
.
Входные дорожки должны быть массивом структур вместо objectTrack
объектный массив.
Выходы дорожки (все три) являются массивом структур вместо objectTrack
объектный массив.
The ObjectAttributes
структура для всех исходных дорожек входа должна быть в одном формате (одинаковые имена полей и типы данных).
The StateParameters
структура для всех исходных дорожек входа должна быть в том же формате (те же имена полей и типы данных), что и StateParameters
структура трекового фузера.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.