作者:ShownSun
公众号:时沿科技
文章目录
Velodyne 64线激光雷达协议
注释:最新的用户指南与编程手册可访问www.velodynelidar.com官网获取;
雷达简介
本文重点介绍协议的格式一些注意事项与初始校准数据的分析,其他只做简要介绍,可通过www.velodynelidar.com官网获取最新的用户指南与编程手册进行了解。
适应的型号
该协议适应于S2、S2.1版本的HDL-64E传感器;
排列方式
从下图可以看出64个激光收发器的排列方式很奇特,不是水平或者竖直排列。
64线激光器每个激光点的实际初始位置保存在xml为文件中,可以通过VeloView软件(https://www.paraview.org/veloview/)的安装目录share文件夹或者github上VeloView源码(https://github.com/Kitware/VeloView)对应的share文件夹位置找到。64线xml中包含的64个数据包校准信息rotCorrection、vertCorrection、distCorrection、distCorrectionX、distCorrectionY、vertOffsetCorrection、horizOffsetCorrection、focalDistance、focalSlope,分别表示方位角、俯仰角、矫正距离、矫正距离X、矫正距离Y等等初始校准数据。
如果自己设计的雷达工作方式单一,比如单线的激光雷达,从上到下扫描,扫完一列后在进行横行移动一个角度分辨率。那么校准信息很容易填写,只需要将64个数据包校准信息中的俯仰角vertCorrection平均分配一下,其他信息全部置零即可,如下图所示。
工作方式
下块激光从0号开始依次启动,直到最后一个下块激光器31号。上块激光从32号开始依次启动,直到最后一个上块激光器63号。也就是说,激光器32号和激光器0号同时工作,激光器33号和激光器1号同时工作,以此类推。
该传感器具有相同数量的上、下激光器。因此,当延时表中断时,每个数据对分别表示上块和下块。以太网数据包中的上、下块数据对具有相同的延迟值。
传输速率
UDP IP地址
传感器使用的是UDP包,可以通过Wireshark软件实时监控数据包来详细分析数据结构。默认的源(传感器)IP地址为192.168.3.043,默认的目的IP地址为192.168.3.255。如果要更改上面的任何一个IP地址,请执行命令# hdlipassssssssssdddddddddd $(大小写敏感)。
ssssssssssss为源12位IP地址;
dddddddddddd为目的12位IP地址;
Veloview软件可以支持实时的传感器流数据,对于IP的要求没有特别固定的要求,一定范围内的IP地址都支持。
协议详解
真实的采样数据可以通过Velodyne官网(https://velodynelidar.com/downloads/)下载使用,然后使用Veloview软件或者Wireshark软件打开进行分析。
协议包格式
传感器输出UDP以太网报文。每个数据包包含一个报头、一个发射数据和状态数据。数据包是集合了六个上块序列和六个下块序列的所有发射数据。上块激光首先采集距离、强度数据,然后采集下块激光数据。然后将数据包与状态和报头数据结合起来在以太网上传输UDP数据包。数据包以后进先出(LIFO)的顺序从最后一个字节开始传输。
状态数据总是包含一个4字节的GPS时间戳,表示从一小时开始的微秒数。另外,状态数据包含一种数据类型。其他的状态数据在不同的信息片段序列中旋转。
上述说的比较抽象,主要原因是激光器排列方式比较繁杂,水平线之上包含32个激光器,水平线之下包含32个激光器,且水平线上下的对应激光器同时工作,所以传输数据的时候,数据是一对一对的上下激光器数据。
比如从velodyne官网下载的32线雷达采样数据HDL32-V2_Tunnel.pcap(64线采样数据没有找到),使用wireshark打开后,选择其中一个长度为1248 byte长度的UDP数据包。结合上述图像HDL-64E中的协议格式,从图中可以分析得到,前两个字节EEFF表示upper,后面紧跟32个3byte的距离、强度数据,合起来就是100 byte,重复12次就是1200 byte,最后6 byte是时间戳与状态类型与值,32线的状态类型与值是固定的37 21(16进制)。
64线与32线不同的就是先发32个upper的距离强度数据,再发32个lower的距离强度数据,然后重复6次。还有一点不同的就是状态类型与值分别是37 a0。
传输数据格式
激光雷达传输数据包括2 byte的距离数据和1 byte的强度数据;先传输上32线激光器数据,再传输下32线激光器数据。
GPS时间戳格式
如果自己的产品没有这个信息,协议中的4 byte时间戳数据置零即可。
状态数据格式
这两个字节很重要,一般32线激光雷达对应的字节为37 21。64线激光雷达对应的字节为37 a0。可以看到到velodyne官网查看对应的文档或者从veloview源码中获取。
Veloview使用方法
实时数据
该选项主要用于实时显示激光雷达传感器传输的数据,需要选择对应线数的xml文件,配置LIDAR Port等一些信息。
捕获数据
该选项主要用于静态显示从wireshark捕获的数据包数据,选择pcap文件及对应的xml。