Python下sensor_msgs.msg.PointCloud2数据的高效读取

前备知识

查看sensor_msgs.msg.PointCloud2的类结构,重点关注几个参数:Python下sensor_msgs.msg.PointCloud2数据的高效读取_第1张图片

看官方的英文注释的应该能理解个大概,个人唯一不好理解的可能是 is_bigendian 的参数,这部分博客 讲的不错:

对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:

  1. 将低序字节存储在起始地址,这称为小端(little-endian)字节序;
  2. 将高序字节存储在起始地址,这称为大端(big-endian)字节序。
    Python下sensor_msgs.msg.PointCloud2数据的高效读取_第2张图片

言归正传

言归正传,我们的任务就是如何把上面PointCloud2里的data转为np.array?
uint8[]型的data在python里的类型是bytes,16进制形式存储。而python中灵活读取bytes的常用方法是struct库。

我曾做了大量对比

你可能感兴趣的:(ROS,python,numpy,开发语言)