drivingRadarDataGenerator

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

Описание

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

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 - ось относительно системы координат тела автомобиля, оборудованного датчиком, где:

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

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

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

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

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

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

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

Позвольте радару измерить целевые углы возвышения в виде логического 0 ложь) или 1 TRUE). Установите это свойство на true смоделировать радарный датчик, который может оценить целевое вертикальное изменение.

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

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

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

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

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

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

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

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

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

Источник максимума для количества обнаружения или дорожки сообщает в виде одной из этих опций:

  • '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 дБ downpoint угловой ширины луча азимута радара.

Типы данных: 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 (R)

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

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

Отслеживание настроек

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

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

Функция инициализацииФункциональное определение
initcaabfИнициализируйте Фильтр Калмана альфы - беты постоянного ускорения
initcvabfИнициализируйте Фильтр Калмана альфы - беты постоянной скорости
initcakfИнициализируйте постоянное ускорение линейный Фильтр Калмана.
initcvkfИнициализируйте постоянную скорость линейный Фильтр Калмана.
initcaekfИнициализируйте расширенный Фильтр Калмана постоянного ускорения.
initctekf Инициализируйте постоянный-turnrate расширенный Фильтр Калмана.
initcvekfИнициализируйте расширенный Фильтр Калмана постоянной скорости.
initcaukf Инициализируйте сигма-точечный фильтр Калмана постоянного ускорения.
initctukfИнициализируйте постоянный-turnrate сигма-точечный фильтр Калмана.
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)- 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

Скорость (v) агента в x - y - и z - направления в виде вектора с действительным знаком из формы [v x v y v z]. Модули исчисляются в метрах в секунду.

Roll

Угол вращения агента в виде действительного скаляра. Модули в градусах.

Pitch

Передайте угол агента в виде действительного скаляра. Модули в градусах.

Yaw

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

AngularVelocity

Скорость вращения (ω) агента в x - y - и z - направления в виде вектора с действительным знаком из формы [ω x ω y ω z]. Модули в градусах в секунду.

Текущее время симуляции, в секундах в виде неотрицательного действительного скаляра.

Пример: 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 ложь) или 1 TRUE).

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Создайте ведущий сценарий

Создайте пустой ведущий сценарий и добавьте 2D маршрут, 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