数据集下载来自Apollo数据开放平台:http://data.apollo.auto/?locale=zh-cn&lang=en
参考论文:2019 ICCV ——DeepICP: An End-to-End Deep Neural Network for 3D Point Cloud Registration
下载的是样例数据,大概52GB左右。解压之后包含三个文件夹:
分别是地图数据,测试数据,训练数据。每个文件夹中包含点云pcds数据和poses位姿数据。
其中pcds数据可以用PCL点云库读取,如果想提取出来点云坐标(x,y,z),可以直接用PCL把二进制存储坐标的pcd数据转换成txt就可以了。 (这里我后来发现pcd数据也可以直接用matlab fopen打开,然后读其中的坐标,可能是因为它这个是ASCII保存,如果是以二进制的形式就读不出来吧)
poses位姿数据包含是一个九维向量:
第一维是帧号,因为每一秒钟可以扫描几十帧到上百帧,时间戳记录了当前点云数据的时间,后面三维为x,y,z,只有的4维是一个四元数(已经单位化了,qx^2+qy^2+qz^2+qr^2 = 1),可以根据四元数转换成旋转矩阵,然后求得每相邻,比如说100帧之间的一个变换。R旋转矩阵和t平移矩阵。
目前遇到的一些问题:
因为我本人也在做点云配准的研究,使用Apollo数据测试过Deep ICP中提到的文章,差距比较大,在想是不是没有理解他的用法?我现在用的是MapData中的第一帧和第一百帧数据,测试了一下CPD和自己的算法,误差都比较大。
并且我观察到,MapData和TestData、TrainData文件夹中的不同,gt_poses是真值,那init_poses作用是什么?valid_range的作用是什么呢?init_poses和gt_poses是要一起使用吗?
地图数据集中包含pcd格式的点云数据为36304帧,训练数据集中包含pcd格式的点云数据为7538帧,测试数据集中包含pcd格式的点云数据为6443帧。
如果大家有知道的可以评论指教一下,或者说讨论一下,谢谢~
2020/1/14:
如果做配准的话就不用在意init_poses和valid_range了。只需要关系gt_poses,其中包含了每帧的真值;
问了作者,数据的帧间间隔100是这个意思,比如你选取了第一帧,然后在选取第三帧吧打个比方,你确定下两帧之间的距离是不是大于5了,没有的话就采用这两帧点云数据为x和y。之后帧间间隔是100,也就是你再选第101帧和103帧当做x和y。以此类推。