LOAM 梳理

article/2025/8/30 20:08:15

LOAM 梳理

本篇文章对 LOAM 框架进行宏观的解析,暂不涉及内部具体的实现原理。

整个流程

整个 LOAM 框架分为三个主要部分,分别为 Registration特征提取)、Odometry特征匹配)和 Mapping建图),分别存储于相应的 cpp 文件中。首先将输入点云进行特征提取,利用提取的特征进行特征匹配,最后将点云置于地图中,具体流程见下图。

请添加图片描述

主要思路

Registration(特征提取)

特征提取流程主要如下:

  1. 输入点云预处理(去除 NAN 点及距离过近的点)

  2. 调整角度,将输入点云调整至 ( − π , π ) (-\pi,\pi) (π,π) 区间内

  3. 把每个点存储到对应的扫描线上,并利用强度信息记录下来

  4. 计算每个点的曲率,记录索引(点对应的索引,后续对曲率排序是对索引排序)、近邻(该点是否为近邻点)、标签(该点属于什么类型的点)

  5. 特征提取

    遍历每条扫描线,每条扫描线上分 6 个区域,每个区域内按曲率大小进行排序:

    1. 从大到小遍历提取角点

      曲率最大的 2 个特征点(cornerPointsSharp,不包含近邻点,标签为 2)、曲率较大的前 20 个特征点(subCornerPointsLessSharp,不包含近邻点,标签为 1),并标记近邻点

    2. 从小到大遍历提取表面点

      曲率最小的 4 个特征点(subSurfPointsFlat,不包含近邻点,标签为 -1),并标记近邻点、除去曲率较大的前 20 个特征点,剩余的点再降采样后的点(subSurfPointsLessFlat

  6. 发布信息

Odometry(特征匹配)

特征匹配流程大体如下:

  1. 接收信息
  2. 特征点匹配
    1. Ceres 创建问题
    2. 角点匹配:点到直线的距离
    3. 平面点匹配:点到面的距离
    4. Ceres 求解
    5. 更新位姿信息:t_w_curr、q_w_curr
  3. 发布 odom 信息
  4. 交换点云,设置 kdtree
  5. 间隔几帧发布信息:corner、surf

注意:

​ 在特征点匹配时:

  • 角点的匹配是 cornerPointsSharp(source,当前帧的特征点,即每个区域 2 个角点特征点) 对应匹配 laserCloudCornerLast(target,对应上一帧的 cornerPointsLessSharp,即每个区域 20个角点特征点)
  • 平面点的匹配是 surfPointsFlat(source,当前帧的特征点,即每个区域 4 个平面特征点)对应匹配 laserCloudSurfLast(target,对应上一帧的 surfPointsLessFlat,即每个区域所有点云减去 20 个角点特征点再降采样之后的点)

Mapping(建图)

建图流程简要概括一下:

  1. 首先将整个 map 划分成 21 × 21 × 11 个栅格,每个栅格大小为 50 × 50 × 50 cm
  2. 获取前一部分发布的信息,包括 corner、surf 及 odom
  3. 将 odom 转换到世界坐标系下,并寻找对应的栅格
  4. 对应的栅格尽量在整个 map 的中心,若偏向边缘则对其调整
  5. 计算对应栅格及其附近栅格的索引,并将其存储在数组中
  6. 将提取出的栅格内的角点特征点和平面特征点分别提取到相应的点云中去,分别作为 corner 的 target 和 surf 的target
  7. 获取当前帧传入的 corner 和 surf,对其将采样,作为 corner 的 source 和 surf 的source
  8. 分别对 corner 和 surf 进行特征匹配,优化当前帧点云在 map 坐标系下的位姿
  9. 根据当前帧点云在 odom 坐标系下的位姿和优化的当前帧点云在 map 坐标系下的位姿更新 odom 坐标系到 map 坐标系的转换关系
  10. 将当前帧的 corner 特征点和 surf 特征点加入到栅格的点云中,并对加入特征点之后的栅格进行降采样
  11. 发布信息:laserCloudSurround、laserCloudMap
  12. 将所有点(laserCloudFullRes)转换到 map 坐标系下
  13. 发布信息

消息传递

理解不同部分之间的消息传递有助于理解整个 LOAM 框架。下图是 LOAM 源码的一些订阅、发布节点,绿色表示输入,红色表示输出。

在这里插入图片描述

Registration(特征提取)

  • 输入:

    • laserCloudIn:输入点云
  • 输出:

    • pubLaserCloud:全部点云
    • pubCornerPointsSharp:每个区域角点特征(2 个)× 6 个区域 × 线数
    • pubCornerPointsLessSharp:每个区域角点特征(20 个)× 6 个区域 × 线数
    • pubSurfPointsFlat:每个区域平面特征(4 个)× 6 个区域 × 线数
    • pubSurfPointsLessFlat:每个区域角点特征((全部点云 - 角点特征(20 个))/ 降采样)× 6 个区域 × 线数
    • pubRemovePoints

Odometry(特征匹配)

  • 输入:

    • subLaserCloudFullRes:全部点云
    • subCornerPointsSharp:每个区域角点特征(2 个)× 6 个区域 × 线数
    • subCornerPointsLessSharp:每个区域角点特征(20 个)× 6 个区域 × 线数
    • subSurfPointsFlat:每个区域平面特征(4 个)× 6 个区域 × 线数
    • subSurfPointsLessFlat:每个区域角点特征((全部点云 - 角点特征(20 个))/ 降采样)× 6 个区域 × 线数
  • 输出:

    • pubLaserCloudFullRes:全部点云
    • pubLaserCloudCornerLast:每个区域角点特征(20 个)× 6 个区域 × 线数
    • pubLaserCloudSurfLast:每个区域平面点特征((全部点云 - 角点特征(20 个))/ 降采样)× 6 个区域 × 线数
    • pubLaserOdometry:odom 坐标系
    • pubLaserPath

Mapping(建图)

  • 输入:

    • subLaserCloudFullRes:全部点云
    • subLaserCloudCornerLast:每个区域角点特征(20 个)× 6 个区域 × 线数
    • subLaserCloudSurfLast:每个区域平面点特征((全部点云 - 角点特征(20 个))/ 降采样)× 6 个区域 × 线数
    • subLaserOdometry:odom 坐标系
  • 输出:

    • pubLaserCloudFullRes:转换到 map 坐标系下的全部点云
    • pubLaserCloudSurround
    • pubLaserCloudMap
    • pubOdomAftMappedHighFrec
    • pubOdomAftMapped:map 坐标系
    • pubLaserAfterMappedPath

位姿传递

通过 lidar 采集的点云,每一帧在不同的坐标系中,最终目的是要将所有点云转换到统一坐标系下。理解点云在每一部分是如何进行位姿变换的至关重要。

在 Odometry 部分中,计算两帧点云之间的位姿关系,更新当前帧在 odom 下的位姿,并将位姿信息传递至 Mapping 部分。

Mapping 得到的位置信息是当前帧在 odom 坐标系下的位姿,通过 odom 坐标系到 map 坐标系的转换关系初步将当前帧信息转换至 map 坐标系下,这个转换关系是不正确的,只是一个初始转换,再经过特征匹配,计算当前帧转在 map 坐标系下正确位置,通过当前帧在 odom 坐标系下和 map 坐标系下的位置,计算出 odom 坐标系到 map 坐标系的正确转换关系,并更新该转换关系。

位姿中的四元数是不断地在累乘的,保证当前帧经过位姿转换可以移动至正确的位置。

匹配,计算当前帧转在 map 坐标系下正确位置,通过当前帧在 odom 坐标系下和 map 坐标系下的位置,计算出 odom 坐标系到 map 坐标系的正确转换关系,并更新该转换关系。

位姿中的四元数是不断地在累乘的,保证当前帧经过位姿转换可以移动至正确的位置。

上面有些内容肯定有理解错误或者说法错误的地方!


http://chatgpt.dhexx.cn/article/JyYQi0Sw.shtml

相关文章

LOAM 原理及代码实现介绍

文章目录 LOAM 原理及代码实现介绍LOAM技术点LOAM整体框架退化问题代码结构 LOAM 原理及代码实现介绍 paper:《Lidar Odometry and Mapping in Real-time》 LOAM的参考代码链接: A-LOAM A-LOAM-Notes LOAM-notes 使用传感器介绍: 如果没有电机旋转&am…

学习LOAM笔记——特征点提取与匹配

学习LOAM笔记——特征点提取与匹配 学习LOAM笔记——特征点提取与匹配1. 特征点提取1.1 对激光点按线束分类1.2 计算激光点曲率1.3 根据曲率提取特征点 2. 特征点匹配2.1 scan-to-scan中的特征点匹配2.2 scan-to-map中特征点匹配 3. 补充 学习LOAM笔记——特征点提取与匹配 兜…

Loam算法详解(配合开源代码aloam)

参考论文:LOAM: Lidar Odometry and Mapping in Real-time 代码:A-LOAM Ubuntu 18.04 ROS Melodic eigen 3.3.4 PCL 1.8.1 ceres 2.0 A-LOAM 配置 LOAM算法是激光slam中一个经典的开源框架,结合qin tong 博士的开源代码a-loam&#xff…

无人驾驶学习笔记 - LOAM 算法论文核心关键点总结

目录 1、框架 2、特征点提取 3、点云去畸变 4、帧间匹配 特征关联与损失函数计算 a 线特征 b 面特征 5、运动估计 6、建图 7、姿态融合 8、LOAM 优劣势 9、参考连接 1、框架 loam框架核心是两部分,高频率的里程计和低频率的建图。两种算法处理。里程计通…

LOAM简介

LOAM 文章目录 LOAMLOAM系统流程1、特征提取(1)按线数分割(2)计算曲率(3)删除异常点(4)按曲率大小筛选特征点 2、帧间匹配(1)特征关联与损失函数计算&#xf…

SLAM算法 -LOAM框架分析(一)

LOAM框架分析 算法简介1 激光里程计(高频率)1.1 计算曲率1.2 筛选特征1.3 问题建模1.3.1 损失函数1.3.2 运动补偿 1.4 优化求解1.5 定位输出 2 环境建图(低频率)2.1 问题模型2.2 PCA特征 参考文献 算法简介 LOAM的整体思想就是将复杂的SLAM问题分为:1. 高频的运动估…

顶级高手常用的16个思维模型

“养成一个掌握多元思维模型的习惯是你能做的最有用的事情”,投资家、巴菲特的黄金拍档查理 芒格认为:“思维模型是你大脑中做决策的工具箱。你的工具箱越多,你就越能做出最正确的决策。”与您分享查理芒格的12种思维模型,对做决…

100种思维模型之大脑系统思维模型-52

上世纪60年代,美国神经学家保罗 D 麦克莱恩(Paul D. MacLean)首次提出“三脑一体”假说,他认为人的大脑是蜥蜴-松鼠-猴子合体的隐喻,代表了进化发展不同阶段的遗传。 复旦大学管理学院的项保华教授对此有一个精彩的总结…

思维模型 SWOT分析

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 一个技术岗位想转产品经理(个人职业规划SWOT的应用),做的SWOT分析,进而可以量化自己转型的成本: 小王想在自己的居住小…

【转载】100个思维模型(不一定都适用,各取所需)

世界上最有智慧的人是怎样理性思考的?他们在商业活动和个人生活中是如何做决策的? 95岁的智慧老人查理芒格的“多元思维模型”,相信大家都不陌生。 他提倡要学习在所有学科中真正重要的理论,并在此基础上形成所谓的“普世智慧”&…

思维模型 GROW

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 推广故事:近期A公司开发一个产品活动的 促销方案,进行了简单的业务流程梳理后便开始了小范围的推广。首先让公司里的同事每人每天拉取20个新人。经过10天…

100种思维模型之细节效率思维模型-74

提及细节效率?也许很多人会有疑问,“效率”怎么跟“细节”挂上钩,注重“细节”了,还能有“高率”? 是的,细节能提高效率,注意某些细节,效率事半功倍。 01、何谓细节效率思维模型 一…

100种思维模型之长远思考思维模型-63

古语有云:“人无远虑,必有近忧!” 任正非说:不谋长远者,不足以谋一时! 长远思考思维,一个提醒我们要运用长远眼光,树立宏大目标,关注长期利益的思维模型 01何谓长远思考…

提升自己的认知-思维模型

之前写过有关思维的博客思维方式与认知,关于思维方式与做事方式有所思考。最近看到如何判断一个人是杰出的聪明人还是平庸的普通人?的文章,感触颇深。现摘录有所感触的思维方式。 一、思维模型 1、每周“5小时”学习法则 参考:https://36kr.com/p/5130501.html?from=aut…

100种思维模型之坏模因思维模型-44

啥是模因? 简单说,就是 文化基因, 也就是别人传输给我们的 观念。 我们生活中到处都是 模因, 比如,“跟我不一致的观点都是错的”,属于敌对型模因,让别的观念没办法进入你的大脑&#xf…

40个经典思维模型(附下载)

导读: 思维模型可以称之为知识背后的知识,道理背后的道理,现象背后的真相。可以指导我们以一当百,更加本质的看透事物和现象,并更加本质的解决问题。 如果我们要学习的东西有限,那么我会推荐每个人优先去学…

100种分析思维模型(1)

公众号后台回复“图书“,了解更多号主新书内容 作者:林骥 来源:林骥 最近,我在读《穷查理宝典》这本书,其中提到查理芒格应用大约 100 种多元思维模型,他孜孜不倦地对投资问题进行充分的准备、广泛的研究和…

常见思维模型汇总(一)

文章目录 一、SWOT模型1、简介 2、SWOT模型的拆解二、波士顿5力模型1、简介2、缺陷3、分解3.1.供应商的议价能力(Bargaining Power of Suppliers)3.2.购买者的议价能力 (Bargaining Power of Buyers)3.3.新进入者的威胁&#xff0…

12个顶级思维模型,非常值得一看!

“思维模型是你大脑中做决策的工具箱。你的工具箱越多,你就越能做出最正确的决策。”不管你是领导团队,还是制定市场战略,思维模型都能够在其中发挥至关重要的作用。 打造多元思维模型的想法来自查理芒格:“思维模型是你大脑中做决策的工具箱。你的工具箱越多,你就越能做…

16个顶级思维模型

思维模型会给你提供一种视角或思维框架,从而决定你观察事物和看待世界的视角。顶级的思维模型能提高你成功的可能性,并帮你避免失败。 打造多元思维模型想法来自查理芒格,而查理芒格是沃伦巴菲特的得力助手。Farnam Street曾这样描述思维模型…