lidarPointCloudGenerator

Объект симуляции датчика раньше генерировал облако точек лидара

Описание

lidarPointCloudGenerator Система object™ генерирует обнаружения от датчика лидара, смонтированного на автомобиле, оборудованном датчиком как pointCloud объект. На все обнаружения ссылаются к системе координат автомобиля, оборудованного датчиком или смонтированного транспортным средством датчика. Можно использовать lidarPointCloudGenerator объект в сценарии, содержащем агентов и траектории, которые можно создать при помощи drivingScenario объект. Используя статистический режим, генератор может симулировать действительные обнаружения с добавленным случайным шумом и также сгенерировать ложные сигнальные обнаружения.

Сгенерировать облака точек лидара:

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

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

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

Создание

Описание

lidar = lidarPointCloudGenerator создает статистическую модель датчика, чтобы сгенерировать облако точек для среднего лидара точности.

пример

lidar = lidarPointCloudGenerator(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Например, lidarPointCloudGenerator('DetectionCoordinates','Sensor Cartesian','MaxRange',200) создает генератор облака точек лидара, который сообщает об обнаружениях в Декартовой системе координат датчика и имеет максимальную область значений обнаружения 200 метров. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

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

Местоположение датчика видения сосредотачивается в виде [x y]. SensorLocation и Height свойства задают координаты датчика видения относительно системы координат автомобиля, оборудованного датчиком. Значение по умолчанию соответствует датчику по ходу движения, смонтированному на инструментальной панели транспортного средства. Модули исчисляются в метрах.

Пример: [4 0.1]

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

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

Пример 5

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

Необходимый временной интервал между датчиком обновляется в виде положительного действительного скаляра. drivingScenario вызовы объектов генератор обнаружения видения в интервалах постоянного времени. Детектор видения генерирует новые обнаружения, с промежутками заданные UpdateInterval свойство. Значение UpdateInterval свойство должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не содержат обнаружений. Модули находятся в секундах.

Пример 5

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

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

Пример: 1.5

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

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

Пример 4

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

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

Пример 3

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

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

Пример 4

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

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

Пример: 200

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

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

Пример: 0.01

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

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

Пример 6

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

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

Пример 6

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

Пределы азимута лидара в виде положительных действительных скаляров в 1-by-2 матрица. Модули в градусах.

Пример: [-100 50]

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

Пределы вертикального изменения лидара в виде положительных действительных скаляров в 1-by-2 матрица. Модули в градусах.

Пример: [-10 10]

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

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

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

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

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

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

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

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

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

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

Пример 4

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

Система координат обнаружений, о которых сообщают, в виде одного из этих значений:

  • 'Ego Cartesian' — Об обнаружениях сообщают в Декартовой системе координат автомобиля, оборудованного датчиком.

  • 'Sensor Cartesian' — Об обнаружениях сообщают в Декартовой системе координат датчика.

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

Агент профилирует в виде структуры или как массив структур. Каждая структура содержит физические характеристики и радарные характеристики агента.

  • Если ActorProfiles одна структура, все агенты передали в lidarPointCloudGenerator возразите используют этот профиль.

  • Если 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 функции.

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

Описание

ptCloud = step(lidar,actors,rdMesh,simTime) генерирует облако точек лидара, ptCloud, от измерений датчика, проведенных actors при текущей симуляции simTime. extendedObjectMesh объект, rdMesh, содержит дорожные данные вокруг автомобиля, оборудованного датчиком.

[...,IsValidTime,Clusters]=step(...) дополнительно возвращает IsValidTime и Clusters. IsValidTime logical, который задает, было ли облако точек сгенерировано. Clusters N-by-2 матрица, которая задает данные о классификации сгенерированного облака точек.

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

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

Агент сценария позирует в виде структуры или массива структур. Каждая структура соответствует агенту. Можно сгенерировать эту структуру с помощью actorPoses функция. Можно также создать эти структуры вручную. Таблица показывает поля что объектное использование, чтобы сгенерировать обнаружения. Все другие поля проигнорированы.

Поле Описание
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]. Модули в градусах в секунду.

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

Зависимости

Чтобы включить этот аргумент, установите DetectorOutput свойство к 'Objects only', 'Lanes with occlusion', или 'Lanes and objects'.

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

Поймайте в сети представление дороги в виде extendedObjectMesh объект. Источник mesh расположен в ее геометрическом центре.

Текущее время симуляции в виде положительного действительного скаляра. drivingScenario вызовы объектов генератор облака точек лидара в интервалах постоянного времени, чтобы сгенерировать новые облака точек, с промежутками заданные UpdateInterval свойство. Значение UpdateInterval свойство должно быть целочисленным кратным интервал времени симуляции. Обновления, которые требуют от датчика между интервалами обновления, не генерируют облако точек. Модули находятся в секундах.

Пример: 10.5

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

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

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

Облако точек, возвращенное как pointCloud объект.

Допустимое время, чтобы сгенерировать облако точек, возвращенное как 0 или 1. isValidTime 0 когда обновления время от времени требуют, которые являются между интервалами обновления, заданными UpdateInterval.

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

Данные о классификации сгенерированного облака точек, возвращенного как N-by-2 вектор. Вектор задает идентификаторы цели, от которой было сгенерировано облако точек. N равен Count свойство pointCloud объект. Вектор содержит ActorID в первом столбце и ClassID во втором столбце.

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

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

release(obj)

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

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

Примеры

свернуть все

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

Создайте и постройте ведущий сценарий с несколькими транспортными средствами

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

scenario = drivingScenario;

Добавьте прямую дорогу к ведущему сценарию. Дорога имеет одну полосу в каждом направлении.

roadCenters = [0 0 0; 70 0 0];
laneSpecification = lanespec([1 1]);
road(scenario,roadCenters,'Lanes',laneSpecification);

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

egoVehicle = vehicle(scenario,'ClassID',1,'Mesh',driving.scenario.carMesh);
waypoints = [1 -2 0; 35 -2 0];
trajectory(egoVehicle,waypoints,10);

Добавьте грузовик, пешехода и велосипед к ведущему сценарию и постройте сценарий.

truck = vehicle(scenario,'ClassID',2,'Length', 8.2,'Width',2.5,'Height',3.5, ...
  'Mesh',driving.scenario.truckMesh);
waypoints = [70 1.7 0; 20 1.9 0];
trajectory(truck,waypoints,15);
pedestrian = actor(scenario,'ClassID',4,'Length',0.24,'Width',0.45,'Height',1.7, ...
  'Mesh',driving.scenario.pedestrianMesh);
waypoints = [23 -4 0; 10.4 -4 0];
trajectory(pedestrian,waypoints,1.5);
bicycle = actor(scenario,'ClassID',3,'Length',1.7,'Width',0.45,'Height',1.7, ...
  'Mesh',driving.scenario.bicycleMesh);
waypoints = [12.7 -3.3 0; 49.3 -3.3 0];
trajectory(bicycle,waypoints,5);
plot(scenario,'Meshes','on')

Сгенерируйте и отобразите данные об облаке точек лидара на графике

Создайте lidarPointCloudGenerator Системный объект.

lidar = lidarPointCloudGenerator;

Добавьте профили агента и ID агента автомобиля, оборудованного датчиком от ведущего сценария до Системного объекта.

lidar.ActorProfiles = actorProfiles(scenario);
lidar.EgoVehicleActorID = egoVehicle.ActorID;

Отобразите данные об облаке точек на графике.

bep = birdsEyePlot('Xlimits',[0 70],'YLimits',[-30 30]);
plotter = pointCloudPlotter(bep);
legend('off');
while advance(scenario)
    tgts = targetPoses(egoVehicle);
    rdmesh = roadMesh(egoVehicle);
    [ptCloud,isValidTime] = lidar(tgts,rdmesh,scenario.SimulationTime);
    if isValidTime
        plotPointCloud(plotter,ptCloud);
    end
end

Введенный в R2020a