主要内容

lidarSensor

模拟激光雷达传感器

描述

lidarSensor系统对象™模拟安装在自我车辆上的激光雷达传感器,并输出给定场景的点云数据。生成的数据是基于传感器姿态和场景中出现的演员的自我车辆坐标系。您可以使用drivingScenario(自动驾驶工具箱)对象来创建包含参与者和轨迹的场景,然后使用lidarSensor对象。

使用此对象模拟激光雷达传感器:

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

  2. 调用带有参数的对象,就像调用函数一样。

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

创建

描述

激光雷达= lidarSensor创建一个lidarSensor具有默认属性值的对象。您可以使用该对象为给定的3d环境生成激光雷达点云数据。

例子

激光雷达= lidarSensor (名称=值使用一个或多个名称-值参数设置对象的属性。例如,lidarSensor (UpdateRate = 0.2)创建一个lidarSensor对象生成点云检测0.2秒。

属性

全部展开

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

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

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

传感器的唯一标识符,指定为正整数。在多传感器系统中,该指标将不同的传感器彼此区分开来。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

ActorID自我载体的,被指定为正整数。自我载具是装着传感器的行为人,而且ActorID是参与者的唯一标识符。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

两个连续传感器更新之间的时间间隔,指定为正标量。的lidarSensor对象按此属性指定的间隔生成新的检测。该值必须是模拟时间的整数倍。在更新间隔之间从传感器请求的更新不包含检测。单位以秒为单位。

数据类型:|

传感器中心位置,指定为形式为[的三元素矢量xy高度].的价值x而且y表示传感器相对于的位置x- - -y自我车辆坐标系的-坐标轴。高度是传感器离地面的高度。默认值定义了安装在轿车车顶前缘的激光雷达传感器。单位是米。

数据类型:|

传感器方向,指定为形式为[球场偏航].这些值是关于自我交通工具坐标系的。单位以度为单位。

  • -滚转角度是围绕前后轴的旋转角度,即x自我车辆坐标系的-轴。正面的滚转角度相当于顺时针方向的旋转x设在。

  • 球场-俯仰角是围绕左右轴旋转的角度,这是y自我车辆坐标系的-轴。正面的滚转角度相当于顺时针方向的旋转y设在。

  • 偏航-偏航角是围绕垂直轴旋转的角度,即z自我车辆坐标系的-轴。正面的滚转角度相当于顺时针方向的旋转z设在。当从上面观看车辆时,这个旋转呈现逆时针方向。

数据类型:|

激光雷达传感器的最大探测范围,指定为正标量,单位为米。传感器无法检测超出这个范围的道路和行为者。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

传感器量程测量的精度,指定为正标量。单位是米。

数据类型:|

点云数据添加了噪声,指定为真正的.当设置为真正的,该函数向点云中的每个点添加随机高斯噪声RangeAccuracy属性作为一个标准偏差。否则,数据无噪声。

数据类型:逻辑

组织输出点云,指定为真正的

  • 真正的-函数返回表单的有组织的点云——- - - - - -N3,高程通道的数量是多少N是点云中的方位角通道数。

  • -函数返回表单的无组织点云P3,P是点云中的点数。

数据类型:逻辑

激光雷达传感器的方位角分辨率,指定为度数为正的标量。

数据类型:|

激光雷达传感器的仰角分辨率,指定为度数为单位的正标量。

数据类型:|

激光雷达传感器的方位角极限,指定为形式为[最小值马克斯].取值范围必须在此范围内(-180、180)马克斯必须大于最小值.单位以度为单位。

数据类型:|

激光雷达传感器的海拔极限,指定为形式为[的双元矢量最小值马克斯].取值范围必须在此范围内(-180、180)马克斯必须大于最小值.单位以度为单位。

数据类型:|

激光雷达传感器的仰角,指定为N元向量。N为高程通道数。取值范围必须在此范围内(-180、180).单位以度为单位。

数据类型:|

场景中演员的身体特征,指定为结构或l-element数组的结构。l是场景中演员的数量。

若要为驾驶场景生成参与者配置文件结构数组,请使用actorProfiles(自动驾驶工具箱)函数。您也可以手动创建这些结构。该表显示有效的结构字段。

描述 价值
ActorID 参与者的唯一标识符。在有多个参与者的场景中,这个值将区分不同的参与者。 正整数
ClassID

参与者的用户定义分类ID。

ClassID 类名
1
2 卡车
3. 自行车
4 行人
5 泽西岛的障碍
6 护栏

积极的标量
长度 演员的长度,以米为单位。 积极的标量
宽度 演员的宽度,以米为单位。 积极的标量
高度 演员的身高,以米为单位。 积极的标量
OriginOffset

动作者的旋转中心与几何中心的偏移量。旋转中心,或原点,位于演员的底部中心。对于车辆来说,旋转中心是后轴中心下方的地面点。

这种形式的三元素向量[x y z].单位是米。

MeshVertices 网格表示中参与者的顶点。 N-by-3的数字矩阵,其中每一行定义了三维空间中的一个顶点。
MeshFaces 在网格表示的演员的脸。 -by-3的整数矩阵,其中每一行表示一个由顶点id定义的三角形,顶点id是MeshVertices
MeshTargetReflectances 行动者的每个三角形面的材料反射率。 -by-1数字向量,其中是actor的三角形面数。每个值都必须在该范围内[0, 1]

有关这些结构字段的更多信息,请参见演员(自动驾驶工具箱)而且车辆(自动驾驶工具箱)功能。

使用

描述

ptCloud=激光雷达(tgtPoses时间产生一个激光雷达点云,ptCloud,使用演员的姿势tgtPoses在指定的模拟时间时间.函数按指定的时间间隔生成数据UpdateRate的属性lidarSensor对象激光雷达

ptCloudisValidTime集群=激光雷达(tgtPoses时间此外回报isValidTime,表示模拟时间是否有效集群,其中包含输出点云的分类数据。

输入参数

全部展开

演员在场景中摆姿势,指定为l-结构的元素数组。每个结构都对应一个参与者。l使用的参与者数量。

方法可以生成此结构actorPoses(自动驾驶工具箱)函数。您也可以手动创建这些结构。每个结构都有以下字段:

描述 价值
ActorID 参与者的唯一标识符。 积极的标量
位置 演员相对于自我交通工具坐标系的位置,单位是米。 形式为[的向量X y z
速度 速度(V),单位是米每秒,沿着x- - - - - -,y- - - - - -,z——方向。

形式为[的向量VxVyVz

默认值:[0 0 0]

演员滚动角度的角度。

数字标量

默认值:0

球场 演员的俯仰角以度为单位。

数字标量

默认值:0

偏航 演员的偏航角度,以度为单位。

数字标量

默认值:0

AngularVelocity 角速度(ω),以度/秒为单位,沿着x- - - - - -,y- - - - - -,z——方向。

形式为[的向量ωxωyωz

默认值:[0 0 0]

模拟时间,指定为正标量。的lidarSensor对象按指定的间隔生成新的检测UpdateRate财产。的值UpdateRate属性必须是模拟时间间隔的整数倍。更新间隔之间从传感器请求的更新不会生成点云。

数据类型:|

输出参数

全部展开

从场景生成的点云数据,返回为pointCloud对象。

有效的模拟时间,返回为逻辑0)或1真正的).取值为0控件指定的更新间隔之间请求的更新UpdateRate财产。

场景中演员的分类数据,返回为——- - - - - -N-by-2数组用于有组织的点云或P-by-2矩阵的无组织点云。第一列包含ActorIDS,第二列包含ClassIDS。N组织的点云中的行数和列数和P是无组织点云中的点数。

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

加载合成场景数据,其中包含使用drivingScenario(自动驾驶工具箱)对象添加到工作区中。

sceneData = load(“scene_data.mat”);sceneActorProfiles = scendata . actorprofiles;scenetargetpose = scenedata . targetpose;

加载目标材料反射率数据。

reflecancedata = load(“scene_target_reflectances.mat”);targetReflectance = reflecancedata . targetReflectance;

定义每个参与者的反射率。

i = 1:numel(sceneActorProfiles) sceneActorProfiles(i)。meshtargetreflecances = targetReflectance{i};结束

创建一个lidarSensor系统对象,并为该对象定义参与者概要文件。

激光雷达= lidarSensor(AzimuthResolution=0.5);激光雷达。ActorProfiles = sceneActorProfiles;

创建一个pcplayer对象来可视化激光雷达传感器点云检测。

Player = pcplayer([-100 100],[-20 20],[0 5]);

在有效的模拟时间生成并可视化点云检测。

i = 1:5:numel(scenetargetposed)如果(~ player.isOpen)打破结束[ptCloud,isValid] = lidar(scenetargetpose {i},i*0.1);如果(isValid)视图(球员,ptCloud)结束结束

{

版本历史

在R2022a中引入

Baidu
map