1、rosbag record cloud
记录点云数据为bag包格式
2、rosrun pcl_ros bag_to_pcd 2017-11-02-10-40-32.bag cloud dd
将bag包转换为PCD格式,并放到dd目录下(保存格式以帧为单位)
3、 pcl_viewer ~/dd/1509590432.823038000.pcd
pcl显示每帧数据
4、PCD文件格式
# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F FFF
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
注意:文件头最后一行(DATA)的下一个字节就被看成是点云的数据部分了,它会被解释为点云数据。
警告:PCD文件的文件头部分必须以上面的顺序精确指定,也就是如下顺序:VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA之间用换行隔开。
PCD文件的文件头部分必须以上面的顺序精确指定,也就是如下顺序:
VERSION : PCD_Vx来编号(例如,PCD_V5、PCD_V6、PCD_V7等等)
FIELDS :·FIELDS –指定一个点可以有的每一个维度和字段的名字。
例如:
FIELDS x y z # XYZ data
FIELDS x y z rgb # XYZ + colors
FIELDS x y z normal_xnormal_y normal_z # XYZ + surface normals
FIELDS j1 j2 j3 # moment invariants
...
SIZE :SIZE –用字节数指定每一个维度的大小。例如:
unsigned char/char has 1 byte
unsigned short/short has 2 bytes
unsignedint/int/float has 4 bytes
double has 8 bytes
TYPE: 用一个字符指定每一个维度的类型。现在被接受的类型有:
I –表示有符号类型int8(char)、int16(short)和int32(int);
U – 表示无符号类型uint8(unsigned char)、uint16(unsigned short)和uint32(unsigned int);
F –表示浮点类型。
COUNT:指定每一个维度包含的元素数目。例如,x这个数据通常有一个元素,但是像VFH这样的特征描述子就有308个。实际上这是在给每一点引入n维直方图描述符的方法,把它们当做单个的连续存储块。默认情况下,如果没有COUNT,所有维度的数目被设置成1。
WIDTH:WIDTH 640 # 每行有640个点
HEIGHT:
有序点云例子:
WIDTH 640 # 像图像一样的有序结构,有640行和480列,
HEIGHT 480 # 这样该数据集中共有640*480=307200个点
无序点云例子:
WIDTH 307200
HEIGHT 1 # 有307200个点的无序点云数据集
VIEWPOINT:定数据集中点云的获取视点VIEWPOINT 0 0 0 1 0 0 0
POINTS:POINTS–指定点云中点的总数。从0.7版本开始,该字段就有点多余了,因此有可能在将来的版本中将它移除。
例子:
POINTS 307200 #点云中点的总数为307200
DATA:指定存储点云数据的数据类型。从0.7版本开始,支持两种数据类型:ascii和二进制。
注意:文件头最后一行(DATA)的下一个字节就被看成是点云的数据部分了,它会被解释为点云数据。
PCD文件的文件头部分必须以上面的顺序精确指定,之间用换行隔开。