PCL学习笔记(二十七)-- PCL编译问题汇总
作者:互联网
1 VoxelGrid滤波器
在给出的示例程序中经常会出现以下报错:
sensor_msgs::PointCloud2::Ptr cloud_blob (new sensor_msgs::PointCloud2), cloud_filtered_blob (new sensor_msgs::PointCloud2);
提示:没有sensor_msgs。原因是因为这段程序是用在ROS下的,在win下编译自然会出错,同样出错的还会有转换为模板点云代码:
pcl::fromROSMsg (*cloud_filtered_blob, *cloud_filtered);
解决方法:
改成在win下声明智能指针的方式:
//sensor_msgs::PointCloud2::Ptr cloud_blob (new sensor_msgs::PointCloud2), cloud_filtered_blob (new sensor_msgs::PointCloud2);
pcl::PCLPointCloud2::Ptr cloud_blob(new pcl::PCLPointCloud2), cloud_filtered_blob(new pcl::PCLPointCloud2);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>), cloud_p(new pcl::PointCloud<pcl::PointXYZ>), cloud_f(new pcl::PointCloud<pcl::PointXYZ>);
//pcl::fromROSMsg (*cloud_filtered_blob, *cloud_filtered);
pcl::fromPCLPointCloud2(*cloud_filtered_blob, *cloud_filtered);
原文链接:PCL学习笔记(十七)-- ExtractIndices滤波器分割子集_Mr.Debugger的博客-CSDN博客
2 ConditionalRemoval移除离群点
使用ConditionalRemoval并对其直接进行设置参数会出现报错:
pcl::ConditionalRemoval<pcl::PointXYZ> condrem (range_cond);
解决方法:
使用setCondition语句进行设置:
//pcl::ConditionalRemoval<pcl::PointXYZ> condrem (range_cond);
pcl::ConditionalRemoval<pcl::PointXYZ> condrem;
condrem.setCondition(range_cond);
原文链接:PCL学习笔记(十八)-- ConditionalRemoval和RadiusOutliersRemoval滤波器移除离群点_Mr.Debugger的博客-CSDN博客
3 iterative_closest_point迭代最近点算法
使用icp.setInputCloud()时会报错:
icp.setInputCloud(cloud_in);
解决方法:
改成:icp.setInputSource()即可
icp.setInputSource(cloud_in);
原文链接:PCL学习笔记(二十一)-- 迭代最近点算法_Mr.Debugger的博客-CSDN博客
4 pairwise_incremental_registration逐步匹配多幅点云
使用boost::make_shared会报错:
reg.setPointRepresentation (boost::make_shared<const MyPointRepresentation> (point_representation));
解决方法:
改成pcl::make_shared即可:
reg.setPointRepresentation (pcl::make_shared<const MyPointRepresentation> (point_representation));
改成std::make_shared也可以
5 region_growing_rgb_segementation基于颜色的区域生长分割
使用boost::this_thread报错:
boost::this_thread::sleep (boost::posix_time::microseconds (100));
解决方法:
增加头文件:#include <thread>
#include <thread>
将报错代码改成:
//boost::this_thread::sleep (boost::posix_time::microseconds (100));
std::this_thread::sleep_for(std::chrono::seconds(1));
原文链接:PCL学习笔记(二十六)-- 基于颜色的区域生长分割_Mr.Debugger的博客-CSDN博客
标签:PCL,msgs,--,二十七,blob,pcl,new,filtered,cloud 来源: https://blog.csdn.net/qq_45006390/article/details/119204298