【问题标题】:What are the contents of PointCloud2?PointCloud2的内容​​是什么?
【发布时间】:2019-12-21 18:56:15
【问题描述】:

PointCloud2的内容​​在ROS中是什么意思?

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

它的documentation很差

这是 Velodyne LiDAR 发布的 PointCloud2 消息:

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 中的高度等于 1?我预计是 64 岁。

  2. 最后,比如data中的171值是多少?是Y 还是一个范围(针对哪一个光束)?

【问题讨论】:

    标签: ros point-clouds lidar lidar-data


    【解决方案1】:

    也许我有点晚了,但对于任何有同样问题的人:

    对于问题 1.-3。见this。您还需要记住的是,数据存储为 uint8,但如果我没看错的话,您的点应该在 float32 中。因此,每个值(x、y、z、强度等)或“字段”都存储为多个 uint8 字节。所以你需要 4 个数据条目来表示一个点的 x 值。一个点的总长度(以字节为单位)存储为“point_step”,回答您的第四个问题。

    1. 字段偏移量是从点开始到开始存储该字段的字节的字节数。所以每个点都有 x 的前 4 个字节,然后以 4 的偏移量开始 y 的字节等。

    2. 和3.:fields.datatype和fields.count:见this

    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 值的直接信息。

    【讨论】:

    • 感谢您的回复 +1。
    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多