LOAM代码笔记
LOAM代码笔记
源码注解见本人的github
scanRegistration.cpp
目的:
实现激光点云的配准,主要包括点云的预处理、特征提取和配准过程。
功能:
- 订阅原始点云信息,对每周期点云按线序排列(原始信息是混乱的)。需要计算angle俯仰角和ori偏角,angle负责得出该点云的竖直方向的线序,ori负责的出点云的说平偏转度,两者组合成intensity。处理后的每个点云都有x,y,z,intensity四个信息。
- 对每周期点云进行特征提取,包括提取角点和面点。计算曲率cloudCurvature,根据曲率判断是否为角点或面点。
- 发布处理后的点云信息,包括角点和面点。

laserOdometry.cpp
目的:
通过读取scanRegistration.cpp中的信息来计算帧与帧之间的变化,最终得到里程计坐标系下的激光雷达的位姿。(前端激光里程计和位姿粗估计)
功能:
- 订阅scanRegistration.cpp中的信息,包括角点和面点。
2.判断数据是否异常 - 将当前帧映射到上一帧,需要求解变换矩阵。
偏原理的优化部分没太看懂,需要看一下论文再去找对应部分 - 发布位姿(激光里程计)

laserMapping.cpp
目的:
通过已经获得的激光里程计信息来消除激光里程计和地图之间的误差(也就是累计的误差),使得最终的姿态都是关于世界坐标的,并建图
理解:
- 先创建一个21211的大空间,每次只关注自身周围的551的小空间。
2.可以通过大地图的动态调整,来使得小地图处于大地图的中心位置。 - 之后的数学计算不太理解,需要看一下论文再去找对应部分。

LOAM代码笔记
http://example.com/2025/08/16/25_08_16LOAM代码笔记/