Velodyne VLP-16激光雷达数据格式解析

VLP-16型号雷达具有在垂直方向上16线的激光束,激光雷达在采集三维数据时,每一步的旋转(旋转频率可设定频率不同旋转的步进角度不同)可在空间上采集16个点的三维数据。在垂直方向上的视角范围为-15度到+15度,每个激光束对应的角度分别为如下图所示:

Velodyne VLP-16激光雷达数据格式解析_第1张图片

 激光雷达采用UDP协议传输数据,获取激光雷达数据的方法:1、自编写代码获取雷达的数据,2、可通过Wireshark软件实时的获取激光雷达的数据,激光雷达每一帧的数据长度固定为1248字节,其中分别为前42字节的前数据包标识、12组数据包、4字节时间戳和最后两字节雷达型号参数。12组数据包中前两字节为数据包的开始标识(0xFFEE)、接下去两字节为的旋转角度(当前角度)值和连续32*(2字节的距离值+1字节的激光反射强度值)字节的距离信息,其中32*3字节分别为雷达两次获取探测信息,每个数据包开头所携带的旋转角度是指当前数据包前16*3字节对应的角度,而后16*3字节对应的旋转角度激光雷达没有直接给出,需要通过计算前后两次旋转角度然后求取平均值获得。其帧格式如下图所示:

Velodyne VLP-16激光雷达数据格式解析_第2张图片

截取一部分雷达的数据包如下所示:

Velodyne VLP-16激光雷达数据格式解析_第3张图片Velodyne VLP-16激光雷达数据格式解析_第4张图片

                                  左图:数据包前一部分                                                              右图:数据包后一部分

依据上图数据包的最左边为00000h表示行标识,左图第一行画红线部分FFEE为数据包的开头标识,E063十六进制两字节标识当前选择角度,B6072A三字节前两字节B607标识雷达激光的探测距离信息,2A表示激光反射强度。右图画红线部分最后面六个字节表示数据帧的时间戳和雷达信息参数,其中6D69940F表示时间戳而3722表示雷达的参数信息。

1、旋转角度值的计算

例如上图第一个数据包的旋转角度为0xE0、0x63

a、反转两个字节变成十六进制63E0

b、把63E0变成无符号的十进制为25568

c、再把25568处于100.0得到255.68,那么得到的值255.68就是当前的旋转角度值

2、16线激光分别测得的距离

例如上一个图第一个数据包第一个激光线的距离,其值为B6072A

a、B6072A其中B607为距离2A为反射强度,首先反转两个距离的字节变成07B6

b、把07B6变成无符号的十进制为1974

c、该型号雷达的分辨率为2.0mm,所以激光束测得的距离为1974 * 2mm = 3948mm

d、3948mm转化为米等于3.948m

3、获得帧的时间戳和雷达型号参数

例如上一个图最后六个字节的数据6D69940F3722

a、前四个字节的数据为时间戳为6D69940F,然后反转顺序0F94696D

b、0F94696D无符号十进制的值为261384557,单位为us

c、把261384557除以1000000可获得当前的时间(单位:秒)

d、后两个字节3722表示雷达的型号和参数,具体的意义如下图所示:

Velodyne VLP-16激光雷达数据格式解析_第5张图片

 

4、把角度和距离信息转化为三维坐标XYZ值,如下图所示:

Velodyne VLP-16激光雷达数据格式解析_第6张图片

其中R的值为激光雷达测得的与障碍物的直线距离,该值为上述第2点测得的值,其中垂直角度ω可通过查表方法获得,每个激光束对应的角度ω是固定的本文第一张图所示,而α则有第1点测得的旋转角度值。已知旋转角度α、垂直角度ω和R通过图中所述的公式即可求得XYZ值。

 

你可能感兴趣的:(激光雷达)