Как я могу интерпретировать пакеты данных LiDar, поступающие по UDP?

Я использую шайбу для лидара 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.

Структура пакета

Координаты Велодина


person H. Davis    schedule 10.04.2019    source источник


Ответы (1)


В руководстве есть полезная информация по настройке

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

person Sflagg    schedule 10.04.2019