Многообъектный трекер на основе сетки
trackerGridRFS Система object™ - это трекер, способный обрабатывать обнаружения множества целей от множества датчиков в 2-D среде. Трекер отслеживает динамические объекты вокруг автономной системы, используя данные датчиков высокого разрешения, такие как облака точек и радиолокационные детекторы. Трекер использует подход на основе случайного конечного набора (RFS) в сочетании с приближениями Демпстера-Шафера, определенными в [1], для оценки динамических характеристик ячеек сетки. Для извлечения объектов из сетки трекер использует схему связи «ячейка-дорожка» [2]. Дополнительные сведения см. в разделе Алгоритмы.
Для отслеживания целей с помощью этого объекта:
Создать trackerGridRFS и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает tracker = trackerGridRFStrackerGridRFS Системный объект со значениями свойств по умолчанию.
задает свойства для трекера, используя одну или несколько пар имя-значение. Например, tracker = trackerGridRFS(Name,Value)trackerGridRFS('MaxNumTracks',100) создает многообъектный трекер на основе сетки, который допускает максимум 100 дорожек. Заключите каждое имя свойства в кавычки.
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
Конфигурация трекераTrackerIndex - Уникальный идентификатор трекера0 (по умолчанию) | неотрицательное целое числоУникальный идентификатор трекера, указанный как неотрицательное целое число. Это свойство используется в качестве SourceIndex в выходах трекера и различает дорожки, которые поступают от разных трекеров в системе с несколькими трекерами. Необходимо указать это свойство как положительное целое число, чтобы использовать выходные данные дорожки в качестве входных данных для фузера дорожки.
Пример: 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 - размер сетки в направлении X100 (по умолчанию) | положительный скалярразмерность сетки в направлении X в локальных координатах, заданная как положительный скаляр в метрах.
GridWidth - размер сетки в направлении Y100 (по умолчанию) | положительный скаляр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 локального кадра слежения (м)
y - Положение объекта в направлении y локального кадра слежения (м)
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 в m/s2. Первая строка задает нижний и верхний пределы ускорения в направлении x, а вторая строка задает нижний и верхний пределы ускорения в направлении y. Трекер использует эти пределы для отбора проб новых частиц в сетке с использованием равномерного распределения.
Это свойство активно только в том случае, если MotionModel свойство имеет значение 'constant-acceleration'.
TurnrateLimits - Минимальная и максимальная скорость разворота объектов[-5; 5] (по умолчанию) | двухэлементный вектор скаляраМинимальная и максимальная скорость поворота объектов, заданная двухэлементным вектором скаляров в градусах/с. Первый элемент определяет минимальную скорость поворота, а второй элемент определяет максимальную скорость поворота.
Это свойство активно только в том случае, если MotionModel свойство имеет значение 'constant-turnrate'.
ProcessNoise - Ковариация технологического шумаКовариация шума процесса, заданная как матрица скаляров N-на-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 (по умолчанию) | положительный скалярКоэффициент смертности частиц в единицу времени, определяемый как положительный скаляр. Уровень смертности указывает на возможность исчезновения частицы или мишени после одного временного шага. Уровень смертности влияет на вероятность выживания (Ps) компонента между последовательными временными шагами, как:
Pd) ΔT
где ΔT - временной шаг.
Пример: 1e-4
Настраиваемый: Да
FreeSpaceDiscountFactor - Уверенность в прогнозировании свободного пространства0.8 (по умолчанию) | скалярУверенность в прогнозировании свободного пространства, заданная как скаляр. На стадии прогнозирования трекера поверная масса клетки, находящейся в «свободном» (незанятом) состоянии, уменьшается на FreeSpaceDiscountFactor:
− 1 (F)
где 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-by-2, где N - количество неназначенных ячеек. Первый элемент задает индекс сетки в направлении x, а второй элемент задает индекс сетки в направлении y. |
State | Состояния ячеек сетки, заданные как массив скаляров P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
StateCovariance | Ковариации состояния ячеек сетки, определенные как массив скаляров P-by-P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
OccupancyMass | Масса проверки занятости ячеек, заданная как N-элементный массив скаляров, где N - количество неназначенных ячеек. |
FreeMass | Масса свободных убеждений ячеек, заданная как N-элементный массив скаляров, где N - число неназначенных ячеек. |
indices должен быть возвращен в виде N-элементного вектора индексов, определяющих индекс кластера для каждой ячейки динамической сетки.
Чтобы включить это свойство, установите значение Clustering свойство для 'Custom'.
MinNumCellsPerCluster - Минимальное количество ячеек на кластер для DBSCAN2 (по умолчанию) | положительное целое числоМинимальное количество ячеек на кластер для DBSCAN, указанное как положительный скаляр. Это свойство влияет на то, является ли точка базовой точкой в алгоритме DBSCAN.
Чтобы включить это свойство, установите значение Clustering свойство для 'DBSCAN'.
TrackInitializationFcn - Функция инициализации новой дорожки'trackerGridRFS.defaultTrackInitialization' (по умолчанию) | дескриптор функцииФункция инициализации новых дорожек, указанная как дескриптор функции. Функция инициализации инициирует дорожку из набора динамических ячеек сетки.
Функция инициализации по умолчанию объединяет оценку Гаусса из каждой ячейки для описания состояния объекта. Ориентация объекта выравнивается по направлению его средней скорости. При определенной ориентации длина и ширина объекта извлекаются с использованием геометрических свойств ячеек. Объект вычисляет неопределенности в оценках длины, ширины и ориентации с использованием линейных аппроксимаций.
При настройке собственной функции инициализации функция должна поддерживать следующую сигнатуру:
function track = myFunction(dynamicGridCells)
dynamicGridCells - структура, определяющая набор ячеек сетки, инициализирующих дорожку. Он имеет следующие поля:
| Область | Описание |
|---|---|
Width | Ширина ячейки, заданная как положительный скаляр. |
GridIndices | Индексы ячеек сетки, заданные как массив N-by-2, где N - количество неназначенных ячеек. Первый элемент задает индекс сетки в направлении x, а второй элемент задает индекс сетки в направлении y. |
State | Состояния ячеек сетки, заданные как массив скаляров P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
StateCovariance | Ковариации состояния ячеек сетки, определенные как массив скаляров P-by-P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
OccupancyMass | Масса проверки занятости ячеек, заданная как N-элементный массив скаляров, где N - количество неназначенных ячеек. |
FreeMass | Масса свободных убеждений ячеек, заданная как N-элементный массив скаляров, где N - число неназначенных ячеек. |
track должен быть возвращен как objectTrack объект или структура, имена полей которых совпадают с именами свойств objectTrack объект. Измерение состояния должно совпадать с измерением состояния, указанным в MotionModel собственность.
TrackUpdateFcn - Функция обновления существующей дорожки'trackerGridRFS.defaultTrackUpdate' (по умолчанию) | дескриптор функцииФункция обновления существующей дорожки с использованием связанного с ней набора ячеек динамической сетки, заданного как дескриптор функции.
Функция обновления по умолчанию обновляет State и StateCovariance свойства дорожки с использованием новой оценки из ячеек динамической сетки, связанных с дорожкой. Процесс обновления аналогичен процессу инициализации для TrackInitializationFcn собственность. Трекер не применяет фильтрацию к ковариации состояния и состояния.
Если выбрана настройка собственной функции обновления, функция должна поддерживать эту подпись:
function updatedTrack = TrackUpdateFcn(predictedTrack,dynamicGridCells)
predictedTrack - предсказанная дорожка объекта, указанная как objectTrack объект.
dynamicGridCells - структура, определяющая набор динамических ячеек сетки, связанных с дорожкой. Структура имеет следующие поля:
| Область | Описание |
|---|---|
Width | Ширина ячейки, заданная как положительный скаляр. |
GridIndices | Индексы ячеек сетки, заданные как массив N-by-2, где N - количество неназначенных ячеек. Первый элемент задает индекс сетки в направлении x, а второй элемент задает индекс сетки в направлении y. |
State | Состояния ячеек сетки, заданные как массив скаляров P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
StateCovariance | Ковариации состояния ячеек сетки, определенные как массив скаляров P-by-P-by-N, где P - размерность состояния, а N - количество неназначенных ячеек. |
OccupancyMass | Масса проверки занятости ячеек, заданная как N-элементный массив скаляров, где N - количество неназначенных ячеек. |
FreeMass | Масса свободных убеждений ячеек, заданная как N-элементный массив скаляров, где 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. Для включения вычислений GPU требуется 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 | Параметры измерения, определенные как структура, описывающая переход от состояния частиц к измерению. Дополнительные сведения см. в разделе Обнаружения объектов. |
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 объект.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
trackerGridRFSpredictTracksToTime | Прогнозировать состояние дорожки |
predictMapToTime | Прогнозирование динамической карты на метку времени |
showDynamicMap | Печать динамической карты заполняемости |
Создайте сценарий отслеживания.
scene = trackingScenario('UpdateRate',5,'StopTime',5); rng(2021); % For reproducible results
Добавьте платформу с установленным лидарным датчиком в сценарий отслеживания.
plat = platform(scene); lidar = monostaticLidarSensor(1,'DetectionCoordinates','Body','HasOrganizedOutput',false);
Добавьте в сценарий две цели со случайными позициями и скоростями. Также определите траекторию, сетку и размер каждой платформы.
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
![]()
trackerGridRFS системный объект инициализирует, подтверждает и удаляет дорожки автоматически, используя следующий алгоритм:
Трекер проецирует данные датчиков от всех датчиков на двумерную карту сетки, чтобы представить заполняемость и свободные доказательства в структуре Демпстера-Шафера.
Трекер использует подход на основе частиц для оценки динамического состояния сетки 2-D. Это помогает трекеру классифицировать каждую ячейку как динамическую или статическую.
Трекер управляет дорожками на основе этой логики:
Трекер связывает каждую ячейку динамической сетки с существующими дорожками, используя стробированный подход ближайшего соседа.
Трекер инициализирует новые дорожки, используя неназначенные ячейки динамической сетки. Дорожка создается с помощью Tentative статус, и статус изменится на Confirmed после достаточного количества обновлений. Дополнительные сведения см. в разделе ConfirmationThreshold собственность.
В качестве альтернативы, трекер немедленно подтверждает дорожку, если ObjectClassID для дорожки устанавливается положительное значение после инициализации дорожки. Дополнительные сведения см. в разделе TrackInitializationFcn собственность.
Трекер выполняет накат, прогнозируя неназначенные трассы на текущее время, и удаляет трассы с большим количеством промахов, чем разрешено. Дополнительные сведения см. в разделе DeletionThreshold собственность.
[1] Нусс, Д., Рейтер, С., Том, М., Юань, Т., Крехль, Г., Майле, М., Герн, А. и Дитмайер, К., 2018. Подход случайного конечного набора для динамических карт сетки занятости с приложением в реальном времени. The International Journal of Robotics Research, 37 (8), стр. 841-866.
[2] Штайер, Саша, Георг Танзмейстер и Дирк Воллхерр. «Отслеживание объектов на основе доказательных динамических сеток размещения в городских условиях». В 2017 году IEEE Intelligent Vehicles Symposium (IV), стр. 1064-1070. IEEE, 2017.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.