如何解释通过UDP传输的LiDar数据包?

时间:2019-04-10 18:29:43

标签: python sockets udp lidar

我正在使用Velodyne vlp-16激光雷达冰球,需要解释它通过UDP广播的原始值。

我已经建立了一个套接字,正在获取读数,但是我无法弄清楚如何分解并将所获取的数据解释为距离和角度。


import socket

IP_ADDRESS = "192.168.1.77"
PORT_NO = 2368

IP_ADDRESS_2 = "127.0.0.1"
PORT_NO_2 = 6789

serverSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSocket.bind((IP_ADDRESS, PORT_NO))

sendingSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
array = [None]*64

while True:
    array = serverSocket.recv(1248)[0:1248]
    for x in range(42, 48, 1):
        print(x, end ="\n")
    print()

我看到字节数据通过UDP传输,但是我不知道如何将其转换为距离。我得到的数字介于0到600之间。

Packet Structure

Velodyne Coordinates

1 个答案:

答案 0 :(得分:0)

手册中有一些很好的设置信息

https://velodynelidar.com/lidar/products/manual/63-9113%20HDL-32E%20manual_Rev%20G.pdf

第5页的常规设置

  1. 与HDL-32E建立通信
  2. 从随附的db.xml数据文件中创建校准表
  3. 解析数据包以获取旋转,距离和强度数据(建议使用Wireshark)
  4. 将垂直角校准因子应用于数据
  5. 根据需要绘制或存储数据

该手册还提到了db.xml,用于将udp解析为有用的指标

此解析器使用该数据库文件

https://github.com/ritzalam/velodyne-lidar-parser