trackerGridRFS

Основанное на сетке мультиобъектное средство отслеживания

Описание

trackerGridRFS Система object™ является средством отслеживания, способным к обработке обнаружений нескольких целей от нескольких датчиков в 2D среде. Средство отслеживания отслеживает динамические объекты вокруг автономной системы с помощью данных о датчике высокого разрешения, такие как радарные обнаружения и облака точек. Средство отслеживания использует основанный на случайном конечном множестве (RFS) подход, объединенный приближениями Демпстера-Шейфра, заданными в [1], чтобы оценить динамические характеристики ячеек сетки. Чтобы извлечь объекты из сетки, средство отслеживания использует схему [2] ассоциации ячейки к дорожке. Для получения дополнительной информации см. Алгоритмы.

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

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

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

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

Создание

Описание

пример

tracker = trackerGridRFS создает trackerGridRFS Системный объект со значениями свойств по умолчанию.

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

Свойства

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

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

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

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

Настройка средства отслеживания

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

Пример 1

Настройка отслеживания датчиков в виде массива ячеек trackingSensorConfiguration объекты. Это свойство обеспечивает конфигурационную информацию датчика отслеживания, такую как пределы обнаружения датчика, разрешение датчика и монтирование датчика, к средству отслеживания. Нет никаких значений по умолчанию для SensorConfigurations свойство, и необходимо задать SensorConfigurations свойство перед использованием средства отслеживания. Можно обновить настройку, если HasSensorConfigurationsInput свойство установлено в true, путем определения входного параметра настройки configs.

При определении trackingSensorConfiguration объект, следующие свойства должны быть заданы с этими форматами:

PropertyName Формат
SensorIndex

Уникальный идентификатор датчика в виде положительного целого числа.

IsValidTime

Укажите, должны ли данные о датчике использоваться, чтобы обновить дорожки в виде true или false.

SensorTransformParameters

Параметры датчика преобразовывают функцию в виде p - массив элемента структур параметра измерения. p является количеством датчиков. Структура должна содержать поля с теми же именами как параметры измерения, используемые в функции измерения, такой как cvmeas функция.

Первая структура должна описать преобразование от автономной системы до координат датчика. Последующая структура описывает преобразование от автономной системы до системы координат координаты отслеживания. Если только одна структура обеспечивается, средство отслеживания принимает, что отслеживание выполняется в координатной системе координат автономной системы.

SensorLimits

Пределы обнаружения датчика в виде матрицы 2 на 2 скаляров. Первая строка задает нижние и верхние пределы угла азимута в градусах. Вторая строка задает нижние и верхние пределы области значений обнаружения в метрах.

Средство отслеживания игнорирует FilterInitializationFcn, SensorTransformFcn, и MaxNumDetsPerObject свойства trackingSensorConfiguration объект.

Позвольте обновить настройки датчика со временем в виде false или true. Установите это свойство на true если вы хотите настройки датчиков, обновленных со временем. Когда это свойство установлено в true, необходимо задать вход configs настройки при использовании этого объекта.

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

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

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

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

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

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

Максимальное количество датчиков, которые могут быть соединены со средством отслеживания в виде положительного целого числа. MaxNumSensors должен быть больше или быть равен самому большому значению SensorIndex найденный во всех данных о датчике и настройках раньше обновлял средство отслеживания.

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

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

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

Определение сетки

x- размерность направления сетки в локальных координатах в виде положительной скалярной величины в метрах.

y- размерность направления сетки в локальных координатах в виде положительной скалярной величины в метрах.

Разрешение сетки в виде положительной скалярной величины. GridResolution представляет количество ячеек на метр сетки и для x - и для y - направление сетки.

Местоположение начала координат сетки в локальной координате структурирует в виде двухэлементного вектора из скаляров в метрах. Начало координат сетки представляет нижний левый угол сетки.

Фильтрация частицы

Модель 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)

Минимальная и максимальная скорость объектов в виде матрицы 2 на 2 скаляров в m/s. Первая строка задает более низкие и верхние скоростные пределы в x - направление и вторая строка задают более низкие и верхние скоростные пределы в y - направление. Средство отслеживания использует эти пределы, чтобы произвести новые частицы в сетке с помощью равномерного распределения.

Минимальное и максимальное ускорение объектов в виде матрицы 2 на 2 скаляров в m/s2. Первая строка задает более низкие и верхние ускоряющие пределы в x - направление и вторая строка задают более низкие и верхние ускоряющие пределы в y - направление. Средство отслеживания использует эти пределы, чтобы произвести новые частицы в сетке с помощью равномерного распределения.

Это свойство только активно когда MotionModel свойство установлено в 'constant-acceleration'.

Минимальная и максимальная угловая скорость вращения объектов, заданных двухэлементный вектор из скаляров в degree/s. Первый элемент задает минимальную угловую скорость вращения, и второй элемент задает максимальную угловую скорость вращения.

Это свойство только активно когда MotionModel свойство установлено в 'constant-turnrate'.

Ковариация шума процесса в виде N-by-N матрица скаляров. Это свойство задает шум процесса для положений частиц и геометрических центров целей.

  • Когда HasAdditiveProcessNoise свойство установлено в true, процесс непосредственно добавляет к модели предсказания. В этом случае N равен размерности состояния частицы.

  • Когда HasAdditiveProcessNoise свойство установлено в false, задайте шум процесса согласно выбранной модели движения. Шум процесса добавляется к условиям высшего порядка, таким как ускорение для 'constant-acceleration' модель.

    MotionModelКоличество условий (N)Значение условий
    'constant-velocity'2Ускорение в x и направлениях y
    'constant-acceleration'2Дергайтесь в направлениях y и x
    'constant-turn-rate'3Ускорение в x и направлениях y, а также угловое ускорение

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

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

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

Пример: true

Количество частиц на сетку в виде положительного целого числа. Более высокое количество частиц может улучшить качество оценки, но может увеличить вычислительную стоимость.

Количество новорожденного (инициализировало) частицы на временной шаг в виде положительного целого числа. Средство отслеживания определяет местоположения этих новорожденных частиц при помощи несоответствия между предсказанным и обновленными массами веры заполнения и BirthProbability свойство. Рыночная стоимость NumBirthParticles свойство составляет приблизительно десять процентов количества частиц, заданных NumParticles свойство.

Вероятность целевого рождения в ячейке на шаг в виде скаляра в области значений [0 1). Вероятность рождения управляет вероятностью, что новые частицы сгенерированы в ячейке.

Пример: 1e-4

Уровень смертности частиц в единицу времени в виде положительной скалярной величины. Уровень смертности указывает на возможность, что частица или цель исчезают после одного временного шага. Уровень смертности влияет на вероятность выживания (P s) компонента между последовательными временными шагами как:

Ps=(1Pd)ΔT

где Δ T является временным шагом.

Пример: 1e-4

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

Доверие к предсказанию свободного пространства в виде скаляра. На этапе предсказания средства отслеживания масса веры ячейки, чтобы быть в "свободном" (незанятом) состоянии уменьшается FreeSpaceDiscountFactor:

mk|k1(F)=αΔTmk1(F)

где k является индексом временного шага, m является массой веры, α является коэффициентом дисконтирования свободного пространства и Δ, T является временным шагом.

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

Отследите инициализацию

Кластеризация метода используется для новой объектной экстракции в виде 'DBSCAN' или 'Custom'.

  • 'DBSCAN' — Кластер отменил присвоение динамических ячеек сетки с помощью основанной на плотности пространственной кластеризации приложений с шумом (DBSCAN) алгоритм. Можно сконфигурировать алгоритм DBSCAN путем определения ClusteringThreshold и MinNumCellsPerCluster свойства средства отслеживания.

  • 'Custom' — Кластер отменил присвоение динамических ячеек сетки с помощью пользовательской функции кластеризации, заданной в CustomClusteringFcn свойство средства отслеживания.

Порог для DBSCAN, кластеризирующегося в виде положительной скалярной величины.

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

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

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'.

Минимальное количество ячеек на кластер для DBSCAN в виде положительной скалярной величины. Это свойство влияет, является ли точка базовой точкой в алгоритме DBSCAN.

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

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

Функция инициализации по умолчанию объединяет Гауссову оценку от каждой ячейки, чтобы описать состояние объекта. Ориентация объекта выравнивается с направлением его средней скорости. С заданной ориентацией длина и ширина объекта извлечены с помощью геометрических свойств ячеек. Объект вычисляет неопределенность в длине, ширине, и оценки ориентации вычисляются с помощью линейных аппроксимаций.

Если вы принимаете решение настроить свою собственную функцию инициализации, функция должна поддержать следующую подпись:

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 свойство.

Отследите управление

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

Функция обновления по умолчанию обновляет 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 значение.

  • Увеличьте порог, если динамическая ячейка не присваивается дорожке, которой это должно быть присвоено.

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

Пример: 18.1

Порог для подтверждения дорожки в виде вектора с 2 элементами из скаляров [M N]. Дорожка подтверждена, если она была присвоена какой-либо динамической ячейке сетки, по крайней мере, в M обновления последнего N обновления.

Порог для удаления дорожки в виде вектора с 2 элементами из скаляров [P R]. Дорожка удалена, если не был присвоен никакой динамической ячейке сетки, по крайней мере, в P обновления последнего R обновления.

Пример: 0.01

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

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

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

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

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

Количество подтвержденных дорожек, возвращенных как неотрицательное целое число. Если IsConfirmed свойством выходного отслеживаемого объекта является true, дорожка подтверждена.

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

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

Позвольте использовать графический процессор для оценки динамической карты сетки в виде 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(___) дополнительно возвращает очевидную карту сетки, обеспеченную в средстве отслеживания. Можно использовать возвращенную карту, чтобы получить детали об оценках.

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

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

Данные о датчике в виде N - массив элемента структур. Каждая структура должна задать измерение от датчика высокого разрешения с помощью этих полей:

Поля Описание
TimeВремя, в которое датчик сообщает о данных в виде неотрицательного скаляра.
SensorIndexУникальный идентификатор датчика в виде положительного целого числа.
MeasurementИзмерения датчика, заданного K-by-M матрица скаляров. K является размерностью измерений, и M является количеством измерений. Каждое измерение задает позиционные аспекты обнаружения в прямоугольной или сферической системе координат.
MeasurementParametersПараметры измерения в виде структуры, описывающей преобразование от частицы, утверждают к измерению. Дополнительную информацию см. в Обнаружениях объектов.

Time значение должно быть меньше чем или равно текущему времени обновления, time, и больше, чем предыдущая временная стоимость раньше обновлял средство отслеживания.

Время обновления в виде скаляра. Средство отслеживания обновляет все дорожки к этому времени. Модули находятся в секундах.

time должен быть больше или быть равен самому большому Time значение поля sensorData структуры. time должен увеличиться в значении с каждым обновлением средства отслеживания.

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

Настройки датчика в виде массива структур, массива ячеек структур или массива ячеек trackingSensorConfiguration объекты. Если вы задаете значение с помощью массива структур или массива ячеек структур, необходимо включать SensorIndex как поле в каждой структуре. Другие дополнительные поля в каждой структуре должны иметь те же имена как trackingSensorConfiguration свойства объектов. Только необходимо задать настройки датчика, которые должны быть обновлены. Например, если вы хотите обновить IsValidTime свойство только для пятого датчика, задайте configs как struct('SensorIndex',5,'IsValidTime',false).

Зависимости

Чтобы включить этот аргумент, установите HasSensorConfigurationsInput свойство к true.

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

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

Подтвержденные дорожки обновляются к текущему времени, возвращенному как массив objectTrack объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки следует за формой, заданной в MotionModel свойство.

Предварительные дорожки, возвращенные как массив objectTrack объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки следует за формой, заданной в MotionModel свойство.

Все дорожки, возвращенные как массив objectTrack объекты, где каждый элемент представляет дорожку объекта. Форма состояния каждой дорожки следует за формой, заданной в MotionModel свойство.

Динамическая очевидная карта сетки, возвращенная как dynamicEvidentialGridMap объект.

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

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

release(obj)

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

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

Figure contains an axes. The axes contains 4 objects of type line, text. These objects represent Tracks, Truths.

Алгоритмы

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

Ссылки

[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.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

|

Введенный в R2020b