I'm new to PCL (Point Cloud Library) and just want to apply to ICP to two sets of points. The online code sample for ICP, however, throws a fatal error when I try to run it with Visual Studio 2010 64 bit. I've tried different ways of creating a point cloud but no luck. Fatal error occurs inside icp.setInputTarget
, at the line target_ = target.makeShared ();
This is how I create both of my cloud points
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZ>);
cloud_in->width = _head_width+1;
cloud_in->height = _head_height+1;
cloud_in->is_dense = true;
for(int x=0; x<=width; x++) {
for(int y=0; y<=height; y++) {
float z = depths[x][y];
pcl::PointXYZ curr_point;
curr_point.x = x;
curr_point.y = y;
curr_point.z = z;
cloud_in->points.push_back(curr_point);
}
}
And this is where error occurs
pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp_dummy.setInputCloud(cloud_in);
icp_dummy.setInputTarget(cloud_out); /* This throws a fatal error */
Any help will be appreciated