Каково содержание PointCloud2?

Что означает содержание PointCloud2 в ROS?

  1. fields.offset?
  2. fields.datatype?
  3. fields.count?
  4. point_step?
  5. row_step?

Его документация плохая

Вот опубликованное сообщение PointCloud2 от Velodyne LiDAR:

header: 
  seq: 1071
  stamp: 
    secs: 1521699326
    nsecs: 676390000
  frame_id: "velodyne"
height: 1
width: 66811
fields: 
  - 
    name: "x"
    offset: 0
    datatype: 7
    count: 1
  - 
    name: "y"
    offset: 4
    datatype: 7
    count: 1
  - 
    name: "z"
    offset: 8
    datatype: 7
    count: 1
  - 
    name: "intensity"
    offset: 16
    datatype: 7
    count: 1
  - 
    name: "ring"
    offset: 20
    datatype: 4
    count: 1
is_bigendian: False
point_step: 32
row_step: 2137952
data: [235, 171, 54, 190, 53, 107, 250, ...

  1. Почему высота в Velodyne-HDL64e LiDAR равна единице? Я ожидал, что это будет 64.

  2. Наконец, например, что такое 171 значение в data? является Y или это дальность (для какой из балок)?

0 ответов

Возможно, я немного опоздал, но для тех, у кого такая же проблема:

По вопросу 1.-3. увидеть это. Также вам нужно иметь в виду, что данные хранятся как uint8, но ваши точки должны быть в float32, если я правильно вижу. Поэтому каждое значение (x,y,z, интенсивность и т. Д.) Или "поле" сохраняется как несколько байтов uint8. Итак, вам нужно 4 записи данных для представления значения x одной точки. Общая длина одной точки в байтах сохраняется как point_step, отвечая на ваш четвертый вопрос.

  1. Смещение поля - это количество байтов от начала точки до байта, в котором это поле начинает сохраняться. Таким образом, каждая точка имеет первые 4 байта для x, затем со смещением 4 начинаются байты для y и т. Д.

  2. и 3.: fields.datatype и fields.count: См. это

  3. point.step - количество байтов или записей данных для одной точки

  4. row_step: См. вашу собственную ссылку, так что это "количество точек на строку * point_step"

  5. Возможно, ваш сканер печатает строку за строкой? На самом деле я не уверен в этом.

  6. Нет, первые 4 записи представляют значение x, поэтому 235, 171, 190, 53 равно: 11101011 10101011 10111110 00110101, и это представляет собой значение float32. 171 не имеет прямой информации о значениях x, y или z точки.

Другие вопросы по тегам