我正在尝试在特定数据上构建 3D 对象注册管道。目标是在给定的激光雷达场景中找到指定的 3D 模型,并估计其 6DOF 位姿。尽管必须这样做,但我无法使匹配的功能起作用。我将不胜感激有关调整描述符或转向其他一些更有效的匹配管道的任何提示。我不明白我做错了什么。
我的代码使用 PCL 并改编自:https :
//robotica.unileon.es/index.php?title=PCL/OpenNI_tutorial_5:_3D_object_recognition_(pipeline) 但我使用两个合成点云而不是深度相机图像。它们都是从非常相同的 3D 网格合成的,如下所示:
一个云基本上是网格的均匀采样外表面,第二个是 Velodyne 型激光雷达的模拟框架查看相同的模型。我使用Blensor 进行模拟,云看起来很好。这是对实际问题的简化。
当我使用带有一些预校准的 ICP 时,云几乎完美匹配!
并且特征匹配失败。据我所知,我尝试使用更准确的 FPFH,而不是 SHOT 描述符(以同样的方式失败)。法线计算得很好(全部向内),关键点也很好,但点对点的对应关系很奇怪,没有找到全局对应关系。在图像上,每个点都作为关键点进行测试。我尝试对云进行下采样或使用 ISS 关键点,但没有成功。
大云(左)在点之间约 0.1m 处采样,其最大宽度约为 4m。小云(激光雷达模拟,右)沿着射线线更密集,“射线”之间更稀疏。法线估计半径为 0.3,FPFH 描述符半径设置为 0.7。
我究竟做错了什么???