sensor_msgs/PointCloud2消息参数意义
一 数据类型定义
1.1 PointCloud2数据结构
sensor_msgs/PointCloud2 Message
File: sensor_msgs/PointCloud2.msg
Raw Message Definition
# 该消息包含一个n维点的集合,它可能包含额外的信息,如法线、强度等。点数据以二进制blob的形式存储,其布局由“fields”数组的内容描述。
# 点云数据可以组织为2d(类似图像)或1d(无序)。以二维图像组织的点云可以由立体或飞行时间等相机深度传感器产生。
# 传感器数据采集时间,坐标坐标系ID (3d点)。
Header header
uint32 seq
time stamp # topic发布的系统时间 unit:秒
string frame_id # topic发布的系统时间 unit:纳秒
# 点云的二维结构。如果云是无序的,高度为1,宽度是点云的长度。
uint32 height
uint32 width
# 描述通道及其在二进制数据块中的布局。
PointField[] fields # 每个点的数据类型,不同枚举值对应不同类型
bool is_bigendian # Is this data bigendian?
uint32 point_step # 单点的数据字节步长
uint32 row_step # 一行数据的字节步长
uint8[] data # 存储点云的数组,总长度为row_step*height
bool is_dense # 如果没有非法数据点为真
1.2 fields数据结构
sensor_msgs/PointField Message
File: sensor_msgs/PointField.msg
Raw Message Definition
# 该消息以PointCloud2消息格式保存一个点条目的描述。
PointCloud2 message format.
uint8 INT8 = 1
uint8 UINT8 = 2
uint8 INT16 = 3
uint8 UINT16 = 4
uint8 INT32 = 5
uint8 UINT32 = 6
uint8 FLOAT32 = 7
uint8 FLOAT64 = 8
string name # 名
uint32 offset # 从点结构开始的偏移量
uint8 datatype # 枚举数据类型
uint32 count # 有多少个元素
二 实际数据分析
header: // 点云的头信息
seq: 4873
stamp: // 时间戳
secs: 595
nsecs: 698295140
frame_id: "livox_frame"
height: 1 // 如果cloud 是无序的 height 是 1
width: 9984 // 点云的长度
fields: // 该消息以PointCloud2消息格式保存一个点条目的描述。
-
name: "x" // “x”坐标信息
offset: 0 // 从点结构开始的偏移量
datatype: 7 // 枚举数据类型 FLOAT32
count: 1 // 域中有多少个元素
-
name: "y" // “y”坐标信息
offset: 4
datatype: 7 // FLOAT32 占4个字节
count: 1
-
name: "z" // “z”坐标信息
offset: 8
datatype: 7 // FLOAT32 占4个字节
count: 1
-
name: "intensity" // 反射强度坐标信息
offset: 12
datatype: 7 // FLOAT32 占4个字节
count: 1
-
name: "tag" // 回波信息
offset: 16
datatype: 2 // UINT8 占1个字节
count: 1
-
name: "line"
offset: 17
datatype: 2 // UINT8 占1个字节
count: 1
is_bigendian: False // 数据存储方式,包括大端与小端,具体解释见后文参考链接
point_step: 18 // 一个点占的字节数
row_step: 179712 // 一行的长度占用的字节数
data:[省略]
is_dense: True // 没有非法数据点
---