主要内容

重置

重置CurrentTime的属性velodyneROSMessageReader对象的默认值

描述

例子

重置(veloReader)重置CurrentTime指定的属性velodyneROSMessageReader对象的默认值。的值是默认值开始时间财产的velodyneROSMessageReader对象。

例子

全部折叠

调速发电机ROS消息存储数据的格式,需要一些解释之前,可以用于进一步的处理。MATLAB®可以帮助你通过格式化调速发电机ROS消息,便于使用。在本例中,您可以探索VelodyneScan从调速发电机激光雷达处理消息。

先决条件:处理基本的ROS消息

加载示例消息

负载调速发电机消息示例。这些消息从调速发电机激光雷达传感器收集的数据填充。

负载(“lidarData_ConstructionRoad.mat”)

VelodyneScan消息

VelodyneScan消息是ROS的消息包含调速发电机激光雷达扫描数据包。你可以看到的标准ROS格式VelodyneScan适当的消息通过创建一个空的消息类型。使用消息结构格式获得更好的性能。

emptyveloScan = rosmessage (“velodyne_msgs / VelodyneScan”,“DataFormat”,“结构”)
emptyveloScan =结构体字段:MessageType:“velodyne_msgs / VelodyneScan”标题:[1×1 struct]包:[0×1 struct]

既然你创建了一个空的消息,emptyveloScan不包含任何有意义的数据。为了方便起见,加载lidarData_ConstructionRoad.mat文件包含一组VelodyneScan完全填充和存储的消息公司变量。每个元素的公司单元阵列是一个VelodyneScanROS消息结构体。在每个主数据VelodyneScan消息的属性,它包含多个VelodynePacket消息。你可以看到标准的ROS VelodynePacket消息通过创建一个空的消息格式适当的类型。

emptyveloPkt = rosmessage (“velodyne_msgs / VelodynePacket”,“DataFormat”,“结构”)
emptyveloPkt =结构体字段:MessageType:“velodyne_msgs / VelodynePacket”邮票:[1×1 struct]数据:[1206×1 uint8]

创建调速发电机ROS消息读者

velodyneROSMessageReader对象读取的点云数据VelodyneScanROS消息根据其指定的模型类型。注意,提供一个不正确的设备模型可能导致不当校准点云。这个示例使用的消息“HDL32E”模型。

veloReader = velodyneROSMessageReader(短信息,“HDL32E”)
veloReader = velodyneROSMessageReader属性:VelodyneMessages:{28×1细胞}DeviceModel:“HDL32E”CalibrationFile:“M: 2021 _06_16_h16m50s15_job1697727_pass \ jobarchive \ Bdoc21b \ \ matlab工具箱\ \ \ pointclouds \工具\ velodyneFileReaderConfiguration \ HDL32E共享。xml的NumberOfFrames: 55持续时间:2.7477秒开始时间:1145.2秒EndTime: 1147.9秒时间戳:[1145.2秒1145.4 1145.2 1145.3秒1145.3秒秒秒1145.6 1145.4 1145.6秒1145.5 1145.5秒秒秒秒1145.8 1145.7 1145.8秒1145.7秒秒秒1145.9秒1145.9秒…]CurrentTime: 1145.2秒

提取点云

你可以从原始数据包消息中提取点云的帮助下velodyneROSMessageReader对象。通过提供一个特定的帧数或时间戳,可以提取点云velodyneROSMessageReader对象使用readFrame对象的功能。如果你叫readFrame没有一个帧数或时间戳,它提取中的下一个点云序列的基础上CurrentTime财产。

创建一个标量表示持续时间1秒后第一个点云阅读。

timeDuration = veloReader。开始时间+秒(1);

阅读第一个点云记录或在给定的时间。

ptCloudObj = readFrame (veloReader timeDuration);

访问位置在点云数据。

ptCloudLoc = ptCloudObj.Location;

重置CurrentTime的属性veloReader的默认值

重置(veloReader)

显示所有点云

你也可以遍历所有点云在输入调速发电机ROS的消息。

定义x - y -,z -轴的限制pcplayer在米。标签的轴。

xlimits = 60 [-60];ylimits = 60 [-60];zlimits = 20 [-20];

创建点云的球员。

球员= pcplayer (xlimits ylimits zlimits);

标签的轴。

包含(player.Axes“X”(m));ylabel (player.Axes“Y (m)”);zlabel (player.Axes“Z”(m));

第一个捕获感兴趣的点云在0.3秒到输入消息。设置CurrentTime属性,时间开始阅读点云。

veloReader。CurrentTime= veloReader.StartTime + seconds(0.3);

显示点云流2秒。检查是否一个新的框架可用,继续过去的2秒,删除最后一个条件。遍历文件通过调用readFrame阅读的点云。使用点云播放器显示它们。

(hasFrame (veloReader) & & isOpen(球员)& & (veloReader。CurrentTime < veloReader。开始时间+ seconds(2))) ptCloudObj = readFrame(veloReader); view(player,ptCloudObj.Location,ptCloudObj.Intensity); pause(0.1);结束

输入参数

全部折叠

调速发电机ROS消息读者,作为一个指定velodyneROSMessageReader对象。

版本历史

介绍了R2020b