lidarPointCloudGenerator

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

Описание

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] вектор. SensorLocation и Height свойства задают координаты датчика лидара относительно системы координат автомобиля, оборудованного датчиком. Значение по умолчанию соответствует датчику лидара, смонтированному на седане в центре переднего ребра крыши. Модули исчисляются в метрах.

Пример: [4 0.1]

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

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

Пример 5

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

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

Пример 5

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

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

Пример: 1.5

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

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

Пример 4

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

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

Пример 3

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

Угол вращения датчика лидара в виде действительного скаляра. Угол вращения является углом вращения downrange оси датчика лидара вокруг 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 добавить шум в измерения датчика. В противном случае измерения не имеют никакого шума.

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

Выведите сгенерированные данные как организованное облако точек в виде 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Длина агента в виде положительного скаляра с действительным знаком. Модули исчисляются в метрах.
WidthШирина агента в виде положительного скаляра с действительным знаком. Модули исчисляются в метрах.
HeightВысота агента в виде положительного скаляра с действительным знаком. Модули исчисляются в метрах.
OriginOffsetСмещение вращательного центра агента от его геометрического центра в виде вектора с действительным знаком из формы [x, y, z]. Вращательный центр или источник, расположен в нижнем центре агента. Для транспортных средств вращательный центр является точкой на земле ниже центра задней оси. Модули исчисляются в метрах.
MeshVerticesПоймайте в сети вершины агента в виде n-by-3 матрица с действительным знаком вершин. Каждая строка в матрице задает точку в трехмерном пространстве.
MeshFacesПоймайте в сети поверхности агента в виде m-by-3 матрица целых чисел. Каждая строка MeshFaces представляет треугольник, заданный идентификаторами вершины, которые являются номерами строк вершин.
RCSPatternШаблон радарного поперечного сечения (RCS) агента в виде numel(RCSElevationAngles)- numel(RCSAzimuthAngles) матрица с действительным знаком. Модули находятся в децибелах на квадратный метр.
RCSAzimuthAnglesУглы азимута, соответствующие строкам RCSPatternВ виде вектора из значений в области значений [–180, 180]. Модули в градусах.
RCSElevationAnglesУглы возвышения, соответствующие строкам RCSPatternВ виде вектора из значений в области значений [–90, 90]. Модули в градусах.

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

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

Описание

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

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

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

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

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

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

Поле Описание
ActorID

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

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 функции.

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

Поймайте в сети представление дорог близко к агенту в виде extendedObjectMesh объект.

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

Пример: 10.5

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

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

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

Данные об облаке точек, возвращенные как pointCloud Объект (Computer Vision Toolbox).

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