Сетчатый многообъектный трекер
The trackerGridRFS
Системный object™ является трекером, способным обрабатывать обнаружения нескольких целей с нескольких датчиков в 2-D окружении. Трекер отслеживает динамические объекты вокруг автономной системы, используя данные датчика высокого разрешения, такие как облака точек и радиолокационные обнаружения. Трекер использует подход, основанный на случайном конечном наборе (RFS), в сочетании с приближениями Демпстера-Шафера, определенными в [1], чтобы оценить динамические характеристики камер сетки. Чтобы извлечь объекты из сетки, трекер использует схему ассоциации ячейка-трек [2]. Для получения дополнительной информации см. «Алгоритмы».
Чтобы отслеживать цели, использующие этот объект:
Создайте trackerGridRFS
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
создает tracker
= trackerGridRFStrackerGridRFS
Системный объект со значениями свойств по умолчанию.
устанавливает свойства для трекера, используя одну или несколько пары "имя-значение". Для примера, tracker
= trackerGridRFS(Name,Value
)trackerGridRFS('MaxNumTracks',100)
создает сетчатый многообъектный трекер, который позволяет использовать не более 100 треков. Заключайте каждое имя свойства в кавычки.
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
Строение трекераTrackerIndex
- Уникальный идентификатор трекера0
(по умолчанию) | неотрицательное целое числоУникальный идентификатор трекера, заданный как неотрицательное целое число. Это свойство используется как SourceIndex
в выходах трекера и различает треки, которые поступают от разных трекеров в системе с несколькими трекерами. Вы должны задать это свойство как положительное целое число, чтобы использовать выходы дорожки в качестве входов для track fuser.
Пример: 1
SensorConfigurations
- Строения датчиков слеженияtrackingSensorConfiguration
объектыСтроение датчиков слежения, заданная как массив ячеек trackingSensorConfiguration
объекты. Это свойство предоставляет трекеру информацию о строении датчика слежения, такие как пределы обнаружения датчика, разрешение датчика и монтаж датчика. Значений по умолчанию для SensorConfigurations
нет свойство, и вы должны задать
SensorConfigurations
свойство перед использованием трекера. Вы можете обновить строение, если HasSensorConfigurationsInput
для свойства задано значение true
, путем определения входного параметра строения configs
.
При указании trackingSensorConfiguration
объект, следующие свойства должны быть заданы с этими форматами:
Имя свойства | Формат |
---|---|
SensorIndex | Уникальный идентификатор датчика, заданный как положительное целое число. |
IsValidTime | Укажите, следует ли использовать данные о датчике для обновления треков, заданные как |
SensorTransformParameters | Параметры функции преобразования датчика, заданные как p -элементный массив структур параметра измерения. p - количество датчиков. Структура должна содержать поля с такими же именами, как и параметры измерения, используемые в функции измерения, такие как Первая структура должна описать преобразование из автономной системы в координаты датчика. Последующая структура описывает преобразование из автономной системы в отслеживающую координатную систему координат. Если предусмотрена только одна структура, трекер принимает, что отслеживание выполняется в координатной системе координат. |
SensorLimits | Пределы обнаружения датчика, заданные как матрица 2 на 2 скаляров. Первая строка задает нижний и верхний пределы угла азимута в степенях. Вторая строка задает нижний и верхний пределы области значений обнаружения в метрах. |
Трекер игнорирует FilterInitializationFcn
, SensorTransformFcn
, и MaxNumDetsPerObject
свойства trackingSensorConfiguration
объект.
HasSensorConfigurationsInput
- Включите обновление строений датчика с течением времениfalse
(по умолчанию) | true
Включите обновление строений датчика со временем, заданным как false
или true
. Установите это свойство на true
если необходимо, чтобы строения датчиков обновлялись со временем. Когда для этого свойства задано значение true
необходимо указать вход строения configs
при использовании этого объекта.
Типы данных: logical
StateParameters
- Параметры системы координат состояния путиstruct([])
(по умолчанию) | struct array
Параметры опорной системы координат состояния дорожки, заданные как структура или массив структур. Трекер проходит свою StateParameters
значения свойств для StateParameters
свойство сгенерированных дорожек. Можно использовать эти параметры, чтобы задать систему координат, в которой трек сообщается, или другие желательные атрибуты сгенерированных треков.
Например, можно использовать следующую структуру, чтобы задать прямоугольную систему координат, начальное положение которой находится в [10 10 0]
счетчики, начальная скорость которых составляет [2 -2 0] метров в секунду относительно системы координат сценария.
Имя поля | Значение |
---|---|
Frame | "Rectangular" |
Position | [10 10 0] |
Velocity | [2 -2 0] |
Настраиваемый: Да
Типы данных: struct
MaxNumSensors
- Максимальное количество датчиков20
(по умолчанию) | положительное целое числоМаксимальное количество датчиков, которые могут быть подключены к трекеру, заданное в виде положительного целого числа. MaxNumSensors
должно быть больше или равно наибольшему значению SensorIndex
найдены во всех данных датчика и строениях, используемых для обновления трекера.
Типы данных: single
| double
MaxNumTracks
- Максимальное количество дорожек100
(по умолчанию) | положительное целое числоМаксимальное количество треков, которые может поддерживать трекер, задается как положительное целое число.
Типы данных: single
| double
GridLength
- x -направленная размерность сетки100
(по умолчанию) | положительная скалярная величинаx - размер сетки в локальных координатах, заданный как положительный скаляр в метрах.
GridWidth
- y -направленная размерность сетки100
(по умолчанию) | положительная скалярная величинаy - размер сетки в локальных координатах, заданный как положительный скаляр в метрах.
GridResolution
- Разрешение сетки1
(по умолчанию) | положительная скалярная величинаРазрешение сетки, заданное как положительная скалярная величина. GridResolution
представляет количество камер на метр сетки для x - и y - направления сетки.
GridOriginInLocal
- Расположение источника сетки в локальной системе координат[-50 -50]
(по умолчанию) | двухэлементный вектор скаляраРасположение источника сетки в локальной системе координат, заданное как двухэлементный вектор скаляров в метрах. Источник сетки представляет собой нижний левый угол сетки.
MotionModel
- Модель движения для отслеживания'constant-velocity'
(по умолчанию) | 'constant-acceleration'
| 'constant-turn-rate'
Модель движения для отслеживания, заданная как 'constant-velocity'
, 'constant-acceleration'
, или 'constant-turn-rate'
. Состояние частицы и состояние объекта для каждой модели движения:
MotionModel | Состояние частиц | Состояние объекта |
---|---|---|
'constant-velocity' | [x; vx; y; vy] | [x; vx; y; vy; yaw; L; W] |
'constant-acceleration' | [x; vx; ax; y; vy; ay] | [x; vx; ax; y; vy; ay; yaw; L; W] |
'constant-turn-rate' | [x; vx; y; vy; w] | [x; vx; y; vy; w; yaw; L; W] |
где:
x
- Положение объекта в направлении x локальной системы координат слежения (m)
y
- Положение объекта в направлении y локальной системы координат слежения (m)
vx
- Скорость объекта в направлении x локальной системы координат отслеживания (м/с)
vy
- Скорость объекта в направлении y локальной системы координат слежения (м/с)
ax
- Ускорение объекта в направлении x локальной системы координат отслеживания (м/с2)
ay
- Ускорение объекта в направлении y локальной системы координат слежения (м/с2)
w
- Скорость рыскания объекта в локальной системе координат отслеживания (градус/с)
yaw
- Угол рыскания объекта в локальной системе координат слежения (град)
L
- Длина объекта (м)
W
- Ширина объекта (м)
VelocityLimits
- Минимальная и максимальная скорость объектов[-10 10; -10 10]
(по умолчанию) | матрицу 2 на 2 скаляраМинимальная и максимальная скорость объектов, заданная как матрица 2 на 2 скаляров в м/с. Первая строка задает нижний и верхний пределы скорости в x -направлении, а вторая строка задает нижний и верхний пределы скорости в y -направлении. Трекер использует эти пределы для выборки новых частиц в сетке с помощью равномерного распределения.
AccelerationLimits
- Минимальное и максимальное ускорение объектов[-5 5; -5 5]
(по умолчанию) | матрицу 2 на 2 скаляраМинимальное и максимальное ускорение объектов, заданное как матрица 2 на 2 скаляров в м/с2. Первая строка задает нижний и верхний пределы ускорения в x -направлении, а вторая строка задает нижний и верхний пределы ускорения в y -направлении. Трекер использует эти пределы для выборки новых частиц в сетке с помощью равномерного распределения.
Это свойство активно только, когда MotionModel
для свойства задано значение 'constant-acceleration'
.
TurnrateLimits
- Минимальная и максимальная скорость поворота объектов[-5; 5]
(по умолчанию) | двухэлементный вектор скаляраМинимальная и максимальная скорость поворота объектов, заданная двухэлементный вектор скаляров в градусах/с. Первый элемент определяет минимальную скорость поворота, а второй элемент определяет максимальную скорость поворота.
Это свойство активно только, когда MotionModel
для свойства задано значение 'constant-turnrate'
.
ProcessNoise
- Ковариация технологического шумаКовариация шума процесса, заданная как N -by - N матрица скаляров. Это свойство задает технологический шум для положений частиц и геометрических центров целей.
Когда HasAdditiveProcessNoise
для свойства задано значение true
процесс непосредственно добавляет к модели предсказания. В этом случае N равно размерности состояния частиц.
Когда HasAdditiveProcessNoise
для свойства задано значение false
, задайте шум процесса согласно выбранной модели движения. Шум процесса добавляется к терминам более высокого порядка, таким как ускорение для 'constant-acceleration'
модель.
MotionModel | Количество терминов (N) | Значение терминов |
---|---|---|
'constant-velocity' | 2 | Ускорение в x и y направлениях |
'constant-acceleration' | 2 | Рывок в x и y направлениях |
'constant-turn-rate' | 3 | Ускорение в x и y направлениях, а также угловое ускорение |
Пример: [1.0 0.05; 0.05 2]
Настраиваемый: Да
HasAdditiveProcessNoise
- Позволяет моделировать технологический шум как аддитивныйfalse
(по умолчанию) | true
Позволяет моделировать технологический шум как аддитивный, задается как true
или false
. Когда это свойство true
, технологический шум добавляется непосредственно к вектору состояния. В противном случае шум включается в модель движения.
Пример: true
NumParticles
- Количество частиц на сетку10000
(по умолчанию) | положительное целое числоКоличество частиц на сетку, заданное как положительное целое число. Большее количество частиц может улучшить качество оценки, но может увеличить вычислительные затраты.
NumBirthParticles
- Количество новорожденных частиц на временной шаг1000
(по умолчанию) | положительная скалярная величинаКоличество новорожденных (инициализированных) частиц на временной шаг, заданное в виде положительного целого числа. Трекер определяет местоположения этих новорожденных частиц, используя несовпадение между предсказанными и обновленными массами убеждений заполнения и BirthProbability
свойство. Разумное значение NumBirthParticles
свойство составляет приблизительно десять процентов от количества частиц, заданных NumParticles
свойство.
BirthProbability
- Вероятность целевого рождения в клетке на шаг0.01
(по умолчанию) | скаляром в [0 1)
Вероятность целевого рождения в камеру на шаг, заданная в виде скаляра в область значений [0 1)
. Вероятность рождения контролирует вероятность того, что новые частицы генерируются в камере.
Пример: 1e-4
DeathRate
- Смертность частиц в единицу времени1e-3
(по умолчанию) | положительная скалярная величинаСмертность частиц в модуль времени, заданная как положительная скалярная величина. Смертность указывает на вероятность того, что частица или мишень исчезнет после одного временного шага. Смертность влияет на вероятность выживания (P s) компонента между последовательными временными шагами как:
где Δ T является временным шагом.
Пример: 1e-4
Настраиваемый: Да
FreeSpaceDiscountFactor
- Доверие в предсказании свободного пространства0.8
(по умолчанию) | скаляромДоверие в предсказании свободного пространства, заданная как скаляр. На этапе предсказания трекера масса убеждения камеры, которая находится в «свободном» (незанятом) состоянии, уменьшается на FreeSpaceDiscountFactor
:
где k - индекс временного шага, m - масса убеждения, α - коэффициент скидки свободного пространства, и Δ T - временной шаг.
Настраиваемый: Да
Clustering
- Метод кластеризации, используемый для извлечения нового объекта'DBSCAN'
(по умолчанию) | 'Custom'
Метод кластеризации, используемый для извлечения новых объектов, заданный как 'DBSCAN'
или 'Custom'
.
'DBSCAN'
- Кластерные неназначенные динамические камеры сетки, использующие основанную на плотности пространственную кластеризацию приложений с шумовым (DBSCAN) алгоритмом. Можно сконфигурировать алгоритм DBSCAN, задав ClusteringThreshold
и MinNumCellsPerCluster
свойства трекера.
'Custom'
- Кластер неназначенных динамических ячеек сетки с помощью пользовательской функции кластеризации, заданной в CustomClusteringFcn
свойство трекера.
ClusteringThreshold
- Порог для кластеризации DBSCAN5
(по умолчанию) | положительная скалярная величинаПороги для кластеризации DBSCAN, заданные как положительная скалярная величина.
Чтобы включить это свойство, установите Clustering
свойство к 'DBSCAN'
.
CustomClusteringFcn
- Пользовательская функция для кластеризации неназначенных ячеек сеткиПользовательская функция для кластеризации неназначенных сеточных камер, заданная как указатель на функцию. Функция должна поддерживать эту сигнатуру:
function indices = myFunction(dynamicGridCells)
dynamicGridCells
- структура, определяющая набор камер сетки, инициализирующих дорожку. В нем должны быть следующие поля:
Область | Описание |
---|---|
Width | Ширина камеры, заданная как положительная скалярная величина. |
GridIndices | Индексы камер сетки, заданные как массив N-на-2, где N количество неназначенных камер. Первый элемент задает индекс сетки в x -направлении, а второй элемент задает индекс сетки в y -направлении. |
State | Состояния камер сетки, заданные как P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
StateCovariance | Ковариации состояний камер сетки, заданные как P -by P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
OccupancyMass | Масса веры заполнения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
FreeMass | Масса свободного убеждения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
indices
должен быть возвращен как N элемент индексов, определяющих индекс кластера для каждой динамической камеры сетки.
Чтобы включить это свойство, установите Clustering
свойство к 'Custom'
.
MinNumCellsPerCluster
- Минимальное количество камер на кластер для DBSCAN2
(по умолчанию) | положительное целое числоМинимальное количество камер на кластер для DBSCAN, заданное как положительная скалярная величина. Это свойство влияет, является ли точка основной точкой в алгоритме DBSCAN.
Чтобы включить это свойство, установите Clustering
свойство к 'DBSCAN'
.
TrackInitializationFcn
- Функция для инициализации новой дорожки'trackerGridRFS.defaultTrackInitialization'
(по умолчанию) | указатель на функциюФункция для инициализации новых треков, заданная как указатель на функцию. Функция инициализации инициирует дорожку из набора динамических камер сетки.
Функция инициализации по умолчанию объединяет Гауссову оценку из каждой камеры, чтобы описать состояние объекта. Ориентация объекта совпадает с направлением его средней скорости. При определенной ориентации длина и ширина объекта извлекаются с помощью геометрических свойств камер. Объект вычисляет неопределенности в длине, ширине и оценках ориентации, вычисленных с помощью линейных приближений.
Если вы принимаете решение настроить свою собственную функцию инициализации, функция должна поддерживать следующую сигнатуру:
function track = myFunction(dynamicGridCells)
dynamicGridCells
- структура, определяющая набор камер сетки, инициализирующих дорожку. Он имеет следующие поля:
Область | Описание |
---|---|
Width | Ширина камеры, заданная как положительная скалярная величина. |
GridIndices | Индексы камер сетки, заданные как массив N-на-2, где N количество неназначенных камер. Первый элемент задает индекс сетки в x -направлении, а второй элемент задает индекс сетки в y -направлении. |
State | Состояния камер сетки, заданные как P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
StateCovariance | Ковариации состояний камер сетки, заданные как P -by P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
OccupancyMass | Масса веры заполнения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
FreeMass | Масса свободного убеждения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
track
должен быть возвращен как objectTrack
объект или структура, имена полей которой совпадают с именами свойства objectTrack
объект. Размерность состояния должна совпадать с размерностью состояния, заданной в MotionModel
свойство.
TrackUpdateFcn
- Функция для обновления существующей дорожки'trackerGridRFS.defaultTrackUpdate'
(по умолчанию) | указатель на функциюФункция для обновления существующей дорожки, используя связанный с ней набор динамических сеточных камер, заданных как указатель на функцию.
Функция обновления по умолчанию обновляет State
и StateCovariance
свойства дорожки с использованием новой оценки из динамических камер сетки, сопоставленных с дорожкой. Процесс обновления аналогичен процессу инициализации для TrackInitializationFcn
свойство. Трекер не применяет фильтрацию к состоянию и ковариации состояния.
Если вы принимаете решение настроить свою собственную функцию обновления, функция должна поддерживать эту сигнатуру:
function updatedTrack = TrackUpdateFcn(predictedTrack,dynamicGridCells)
predictedTrack
- предсказанная дорожка объекта, заданная как objectTrack
объект.
dynamicGridCells
- структура, определяющая набор динамических камер сетки, связанных с дорожкой. Структура имеет следующие поля:
Область | Описание |
---|---|
Width | Ширина камеры, заданная как положительная скалярная величина. |
GridIndices | Индексы камер сетки, заданные как массив N-на-2, где N количество неназначенных камер. Первый элемент задает индекс сетки в x -направлении, а второй элемент задает индекс сетки в y -направлении. |
State | Состояния камер сетки, заданные как P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
StateCovariance | Ковариации состояний камер сетки, заданные как P -by P -by - N массив скаляров, где P - размерность состояния, а N - количество неназначенных камер. |
OccupancyMass | Масса веры заполнения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
FreeMass | Масса свободного убеждения камер, заданная как N-element массив скаляров, где N количество неназначенных камер. |
updatedTrack
- обновленный трек, возвращенный как objectTrack
объект или структура, имена полей которой совпадают с именами свойства objectTrack
объект.
AssignmentThreshold
- Порог для назначения динамических камер сетки трекам30
(по умолчанию) | положительная скалярная величинаПорог для назначения дорожкам динамических камер сетки, заданная как положительная скалярная величина. Динамическая сетка, камера может быть связана только с дорожкой, если ее расстояние (представленное отрицательным логарифмической правдоподобности) до дорожки меньше AssignmentThreshold
значение.
Увеличьте порог, если динамическая камера не назначается дорожке, которой она должна быть назначена.
Уменьшите порог, если динамические камеры назначаются дорожке, которой они не должны назначаться.
Пример: 18.1
ConfirmationThreshold
- Порог для подтверждения трека[2 3]
(по умолчанию) | 2-элементный вектор скаляраПорог для подтверждения дорожки, заданное как 2-элементный вектор скаляров [M N]
. Дорожка подтверждается, если она была назначена какой-либо динамической камере сетки, по крайней мере, в M
обновления последней N
обновления.
DeletionThreshold
- Порог для удаления дорожки[5 5]
(по умолчанию) | 2-элементный вектор скаляраПорог для удаления дорожки, заданное как 2-элементный вектор скаляров [P R]
. Дорожка удаляется, если она не была назначена какой-либо динамической камере сетки, по крайней мере, в P
обновления последней R
обновления.
Пример: 0.01
Типы данных: single
| double
NumTracks
- Количество треков, поддерживаемых трекеромЭто свойство доступно только для чтения.
Количество треков, поддерживаемых трекером, возвращаемое в виде неотрицательного целого числа.
Типы данных: double
NumConfirmedTracks
- Количество подтвержденных дорожекЭто свойство доступно только для чтения.
Количество подтвержденных треков, возвращенных как неотрицательное целое число. Если на IsConfirmed
свойство выхода дорожки true
, дорожка подтверждена.
Типы данных: double
UseGPU
- Включить использование графический процессор для оценки динамической сетки картыfalse
(по умолчанию) | true
Это свойство доступно только для чтения.
Включите использование графический процессор для оценки динамической сетки карты, заданной как true
или false
. Для включения расчетов графический процессор требуется Parallel Computing Toolbox™.
возвращает список подтвержденных треков, которые обновляются из списка данных о датчике confirmedTracks
= tracker(sensorData
,time
)sensorData
во время обновления time
. Подтвержденные дорожки корректируются и прогнозируются до времени обновления.
также задает строения датчиков confirmedTracks
= tracker(sensorData
,configs
,time
)configs
. Чтобы включить этот синтаксис, установите HasSensorConfigurationsInput
свойство к true
.
[
также возвращает список предварительных треков confirmedTracks
,tentativeTracks
,allTracks
] = tracker(___)tentativeTracks
и список всех треков allTracks
. Можно использовать любую комбинацию входных параметров из предыдущих синтаксисов.
[
дополнительно возвращает доказательную сетчатую карту, поддерживаемую в трекере. Вы можете использовать возвращенную карту, чтобы получить подробную информацию об оценках.confirmedTracks
,tentativeTracks
,allTracks
,map
] = tracker(___)
sensorData
- Данные о датчикеДанные о датчике, заданные как N -элементный массив структур. Каждая структура должна определять измерения с помощью датчика высокого разрешения с помощью следующих полей :
Области | Описание |
---|---|
Time | Время, в которое датчик сообщает данные, заданное как неотрицательный скаляр. |
SensorIndex | Уникальный идентификатор датчика, заданный как положительное целое число. |
Measurement | Измерения датчика, заданные K -by - M матрица скаляров. K - размерность измерений, а M - количество измерений. Каждое измерение определяет позиционные аспекты обнаружения в прямоугольной или сферической системе координат. |
MeasurementParameters | Параметры измерения, заданные как структура, описывающая преобразование из состояния частиц в измерение. Для получения дополнительной информации см. Обнаружения объектов. |
The Time
значение должно быть меньше или равно текущему времени обновления, time
и больше предыдущего значения времени, используемого для обновления трекера.
time
- Время обновленияВремя обновления, заданное как скаляр. Трекер обновляет все треки к этому времени. Модули указаны в секундах.
time
должно быть больше или равно самой большой Time
значение поля sensorData
структуры. time
необходимо увеличить значение с каждым обновлением трекера.
Типы данных: single
| double
configs
- строения датчикаtrackingSensorConfiguration
объектыСтроения датчика, заданные как массив структур, массив ячеек структур или массив ячеек trackingSensorConfiguration
объекты. Если вы задаете значение с помощью массива структур или массива ячеек структур, вы должны включать SensorIndex
как поле в каждой структуре. Другие необязательные поля в каждой структуре должны иметь те же имена, что и trackingSensorConfiguration
свойства объекта. Вам нужно только задать строения датчика, которые нужно обновить. Для примера, если вы хотите обновить IsValidTime
свойство только для пятого датчика задайте configs
как struct('SensorIndex',5,'IsValidTime',false)
.
Чтобы включить этот аргумент, установите HasSensorConfigurationsInput
свойство к true
.
confirmedTracks
- Подтвержденные дорожкиobjectTrack
объектыПодтвержденные дорожки обновлены до текущего времени, возвращены как массив objectTrack
объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки соответствует форме, указанной в MotionModel
свойство.
tentativeTracks
- Ориентировочные дорожкиobjectTrack
объектыОриентировочные дорожки, возвращенные как массив objectTrack
объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки соответствует форме, указанной в MotionModel
свойство.
allTracks
- Все трекиВсе треки, возвращенные как массив objectTrack
объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки соответствует форме, указанной в MotionModel
свойство.
map
- Динамическая доказательная сетчатая картаdynamicEvidentialGridMap
объектДинамическая доказательная сетчатая карта, возвращенная как dynamicEvidentialGridMap
объект.
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
trackerGridRFS
predictTracksToTime | Предсказать состояние дорожки |
predictMapToTime | Спрогнозируйте динамическую карту к метке времени |
showDynamicMap | Постройте динамическую сетку заполнения |
Создайте сценарий отслеживания.
scene = trackingScenario('UpdateRate',5,'StopTime',5); rng(2021); % For reproducible results
Добавьте платформу с установленным датчиком лидара в сценарий отслеживания.
plat = platform(scene); lidar = monostaticLidarSensor(1,'DetectionCoordinates','Body','HasOrganizedOutput',false);
Добавьте к сценарию две цели со случайными положениями и скоростями. Кроме того, задайте траекторию, mesh и размерность каждой платформы.
for i = 1:2 target = platform(scene); x = 50*(2*rand - 1); y = 50*(2*rand - 1); vx = 5*(2*rand - 1); vy = 5*(2*rand - 1); target.Trajectory.Position = [x y 0]; target.Trajectory.Velocity = [vx vy 0]; % Align the orientation of the target with the direction of motion. target.Trajectory.Orientation = quaternion([atan2d(vy,vx),0,0],'eulerd','ZYX','frame'); target.Mesh = extendedObjectMesh('sphere'); target.Dimensions = struct('Length',4,'Width',4,'Height',2,'OriginOffset',[0 0 0]); end
Определите строение датчика лидара.
config = trackingSensorConfiguration(1,... 'SensorLimits',[-180 180;0 100],... 'SensorTransformParameters',struct,... 'IsValidTime',true);
Создайте трекер на основе сетки.
tracker = trackerGridRFS('SensorConfigurations',config,... 'AssignmentThreshold',5,... 'MinNumCellsPerCluster',4,... 'ClusteringThreshold',3);
Задайте theaterPlot
объект и два связанных плоттера для визуализации сцены отслеживания.
tp = theaterPlot('XLimits',[-50 50],'YLimits',[-50 50]); trkPlotter = trackPlotter(tp,'DisplayName','Tracks','MarkerFaceColor','g'); tthPlotter = platformPlotter(tp,'DisplayName','Truths','MarkerFaceColor','r','ExtentAlpha',0.2);
Продвигайтесь по сценарию и запускайте трекер с данными лидара.
while advance(scene) time = scene.SimulationTime; % Generate point cloud. tgtMeshes = targetMeshes(plat); [ptCloud, config] = lidar(tgtMeshes, time); % Format the data for the tracker. sensorData = struct('Time',time,... 'SensorIndex',1,... 'Measurement',ptCloud',... 'MeasurementParameters',struct... ); % Update the tracker using the sensor data. tracks = tracker(sensorData, time); % Visualize tracks. pos = zeros(numel(tracks),3); vel = zeros(numel(tracks),3); orient = quaternion.ones(numel(tracks),1); dim = repmat(plat.Dimensions,numel(tracks),1); ids = string([tracks.TrackID]); for i = 1:numel(tracks) vel(i,:) = [tracks(i).State(2);tracks(i).State(4);0]; pos(i,:) = [tracks(i).State(1);tracks(i).State(3);0]; dim(i).Length = tracks(i).State(6); dim(i).Width = tracks(i).State(7); orient(i) = quaternion([tracks(i).State(5) 0 0],'eulerd','ZYX','frame'); end trkPlotter.plotTrack(pos,dim,orient,ids); % Visualize platforms. pos = vertcat(tgtMeshes.Position); meshes = vertcat(tgtMeshes.Mesh); orient = vertcat(tgtMeshes.Orientation); tthPlotter.plotPlatform(pos,meshes,orient); end
The trackerGridRFS
системный объект инициализирует, подтверждает и автоматически удаляет треки при помощи этого алгоритма:
Трекер проектирует данные о датчиках со всех датчиков на двумерной сетке, чтобы представлять заполненность и свободные доказательства в рамках Dempster-Shafer.
Трекер использует основанный на частицах подход, чтобы оценить динамическое состояние 2-D сетки. Это помогает трекеру классифицировать каждую камеру как динамическую или статическую.
Трекер управляет треками на основе этой логики:
Трекер связывает каждую динамическую сетку камеры с существующими треками с помощью закрытого подхода ближайшего соседа.
Трекер инициализирует новые треки, используя неназначенные динамические камеры сетки. Трек создается с Tentative
status, и статус изменится на Confirmed
после достаточного количества обновлений. Для получения дополнительной информации смотрите ConfirmationThreshold
свойство.
В качестве альтернативы трекер немедленно подтверждает дорожку, если ObjectClassID
дорожку устанавливают на положительное значение после инициализации дорожки. Для получения дополнительной информации смотрите TrackInitializationFcn
свойство.
Трекер выполняет покатывание, прогнозируя неназначенные треки к текущему времени, и удаляет треки с большим количеством промахов, чем разрешено. Для получения дополнительной информации смотрите DeletionThreshold
свойство.
[1] Nuss, D., Reuter, S., Thom, M., Yuan, T., Krehl, G., Maile, M., Gern, A. and Dietmayer, K., 2018. Случайный подход к конечному набору для динамических сеточных карт заполнения с приложением реального времени. Международный журнал исследований робототехники, 37 (8), стр. 841-866.
[2] Steyer, Sascha, Georg Tanzmeister, and Dirk Wollherr. «Отслеживание объектов, основанное на доказательственных динамических сетках заполнения в городских окружениях». В 2017 году IEEE Intelligent Vehicles Symposium (IV), стр. 1064-1070. IEEE, 2017.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.