lego-loam阅读理解笔记 一

本文主要介绍了Lego-LOAM中的imageProjectionc.cpp文件,包括findStartEndAngle()、projectPointCloud()和groundRemoval()等关键函数的解读。通过理解这些函数,读者可以深入掌握Lego-LOAM的点云处理和地面去除过程。文章还提供了相关资源链接,帮助读者进一步学习和实践。
摘要由CSDN通过智能技术生成

目录

前言

一、imageProjectionc.cpp阅读理解

1、解读 findStartEndAngle()

2、解读 projectPointCloud()

3、解读 groundRemoval()

 4、解读cloudSegmentation()


前言

论文:https://ieeexplore.ieee.org/abstract/document/8594299

Lego-loam源码地址: https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

文章原理讲解除了看论文,看看这些博客:

LeGO-LOAM:轻量级地面优化的建图

LeGo-LOAM激光雷达定位算法源码阅读(一)

其他博客代码理解推荐:https://blog.csdn.net/orange_littlegirl/article/details/95238586

安装编译运行:https://www.cnblogs.com/zhangjcblog/p/10580683.html

代码前期变量定义

首先PointType是带intensity的PointXYZ:
typedef pcl::PointXYZI  PointType;
 这些参数是根据雷达品牌来定的,比如这是16线、每线1800个点的数据:
 // VLP-16
extern const int N_SCAN = 16;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 0.2;//水平上每条线间隔0.2°
extern const float ang_res_y = 2.0;//竖直方向上每条线间隔2°
extern const float ang_bottom = 15.0+0.1;//竖直方向上起始角度是负角度,与水平方向相差15.1°
extern const int groundScanInd = 7;//以多少个扫描圈来表示地面
在点云分割时的必要参数:
extern const float sensorMountAngle = 0.0;
extern const float segmentTheta = 1.0472;//点云分割时的角度跨度上限(π/3)
extern const int segmentValidPointNum = 5;//检查上下左右连续5个点做为分割的特征依据
extern const int segmentValidLineNum = 3;//检查上下左右连续3线做为分割的特征依据
extern const float segmentAlphaX = ang_res_x / 180.0 * M_PI;//转成弧度
extern const float segmentAlphaY = ang_res_y / 180.0 * M_PI;//转成弧度
而 PointTypePose指的是具备姿态角的特定点:
//增加新的PointT类型常规操作
struct PointXYZIRPYT定义点类型结构
{
    PCL_ADD_POINT4D // 该点类型有4个元素
    PCL_ADD_INTENSITY;
    float roll;
    float pitch;
    float yaw;
    double time;
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW// 确保new操作符对齐操作
} EIGEN_ALIGN16;// 强制SSE对齐

pcl::PointCloud<PointType>::Ptr laserCloudIn;//雷达直接传出的点云
pcl::PointCloud<PointType>::Ptr fullCloud;//投影后的点云
pcl::PointCloud<PointType>::Ptr fullInfoCloud;//整体的点云 其中的intensity保存的是深度值
pcl::PointCloud<PointType>::Ptr groundCloud;//只包含地面点云
pcl::PointCloud<PointType>::Ptr segmentedCloud;//分割后的部分,含地面点云
pcl::PointCloud<PointType>::Ptr segmentedCloudPure;//分割后的部分的几何信息,不含地面点云
pcl::PointCloud<PointType>::Ptr outlierCloud;//在分割时出现的异常

一、imageProjectionc.cpp阅读理解

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值