主要内容

从Velodyne激光雷达传感器记录和可视化3D数据

这个例子展示了如何从Velodyne激光雷达传感器设备获取激光雷达数据。激光雷达传感器通过扫描激光束和飞行距离的测量来创建周围环境的3D地图。激光雷达系统被用于各种应用领域,如3D测绘、测量、工业自动化和自动车辆导航。

本例使用Velodyne Puck (VLP-16)传感器。该模型有16个扫描激光束(通道),高达360度水平视场(FOV), 30度垂直视场,和100米的射程。的velodyneLidarMATLAB中支持多种Velodyne激万博1manbetx光雷达模型的接口。通过咨询制造商提供的仪器规格,选择适合您特定应用的传感器型号。

需求

这个例子需要:

  • MATLAB R2019a或更高版本。

  • 激光雷达的工具箱。

  • Velodyne激光雷达传感万博1manbetx器的激光雷达工具箱支持包。

  • 支持万博1manbetxVelodyne激光雷达传感器。本例中使用Velodyne Puck (VLP-16)。

安装和配置Velodyne激光雷达传感器

Velodyne Puck (VLP-16)传感器是一种以太网连接设备,提供一个集成的web服务器,用于配置工作参数,如FOV或转速。查阅VLP-16用户手册进行所需的网络设置和传感器参数配置。在本例中,VLP-16传感器直接连接到使用专用以太网适配器的计算机,并使用传感器的默认IP地址值(192.168.0.201)。

要配置传感器的参数,请通过打开传感器的web服务器URL (http://192.168.0.201/)。要测试传感器网络的设置、配置和操作,可以使用制造商提供的VeloView应用程序。

连接Velodyne激光雷达传感器

创建一个velodynelidar对象从VLP-16设备接收数据。MATLAB使用默认的UDP端口值2368从设备接收数据。如果您的设备被配置为将数据广播到不同的端口,则需要将端口号指定为附加的名称-值对参数,例如:velodynelidar(“VLP16”、“端口”,2368年)

激光雷达= velodynelidar (“VLP16”);

预览实时激光雷达数据

查看实时扫描数据从激光雷达传感器使用预览函数。

预览(激光雷达)暂停(10)closePreview(激光雷达)

获得激光雷达数据

激光雷达传感器连续地将周围环境的3D地图作为数据帧进行传输。每个数据帧代表视场的一次全扫描。的velodynelidar接口提供了连续的缓冲获取功能,可以使用开始函数。处理后的激光雷达数据帧存储在输入缓冲区中。

%开始收购开始(激光雷达)

从激光雷达传感器读取一帧数据。每个数据帧在MATLAB中表示为apointCloud数据类型。数据值表示距离度量,默认单位为米(m)。

使用函数读取数据帧到MATLAB工作区。您可以使用可选的第二个参数来读取帧时间戳。时间戳作为datetime数据类型。

(框架、时间戳)=阅读(激光雷达,1)
frame = pointCloud with properties: Location: [32×1846×3 double] Color: [] Normal: [] Intensity: [32×1846 double] Count: 59072 XLimits: [-90.9482 83.9612] YLimits: [-103.9809 102.8859] ZLimits: [-3.2730 15.8287]
时间戳=datetime24 - 4月- 2019 12:20:15:622

可视化获取数据帧

显示数据帧(点云)使用pcplayer并使用数据限制作为视图XYZ限制。

lidarViewer = pcplayer (frame.XLimits frame.YLimits frame.ZLimits);视图(lidarViewer框架)

通过设置感兴趣的查看区域pcplayer轴的限制。

lidarviewer . ax . xlim = [-30 30];lidarviewer . ax . ylim = [-30 30];lidarviewer . ax . zlim = [-10 10];

读取帧序列

读取100帧序列。获取的帧数据用a表示pointCloud数组,获取的时间戳为datetime数组中。

numFrames = 100;(框架,时间戳)=阅读(激光雷达,numFrames);

停止收购

停止采集并断开与激光雷达传感器的连接。

停止(激光雷达)清晰激光雷达

保存了数据

将获取的数据帧和时间戳保存到mat文件中。

保存lidardata.mat时间戳

确定激光雷达帧率

您可以使用时间戳数据来确定每秒获取的激光雷达数据帧数(帧率)。激光雷达传感器的帧率取决于配置的电机转速、FOV和其他传感器参数。

fps = 1 /意味着(秒(diff(时间戳)))
fps = 11.6484

查看激光雷达数据回放

使用现有的pcplayer对象(lidarViewer)以重放获得的帧作为动画。它使用了一个自定义助手函数(重播),在本例的末尾包含。

回放(lidarViewer、框架fps)

激光雷达数据处理与分析

以下工具箱提供了处理和分析激光雷达和三维点云数据的专用算法和工具:

  • 计算机视觉的工具箱

  • 自动驾驶的工具箱

本地函数

函数回放(lidarViewer、框架fps)在PCPLAYER图形中重放点云阵列数据% LIDARVIEWER是一个已存在的PCPLAYER对象% FRAMES是一个pointCloud数组% FPS是回放的近似帧率%的示例用法:% lidar = velodynelidar('VLP16');%开始(激光雷达)%[帧,时间戳]=读取(激光雷达,100);%停止(激光雷达)%清晰的激光雷达% FPS = 1/mean(秒(diff(时间戳)));% lidarViewer = pcplayer([-40 40],[-40 40],[-10 10]);%回放(lidarViewer、框架fps);dt = 1 /帧;ii = 1:numel(frames) view(lidarViewer,frames(ii)) pause(dt)结束结束