我正在使用 SACSegmentation from PCL segmentation module为了过滤掉地平面。
该方法是拟合 3D 对象的前表面,而不是拟合地平面,如下面的第二个 pcd 文件所示。
任何建议我应该怎么做才能适应和过滤地平面点。
提前致谢。
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
pcl::SACSegmentation<pcl::PointXYZ> segmentation;
segmentation.setInputCloud(cloudAll);
segmentation.setOptimizeCoefficients(true);
segmentation.setModelType(pcl::SACMODEL_PLANE );
segmentation.setMethodType(pcl::SAC_RANSAC );
segmentation.setDistanceThreshold(20.20);
Scene*.PCD
After the ground plane segmentation
afterApplyingPassthrough
最佳答案
问题是Ransac找到适合更多点的平面,在您的点云中对应于前表面。
如果您对场景和表示点云的坐标系有一些了解,您可以轻松地解决该问题,如下所示:
y
您选择的值(value)。 在这里,我假设
y
表示给定点云坐标系中的垂直轴。该阈值应基于您对场景尺寸的了解。
根据您的点云,您应该使用
y > 200
选择点.您的点云:
仅使用
y > 200
选择点:这是使用选定点正确拟合平面的可视化:
关于3d - 3D数据中机器人定位的地平面检测和去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653077/