>
返回

LIO-SAM 代码分析(二):imageProjection

作为对 imageProjection.cpp 的补充说明,主要是进行逻辑上的梳理。

简介

LIO-SAM 的完整注释代码以及流程图见 LIO-SAM With Chinese Comments

整体思路

imageProjection 类的大致工作流程见下图:

imageProjection 流程图
imageProjection 流程图

基本上这个节点会接收 IMU 原始测量值,基于增量信息的 imu 里程计以及原始点云。主要的工作集中原始点云的回调上,会发布一个包含去畸变后的点云以及其他相关信息的 cloud_info 消息。每个消息包括:

  • 去畸变后的点云
  • 每一条扫描线在点云中的起始和结束索引
  • 每一个点在点云投影图像中的行和列索引
  • 该点云对应时刻的初始姿态
  • 该点云对应时刻的初始位姿猜测

大部分的步骤已经在流程图体现了,其中点云对应时刻的初始姿态是从离该点云的最近一个 IMU 消息中获得。(作者使用的是九轴 IMU,本身除了能输出加速度和角速度,还能够获得姿态信息)。而点云对应时刻的初始位姿猜测则是从离该点云的最近一个 imu 里程计消息中获得。

此外值得一提的是在去畸变的时候,代码只用了从覆盖该点云持续时间的 IMU 消息计算的姿态变换(旋转),而没有利用平移信息,估计是作者应用的环境在一帧点云持续时间内通常平移不会很大。但是在其他场景(比如高速公路)则应该将平移信息也考虑在内。

Built with Hugo
Theme Stack designed by Jimmy