在激光SLAM中,我们经常会遇到过滤离散点以及几何特征提取等需求,这里分享基于网络开源代码的直线提取和区域分割的小demo,依赖PCL库和ROS。
代码地址:
一、 直线提取
PCL库中的直线提取较为简单,我们可以直接套用setDistanceThreshold函数进行分割,函数使用流程如下:
pcl::RandomSampleConsensus<pcl::PointXYZ> ransac(model_line);
ransac.setDistanceThreshold(0.02); //内点到模型的最大距离
ransac.setMaxIterations(100); //最大迭代次数
ransac.computeModel();
Eigen::VectorXf coef;
ransac.getModelCoefficients(coef); //coef会被赋值成直线模型参数
效果 :
二、区域分割
区域分割可以不依赖pcl完成,我的处理逻辑是,遍历点云的所有点,计算两点之间的距离,如果距离在某一点上有突变,则证明该点是一个撕裂点。
效果: