其他分享
首页 > 其他分享> > PCL学习笔记(二十七)-- PCL编译问题汇总

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