LOAM论文阅读笔记

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

目录

1.特征点的提取

2.特征点的匹配

3.运动估计

4.运动估计优化

5.建图

参考文章:


1.特征点的提取

         velodyne 16雷达每次返回的数据称为一帧(sweep),一帧由16条线组成(每条线称为一个scan),每个scan有很多点。velodyne 16线激光雷达返回的点云数据是按照先上下,后左右的顺序,如下面的动画所示。而且上下的顺序也是错杂的。因此在程序中需要先将其按照线号重新排列。

         一帧就是雷达扫描一次(垂直30°,水平360°)得到的点,由16条线上的点组成。一般每秒扫描10次,就是10帧。

        机械旋转式激光雷达虽然是连续旋转的,但是它的输出却是一帧一帧的。通过匹配每帧激光点云与上一帧点云,可以估计得到两帧之间机器人的相对位移,这就是激光里程计的工作方式。

        点云中的点都是按照一定顺序排列的(激光雷达返回的点就是这样的),如果点的排列顺序是杂乱无章的,再使用这个公式就没什么用了。原作者考虑激光雷达的每帧点云数据由很多独立的线组成。因此,在定义特征点时考虑的是单个线上的点与相邻点的关系。

        点也可看成一个向量,||X||表示向量的范数,也就是向量的长度,或者说点到雷达坐标系原点的距离。

        有人将定义的c称为曲率, c就是在计算平均点与中间点X的差距,点的排列越平直差距越小,反之点排列越弯曲差距越大c的值就越大。作者提出用曲率信息来区分激光点是角点还是面点,这显然是个非常大的创新点。根据曲率值大小,可以对点进行分类。论文中分成两类:曲率大的是角点,曲率小的是平面点。

        特征点的提取在每个区域只提取固定的几个。

 

2.特征点的匹配

        特征点分为两类,对于角点,一般在转折线上(例如卧室里的墙角),要计算它到折线的距离;对于平面点,一般在比较平坦的表面上(例如墙面),要计算它到平面的距离。

        LOAM使用了点到直线和点到平面来计算距离,这就意味着他适用于结构化比较好的室内环境。

        在计算点到直线的距离时,直线的两个点的选取应该在两个扫描线上,不能是同一扫描线上的两点。在寻找面时的三个点需要两个点在同一条线上,另外一个点在另外一条线上。

3.运动估计

        LOAM还解决了运动畸变问题(叫demotion或者distortion correction)。LOAM解决运动畸变的方法比较简单,就是根据每个点的相对时间进行补偿。雷达扫描一帧的时间是固定的,可以得到每个点的采集时刻,将所有点都统一到同一时刻,这里选择的是每完成一帧扫描的末尾时刻。论文中假设雷达做最简单的运动,即匀速运动,也就是说一次扫描过程中雷达的线速度和角速度都是不变的。在时间间隔不大时,例如100ms,可以认为这样的假设比较合理。当然如果是无人机这种做剧烈运动的,这个假设就不太合理了,此时可以用IMU补偿。

        假如器人或者无人车的运动速度是1m/s(这算慢的了),在完成一次360°扫描的过程中雷达的位置已经改变了10cm,所以说小车在运动的10cm过程的这段时间中,在不同时间接受到360度不同角度扫描到的点(假设同一点发出和接受在一瞬间,无时间变化)。估计100ms之间的运动(小车运动了10cm,100ms内的点都被统一到最后时刻了),假设某个点在40ms这个位置,可以通过插值来估计当前点的运动占整个运动的比例。

        注意是对点云中所有的点都补偿,不仅仅是特征点,因为后面会用所有的点来建图。

4.运动估计优化

        上面唯一的未知量就是相对位姿Tk+1,我们将它视为变量,求使距离d最小的Tk+1, 这个问题是个非线性优化问题。优化目标涉及距离,因此是一个最小二乘问题。(最小二乘问题的描述可以看参考csdn,为了防止结果被离群点污染,通常的做法是在求解前先剔除掉这些害群之马。)

        求解非线性最小二乘问题的常用方法有LM( Levenberg-Marquardt)方法和高斯牛顿法。作者在论文中声称采用了LM方法,但是在程序中却使用了高斯牛顿法。使用了权重、核函数等操作。

        作者在程序中就是直接求出导数并组装成雅克比矩阵的,他没有调用第三方的函数库。在改进版本ALOAM中,后人就图省事直接用了Ceres库,省去了计算雅克比矩阵的工作。

5.建图

        建图的过程就是不断地把匹配好的点云堆积在一起的过程。

        累计一定帧数目的点云数据才会进行建图,频率较低,但是精度很高。每扫描10次做一次建图的工作。LOAM缺少闭环检测,它建图的主要目的还是为状态估计服务的。

        把当前帧投到世界坐标系中需要去找匹配对,在mapping的算法里是通过周围的珊格来寻找匹配对,通过TD-tree的方式。

        计算匹配对的协方差矩阵,对协方差矩阵进行一个特征值分解,计算出特征值和特征向量。如果这个点是个边缘点,会对其进行一个检查,这个匹配点的特征值的特性是一个特征值明显大于其余两个特征值;面点的特征是有两个比较大的特征值,其余一个特征值比较小,第三个特征值所对应的向量是这个面的一个法向量。

        以下图示是自己目前的理解,可能有误,接下来一边学习一边继续理解修正。

 

参考文章:

LOAM论文和程序代码的解读_robinvista的博客-CSDN博客_loam解读


http://chatgpt.dhexx.cn/article/7vd6lRWq.shtml

相关文章

LOAM、LEGO-LOAM与LIO-SAM的知识总结

文章目录 LOAM、LEGO-LOAM与LIO-SAM的知识总结1.概要2.传感器信息读取3.数据的预处理4.激光雷达里程计4.1特征点提取4.2特征点关联匹配4.2.1 标签匹配4.2.2 两步LM优化4.2.3 LIO-SAM优化4.2.3.1 IMU预积分4.2.3.2 关键帧的引入4.2.3.3 因子图4.2.3.4 GPS因子4.2.3.5 回环因子 5…

如何运行loam和其衍生算法

目录 一、如何运行loam和其衍生算法 1. ros的一些例如bag play和run、rviz一些操作。 2. ros的一些衍生算法的内容a-loam、lego-loam等一些介绍和优劣。 3. 点云地图的保存方法介绍,使用效果如何。 3.1 第一种点云地图保存 3.2 第二种点云地图保存 3.3 Autoware文…

Loam livox 论文翻译和总结

Loam livox 论文翻译和总结 主要贡献一.固态激光雷达的特点1. 小FoV2. 不规律的扫描模式3. 非重复扫描4. 运动模糊 二. 特征点提取和筛选1. 3D点的筛选2. 特征提取 三. 迭代姿态优化1.边缘点残差(Residual of edge-to-edge)2. 平面点的残差(Residual of plane-to-pl…

对LOAM算法原理和代码的理解

LOAM概况 V-LOAM和LOAM在KITTI上的排名一直是前两名。 LOAM在KITTI上的排名 原始LOAM代码(带中文注释)的地址:https://github.com/cuitaixiang/LOAM_NOTED 作为教学用的A-LOAM代码地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM使用ceres库来做…

LOAM论文阅读

LOAM是Ji Zhang提出的使用激光雷达进行实时建图的算法,即Lidar Odometry and Mapping in Real-time。 Abstract 提出了一个用移动在6自由度的两轴激光雷达实现实时的里程计和建图的算法。由于距离测量值的不同时性和运动估计时产生的畸变导致点云错误匹配。这里作…

LOAM笔记及A-LOAM源码阅读

转载出处:LOAM笔记及A-LOAM源码阅读 - WellP.C - 博客园 导读 下面是我对LOAM论文的理解以及对A-LOAM的源码阅读(中文注释版的A-LOAM已经push到github,见A-LOAM-NOTED),最后也会手推一下LOAM源码中高斯牛顿法&#xf…

LOAM算法详解

激光SLAM 帧间匹配方法: Point-to-Plane ICPNDTFeature-based Method 回环检测方法: Scan-to-ScanScan-to-Map LOAM创新点 定位和建图的分离: 里程计模块:高频低质量的帧间运动估计建图模块:低频高质量的用于点云…

loam 框架流程描述

前端流程(scanRegistration.cpp) 多线激光雷达即有多个激光发射器同时工作,如常见的 Velodyne16,就是共有 16 个激光发射器,一般这些发射器竖排排列,然后一起水平旋转。 激光雷达在一定的时间内旋转一圈,即一帧的点云数据。值得注…

LOAM 梳理

LOAM 梳理 本篇文章对 LOAM 框架进行宏观的解析,暂不涉及内部具体的实现原理。 整个流程 整个 LOAM 框架分为三个主要部分,分别为 Registration(特征提取)、Odometry(特征匹配)和 Mapping(建…

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天…