Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
I am trying to estimate a line through the points of a point cloud using a RANSAC method provided by the Point Cloud Library.
I can create the object, and estimate the line model without a problem, as so:
pcl::PointCloud<pcl::PointXYZ>::ConstPtr source_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::ModelCoefficients::Ptr line_coefficients(new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers (new pcl::PointIndices);
// Populate point cloud...
// Create the segmentation object
pcl::SACSegmentation<pcl::PointXYZ> seg;
seg.setModelType (pcl::SACMODEL_LINE);
seg.setMethodType (pcl::SAC_RANSAC);
seg.setDistanceThreshold (distance_thresh);
seg.setInputCloud (source_cloud);
seg.segment (*inliers, *line_coefficients);
I now try to access the model parameters and I am simply too dumb to do it... according to the API there should be six accessible parameters:
The six coefficients of the line are given by a point on the line and
the direction of the line as: [point_on_line.x point_on_line.y
point_on_line.z line_direction.x line_direction.y line_direction.z]
I am therefore trying to access them as so:
line_coefficients->line_direction->x
However, this does not work. I keep getting the error:
No member named 'line_direction' in in 'pcl::ModelCoefficients'.
I don't really know what I'm doing wrong... anybody got any ideas?
Thanks in advance!
The documentation is just telling you how the values are to be interpreted. pcl::ModelCoefficients
is a struct which has a member values
of type std::vector<float>
.
So to get the line_direction and point_on_line do:
const auto pt_line_x = line_coefficients->values[0];
const auto pt_line_y = line_coefficients->values[1];
const auto pt_line_z = line_coefficients->values[2];
const auto pt_direction_x = line_coefficients->values[3];
const auto pt_direction_y = line_coefficients->values[4];
const auto pt_direction_z = line_coefficients->values[5];
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.