drivingRadarDataGenerator

Сгенерируйте обнаружения радарных датчиков и дорожки из сценария вождения

Описание

The drivingRadarDataGenerator Система object™ генерирует отчеты обнаружения или отслеживания целей из модели датчика радара автомобиля. Используйте этот объект для генерации данных о датчике из сценария вождения, содержащего актёров и траектории, которые можно создать при помощи drivingScenario объект. При создании сценариев с помощью приложения Driving Scenario Designer радарные датчики, установленные на автомобиль , оборудованный датчиком, выводятся следующим drivingRadarDataGenerator объекты.

The drivingRadarDataGenerator объект может моделировать кластеризованные или некластеризованные обнаружения с добавлением случайного шума, а также генерировать ложные обнаружения предупреждений. Можно сплавить сгенерированные обнаружения с другими данными о датчике и отслеживать объекты с помощью multiObjectTracker объект. Можно также выводить дорожки непосредственно из drivingRadarDataGenerator объект. Чтобы настроить вывод целевых объектов в виде кластеризованных обнаружений, незакластеризованных обнаружений или треков, используйте TargetReportFormat свойство.

Чтобы сгенерировать отчеты о радиолокационном обнаружении или треке:

  1. Создайте drivingRadarDataGenerator Объекту и установите его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

rdr = drivingRadarDataGenerator(id) устанавливает SensorIndex свойство к id.

пример

rdr = drivingRadarDataGenerator(___,Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, drivingRadarDataGenerator('TargetReportFormat','Tracks','FilterInitializationFcn',@initcvkf) создает радарный датчик, который генерирует отчеты о дорожках с помощью трекера, который инициализируется линейным фильтром Калмана с постоянной скоростью.

Свойства

расширить все

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

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

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

Идентификация датчика

Уникальный идентификатор датчика, заданный как положительное целое число. Используйте это свойство для различения обнаружений или дорожек, которые поступают от различных датчиков в мультисенсорной системе. Задайте уникальное значение для каждого датчика. Если вы не обновляете SensorIndex от значения по умолчанию 0, затем радар возвращает ошибку в начале симуляции.

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

Частота обновления датчика, в герцах, задается как положительный действительный скаляр. Взаимное значение частоты обновления должно быть целым числом, кратным временному интервалу симуляции. Радар генерирует новые отчеты с интервалами, заданными этим обратным значением. Любое обновление датчика, запрошенное между интервалами обновления, не содержит обнаружений или треков.

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

Монтаж датчика

Расположение датчика на раме кузова эго-автомобиля, в метрах, указывается как вектор реального значения 1 на 3 вида [x y z]. Это свойство задает координаты датчика вдоль x-оси, y-оси и z-оси относительно источника эго-автомобиля, где:

  • Ось x указывает вперед от транспортного средства.

  • Ось y указывает налево от транспортного средства.

  • Ось z указывает вверх от земли.

Значение по умолчанию соответствует радару, который установлен в центре передней решетки седана.

Для получения дополнительной информации о системе координат автомобиль , оборудованный датчиком смотрите Системы координат в Automated Driving Toolbox.

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

Установочные углы поворота радара, в степенях, задаются как действительный вектор 1 на 3 формы [z рыскание y тангаж x крен]. Это свойство задает собственное угловое вращение датчика Эйлера вокруг оси z, оси y и оси x относительно каркаса кузова ego, где:

  • z рыскание, или yaw angle, вращает датчик вокруг оси z ego автомобиля.

  • y тангаж, или pitch angle, вращает датчик вокруг оси y ego автомобиля. Это вращение связано с положением датчика, которое является результатом z вращения рыскания.

  • x крен, или roll angle, вращает датчик вокруг оси x ego автомобиля. Это вращение соответствует положению датчика, которое возникает в результате z рыскания и y вращений тангажа.

Эти углы являются положительными по часовой стрелке, если смотреть в прямом направлении оси z -ось, y -ось и x -ось, соответственно. Если вы визуализируете данные о датчике с точки зрения птичьего полета, то угол рыскания против часовой стрелки-положительный, потому что вы смотрите данные в отрицательном направлении оси z, которая указывает вверх от земли.

Дополнительные сведения об этой системе координат см. в разделе «Системы координат в Automated Driving Toolbox».

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

Создание отчетов об обнаружении

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

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

Включите радар для измерения целевых скоростей области значений, заданных как логическое 1 (true) или 0 (false). Установите это свойство на true чтобы смоделировать радарный датчик, который может измерить скорости области значений от обнаружений целей.

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

Включите сложение шума к измерениям радарного датчика, заданным как логическое 1 (true) или 0 (false). Установите это свойство на true для добавления шума к радиолокационным измерениям. В противном случае измерения не имеют шума. Даже если вы задаете HasNoise на false, ковариационная матрица шума измерения, сообщенная в MeasurementNoise свойство выхода обнаружений сгенерированных объектов, dets, представляет шум измерения, который добавляется когда HasNoise является true.

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

Включите создание измерений радара ложного предупреждения, заданных как логическое 1 (true) или 0 (false). Установите это свойство на true для сообщения ложных предупреждений. В противном случае радар сообщает только о фактических обнаружениях.

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

Включите окклюзию линии зрения, заданную как логическое 1 (true) или 0 (false). Чтобы сгенерировать обнаружения только от объектов, для которых радар имеет прямую линию зрения, установите это свойство на true. Для примера, с включенным этим свойством радар не генерирует обнаружение для транспортного средства, которая находится позади другого транспортного средства и заблокирована от представления.

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

Источник максимального количества отчетов об обнаружении или отслеживании, заданный в качестве одного из следующих опций:

  • 'Auto' - Датчик сообщает обо всех обнаружениях или следах.

  • 'Property' - Датчик сообщает о первых N допустимых обнаружениях или треках, где N равно MaxNumReports значение свойства.

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

Зависимости

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

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

Формат сгенерированных целевых отчетов, заданный как один из следующих опций:

  • 'Clustered detections' - датчик генерирует целевые отчеты как clustered detections, где каждый целевой объект сообщается как одно обнаружение, которое является центроидом незакрытых целевых обнаружений. Датчик возвращает кластеризованные обнаружения как массив objectDetection объекты, как описано в dets выходной аргумент.

  • 'Tracks' - Датчик генерирует целевые отчеты как tracks, которые являются кластерными обнаружениями, которые были обработаны отслеживающим фильтром. Датчик возвращает треки как массив objectTrack объекты, как описано в tracks выходной аргумент.

  • 'Detections' - Датчик генерирует целевые отчеты как unclustered detections, где каждая цель может иметь несколько обнаружений. Датчик возвращает некластеризованные обнаружения как массив objectDetection объекты, как описано в dets выходной аргумент.

Система координат сообщаемых обнаружений, заданная как один из следующих опций:

  • 'Body' - Сообщения об обнаружениях поступают в прямоугольную систему кузова эго-транспортного средства.

  • 'Sensor rectangular' - Об обнаружениях сообщается в прямоугольной системе тел радарного датчика.

  • 'Sensor spherical' - Обнаружения регистрируются в сферической системе координат, которая центрируется на радарном датчике и выравнивается с ориентацией радара на эго-аппарате.

Разрешение измерения

Азимутальное разрешение радара, в степени, задается как положительная скалярная величина. Этот azimuth resolution определяет минимальное разделение угла азимута, при котором радар может различать две цели. Разрешение азимута обычно является 3 дБ нисходящей точки азимутального угла луча радара.

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

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

Зависимости

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

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

Разрешение области значений радара, в метрах, задается как положительный действительный скаляр. Этот range resolution определяет минимальное разделение в области значений, при которой радар может различать две цели.

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

Разрешение скорости области значений радара, в метрах в секунду, задается как положительный действительный скаляр. Этот range rate resolution определяет минимальное разделение в скорости области значений, при которой радар может различать две цели.

Зависимости

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

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

Смещение измерения

Азимутальная фракция смещения радара, заданная в виде неотрицательного скаляра. Azimuth bias выражается как часть азимутального разрешения, заданного в AzimuthResolution свойство. Это значение устанавливает нижнюю границу азимутальной точности радара и не имеет размерности.

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

Фракция смещения повышения радара, заданная как неотрицательный скаляр. Elevation bias выражается как часть разрешения по повышению, заданного ElevationResolution свойство. Это значение устанавливает нижнюю границу точности по повышению радара и не имеет размерности.

Зависимости

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

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

Фракция смещения области значений радара, заданная как неотрицательный скаляр. Range bias выражается как часть разрешения области значений, заданного RangeResolution свойство. Это свойство устанавливает нижнюю границу точности области значений радара и не имеет размерности.

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

Фракция смещения уровня области значений радара, заданная в виде неотрицательного скаляра. Range-rate bias выражается как часть разрешения уровня области значений, заданного RangeRateResolution свойство. Это свойство устанавливает нижнюю границу точности уровня области значений радара и не имеет размерности.

Зависимости

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

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

Настройки обнаружения

Вероятность обнаружения цели, заданная как скаляр в области значений (0, 1]. Это свойство определяет вероятность обнаружения цели с радарным поперечным сечением (RCS), ReferenceRCS, в контрольной области значений обнаружения, ReferenceRange.

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

Эталонная область значений для заданной вероятности обнаружения и заданного начального радиолокационного сечения (RCS), в метрах, заданный как положительный действительный скаляр. reference range - эта область значений, в котором цель, имеющая радарное сечение, заданное ReferenceRCS свойство обнаруживается с вероятностью обнаружения, заданной DetectionProbability свойство.

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

Эталонное радиолокационное сечение (RCS) для заданной вероятности обнаружения и эталонной области значений, в децибельных квадратных метрах, задается как действительный скаляр. reference RCS является значением RCS, при котором обнаруживается цель с вероятностью, заданной DetectionProbability при заданной ReferenceRange значение.

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

Частота сообщений о ложных предупреждениях в каждой камере разрешения радара, заданная как положительный действительный скаляр в области значений [10–7, 10–3]. Модули безразмерны. Объект определяет камеры разрешения из AzimuthResolution и RangeResolution свойства и, когда включено, из ElevationResolution и RangeRateResolution свойства.

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

Центральная частота радиолокационной полосы, в герцах, задается как положительная скалярная величина.

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

Угловое поле зрения радара, в степенях, задается как 1 на 2 положительный вектор реального значения вида [azfov elfov]. Поле зрения определяет общую угловую длину, охватываемую датчиком. Азимутальное поле зрения, azfov, должно лежать в интервале (0, 360]. Поле зрения повышения, elfov, должно лежать в интервале (0, 180].

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

Минимальная и максимальная область значений радиолокации, в метрах, заданная как неотрицательный вектор вида 1 на 2 [min max]. Радар не обнаруживает цели, которые находятся вне этой области значений. Максимальная область значений, max, должен быть больше минимальная область значений, min.

Минимальная и максимальная скорость области значений, в метрах в секунду, задается как вектор реального значения 1 на 2 вида [min max]. Радар не обнаруживает цели, которые находятся вне этой скорости области значений. Максимальная скорость области значений, max, должен быть больше минимальной скорости области значений, min.

Зависимости

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

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

Коэффициент усиления радиолокационного цикла, заданный как действительный скаляр. RadarLoopGain зависит от значений DetectionProbability, ReferenceRange, ReferenceRCS, и FalseAlarmRate свойства. Коэффициент усиления радиолокационного цикла является функцией сообщаемого отношения сигнал/шум радара, SNR, поперечного сечения радара цели, RCS и области значений, R, как описано этим уравнением:

SNR = RadarLoopGain + RCS40log10 (<reservedrangesplaceholder0>)

SNR и RCS в децибелах и децибелах, соответственно, R в метрах и RadarLoopGain находится в децибелах.

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

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

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

В таблице показаны функции инициализации, которые можно использовать для задания FilterInitializationFcn.

Функция инициализацииОпределение функции
initcaabfИнициализируйте альфа-бета фильтр Калмана с постоянным ускорением
initcvabfИнициализируйте альфа-бета-фильтр Калмана с постоянной скоростью
initcakfИнициализируйте линейный фильтр Калмана с постоянным ускорением.
initcvkfИнициализируйте линейный фильтр Калмана с постоянной скоростью.
initcaekfИнициализируйте расширенный фильтр Калмана с постоянным ускорением.
initctekf Инициализируйте расширенный фильтр Калмана с постоянным оборотом.
initcvekfИнициализируйте расширенный фильтр Калмана с постоянной скоростью.
initcaukf Инициализируйте сигма-точечный фильтр Калмана постоянного ускорения.
initctukfИнициализируйте постоянные сигма-точечные фильтры Калмана.
initcvukfИнициализируйте сигма-точечный фильтр Калмана с постоянной скоростью.

Можно также записать собственную функцию инициализации. Функция должна иметь следующий синтаксис:

filter = filterInitializationFcn(detection)
Вход этой функции является отчетом об обнаружении, подобным тем, которые были созданы objectDetection объект. Выходы этой функции должны быть объектом фильтра отслеживания, таким как trackingKF, trackingEKF, trackingUKF, или trackingABF.

Чтобы помочь вам в написании этой функции, вы можете изучить детали поставляемых функций из MATLAB®. Для примера:

type initcvekf

Зависимости

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

Типы данных: function_handle | char | string

Порог для подтверждения дорожки, заданное как вектор 1 на 2 положительных целых чисел формы [M N]. Дорожка подтверждается, если она получает хотя бы M обнаружений в последней N обновления. M должно быть меньше или равно N.

  • При установке M, учитывайте вероятность обнаружения объектов для датчиков. Вероятность обнаружения зависит от таких факторов, как окклюзия или загромождение. Можно уменьшить M когда дорожки не могут быть подтверждены или увеличены M когда трекам назначено слишком много ложных обнаружений.

  • При установке N, учитывайте количество раз, которое вы хотите обновить трекер, прежде чем он примет решение о подтверждении. Например, если трекер обновляется каждые 0,05 секунды, и вы хотите, чтобы 0,5 секунды для принятия решения о подтверждении, установите N = 10.

Пример: [3 5]

Зависимости

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

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

Порог для удаления дорожки, заданное как вектор 1 на 2 положительных целых чисел формы [P R]. Если подтвержденная дорожка не назначена никакому обнаружению P раз в последней R трекер обновляется, затем трек удаляется. P должно быть меньше или равно R.

  • Чтобы уменьшить время, в течение которого радар поддерживает дорожки, уменьшите R или увеличить P.

  • Чтобы поддерживать дорожки в течение более длительного времени, увеличьте R или уменьшить P.

Пример: [3 5]

Зависимости

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

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

Система координат сообщаемых дорожек, заданная как один из следующих опций:

  • 'Body' - Следы сообщаются в прямоугольной системе кузова автомобиля , оборудованного датчиком.

  • 'Sensor' - Треки сообщаются в прямоугольной системе тел радарного датчика.

Зависимости

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

Целевые профили

Профили актёра, заданные как структура или как массив структур. Каждая структура содержит физические и радиолокационные характеристики актёра.

  • Если ActorProfiles является единой структурой, все актёры перешли в drivingRadarDataGenerator Объект используете этот профиль.

  • Если ActorProfiles является массивом, каждый актёр, переданный в объект, должен иметь уникальный профиль актёра.

Чтобы сгенерировать массив структур для вашего сценария вождения, используйте actorProfiles функция. В таблице показаны допустимые структурные поля. Если вы не задаете поле, это поле устанавливается на его значение по умолчанию. Если в объект не передаются актёры, то ActorID поле не включено.

ОбластьОписание
ActorIDОпределяемый сценарием идентификатор актёра, заданный как положительное целое число.
ClassIDИдентификатор классификации, заданный как неотрицательное целое число. 0 зарезервирован для объекта неизвестного или неназначенного класса.
LengthДлина актёра, заданная как положительный действительный скаляр. Значение по умолчанию является 4.7. Модули измерения указаны в метрах.
WidthШирина актёра, заданная как положительный действительный скаляр. Значение по умолчанию является 1.8. Модули измерения указаны в метрах.
HeightВысота актёра, заданная как положительный действительный скаляр. Значение по умолчанию является 1.4. Модули измерения указаны в метрах.
OriginOffset

Смещение вращательного центра актёра от его геометрического центра, заданное как [x y z] вектор с реальным значением. Центр вращения, или источник, расположен в нижнем центре актёра. Для транспортных средств центр вращения является точкой на земле под центром задней оси. Значение по умолчанию является [0 0 0]. Модули измерения указаны в метрах.

RCSPatternРадиолокационные шаблоны поперечного сечения актёра, заданные как numel(RCSElevationAngles)-by- numel(RCSAzimuthAngles) матрица с реальным значением. Значение по умолчанию является [10 10; 10 10]. Модули указаны в децибелах на квадратный метр.
RCSAzimuthAnglesАзимутальные углы, соответствующие строкам RCSPattern, заданный как вектор вещественных значений в области значений [-180, 180]. Значение по умолчанию является [-180 180]. Модули указаны в степенях.
RCSElevationAnglesУглы возвышения, соответствующие строкам RCSPattern, заданный как вектор вещественных значений в области значений [-90, 90]. Значение по умолчанию является [-90 90]. Модули указаны в степенях.

Полные определения структурных полей см. в разделе actor и vehicle функций.

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

Использование

Описание

Сгенерируйте обнаружения

Эти синтаксисы применяются, когда вы устанавливаете TargetReportFormat свойство к 'Clustered detections' или 'Detections'.

dets = rdr(targets,simTime) создает радиолокационные обнаружения, dets, от измерений датчика целевых положений, targets, относителен автомобиль , оборудованный датчиком в текущее время симуляции, simTime. Объект может генерировать обнаружения датчиков для нескольких актёров одновременно.

[dets,numReports] = rdr(targets,simTime) также возвращает количество зарегистрированных допустимых обнаружений, numReports.

пример

[dets,numReports,isValidTime] = rdr(targets,simTime) также возвращает логическое значение, isValidTime, указывающий, simTime ли является допустимым временем для генерации обнаружений. Если simTime является целым числом, кратным обратному UpdateRate значение свойства, затем isValidTime является 1 (true).

Сгенерируйте дорожки

Эти синтаксисы применяются, когда вы устанавливаете TargetReportFormat свойство к 'Tracks'.

tracks = rdr(targets,simTime) создает радиолокационные дорожки, tracks, от измерений датчика целевых положений, targets, относителен автомобиль , оборудованный датчиком в текущее время симуляции, simTime. Объект может генерировать дорожки датчика для нескольких актёров одновременно.

[tracks,numReports] = rdr(targets,simTime) также возвращает количество зарегистрированных действительных треков, numReports.

пример

[tracks,numReports,isValidTime] = rdr(targets,simTime) также возвращает логическое значение, isValidTime, указывающий, simTime ли является допустимым временем для генерации дорожек. Если simTime является целым числом, кратным обратному UpdateRate значение свойства, затем isValidTime является 1 (true).

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

расширить все

Целевые положения актёра, заданные как структура или массив структур. Каждая структура соответствует положению целевого актёра относительно автомобиля , оборудованного датчиком. Чтобы сгенерировать эти структуры, используйте targetPoses функция. Можно также создать эти структуры вручную. Не включать положение автомобиля , оборудованного датчиком в массив структур.

В этой таблице показаны необходимые поля для структур.

ОбластьОписание
ActorID

Определяемый сценарием идентификатор актёра, заданный как положительное целое число.

ClassIDИдентификатор классификации, заданный как неотрицательное целое число. 0 представляет объект неизвестного или неназначенного класса.
Position

Положение актёра, заданное как действительный вектор вида [x y z]. Модули измерения указаны в метрах.

Velocity

Скорость (<reservedrangesplaceholder9>) актера в x - y - и z - направления, определенные как вектор с реальным знаком формы [<<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reserved angesplaceholder1> <reservedrangesplaceholder0>]. Модули указаны в метрах в секунду.

Roll

Угол крена актёра, заданный как действительный скаляр. Модули указаны в степенях.

Pitch

Угол тангажа актёра, заданный как действительный скаляр. Модули указаны в степенях.

Yaw

Угол рыскания актёра, заданный как действительный скаляр. Модули указаны в степенях.

AngularVelocity

Скорость вращения (<reservedrangesplaceholder9>) актера в x - y - и z - направления, определенные как вектор с реальным знаком формы [<<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reserved angesplaceholder1> <reservedrangesplaceholder0>]. Модули указаны в степенях в секунду.

Время симуляции тока, в секундах, задается как неотрицательный действительный скаляр.

Пример: 10.5

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

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

расширить все

Сгенерированные обнаружения, возвращенные как массив ячеек objectDetection объекты. Каждый объект содержит следующие свойства:

СвойствоОпределение
TimeВремя измерения
MeasurementИзмерения объекта
MeasurementNoiseМатрица ковариации шума измерения
SensorIndexУникальный идентификатор датчика
ObjectClassIDКлассификация объектов
ObjectAttributesТрекеру передана дополнительная информация
MeasurementParametersПараметры, используемые функциями инициализации нелинейных фильтров отслеживания Калмана

Для прямоугольных координат Measurement и MeasurementNoise сообщаются в прямоугольной системе координат, заданной DetectionCoordinates свойство drivingRadarDataGenerator объект.

Для сферических координат, Measurement и MeasurementNoise сообщаются в сферической системе координат, которая основана на прямоугольной системе координат датчика.

Measurement и MeasurementNoise

DetectionCoordinates ЗначениеMeasurement и MeasurementNoise Координаты
'Body'

Координатная зависимость от HasRangeRate

HasRangeRateКоординаты
true[x;y;z;vx;vy;vz]
false[x;y;z]
'Sensor rectangular'
'Sensor spherical'

Координатная зависимость от HasRangeRate и HasElevation

HasRangeRateHasElevationКоординаты
truetrue[az;el;rng;rr]
truefalse[az;rng;rr]
falsetrue[az;el;rng]
falsefalse[az;rng]

Для ObjectAttributes, эта таблица описывает дополнительную информацию, используемую для отслеживания.

ObjectAttributes

ПризнакОпределение
TargetIndexИдентификатор актёра, ActorID, который сгенерировал обнаружение. Для ложных предупреждений это значение отрицательно.
SNRОтношение сигнал-шум обнаружения, в дБ.

Для MeasurementParametersизмерения относятся к родительской системе координат. Когда вы устанавливаете DetectionCoordinates свойство к 'Body'родительская система координат является автомобилем , оборудованным датчиком телом. Когда вы задаете DetectionCoordinates на 'Sensor rectangular' или 'Sensor spherical'родительская система координат является датчиком.

MeasurementParameters

ПараметрОпределение
Frame Перечисленный тип, указывающий на систему координат, используемую для сообщения измерений. Когда Frame установлено в 'rectangular'детекторы регистрируются в прямоугольных координатах. Когда Frame установлено в 'spherical', о обнаружениях сообщают в сферических координатах.
OriginPosition3-D векторное смещение источника датчика от начала родительской системы координат.
OrientationОриентация системы координат радиолокационного датчика относительно родительской системы координат.
HasVelocityУказывает, содержат ли измерения компоненты скорости или уровня области значений.
HasElevationУказывает, содержат ли измерения компоненты повышения.

Сгенерированные дорожки, возвращенные как objectTrack массив в MATLAB и массив структур в сгенерированном коде. В сгенерированном коде имена полей возвращаемой структуры совпадают с именами свойства objectTrack объект.

Датчик возвращает только confirmed tracks, которые являются треками, которые удовлетворяют порогу подтверждения, заданному в ConfirmationThreshold свойство. Для этих треков, IsConfirmed свойство объекта или поля структуры true.

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

Количество зарегистрированных обнаружений или дорожек, возвращенных в виде неотрицательного целого числа. numReports равно длине dets при генерации обнаружений и tracks при генерации дорожек.

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

Допустимое время генерации отчетов, возвращаемое как логическое 0 (false) или 1 (true).

Если isValidTime является 0 (false), затем отчеты, возвращенные dets (для сгенерированных обнаружений) или tracks (для сгенерированных дорожек) недопустимы, поскольку датчик сгенерировал их в момент, который не соответствует частоте обновления датчика.

Датчик генерирует отчеты только тогда, когда время симуляции тока, simTime, является целым числом, кратным временному интервалу, в котором датчик генерирует отчеты. Этот временной интервал равен обратному UpdateRate значение свойства.

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

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

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

release(obj)

расширить все

isLockedОпределите, используется ли системный объект
cloneСоздайте повторяющийся системный объект
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Используйте радарный датчик, чтобы сгенерировать кластеризованные обнаружения, незакрытые обнаружения и дорожки нескольких транспортных средств в сценарии вождения.

Создайте сценарий вождения

Создайте пустой сценарий вождения и добавьте двухполосный, 100-метровый сегмент дороги. Разделите полосы путем использования штриховой разметки маршрута.

scenario = drivingScenario('SampleTime',0.02);
roadCenters = [0 0 0; 100 0 0];
marking = [laneMarking('Solid') laneMarking('Dashed') laneMarking('Solid')];
laneSpecification = lanespec([1 1],'Marking',marking);
road(scenario,roadCenters,'Lanes',laneSpecification);

Добавьте автомобиля , оборудованного датчиком. Транспортное средство проезжает 90 метров по правому ряду с постоянной скоростью 20 метров в секунду.

ego = vehicle(scenario,'ClassID',1,'Position',[5 -1.8 0]);
egoWaypoints = [ego.Position; ...
               (ego.Position(1) + 90) ego.Position(2:3)];
egoSpeed = 20; % m/s
smoothTrajectory(ego,egoWaypoints,egoSpeed)

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

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

  • Второе транспортное средство - грузовик, который едет по левой полосе с постоянной скоростью 30 метров в секунду.

car = vehicle(scenario,'ClassID',1,'Position',[ego.Position(1)+10 -1.8 0]);
carWaypoints = [car.Position; ...
               (car.Position(1) + 75) car.Position(2:3)];
carSpeed = 30; % m/s
smoothTrajectory(car,carWaypoints,carSpeed)

truck = vehicle(scenario,'ClassID',2,'Position',[5 1.8 0], ...
    'Length',8.2,'Width',2.5,'Height',3.5);
truckWaypoints = [truck.Position; ...
                 (truck.Position(1) + 90) truck.Position(2:3)];
truckSpeed = 30; % m/s
smoothTrajectory(truck,truckWaypoints,truckSpeed)

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

plot(scenario)
while advance(scenario)
    pause(scenario.SampleTime)
end

Создайте радарный датчик

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

close(gcf)

maxRange = 100; % m
frontMirror = [ego.FrontOverhang 0 (ego.Height-0.1)];
profiles = actorProfiles(scenario);
targetProfiles = profiles(2:end);

id = 1;
rdr = drivingRadarDataGenerator(id,'UpdateRate',1/scenario.SampleTime, ...
                                   'MountingLocation',frontMirror, ...
                                   'RangeLimits',[0 maxRange], ...
                                   'Profiles',targetProfiles)
rdr = 

  drivingRadarDataGenerator with properties:

             SensorIndex: 1
              UpdateRate: 50

        MountingLocation: [0.9000 0 1.3000]
          MountingAngles: [0 0 0]

             FieldOfView: [20 5]
             RangeLimits: [0 100]
         RangeRateLimits: [-100 100]

    DetectionProbability: 0.9000
          FalseAlarmRate: 1.0000e-06

  Use get to show all properties

Создайте график птичьего глаза

Создайте график глаза птицы для визуализации данных о датчике. Добавьте плоттеры для визуализации разметки маршрута, контуров транспортного средства и зоны радиолокационного покрытия. Используйте helperPlotScenario функция для построения графика этих аспектов сценария. Эта вспомогательная функция определяется в конце примера.

bep = birdsEyePlot('XLim',[0 60],'YLim',[-35 35]);

lmPlotter = laneMarkingPlotter(bep,'Tag','lm','DisplayName','Lane markings');
olPlotter = outlinePlotter(bep,'Tag','ol');
caPlotter = coverageAreaPlotter(bep, ...
    'Tag','ca', ...
    'DisplayName','Radar coverage area', ...
    'FaceColor','red','EdgeColor','red');

helperPlotScenario(bep,rdr,ego)

Создание кластерных обнаружений

Используйте радар, чтобы сгенерировать кластеризованные обнаружения целевых транспортных средств. Визуализируйте эти обнаружения на графике птичьего глаза. На каждом временном шаге симуляции радар генерирует только одно обнаружение на цель.

clusterDetPlotter = detectionPlotter(bep, ...
    'DisplayName','Clustered detections', ...
    'MarkerEdgeColor','red', ...
    'MarkerFaceColor','red');

restart(scenario)
while advance(scenario)

    simTime = scenario.SimulationTime;
    targets = targetPoses(ego);
    [dets,numDets,isValidTime] = rdr(targets,simTime);

    helperPlotScenario(bep,rdr,ego)

    if isValidTime && numDets > 0
        detPos = cell2mat(cellfun(@(d)d.Measurement(1:2),dets, ...
            'UniformOutput',false)')';
        plotDetection(clusterDetPlotter,detPos)
    end

end

Сгенерируйте некластеризованные обнаружения

Используйте радар, чтобы сгенерировать незакрытые обнаружения целевых транспортных средств. Визуализируйте эти обнаружения на графике птичьего глаза. На каждом временном шаге симуляции радар генерирует несколько обнаружений на цель.

clearData(clusterDetPlotter)
release(rdr)

rdr.TargetReportFormat = "Detections";
detPlotter = detectionPlotter(bep, ...
    'DisplayName','Unclustered detections', ...
    'MarkerEdgeColor','red');

restart(scenario)
while advance(scenario)

    simTime = scenario.SimulationTime;
    targets = targetPoses(ego);
    [dets,numDets,isValidTime] = rdr(targets,simTime);

    helperPlotScenario(bep,rdr,ego)

    if isValidTime && numDets > 0
        detPos = cell2mat(cellfun(@(d)d.Measurement(1:2),dets, ...
            'UniformOutput',false)')';
        plotDetection(detPlotter,detPos)
    end

end

Сгенерируйте дорожки

Используйте радар для генерации треков целевых транспортных средств. Визуализируйте эти треки и историю треков на графике птичьего глаза.

clearData(detPlotter)
release(rdr)

rdr.TargetReportFormat = "Tracks";
historyDepth = 20;
tPlotter = trackPlotter(bep,'DisplayName','Tracks', ...
    'HistoryDepth',historyDepth);

restart(scenario)
while advance(scenario)

    simTime = scenario.SimulationTime;
    targets = targetPoses(ego);
    [tracks,numTracks,isValidTime] = rdr(targets,simTime);

    helperPlotScenario(bep,rdr,ego)

    if isValidTime && numTracks > 0
        trackPos = cell2mat(arrayfun(@(t)t.State(1:2:end),tracks, ...
            'UniformOutput', false)')';
        plotTrack(tPlotter,trackPos(:,1:2))
    end

end

Закройте график птичьего глаза, перезапустите сценарий и отпустите радар.

close(gcf)
restart(scenario)
release(rdr)

Вспомогательные функции

helperPlotScenario строит разметку маршрута и транспортного средства контуры автомобиля , оборудованного датчиком на графике птичьего глаза. Он также строит график зоны действия радарного датчика.

function helperPlotScenario(bep,radar,ego)

    % Plot lane markings
    lmPlotter = findPlotter(bep,'Tag','lm');
    [lmv,lmf] = laneMarkingVertices(ego);
    plotLaneMarking(lmPlotter,lmv,lmf)

    % Plot vehicle outlines
    olPlotter = findPlotter(bep,'Tag','ol');
    [position,yaw,length,width,originOffset,color] = targetOutlines(ego);
    plotOutline(olPlotter,position,yaw,length,width, ...
                   'OriginOffset',originOffset,'Color',color)

    % Plot radar coverage area
    caPlotter = findPlotter(bep,'Tag','ca');
    plotCoverageArea(caPlotter,radar.MountingLocation(1:2), ...
        radar.RangeLimits(2),radar.MountingAngles(1), ...
        radar.FieldOfView(1))

end
Введенный в R2021a