2016-04-10 16 views
1

Ich habe diesen Code:Wie kann verhindert werden, dass die Ebene auf xz- und yz-Achsen eben ausgerichtet wird?

SACSegmentation<PointXYZ> seg; 
seg.setAxis(Vector3f(0, 0, 1)); 
seg.setEpsAngle(0.5 * M_PI/180.0); 
seg.setModelType(SACMODEL_PLANE); 
seg.setMethodType(SAC_RANSAC); 
seg.setDistanceThreshold(0.2); 
// then set the input cloud and filter.. 

Die Achse und epsAngle scheint nichts all-- der Punktwolke zu tun, nimmt noch Wände auf, wenn der Sensor ihnen nahe genug kommt, dass die Wand mehr Punkte als der Boden hat . Ich konstruiere die Punktwolke explizit aus xyz-Punktdaten, und daher werden PointCloud-Elementvariablen wie sensor_origin_ und sensor_orientation_ wahrscheinlich nicht gesetzt (es sei denn, PointCloud setzt sie auf einen Standardwert). Könnte das die Wurzel meines Problems sein? Oder mache ich etwas anderes falsch?

Andere Beiträge, die ich zu diesem Problem gesehen habe alle vorschlagen Einstellung der eps-Winkel, die ich bereits mache. Ich schätze Ihre Hilfe!

Antwort

1

Ich schnüffelte an der PCL-Dokumentation und fand die Antwort. Sie machen es in der Dokumentation nicht deutlich genug, aber nur einige der Modelle sind von setAxis() und setEpsAngle() betroffen. Für meine Anwendung war dieses Modell SACMODEL_PARALLEL_PLANE. Sie können die anderen hier finden: http://docs.pointclouds.org/1.7.0/group__sample__consensus.html.