LIO-SAM源码阅读笔记(三)---featureExtraction.cpp

代码:
https://github.com/TixiaoShan/LIO-SAM
特征提取这块的代码与之前的基本一样的思想,省去了LeGO-LOAM中scan-to-scan的内容,更加简洁。

1. 回调函数

    void laserCloudInfoHandler(const lio_sam::cloud_infoConstPtr& msgIn)
    {
   
        cloudInfo = *msgIn; // new cloud info
        cloudHeader = msgIn->header; // new cloud header
        pcl::fromROSMsg(msgIn->cloud_deskewed, *extractedCloud); // new cloud for extraction
       //平滑度计算  为了区分出边缘点和平面点 
        calculateSmoothness();
      //标记出被遮挡的点 参考LOAM论文的介绍
        markOccludedPoints();
       //提取特征
        extractFeatures();
       //发布特征点云
        publishFeatureCloud();
    }

2. 平滑度计算

  void calculateSmoothness()
    {
   

        int cloudSize = extractedCloud->points.size();
        //这里跟loam源码基本很像 从第五个点开始到结束前5个 计算某个点的平滑度

        for (int i = 5; i < cloudSize - 5; i++)
        {
        
            //前五个点的距离属性(在imageProjection.cpp中被赋值)之和加后五个点的距离之和-10倍该点的距离 算出差值
            //其实就是确定一种连续点之间的变化关系 起伏趋势
            float diffRange = cloudInfo.pointRange[i-5] + cloudInfo.pointRange[i-4]
                            + cloudInfo.pointRange[i-3] + cloudInfo.pointRange[i-2]
                            + cloudInfo.pointRange[i-1] - cloudInfo.pointRange[i] * 10
                            + cloudInfo.pointRange[i+1] + cloudInfo.pointRange[i+2]
                            + cloudInfo.pointRange[i+3] + cloudInfo.pointRange[i+4]
                            + cloudInfo.pointRange[i+5];            
            //点云曲率 
            cloudCurvature[i] = diffRange*diffRange;//diffX * diffX + diffY * diffY + diffZ * diffZ;
            //先是否被选择以及标签值置0
            cloudNeighborPicked[i] = 0;
            cloudLabel[i] = 0;
            // cloudSmoothness for sorting
            //记录曲率以及索引
            cloudSmoothness[i].value = cloudCurvature[i];
            cloudSmoothness[i].ind = i;
        }
    }

3. 标记遮挡和平行点

 void markOccludedPoints()//主要是完成了该函数后cloudNeighborPicked中有了点是否选择为特征点的标记
    {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值