实验结果和代码已上传至学校云盘: 链接:
https://rec.ustc.edu.cn/share/41947130-ef56-11ea-ae23-ebe12587560c
-
00:
使用modelNet40的点云数据进行配准实验。
点云数目:2048
modelnet的点云数据非常规整,没有噪声点,
src,target是由同一个点云数据旋转得到的,因而两个点云之间严格一一对应
配准效果非常好。
点云数据:kitti_odometry 序列01
-
01:
点云采样数量:3072对同一个点云进行两次不同的采样,对其中一个进行 较大幅度的 随机旋转平移:
angle: [0.2825798589863413 0.7841613528453935 0.2713792204696284]
trans: [-0.25484568 -0.24589611 0.31652238]
src与target之间的旋转效果明显,绕X轴有非常显著的旋转,地平面扬起。
配准后的点云基本重合,还差一个绕z轴的非常小的旋转量。
-
02:
点云采样数量:3072对同一个点云进行两次不同的采样,对其中一个进行 较小幅度的 随机旋转平移:
角度:[0.04,0.04,0.04], 平移量:[0.01 0.05 0.05]
src 和target 之间的相对位姿较小,基本没有旋转量,沿y轴有一个平移量
配准后的结果src_pred、target_pred应当与src/target重合,但是反而误差更大了,
预测的点云与对应的点云之间有一个绕z轴的大的旋转量。
-
03:
点云采样数量:3072对两个里程计前后帧的点云进行采样,然后进行配准:
注意里程计数据的帧与帧之间,地面是始终在同一平面的,即没有绕x轴的旋转量
相差2帧时:位姿差别太小,配准后的点云位姿反而相差更大,出现了绕x轴的旋转量(地平面抬起)
相差5帧:配准后的点云位姿反而相差更大,个别出现了绕x轴的旋转量,个别出现了绕z轴的旋转
相差7帧:时间距离和空间太大,场景内容都不一样,导致配准后的点云位姿反而相差更大
-
04:
点云数目:2048在实验01的基础上:
针对问题5,将z轴坐标简单乘以一个倍数进行放大。
实验发现较为合适的倍数=3
可以将xy平面的旋转以及绕y轴的旋转配准至大概接近,但均有误差存在
简单的进行放大是不够的,因为一些z轴坐标为负的点会被放大到非常下面
-
05: 与01进行对比
点云采样数量:2048
对同一个点云进行相同的采样,对其中一个进行 较大幅度的 随机旋转平移:
angle: [0.2825798589863413 0.7841613528453935 0.2713792204696284]
trans: [-0.25484568 -0.24589611 0.31652238]
配准结果与modelNet上的结果相近,非常好
-
06: 与05进行对比
点云采样数量:2048
对同一个点云进行相同的采样,对其中一个进行 较大幅度的 随机旋转平移,
对z轴坐标放大3倍
angle: [0.2825798589863413 0.7841613528453935 0.2713792204696284]
trans: [-0.25484568 -0.24589611 0.31652238]
与05结果无较大差异,配准效果较好
-
07:
点云采样数量:2048对同一个点云进行相同的采样,对其中一个进行 较大幅度的 随机旋转平移:
angle: [0.7239022641818816 0.6697969212818884 0.5282925532745861]
trans: [-0.35980887 0.20374635 -0.39225807]
src与target之间的旋转效果明显,绕X轴有非常显著的旋转,地平面扬起。
配准后的点云基本重合,还差一个绕z轴的非常小的旋转量。
配准效果较好
-
08:
点云采样数量:2048对同一个点云进行相同的采样,对其中一个进行 较小幅度的 随机旋转平移:
角度:[0.04,0.04,0.04], 平移量:[0.01 0.05 0.05]
src 和target 之间的相对位姿较小,基本没有旋转量,沿y轴有一个平移量
配准后的结果src_pred、target_pred基本与src/target重合,平移量被配准了
剩余绕z轴的小的旋转量没有配准
配准效果较好
###实验分析:
a. 对比05,01和00,说明点云严格一一对应的关系是决定DCP配准性能的关键
此外,点云数目在大于2048时基本没有差别
b.对比05与06,05与00,说明点云的扁平分布对配准性能的影响不大,
即使是kitti里程计的数据,只要严格一一对应皆可以配准
c. 对比07,08 , 说明相对位姿的大小并不会影响配准的效果。
问题总结:
-
DCP假设输入的两个待配准的点云是完全匹配的,而odometry数据中只有局部点云是匹配的。
-
DCP假设输入的两个点云中的每个点是完全对应的,若将同一点云的两次不同采样作为输入,其配准结果会出现误差。
-
对于前后帧相差较小的两个点云输入,DCP不能捕获之间的细微位姿差异,配准后的结果位姿相差更大
这主要是问题2导致的。由于问题2导致存在本身的配准误差,当两个点云之间的位姿差别小于配准误差时,配准结果一定不好 -
odomentry数据集,或者说自动驾驶点云数据,其scan与scan之间绕x或y轴的旋转量是非常小的,即地平面始终是平行的。
但是这种数据在没有严格一一对应关系的前提下,对于DCP来说是较为相似的,配准结果很差。 -
kitti_odometry数据集在xy平面的尺度较大,在Z轴上的尺度相对较小,因而采样后的输入点云是类似于二维平面的形状,
然而实验发现并不是这个因素导致配准结果变差的。 -
DCP 的使用场景应当是已知两个patch点云对应关系的情况下,求解该对应关系之间的变换关系。
直接使用DCP作为里程计,暗含了对点云前后帧完全相同且点之间严格一一对应的假设,显然这是不成立的。