如何使用 PCL 1.9 制作我们自己的点类型

how to make our own Point Type with PCL 1.9

我一直在关注这个 tutorial 来制作它。但我认为它已被弃用,因为你必须

#include <pcl/memory.h>

自 PCL 1.8 以来已被删除。我没有找到其他教程来绕过这个问题。

我需要制作一个新的点类型,除了 XYZ 坐标、法线和颜色之外,它还可以包含 15 个其他标量作为参数。

之后我导入了一个新的点云,它已经写在我的磁盘上,其中包含具有相同参数的点。有了这个点型我就可以用了

经过一番努力后,我是这样解决的:

你不会

#include <memory.h>

由于我提到的原因,它似乎已被弃用。

我建议你关注this tutorial

因此,如果您创建自己的点类型,您的代码将如下所示:

struct MyPointType
{
    PCL_ADD_POINT4D;                  // preferred way of adding a XYZ+padding
    PCL_ADD_RGB;                    //if you want to add colors, you'd better use that

    float the_exact_name_of_the_scalar1;
    float the_exact_name_of_the_scalar2;

    EIGEN_MAKE_ALIGNED_OPERATOR_NEW     // make sure our new allocators are aligned
} EIGEN_ALIGN16;                    // enforce SSE padding for correct memory alignment


POINT_CLOUD_REGISTER_POINT_STRUCT(MyPointType,           // here we assume a XYZ + "test" (as fields)
    (float, x, x)
    (float, y, y)
    (float, z, z)
    (float,rgb,rgb)                                      //colors
    (float, the_exact_name_of_the_scalar1, the_exact_name_of_the_scalar1)
    (float, the_exact_name_of_the_scalar2, the_exact_name_of_the_scalar2)
)

然后您就可以像使用经典点类型一样使用 MyPointType。

使用 PCL 1.9 你应该使用

EIGEN_MAKE_ALIGNED_OPERATOR_NEW     

而不是

PCL_MAKE_ALIGNED_OPERATOR_NEW