lidarPointCloudGenerator

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

Описание

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

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

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

Пример: [4 0.1]

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

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

Пример: 5

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

Необходимый временной интервал между обновлениями датчика, заданный как положительный действительный скаляр. The drivingScenario объект вызывает лидар облака точек с регулярными временными интервалами. lidarPointCloudGenerator объект генерирует новые обнаружения с интервалами, заданными 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

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

Пример: 0.5

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

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

Пример: 0.5

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

Пределы азимута лидара, заданные как действительный вектор вида 1 на 2 [min, max]. Модули указаны в степенях.

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

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

Пределы повышения лидара, заданные как действительный вектор вида 1 на 2 [min, max]. Модули указаны в степенях.

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

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

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

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

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

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

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

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

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

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

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

Пример: 4

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

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

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

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

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

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

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

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

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

ОбластьОписание
ActorIDОпределяемый сценарием идентификатор актёра, заданный как положительное целое число.
ClassIDИдентификатор классификации, заданный как неотрицательное целое число. 0 представляет объект неизвестного или неназначенного класса.
LengthДлина актёра, заданная как положительный реальный скаляр. Модули измерения указаны в метрах.
WidthШирина актёра, заданная как положительный реальный скаляр. Модули измерения указаны в метрах.
HeightВысота актёра, заданная как положительный реальный скаляр. Модули измерения указаны в метрах.
OriginOffsetСмещение вращательного центра актёра от его геометрического центра, заданное как действительный вектор вида [x, y, z]. Центр вращения, или источник, расположен в нижнем центре актёра. Для транспортных средств центр вращения является точкой на земле под центром задней оси. Модули измерения указаны в метрах.
MeshVerticesСетчатые вершины актёра, заданные как n -by 3 вещественная матрица вершин. Каждая строка в матрице определяет точку в трехмерном пространстве.
MeshFacesСетчатые грани актёра, заданные как m -by - 3 матрица целых чисел. Каждая строка MeshFaces представляет треугольник, заданный идентификаторами вершин, которые являются номерами строк вершин.
RCSPatternРадиолокационное сечение (RCS) шаблона актёра, заданное как numel(RCSElevationAngles)-by- numel(RCSAzimuthAngles) матрица с реальным значением. Модули указаны в децибелах на квадратный метр.
RCSAzimuthAnglesАзимутальные углы, соответствующие строкам RCSPattern, заданный как вектор значений в области значений [-180, 180]. Модули указаны в степенях.
RCSElevationAnglesУглы возвышения, соответствующие строкам RCSPattern, заданный как вектор значений в области значений [-90, 90]. Модули указаны в степенях.

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

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

Описание

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

пример

[ptCloud,isValidTime] = lidar(actors,rdMesh,simTime) дополнительно возвращается isValidTime, что указывает, сгенерировано ли облако точек в заданное время симуляции.

[ptCloud,isValidTime,clusters] = lidar(actors,rdMesh,simTime) дополнительно возвращается clusters, который содержит clusters классификационные данные сгенерированного облака точек.

[___] = lidar(actors,simTime) исключает данные сцепляться дороги из сгенерированного облака точек путем отключения спецификации rdMesh вход. Используя этот синтаксис, можно вернуть любое из выходов, описанных в предыдущих синтаксисах.

Чтобы исключить данные сцепляться дороги, установите HasRoadsInputPort свойство к false.

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

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

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

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

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

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> ]. Модули указаны в степенях в секунду.

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

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

Сетка представления дорог рядом с актером, заданная как extendedObjectMesh объект.

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

Пример: 10.5

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

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

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

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

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

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

Классификационные данные сгенерированного облака точек, возвращенные как вектор 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];
smoothTrajectory(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];
smoothTrajectory(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];
smoothTrajectory(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];
smoothTrajectory(bicycle,waypoints,5);

plot(scenario,'Meshes','on')

Figure contains an axes. The axes contains 7 objects of type patch, line.

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

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

lidar = lidarPointCloudGenerator;

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

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

Figure contains an axes. The axes contains 7 objects of type patch, line.

Figure contains an axes. The axes is empty.

Введенный в R2020a