bag 包文件转化成pcd

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文件的文件头部分必须以上面的顺序精确指定,之间用换行隔开。

 

猜你喜欢

转载自blog.csdn.net/wtj318_/article/details/82853972