lidarPointCloudGenerator

生成用于驾驶场景的激光雷达点云数据

描述

lidarPointCloudGenerator系统对象™从安装在自我车辆上的激光雷达传感器产生检测。所有的检测都参考了自我车辆或车载传感器的坐标系统。您可以使用lidarPointCloudGenerator对象中包含参与者和轨迹的场景,您可以使用drivingScenario对象。使用统计传感器模型,lidarPointCloudGenerator对象可以模拟添加随机噪声的真实检测。

生成激光雷达点云:

  1. 创建lidarPointCloudGenerator对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

激光雷达= lidarPointCloudGenerator创建一个lidarPointCloudGenerator对象使用默认属性值生成激光雷达传感器的点云。

例子

激光雷达= lidarPointCloudGenerator (名称,值属性使用一个或多个名称-值对。例如,lidarPointCloudGenerator(‘DetectionCoordinates’,‘传感器笛卡儿’,‘MaxRange’,200)创建了一个激光雷达点云生成器,在传感器笛卡尔坐标系中报告检测,最大检测范围为200米。将每个属性名用引号括起来。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

激光雷达传感器中心的位置,指定为a(x, y)向量。的SensorLocation而且高度属性定义了激光雷达传感器相对于车辆坐标系的坐标。默认值对应于安装在轿车上的激光雷达传感器,位于车顶前缘的中心。单位是米。

例子:0.1 [4]

数据类型:

唯一的传感器标识符,指定为正整数。该特性区分来自多传感器系统中不同传感器的检测。

例子:5

数据类型:

传感器更新之间所需的时间间隔,指定为正实标量。的drivingScenario对象以固定的时间间隔调用激光雷达点云生成器。lidarPointCloudGenerator对象以定义的时间间隔生成新的检测UpdateInterval财产。的值UpdateInterval属性必须是模拟时间间隔的整数倍。在更新间隔之间从传感器请求的更新不包含检测。单位是秒。

例子:5

数据类型:

传感器高于车辆地面平面的高度,指定为正实标量。默认值对应于安装在轿车上的激光雷达传感器,位于车顶前缘的中心。单位是米。

例子:1.5

数据类型:

激光雷达传感器的偏航角,指定为实标量。偏航角是自我飞行器的中心线与激光雷达传感器的下射程轴之间的角度。正偏航角对应于顺时针旋转时,看在正方向的z自我飞行器坐标系的-轴。单位是度。

例子:4

数据类型:

激光雷达传感器的俯仰角,指定为实标量。俯仰角是激光雷达传感器的下射程轴与激光雷达传感器之间的角度x - y自我飞行器坐标系的平面。正俯仰角对应于顺时针旋转时,在正面的方向看y自我飞行器坐标系的-轴。单位是度。

例子:3.

数据类型:

激光雷达传感器的滚转角度,指定为实标量。滚转角是激光雷达传感器的下射程轴围绕的旋转角度x自我飞行器坐标系的-轴。一个正滚角对应于顺时针旋转时,在正面的方向看x坐标系的-轴。单位是度。

例子:4

数据类型:

最大检测范围,指定为正实标量。传感器无法探测超出这一范围的道路和演员。单位是米。

例子:200

数据类型:

距离测量的精度,指定为正实标量。单位是米。

例子:0.01

数据类型:|

激光雷达的方位分辨率,指定为正实标量。方位角分辨率定义了激光雷达可以区分两个目标的最小方位角分离。单位是度。

例子:0.5

数据类型:|

激光雷达的仰角分辨率,指定为正的实标量。仰角分辨率定义了激光雷达能够区分两个目标的最小仰角分离。单位是度。

例子:0.5

数据类型:|

激光雷达的方位限制,指定为形式的1 × 2实值向量(最小,最大).单位是度。

例子:50 [-100]

数据类型:|

激光雷达的高程限制,指定为1 × 2实值向量的形式(最小,最大).单位是度。

例子:10 [-10]

数据类型:|

允许向激光雷达传感器测量添加噪声,指定为真正的.将此属性设置为真正的为传感器测量增加噪声。否则,测量结果没有噪声。

数据类型:逻辑

将生成的数据输出为有组织的点云,指定为真正的.将此属性设置为真正的输出一个有组织的点云。否则,输出是无组织的。

数据类型:逻辑

在生成的点云中包含自我车辆,指定为真正的.将此属性设置为真正的在输出中包含自我车辆。否则,输出点云没有自我载体。

数据类型:逻辑

在生成的点云中添加道路,指定为真正的.将此属性设置为真正的在输出中添加道路。否则,输出点云没有路。

数据类型:逻辑

ActorID自我载体,指定为正整数标量。ActorID是参与者的唯一标识符。

例子:4

数据类型:|

报告检测的坐标系统,指定为以下值之一:

  • “自我笛卡儿”-检测报告在自我车辆笛卡尔坐标系。

  • 传感器笛卡儿的-检测报告在传感器笛卡尔坐标系。

数据类型:字符|字符串

参与者配置文件,指定为结构或结构数组。每个结构都包含一个角色的物理和雷达特征。

  • 如果ActorProfiles是一个单一的结构,所有的演员传递到lidarPointCloudGenerator对象使用此配置文件。

  • 如果ActorProfiles是一个数组,则传递到对象中的每个参与者必须具有唯一的参与者配置文件。

要为您的驾驶场景生成结构数组,请使用actorProfiles函数。该表显示了有效的结构字段。如果不指定字段,则字段将被设置为默认值。如果对象中没有传递任何角色,则ActorID字段不包括在内。

描述
ActorID 场景定义的参与者标识符,指定为正整数。
ClassID 分类标识符,指定为非负整数。0表示未知或未赋值类的对象。
长度 actor的长度,指定为正实值标量。单位是米。
宽度 参与者的宽度,指定为正实值标量。单位是米。
高度 参与者的高度,指定为正实值标量。单位是米。
OriginOffset 演员的旋转中心与几何中心的偏移量,指定为形式为[]的实值向量xyz].转动中心或原点位于物体的底部中心。对于车辆,旋转中心是后轴中心下方的地面上的点。单位是米。
MeshVertices 参与者的网格顶点,指定为n——- - - - - -3.顶点的实值矩阵。矩阵中的每一行在三维空间中定义一个点。
MeshFaces 演员的网格面,指定为——- - - - - -3.整数矩阵。每行MeshFaces表示顶点id定义的三角形,顶点id是顶点的行号。
RCSPattern 物体的雷达横截面(RCS)模式,指定为元素个数(RCSElevationAngles)——- - - - - -元素个数(RCSAzimuthAngles)实值矩阵。单位是分贝每平方米。
RCSAzimuthAngles 方位角对应的行RCSPattern,指定为范围[-180,180]中的值的向量。单位是度。
RCSElevationAngles 仰角对应的行RCSPattern,指定为范围[- 90,90]中的值的向量。单位是度。

有关结构字段的完整定义,请参见演员而且车辆功能。

使用

描述

ptCloud=步骤(激光雷达演员simTime创建一个统计传感器模型来生成激光雷达点云,ptCloud的传感器测量演员在当前的模拟中simTime.一个extendedObjectMesh对象,rdMesh,包含自我车辆周围的道路数据。

ptCloud=步骤(激光雷达演员simTimerdMesh另外输入rdMesh,一个extendedObjectMesh对象,其中包含自我车辆周围的道路数据。

ptCloudisValidTime集群= step(激光雷达演员simTimerdMesh此外回报isValidTime而且集群isValidTime指定是否已生成点云。集群生成的点云的分类数据。

输入参数

全部展开

场景参与者姿态,指定为结构或结构数组。每个结构都对应一个参与者。方法生成此结构actorPoses函数。您也可以手动创建这些结构。该表显示了对象用于生成检测的属性。所有其他的演员属性被忽略。

描述
ActorID

场景定义的参与者标识符,指定为正整数。

位置

参与者的位置,指定为形式为[的实值向量xyz].单位是米。

速度

速度(v)的演员x-,y- - - - - -,z-direction,指定为形式为[的实值向量vxvyvz].单位是米每秒。

演员的滚动角度,指定为实值标量。单位是度。

球场

actor的俯仰角,指定为实值标量。单位是度。

偏航

动器的偏航角,指定为实值标量。单位是度。

AngularVelocity

角速度(ω)的演员x-,y- - - - - -,z-direction,指定为形式为[的实值向量ωxωyωz].单位是度每秒。

有关结构字段的完整定义,请参见演员而且车辆功能。

数据类型:结构体

参与者附近道路的网格表示,指定为extendedObjectMesh对象。

当前模拟时间,指定为正实标量。的drivingScenario对象以固定的时间间隔调用激光雷达点云生成器以按定义的时间间隔生成新的点云UpdateInterval财产。的值UpdateInterval属性必须是模拟时间间隔的整数倍。在更新间隔之间从传感器请求的更新不会生成点云。单位是秒。

例子:10.5

数据类型:

输出参数

全部展开

点云数据,返回为pointCloud(计算机视觉工具箱)对象。

生成点云的有效时间,返回为01isValidTime0所指定的更新间隔之间的时间请求更新UpdateInterval

数据类型:逻辑

生成的点云的分类数据,返回为N2向量。向量定义了生成点云的目标的id。N等于的属性pointCloud对象。向量包含ActorID在第一列和ClassID在第二列。

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

isLocked 确定系统对象正在使用中
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

生成具有多个参与者的驾驶场景的激光雷达点云数据lidarPointCloudGenerator系统对象。通过使用创建驾驶场景drivingScenario对象。它包含一辆自我车、行人和另外两辆车。

创建并绘制有多辆车的驾驶场景

创建一个驾驶场景。

scenario = drivingScenario;

在驾驶场景中添加一条笔直的道路。这条路每个方向都有一条车道。

roadCenters = [0 0 0;70 0 0];lanspecification = lanespec([1 1]);路(场景、roadCenters“道”, laneSpecification);

在驾驶场景中添加一辆自我车辆。

egoVehicle =车辆(场景,“ClassID”, 1“网”, driving.scenario.carMesh);路径点= [1 -2 0;35 -2 0];轨迹(egoVehicle锚点10);

在驾驶场景中添加卡车、行人和自行车,并绘制场景。

卡车=车辆(场景,“ClassID”2,“长度”, 8.2,“宽度”, 2.5,“高度”, 3.5,...“网”, driving.scenario.truckMesh);路点= [70 1.7 0;20 1.9 0];轨迹(卡车,锚点,15);行人=演员(场景,“ClassID”4“长度”, 0.24,“宽度”, 0.45,“高度”, 1.7,...“网”, driving.scenario.pedestrianMesh);路点= [23 -4 0;10.4 -4 0];轨迹(行人,锚点,1.5);自行车=演员(场景,“ClassID”3,“长度”, 1.7,“宽度”, 0.45,“高度”, 1.7,...“网”, driving.scenario.bicycleMesh);路点= [12.7 -3.3 0;49.3 -3.3 0];轨迹(自行车、锚点、5);情节(场景中,“网格”“上”

生成并绘制激光雷达点云数据

创建一个lidarPointCloudGenerator系统对象。

lidar = lidarPointCloudGenerator;

将参与者配置文件和自我车辆参与者ID从驾驶场景添加到System对象。

激光雷达。ActorProfiles = ActorProfiles(场景);激光雷达。EgoVehicleActorID = egoVehicle.ActorID;

绘制点云数据。

bep = birdsEyePlot(“Xlimits”70年[0],“YLimits”[-30] 30日);绘图仪= pointCloudPlotter(bep);传奇(“关闭”);advance(scenario) tgts = targetpose (egoVehicle);rdmesh = roadMesh(egoVehicle);[ptCloud,isValidTime] = lidar(tgts,rdmesh,scenario.SimulationTime);如果isValidTime plotPointCloud(绘图仪,ptCloud);结束结束

R2020a中引入