主要内容

lidarPointCloudGenerator

为驾驶场景生成激光雷达点云数据

描述

lidarPointCloudGenerator系统目标™从安装在ego车辆上的激光雷达传感器产生探测。所有检测均参照ego车辆或车载传感器的坐标系。你可以使用lidarPointCloudGenerator对象,该对象包含参与者和轨迹,您可以使用drivingScenario对象。使用统计传感器模型,lidarPointCloudGenerator物体可以模拟真实的检测加上随机噪声。

生成激光雷达点云:

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

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

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

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

例子

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

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

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

例子: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]

数据类型:|

将噪声添加到激光雷达传感器测量中,指定为真正的.将此属性设置为真正的增加传感器测量的噪音。否则,测量就没有噪声。

数据类型:逻辑

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

数据类型:逻辑

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

数据类型:逻辑

在生成的点云中包含道路网格数据,指定为真正的.将此属性设置为真正的要从输入的道路网格生成点云数据,rdMesh.否则,输出点云没有道路网格数据,您不能指定rdMesh

数据类型:逻辑

ActorID定义为一个正整数标量。ActorID是参与者的唯一标识符。

例子:4

数据类型:|

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

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

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

数据类型:字符|字符串

参与者概要文件,指定为结构或结构数组。每个结构包含一个行动者的物理和雷达特性。

  • 如果ActorProfiles是单一结构,所有的角色都传递到lidarPointCloudGenerator对象使用此概要文件。

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

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

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

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

使用

描述

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

例子

ptCloudisValidTime] =激光雷达(演员rdMeshsimTime此外回报isValidTime,表示点云是否在指定的模拟时间生成。

ptCloudisValidTime集群] =激光雷达(演员rdMeshsimTime此外回报集群,其中包含集群生成点云的分类数据。

___] =激光雷达(演员simTime通过禁用指定从生成的点云排除道路网格数据rdMesh输入。使用此语法,您可以返回前面语法中描述的任何输出。

要排除道路网格数据,请设置HasRoadsInputPort财产

输入参数

全部展开

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

描述
ActorID

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

位置

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

速度

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

作用器的滚转角,指定为实值标量。单位是度。

球场

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

偏航

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

AngularVelocity

角速度(ω)的演员x-,y- - - - - -,z-方向,指定为形式为[ω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对象。它包括一个自我的车辆,行人和其他两辆车。

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

创建一个驾驶场景。

场景= drivingScenario;

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

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

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

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

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

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

图中包含一个轴对象。axis对象包含7个类型为patch, line的对象。

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

创建一个lidarPointCloudGenerator系统对象。

激光雷达= lidarPointCloudGenerator;

将参与者概要文件和ego车辆参与者ID从驾驶场景添加到System对象。

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

绘制点云数据。

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

图中包含一个轴对象。axis对象包含7个类型为patch, line的对象。

图中包含一个轴对象。axis对象是空的。

介绍了R2020a