这个例子展示了如何从Velodyne激光雷达传感器设备获取激光雷达数据。激光雷达传感器通过扫描激光束和飞行距离的测量来创建周围环境的3D地图。激光雷达系统被用于各种应用领域,如3D测绘、测量、工业自动化和自动车辆导航。
本例中使用了Velodyne Puck(VLP-16)传感器。该型号有16个扫描激光束(通道),高达360度水平视场(FOV),30度垂直视场,100米射程。这个测速激光雷达
MATLAB中的接口支持多种Velody金宝appne激光雷达模型。请参考制造商提供的仪器规格,选择适合您特定应用的传感器模型。
这个例子需要:
MATLAB R2019a或更高版本。
激光雷达的工具箱。
用于Velodyne激光雷达金宝app传感器的激光雷达工具箱支持包。
支持金宝app的Velodyne激光雷达传感器。本例中使用Velodyne圆盘(VLP-16)。
Velodyne Puck(VLP-16)传感器是一种以太网连接设备,提供一个集成的web服务器,用于配置操作参数,如FOV或转速。请参阅VLP-16用户手册进行所需的网络设置和传感器参数配置。在本例中,VLP-16传感器直接连接到使用专用以太网适配器的计算机,并使用传感器的默认IP地址值(192.168.0.201)。
要配置传感器的参数,请通过打开传感器的web服务器URL (http://192.168.0.201/)。要测试传感器网络的设置、配置和操作,可以使用制造商提供的VeloView应用程序。
创建一个测速激光雷达
对象从VLP-16设备接收数据。MATLAB使用默认UDP端口值2368从设备接收数据。如果设备配置为将数据广播到其他端口,则需要将端口号指定为附加的名称-值对参数,例如,velodynelidar('VLP16','Port',2368)
.
激光雷达(“VLP16”);
查看实时扫描数据从激光雷达传感器使用预览
函数。
预览(激光雷达)暂停(10)closePreview(激光雷达)
激光雷达传感器以数据帧的形式连续传输周围环境的3D地图。每个数据帧代表FOV的一次完整扫描。这个测速激光雷达
接口提供了连续的缓冲获取功能,可以使用开始
函数。处理后的激光雷达数据帧存储在输入缓冲区中。
%开始采集开始(激光雷达)
从激光雷达传感器读取一帧数据。每个数据帧在MATLAB中表示为apointCloud
数据类型。数据值表示距离度量,默认单位为米(m)。
使用读
函数将数据帧读入MATLAB工作区。您可以使用可选的第二个参数读取帧时间戳。时间戳作为datetime
数据类型。
[帧,时间戳]=读取(激光雷达,1)
frame=具有属性的点云:位置:[32×1846×3双精度]颜色:[]法线:[]强度:[32×1846双精度]计数: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帧的序列。获取的帧数据表示为pointCloud
数组,获取的时间戳为datetime
大堆
numFrames=100;[帧,时间戳]=读取(激光雷达,numFrames);
停止采集并断开与激光雷达传感器的连接。
停止(激光雷达)清晰激光雷达
将获取的数据帧和时间戳保存到MAT文件中。
保存lidardata.mat框架时间戳
您可以使用时间戳数据确定每秒采集的激光雷达数据帧数(帧速率)。激光雷达传感器的帧速率取决于配置的电机转速、视野和其他传感器参数。
fps=1/平均值(秒(差(时间戳)))
fps = 11.6484
使用现有的pcplayer
反对(lidarViewer
)将获取的帧作为动画回放。这使用了一个自定义的助手函数(重播
),在本例的末尾包含。
回放(激光雷达查看器、帧、帧)
以下工具箱提供了用于处理和分析激光雷达和三维点云数据的专用算法和工具:
计算机视觉工具箱
自动驾驶工具箱
函数回放(激光雷达查看器、帧、帧)%REPLAY在PCPLAYER图形中重放点云阵列数据%LIDARVIEWER是现有的PCPLAYER对象%FRAMES是一个点云数组% FPS是回放的近似帧率%%用法示例:% lidar = velodynelidar('VLP16');%开始(激光雷达)%[帧,时间戳]=读取(激光雷达,100);%停止(激光雷达)%透明激光雷达% FPS = 1/mean(秒(diff(时间戳)));%lidarViewer=pcplayer([-40]、-40]、-10 10]);%回放(lidarViewer、帧、fps);dt=1/fps;对于ii = 1:numel(frames) view(lidarViewer,frames(ii)) pause(dt)终止终止