Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simple SAC line segmentation can no longer find any lines with pcl 1.9 #3439

Closed
MostafaGomaa opened this issue Oct 24, 2019 · 2 comments
Closed

Comments

@MostafaGomaa
Copy link

MostafaGomaa commented Oct 24, 2019

Your Environment

  • Operating System and version: Fedora 30
  • Compiler: GUN 9.2.1
  • PCL Version: 1.9

Context

Our robots uses SAC-segmention to find laser-lines from a laser point-cloud.
Simple SAC line segmentation can no longer find any lines with pcl 1.9

Expected Behavior

The segmentation in the past generated the expected lines with pcl 1.8, but with pcl 1.9 it 'always' fails to find any lines.

Current Behavior

ComputeModel can not select samples , hence, segmentation finds no solutions

File .../in_cloud_566.pcd loaded, contaning 360  data points 
 After filtering 147 points left
[pcl::RandomSampleConsensus::computeModel] No samples could be selected!
[pcl::SACSegmentation::segment] Error segmenting the model! No solution found.
No lines found!
0 In-lieres

Code to Reproduce

The segmentation code snippet is used by our system. The data set contains 360 laser points generated by the laser sensor. Exemplary date taken from a real run are stored a .pcd file.

pcd_read.cpp

#include <iostream>
#include <pcl/point_types.h>
#include <pcl/common/centroid.h>
#include <pcl/common/distances.h>
#include <pcl/common/transforms.h>
#include <pcl/filters/conditional_removal.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/passthrough.h>
#include <pcl/filters/project_inliers.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/search/kdtree.h>
#include <pcl/segmentation/extract_clusters.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/surface/convex_hull.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
    

int
main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud(new pcl::PointCloud<pcl::PointXYZ>());
  std::stringstream ss;
  int i = 566;
  ss << "$$$/in_cloud_" << i << ".pcd" ;
  if (pcl::io::loadPCDFile<pcl::PointXYZ> (ss.str() , *cloud) == -1) //* load the file
  {
    PCL_ERROR ("Couldn't read file \n");
    return (-1);
  }
  std::cout << "File " 
              << ss.str() 
               << " loaded, contaning "
                 << cloud->width * cloud->height 
                   << "  data points "
                     << std::endl;
   {
      // Erase non-finite points
      pcl::PassThrough<pcl::PointXYZ> passthrough;
      passthrough.setInputCloud(cloud);
      passthrough.filter(*in_cloud);
   }
   std::cout <<  " After filtering "<< in_cloud->points.size() << " points left" << std::endl;
      

   pcl::ModelCoefficients::Ptr coeff(new pcl::ModelCoefficients());
   pcl::PointIndices::Ptr      inliers(new pcl::PointIndices());
   // Segment the largest linear component from the remaining cloud
   typename pcl::search::KdTree<pcl::PointXYZ>::Ptr search(new pcl::search::KdTree<pcl::PointXYZ>);
   search->setInputCloud(in_cloud);
 
   pcl::SACSegmentation<pcl::PointXYZ> seg;
   seg.setOptimizeCoefficients(true);
   seg.setModelType(pcl::SACMODEL_LINE);
   seg.setMethodType(pcl::SAC_RANSAC);
   seg.setMaxIterations(1000);
   seg.setDistanceThreshold(0.1);
   seg.setSamplesMaxDist(0.1, search);
   seg.setInputCloud(in_cloud);
   seg.segment(*inliers, *coeff);

   if (inliers->indices.size() == 0) { std::cout <<  " NO lines found" << std::endl; }
   std::cout <<  "In-liers " << inliers->indices.size() << std::endl;

return (0);
}

Laser Point-cloud date to reproduce
in_cloud_566.pcd

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 360
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 360
DATA ascii
0.54768962 0 0
0.55056548 0.0096101556 0
0.55883229 0.019514853 0
0.55138034 0.02889662 0
0.56328142 0.03938847 0
0.55243313 0.048331633 0
0.54814452 0.057612311 0
0.54681653 0.067140631 0
0.55346727 0.077784754 0
0.55787021 0.088357963 0
0.54746145 0.096532233 0
0.55481488 0.10784509 0
0.55116796 0.11715437 0
0.54799432 0.12651445 0
0.55451089 0.13825509 0
0.55160093 0.14780101 0
0.54572296 0.15648355 0
0.55265146 0.16896249 0
0.55736321 0.18109828 0
0.55444044 0.19090916 0
0.55360931 0.2014973 0
0.56177896 0.21564674 0
0.5519951 0.22302051 0
0.55442619 0.23533995 0
0.56059051 0.24959096 0
0.55374014 0.25821328 0
0.55478305 0.27058578 0
0.55927938 0.28496709 0
0.55422288 0.29468557 0
0.5635435 0.31237724 0
0.55610472 0.32106721 0
0.55568647 0.33389011 0
0.56279701 0.35167462 0
4.2875342 2.7843573 0
4.2305646 2.8535516 0
3.7233973 2.6071508 0
3.6728497 2.6684813 0
3.6146214 2.7238123 0
3.5572801 2.7792518 0
3.2613523 2.6409912 0
3.856075 3.235631 0
3.7956831 3.2995369 0
3.732764 3.360996 0
3.6754625 3.4274244 0
3.6135001 3.4895167 0
3.5515296 3.5515296 0
3.5009775 3.6253681 0
3.4330022 3.6814442 0
3.3718648 3.7448356 0
3.314651 3.8130698 0
3.2560089 3.8803599 0
3.1933067 3.9434054 0
3.1313167 4.0079021 0
3.0673158 4.0704656 0
3.0005302 4.1298757 0
2.81236 4.0164666 0
2.5318904 3.7536819 0
2.2887232 3.5243251 0
2.0774832 3.3246679 0
1.896867 3.1569171 0
1.7300793 2.9965856 0
1.5869925 2.8630104 0
1.4564807 2.7392416 0
1.3424298 2.6346667 0
1.2318335 2.5256329 0
1.1337084 2.4312456 0
1.0491539 2.3564384 0
0.96364385 2.2702029 0
0.88835239 2.1987491 0
0.82209694 2.1416357 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
-1.0191364 -1.7651966 0
-0.98817241 -1.7827103 0
-0.9638679 -1.8127716 0
-0.93996716 -1.8447887 0
-0.91014391 -1.8660725 0
-0.88694829 -1.9020672 0
-0.85767907 -1.9263787 0
-0.83010888 -1.9556134 0
-0.80021918 -1.9806108 0
-0.77292085 -2.0135288 0
-0.74671698 -2.0515888 0
-0.71333086 -2.0716631 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
0.30698586 -2.920778 0
0.35245344 -2.870508 0
0.39817658 -2.8331702 0
0.44211668 -2.7914133 0
0.48373592 -2.7434032 0
0.52479911 -2.6998591 0
0.56865686 -2.675323 0
0.60561788 -2.6232171 0
0.64630991 -2.592207 0
0.68428355 -2.5537813 0
0.72175497 -2.5170603 0
0.75977403 -2.485111 0
0.79661918 -2.4517407 0
0.95725542 -2.7800713 0
0.99615854 -2.7369235 0
1.0387584 -2.7060595 0
1.9667342 -4.867835 0
2.1464112 -5.0566263 0
2.3423803 -5.2610717 0
2.559237 -5.4883027 0
2.7981203 -5.736999 0
3.06794 -6.0211682 0
3.3661258 -6.33076 0
3.703455 -6.6812096 0
4.0970206 -7.0962501 0
nan nan 0
nan nan 0
5.1649284 -7.9532905 0
5.2892709 -7.8416672 0
2.406651 -3.4370549 0
2.6471875 -3.6435428 0
2.7083449 -3.594094 0
2.7621253 -3.5353589 0
2.8113971 -3.4717865 0
2.7815382 -3.3149087 0
4.8901339 -5.6254582 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
nan nan 0
0.53492385 -0.32141474 0
0.55138522 -0.31834257 0
0.54754072 -0.30350667 0
0.54691875 -0.29080179 0
0.54058498 -0.27544183 0
0.54253554 -0.26461235 0
0.54942179 -0.25619975 0
0.54477203 -0.24254803 0
0.55254096 -0.23453967 0
0.55211037 -0.22306709 0
0.54401952 -0.2088296 0
0.54137808 -0.19704565 0
0.55177128 -0.18999 0
0.55016595 -0.17875972 0
0.55011255 -0.16818632 0
0.55442381 -0.15897857 0
0.55723822 -0.14931139 0
0.54607737 -0.1361523 0
0.5501591 -0.12701422 0
0.55375814 -0.11770497 0
0.54747683 -0.10641881 0
0.54302728 -0.09575025 0
0.55356467 -0.087675966 0
0.54382586 -0.07642974 0
0.54164767 -0.066506013 0
0.54838115 -0.057637285 0
0.55109721 -0.048214655 0
0.55418187 -0.03875212 0
0.5483247 -0.028736485 0
0.55434352 -0.01935816 0
0.55049896 -0.0096091069 0

CMakeLists.txt

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(pcd_read)

find_package(PCL 1.2 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (pcd_read pcd_read.cpp)
target_link_libraries (pcd_read ${PCL_LIBRARIES})
@SergioRAgostinho
Copy link
Member

#2767 has been merged to master and addressed issues with a regression to line SAC.

@MostafaGomaa
Copy link
Author

Nice,thank you !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants