Основанное на сетке мультиобъектное средство отслеживания
trackerGridRFS
Система object™ является средством отслеживания, способным к обработке обнаружений нескольких целей от нескольких датчиков в 2D среде. Средство отслеживания отслеживает динамические объекты вокруг автономной системы с помощью данных о датчике высокого разрешения, такие как радарные обнаружения и облака точек. Средство отслеживания использует основанный на случайном конечном множестве (RFS) подход, объединенный приближениями Демпстера-Шейфра, заданными в [1], чтобы оценить динамические характеристики ячеек сетки. Чтобы извлечь объекты из сетки, средство отслеживания использует схему [2] ассоциации ячейки к дорожке. Для получения дополнительной информации см. Алгоритмы.
Отслеживать цели с помощью этого объекта:
Создайте trackerGridRFS
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
создает tracker
= trackerGridRFStrackerGridRFS
Системный объект со значениями свойств по умолчанию.
свойства наборов для средства отслеживания с помощью одной или нескольких пар "имя-значение". Например, tracker
= trackerGridRFS(Name,Value
)trackerGridRFS('MaxNumTracks',100)
создает основанное на сетке мультиобъектное средство отслеживания, которое позволяет максимум 100 дорожек. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
Настройка средства отслеживанияTrackerIndex
— Уникальный идентификатор средства отслеживания
(значение по умолчанию) | неотрицательное целое числоУникальный идентификатор средства отслеживания в виде неотрицательного целого числа. Это свойство используется в качестве SourceIndex
в средстве отслеживания выходные параметры, и отличают дорожки, которые прибывают из различных средств отслеживания в системе нескольких-средств-отслеживания. Необходимо задать это свойство как положительное целое число, чтобы использовать дорожку выходные параметры в качестве входных параметров к термофиксатору дорожки.
Пример 1
SensorConfigurations
— Настройки отслеживания датчиковtrackingSensorConfiguration
объектыНастройка отслеживания датчиков в виде массива ячеек trackingSensorConfiguration
объекты. Это свойство обеспечивает конфигурационную информацию датчика отслеживания, такую как пределы обнаружения датчика, разрешение датчика и монтирование датчика, к средству отслеживания. Нет никаких значений по умолчанию для SensorConfigurations
свойство, и необходимо задать SensorConfigurations
свойство перед использованием средства отслеживания. Можно обновить настройку, если HasSensorConfigurationsInput
свойство установлено в true
, путем определения входного параметра настройки configs
.
При определении trackingSensorConfiguration
объект, следующие свойства должны быть заданы с этими форматами:
PropertyName | Формат |
---|---|
SensorIndex | Уникальный идентификатор датчика в виде положительного целого числа. |
IsValidTime | Укажите, должны ли данные о датчике использоваться, чтобы обновить дорожки в виде |
SensorTransformParameters | Параметры датчика преобразовывают функцию в виде p - массив элемента структур параметра измерения. p является количеством датчиков. Структура должна содержать поля с теми же именами как параметры измерения, используемые в функции измерения, такой как Первая структура должна описать преобразование от автономной системы до координат датчика. Последующая структура описывает преобразование от автономной системы до системы координат координаты отслеживания. Если только одна структура обеспечивается, средство отслеживания принимает, что отслеживание выполняется в координатной системе координат автономной системы. |
SensorLimits | Пределы обнаружения датчика в виде матрицы 2 на 2 скаляров. Первая строка задает нижние и верхние пределы угла азимута в градусах. Вторая строка задает нижние и верхние пределы области значений обнаружения в метрах. |
Средство отслеживания игнорирует FilterInitializationFcn
, SensorTransformFcn
, и MaxNumDetsPerObject
свойства trackingSensorConfiguration
объект.
HasSensorConfigurationsInput
— Позвольте обновить настройки датчика со временемfalse
(значение по умолчанию) | true
Позвольте обновить настройки датчика со временем в виде false
или true
. Установите это свойство на true
если вы хотите настройки датчиков, обновленных со временем. Когда это свойство установлено в true
, необходимо задать вход configs
настройки при использовании этого объекта.
Типы данных: логический
StateParameters
— Параметры дорожки утверждают систему координатstruct([])
(значение по умолчанию) | struct array
Параметры дорожки утверждают систему координат в виде структуры или массива структур. Средство отслеживания передает свой StateParameters
значения свойств к StateParameters
свойство сгенерированных дорожек. Можно использовать эти параметры, чтобы задать систему координат, в которой о дорожке сообщают или другие желательные атрибуты сгенерированных дорожек.
Например, можно использовать следующую структуру, чтобы задать прямоугольную систему координат, положение источника которой в [10 10 0]
метры и чья скорость источника является [2 - 2 0] метрами в секунду относительно системы координат сценария.
Имя поля | Значение |
---|---|
Frame | "Rectangular" |
Position | [10 10 0]
|
Velocity | [2 -2 0]
|
Настраиваемый: да
Типы данных: struct
MaxNumSensors
— Максимальное количество датчиков
(значение по умолчанию) | положительное целое числоМаксимальное количество датчиков, которые могут быть соединены со средством отслеживания в виде положительного целого числа. MaxNumSensors
должен быть больше или быть равен самому большому значению SensorIndex
найденный во всех данных о датчике и настройках раньше обновлял средство отслеживания.
Типы данных: single
| double
MaxNumTracks
— Максимальное количество дорожек
(значение по умолчанию) | положительное целое числоМаксимальное количество дорожек, которые средство отслеживания может обеспечить в виде положительного целого числа.
Типы данных: single
| double
GridLength
— x - размерность направления сетки
(значение по умолчанию) | положительная скалярная величинаx- размерность направления сетки в локальных координатах в виде положительной скалярной величины в метрах.
GridWidth
— y - размерность направления сетки
(значение по умолчанию) | положительная скалярная величинаy- размерность направления сетки в локальных координатах в виде положительной скалярной величины в метрах.
GridResolution
— Разрешение сетки
(значение по умолчанию) | положительная скалярная величинаРазрешение сетки в виде положительной скалярной величины. GridResolution
представляет количество ячеек на метр сетки и для x - и для y - направление сетки.
GridOriginInLocal
— Местоположение начала координат сетки в системе координат локальной координаты
(значение по умолчанию) | двухэлементный вектор из скаляраМестоположение начала координат сетки в локальной координате структурирует в виде двухэлементного вектора из скаляров в метрах. Начало координат сетки представляет нижний левый угол сетки.
MotionModel
— Модель Motion для отслеживания'constant-velocity'
(значение по умолчанию) | 'constant-acceleration'
| 'constant-turn-rate'
Модель Motion для отслеживания в виде '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 локальной системы координат отслеживания (m/s)
vy
— Скорость объекта в направлении Y локальной системы координат отслеживания (m/s)
ax
— Ускорение объекта в направлении X локальной системы координат отслеживания (m/s2)
ay
— Ускорение объекта в направлении Y локальной системы координат отслеживания (m/s2)
w
— Уровень рыскания объекта в локальной системе координат отслеживания (degree/s)
yaw
— Угол рыскания объекта в локальной системе координат отслеживания (градус)
L
— Длина объекта (m)
W
— Ширина объекта (m)
VelocityLimits
— Минимальная и максимальная скорость объектов
(значение по умолчанию) | матрица 2 на 2 скаляраМинимальная и максимальная скорость объектов в виде матрицы 2 на 2 скаляров в m/s. Первая строка задает более низкие и верхние скоростные пределы в x - направление и вторая строка задают более низкие и верхние скоростные пределы в y - направление. Средство отслеживания использует эти пределы, чтобы произвести новые частицы в сетке с помощью равномерного распределения.
AccelerationLimits
— Минимальное и максимальное ускорение объектов
(значение по умолчанию) | матрица 2 на 2 скаляраМинимальное и максимальное ускорение объектов в виде матрицы 2 на 2 скаляров в m/s2. Первая строка задает более низкие и верхние ускоряющие пределы в x - направление и вторая строка задают более низкие и верхние ускоряющие пределы в y - направление. Средство отслеживания использует эти пределы, чтобы произвести новые частицы в сетке с помощью равномерного распределения.
Это свойство только активно когда MotionModel
свойство установлено в 'constant-acceleration'
.
TurnrateLimits
— Минимальная и максимальная угловая скорость вращения объектов
(значение по умолчанию) | двухэлементный вектор из скаляраМинимальная и максимальная угловая скорость вращения объектов, заданных двухэлементный вектор из скаляров в degree/s. Первый элемент задает минимальную угловую скорость вращения, и второй элемент задает максимальную угловую скорость вращения.
Это свойство только активно когда MotionModel
свойство установлено в 'constant-turnrate'
.
ProcessNoise
— Ковариация шума процессаКовариация шума процесса в виде N-by-N матрица скаляров. Это свойство задает шум процесса для положений частиц и геометрических центров целей.
Когда HasAdditiveProcessNoise
свойство установлено в true
, процесс непосредственно добавляет к модели предсказания. В этом случае N равен размерности состояния частицы.
Когда HasAdditiveProcessNoise
свойство установлено в false
, задайте шум процесса согласно выбранной модели движения. Шум процесса добавляется к терминам высшего порядка, таким как ускорение для 'constant-velocity'
модель.
MotionModel | Количество условий для ускорения | Значение условий |
---|---|---|
'constant-velocity' | 2
| Ускорение в x и направлениях y |
'constant-acceleration' | 2
| Дергайтесь в направлениях y и x |
'constant-turn-rate' | 3
| Ускорение в x и направлениях y, а также угловое ускорение |
Пример: [1.0 0.05; 0.05 2]
Настраиваемый: да
HasAdditiveProcessNoise
— Включите к шуму процесса модели как дополнениеfalse
(значение по умолчанию) | true
Включите к шуму процесса модели как дополнение в виде true
или false
. Когда этим свойством является true
, шум процесса добавляется непосредственно к вектору состояния. В противном случае шум включен в модель движения.
Пример: true
NumParticles
— Количество частиц на сетку
(значение по умолчанию) | положительное целое числоКоличество частиц на сетку в виде положительного целого числа. Более высокое количество частиц может улучшить качество оценки, но может увеличить вычислительную стоимость.
NumBirthParticles
— Количество новорожденных частиц на временной шаг
(значение по умолчанию) | положительная скалярная величинаКоличество новорожденного (инициализировало) частицы на временной шаг в виде положительного целого числа. Средство отслеживания определяет местоположения этих новорожденных частиц при помощи несоответствия между предсказанным и обновленными массами веры заполнения и BirthProbability
свойство. Рыночная стоимость NumBirthParticles
свойство составляет приблизительно десять процентов количества частиц, заданных NumParticles
свойство.
BirthProbability
— Вероятность целевого рождения в ячейке на шаг
(значение по умолчанию) | скаляр в [0 1)
Вероятность целевого рождения в ячейке на шаг в виде скаляра в области значений [0 1)
. Вероятность рождения управляет вероятностью, что новые частицы сгенерированы в ячейке.
Пример: 1e-4
DeathRate
— Уровень смертности частиц в единицу времени1e-3
(значение по умолчанию) | положительная скалярная величинаУровень смертности частиц в единицу времени в виде положительной скалярной величины. Уровень смертности указывает на возможность, что частица или цель исчезают после одного временного шага. Уровень смертности влияет на вероятность выживания (P s) компонента между последовательными временными шагами как:
где Δ T является временным шагом.
Пример: 1e-4
Настраиваемый: да
FreeSpaceDiscountFactor
— Доверие к предсказанию свободного пространства
(значение по умолчанию) | скалярДоверие к предсказанию свободного пространства в виде скаляра. На этапе предсказания средства отслеживания масса веры ячейки, чтобы быть в "свободном" (незанятом) состоянии уменьшается FreeSpaceDiscountFactor
:
где k является индексом временного шага, m является массой веры, α является коэффициентом дисконтирования свободного пространства и Δ, T является временным шагом.
Настраиваемый: да
Clustering
— Кластеризация метода используется для новой объектной экстракции'DBSCAN'
(значение по умолчанию) | 'Custom'
Кластеризация метода используется для новой объектной экстракции в виде 'DBSCAN'
или 'Custom'
.
'DBSCAN'
— Кластер отменил присвоение динамических ячеек сетки с помощью основанной на плотности пространственной кластеризации приложений с шумом (DBSCAN) алгоритм. Можно сконфигурировать алгоритм DBSCAN путем определения ClusteringThreshold
и MinNumCellsPerCluster
свойства средства отслеживания.
'Custom'
— Кластер отменил присвоение динамических ячеек сетки с помощью пользовательской функции кластеризации, заданной в CustomClusteringFcn
свойство средства отслеживания.
ClusteringThreshold
— Порог для кластеризации DBSCAN
(значение по умолчанию) | положительная скалярная величинаПорог для 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
— Минимальное количество ячеек на кластер для DBSCAN
(значение по умолчанию) | положительное целое числоМинимальное количество ячеек на кластер для 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
— Порог для присвоения динамических ячеек сетки к дорожкам
(значение по умолчанию) | положительная скалярная величинаПорог для присвоения динамических ячеек сетки к дорожкам в виде положительной скалярной величины. Динамическая ячейка сетки может только быть сопоставлена к дорожке, если ее расстояние (представленный отрицательной логарифмической правдоподобностью) к дорожке меньше AssignmentThreshold
значение.
Увеличьте порог, если динамическая ячейка не присваивается дорожке, которой это должно быть присвоено.
Уменьшите порог, если существуют динамические ячейки, присваиваемые дорожке, которой они не должны быть присвоены.
Пример: 18.1
ConfirmationThreshold
— Порог для подтверждения дорожки
(значение по умолчанию) | вектор 1 на 2 с действительным знаком положительных целых чиселПорог для подтверждения дорожки в виде вектора 1 на 2 с действительным знаком положительных целых чисел [M N]
. Дорожка подтверждена, если она была присвоена какой-либо динамической ячейке сетки, по крайней мере, в M
обновления последнего N
обновления.
DeletionThreshold
— Порог для удаления дорожки
(значение по умолчанию) | вектор 1 на 2 с действительным знаком положительных целых чиселПорог для удаления дорожки в виде вектора 1 на 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 | Параметры измерения в виде структуры, описывающей преобразование от частицы, утверждают к измерению. Дополнительную информацию см. в Обнаружениях объектов. |
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 | Постройте динамическую карту сетки заполнения |
step | Запустите алгоритм Системного объекта |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
isLocked | Определите, используется ли Системный объект |
clone | Создайте объект дублированной системы |
reset | Сбросьте внутренние состояния Системного объекта |
Создайте сценарий отслеживания.
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
trackerGridRFS
системный объект инициализирует, подтверждает и удаляет дорожки автоматически при помощи этого алгоритма:
Данные о датчике проектов средства отслеживания из всех датчиков на двумерной карте сетки, чтобы представлять заполнение и свободное доказательство в среде Демпстера-Шейфра.
Средство отслеживания использует основанный на частице подход, чтобы оценить динамическое состояние 2D сетки. Это помогает средству отслеживания классифицировать каждую ячейку как динамическую или статическую.
Средство отслеживания управляет дорожками на основе этой логики:
Средство отслеживания сопоставляет каждую динамическую ячейку сетки с существующими дорожками с помощью закрытого подхода ближайшего соседа.
Средство отслеживания инициализирует новые треки с помощью, отменил присвоение динамических ячеек сетки. Дорожка создается с Tentative
состояние и состояние превратятся в Confirmed
после достаточных обновлений. Для получения дополнительной информации смотрите ConfirmationThreshold
свойство.
В качестве альтернативы средство отслеживания сразу подтверждает дорожку если ObjectClassID
из дорожки установлен в положительное значение после инициализации дорожки. Для получения дополнительной информации смотрите TrackInitializationFcn
свойство.
Средство отслеживания выполняет каботажное судоходство, предсказывая неприсвоенные дорожки к текущему времени, и удаляет дорожки с большим количеством промахов, чем позволенный. Для получения дополнительной информации смотрите DeletionThreshold
свойство.
[1] Nuss, D., Агентство Рейтер, S., Том, M., Юань, T., Krehl, G., Maile, M., Gern, A. и Dietmayer, K., 2018. Случайное конечное множество приближается для динамических карт сетки заполнения с приложением реального времени. Международный журнал Исследования Робототехники, 37 (8), pp.841-866.
[2] Steyer, Саша, Георг Танцмайстер и Дирк Уоллэрр. "Отслеживание объекта на основе очевидных динамических сеток заполнения в городских средах". В 2 017 IEEE Интеллектуальный Симпозиум Транспортных средств (IV), стр 1064-1070. IEEE, 2017.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.