LOAM简介

article/2025/8/31 2:52:00

LOAM

文章目录

  • LOAM
    • LOAM系统流程
    • 1、特征提取
      • (1)按线数分割
      • (2)计算曲率
      • (3)删除异常点
      • (4)按曲率大小筛选特征点
    • 2、帧间匹配
      • (1)特征关联与损失函数计算
      • (2)LM迭代优化
    • 3、构建地图
      • (1)合并地图点
      • (2)位姿优化与里程计优化的方法相同
    • 4、基于数据集实现
      • (1)Kitti数据集简介
      • (2)里程计工程框架实现
      • (3)里程计精度评价
      • (4)数据集的使用
        • ①制作bag文件
        • ②测试bag
        • ③运行结果
      • 下载链接
    • 写在最后

LOAM系统流程

在这里插入图片描述

  整体思想: 在点云中提取边缘特征(如树干、墙角等采用线模型描述)和平面特征(如地面、墙面等,采用面模型描述),匹配时以点到线距离和点到面的距离为残差优化位姿。

1、特征提取

(1)按线数分割

  这里的线数指的是激光雷达的线程数。
在这里插入图片描述

(2)计算曲率

c = 1 ∣ S ∣ ⋅ ∥ X ( k , i ) L ∥ ∑ j ∈ S , j ≠ i ( X ( k , i ) L − X ( k , j ) L ) ∥ c=\frac{1}{|S| \cdot \| X_{(k, i)}^{L}}\left\|\sum_{j \in S, j \neq i}\left(X_{(k, i)}^{L}-X_{(k, j)}^{L}\right)\right\| c=SX(k,i)L1jS,j=i(X(k,i)LX(k,j)L)
  该公式计算点 i i i的曲率,其中 S S S代表在周围,并且和 i i i再同一条扫描线上的点, X ( k , i ) L X_{(k, i)}^{L} X(k,i)L X ( k , j ) L X_{(k, j)}^{L} X(k,j)L分别代表点 i i i j j j的坐标。

(3)删除异常点

在这里插入图片描述

(4)按曲率大小筛选特征点

  主要分为以下四类:
     a.曲率特别大的点(sharp)
     b.曲率大的点(less_sharp)
     c.曲率特别小的点(flat)
     d.曲率小的点(less_flat)
在这里插入图片描述

2、帧间匹配

(1)特征关联与损失函数计算

      a.线特征               b.面特征
在这里插入图片描述
  点到线的距离
d ε = ∣ ( X ~ ( k + 1 , i ) L − X ˉ ( k , j ) L ) × ( X ~ ( k + 1 , i ) L − X ˉ ( k , l ) L ) ∣ ∣ X ˉ ( k , j ) L − X ˉ ( k , l ) L ∣ ( 1 ) d_{\varepsilon}=\frac{\left|\left(\tilde{X}_{(k+1, i)}^{L}-\bar{X}_{(k, j)}^{L}\right) \times\left(\tilde{X}_{(k+1, i)}^{L}-\bar{X}_{(k, l)}^{L}\right)\right|}{\left|\bar{X}_{(k, j)}^{L}-\bar{X}_{(k, l)}^{L}\right|} (1) dε=Xˉ(k,j)LXˉ(k,l)L(X~(k+1,i)LXˉ(k,j)L)×(X~(k+1,i)LXˉ(k,l)L)1
  点到面的距离
d ε = ∣ ( X ~ ( k + 1 , i ) L − X ˉ ( k , j ) L ) ( ( X ~ ( k , j ) L − X ˉ ( k , l ) L ) × ( X ˉ ( k , j ) L − X ˉ ( k , m ) L ) ) ∣ ∣ ( X ˉ ( k , j ) L − X ˉ ( k , l ) L ) × ( X ˉ ( k , j ) L − X ˉ ( k , m ) L ) ∣ ( 2 ) d_{\varepsilon}=\frac{\left|\begin{array}{c} \left(\tilde{X}_{(k+1, i)}^{L}-\bar{X}_{(k, j)}^{L}\right) \\ \left(\left(\tilde{X}_{(k, j)}^{L}-\bar{X}_{(k, l)}^{L}\right) \times\left(\bar{X}_{(k, j)}^{L}-\bar{X}_{(k, m)}^{L}\right)\right) \end{array}\right|}{\left|\left(\bar{X}_{(k, j)}^{L}-\bar{X}_{(k, l)}^{L}\right) \times\left(\bar{X}_{(k, j)}^{L}-\bar{X}_{(k, m)}^{L}\right)\right|} (2) dε=(Xˉ(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L)(X~(k+1,i)LXˉ(k,j)L)((X~(k,j)LXˉ(k,l)L)×(Xˉ(k,j)LXˉ(k,m)L))2
  把(1)和(2)放在一个模型里,得到总的损失函数为:
loss ⁡ = ∑ i = 1 N ε d ε i + ∑ i = 1 N H d H i = D ( X ~ ( k + 1 , i ) L ) ( 3 ) \operatorname{loss}=\sum_{i=1}^{N_{\varepsilon}} d_{\varepsilon i}+\sum_{i=1}^{N_{H}} d_{H i}=D\left(\tilde{X}_{(k+1, i)}^{L}\right)(3) loss=i=1Nεdεi+i=1NHdHi=D(X~(k+1,i)L)(3)
  定义 t k + 1 t_{k+1} tk+1时刻的位姿为
T k + 1 L = [ t x , t y , t z , θ x , θ y , θ z ] T T_{k+1}^{L}=\left[t_{x}, t_{y}, t_{z}, \theta_{x}, \theta_{y}, \theta_{z}\right]^{T} Tk+1L=[tx,ty,tz,θx,θy,θz]T
  特征点从当前雷达坐标系投影到目标坐标系
X ~ ( k + 1 , i ) L = R X ( k + 1 , i ) L + t = G ( X ( k + 1 , i ) L , T k + 1 L ) ( 4 ) \begin{aligned} \tilde{X}_{(k+1, i)}^{L} &=R X_{(k+1, i)}^{L}+t \\ &=G\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right) \end{aligned} (4) X~(k+1,i)L=RX(k+1,i)L+t=G(X(k+1,i)L,Tk+1L)(4)
其中 t = [ t x , t y , t z ] T t=\left[t_{x}, t_{y}, t_{z}\right]^{T} t=[tx,ty,tz]T
R = R x R y R z = [ c y c z + s y s x S z c z s y s x − c y s z c x s y c x s z c x c z − s x c y s x s z − c z s y c y c z s x + s y s z c y c x ] \begin{aligned} R &=R_{x} R_{y} R_{z} \\ &=\left[\begin{array}{ccc} c_{y} c_{z}+s_{y} s_{x} S_{z} & c_{z} s_{y} s_{x}-c_{y} s_{z} & c_{x} s_{y} \\ c_{x} s_{z} & c_{x} c_{z} & -s_{x} \\ c_{y} s_{x} s_{z}-c_{z} s_{y} & c_{y} c_{z} s_{x}+s_{y} s_{z} & c_{y} c_{x} \end{array}\right] \end{aligned} R=RxRyRz=cycz+sysxSzcxszcysxszczsyczsysxcyszcxczcyczsx+syszcxsysxcycx
{ c x = cos ⁡ ( θ x ) s x = sin ⁡ ( θ x ) c y = cos ⁡ ( θ y ) s y = sin ⁡ ( θ y ) c z = cos ⁡ ( θ z ) s z = sin ⁡ ( θ z ) \left\{\begin{array}{l} c_{x}=\cos \left(\theta_{x}\right) \\ s_{x}=\sin \left(\theta_{x}\right) \\ c_{y}=\cos \left(\theta_{y}\right) \\ s_{y}=\sin \left(\theta_{y}\right) \\ c_{z}=\cos \left(\theta_{z}\right) \\ s_{z}=\sin \left(\theta_{z}\right) \end{array}\right. cx=cos(θx)sx=sin(θx)cy=cos(θy)sy=sin(θy)cz=cos(θz)sz=sin(θz)合并(3)和(4)得到
loss ⁡ = F ( X ( k + 1 , i ) L , T k + 1 L ) = D ( G ( X ( k + 1 , i ) L , T k + 1 L ) ) \operatorname{loss}=F\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right)=D\left(G\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right)\right) loss=F(X(k+1,i)L,Tk+1L)=D(G(X(k+1,i)L,Tk+1L))

(2)LM迭代优化

T k + 1 L ← T k + 1 L − ( J T J + λ diag ⁡ ( J T J ) ) − 1 J T d T_{k+1}^{L} \leftarrow T_{k+1}^{L}-\left(J^{T} J+\lambda \operatorname{diag}\left(J^{T} J\right)\right)^{-1} J^{T} d Tk+1LTk+1L(JTJ+λdiag(JTJ))1JTd
其中 J = ∂ F ( X ( k + 1 , i ) L , T k + 1 L ) ∂ T k + 1 L = ∂ D ( G ( X ( k + 1 , i ) L , T k + 1 L ) ) ∂ T k + 1 L = ∂ D ( X ~ ( k + 1 , i ) L ) ∂ X ~ ( k + 1 , i ) L ∂ G ( X ( k + 1 , i ) L , T k + 1 L ) ∂ T k + 1 L \begin{aligned} J &=\frac{\partial F\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right)}{\partial T_{k+1}^{L}} \\ &=\frac{\partial D\left(G\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right)\right)}{\partial T_{k+1}^{L}} \\ &=\frac{\partial D\left(\tilde{X}_{(k+1, i)}^{L}\right)}{\partial \tilde{X}_{(k+1, i)}^{L}} \frac{\partial G\left(X_{(k+1, i)}^{L}, T_{k+1}^{L}\right)}{\partial T_{k+1}^{L}} \end{aligned} J=Tk+1LF(X(k+1,i)L,Tk+1L)=Tk+1LD(G(X(k+1,i)L,Tk+1L))=X~(k+1,i)LD(X~(k+1,i)L)Tk+1LG(X(k+1,i)L,Tk+1L)
对于线特征,梯度方向为通过特征点的垂直于直线的方向
∂ D ( X ~ ( k + 1 , i ) L ) ∂ X ~ ( k + 1 , i ) L = [ a ε , b ε , c ε ] T \frac{\partial D\left(\tilde{X}_{(k+1, i)}^{L}\right)}{\partial \tilde{X}_{(k+1, i)}^{L}}=\left[a_{\varepsilon}, b_{\varepsilon}, c_{\varepsilon}\right]^{T} X~(k+1,i)LD(X~(k+1,i)L)=[aε,bε,cε]T
对于面特征,梯度方向为通过特征点的垂直于平面的方向
∂ D ( X ~ ( k + 1 , i ) L ) ∂ X ~ ( k + 1 , i ) L = [ a H , b H , c H ] T \frac{\partial D\left(\tilde{X}_{(k+1, i)}^{L}\right)}{\partial \tilde{X}_{(k+1, i)}^{L}}=\left[a_{H}, b_{H}, c_{H}\right]^{T} X~(k+1,i)LD(X~(k+1,i)L)=[aH,bH,cH]T

3、构建地图

(1)合并地图点

   ①把关键帧的特征点按照位姿转到地图坐标系中
   ②按照位置和cube尺寸划分到对应的cube中

(2)位姿优化与里程计优化的方法相同

4、基于数据集实现

(1)Kitti数据集简介

   硬件组成:
   ①一个64 线程激光雷达,在车顶中心;
   ②两个彩色摄像头和两个黑白摄像头,在雷达两侧;
   ③一个组合导航系统,在雷达左后方。特可以输出RTK/IMU组合导航结果,包括维度和姿态,同时也输出IMU原始数据。
在这里插入图片描述

(2)里程计工程框架实现

   核心思想:
   ①通过类的封装,实现模块化;
   ②把ROS流程与C++内部实现分开,使流程清晰;
   ③基于C++多态,实现搞可扩展性。

在这里插入图片描述

(3)里程计精度评价

   以组合导航的结果为真值,使用evo工具进行里程计精度评价

(4)数据集的使用

①制作bag文件

  升级 numpy:

sudo pip install -U numpy

  安装kitti2bag:

sudo pip install kitti2bag

  按照如下目录存放文件
在这里插入图片描述
生成bag

kitti2bag -t 2011_10_03 -r 0027 raw_synced

②测试bag

  输入以下指令:

roscore
rviz
rosbag play kitti_2011_10_03_drive_0027_synced.bag

在这里插入图片描述

③运行结果

LOAM-KITTI数据集

下载链接

  这里给大家提供本文中所使用的kitti数据测试下载链接,欢迎下载
测试用到的KITTI数据集下载链接

写在最后

  博客中有相关错误,希望大佬们指出。(感谢感谢!!)


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

相关文章

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曾这样描述思维模型…

100种分析思维模型(5)

公众号后台回复“图书“,了解更多号主新书内容 作者:林骥 来源:林骥 很多分析思维模型,本质上都是在研究人的行为。 下面介绍的 RFM 分析思维模型,本质上也是在研究人的行为。 1. 模型介绍 美国有一个叫 Arthur Hughes…

100种分析思维模型(003号)

公众号后台回复“图书“,了解更多号主新书内容 作者:林骥 来源:林骥 一个分析思维模型的背后,可能涉及很多相关的背景知识,但对于使用模型的人来讲,真正关心的是如何应用模型去解决实际的问题,而…

15种顶级分析思维模型。

内容来源 :博雅人文 作者:博雅君 今天给大家分享几个思维模型,无论是数分还是其他岗位,都会有所启发。 查理芒格认为,每个学科都是从一个独特的角度去切入了解这个世界,都是一个摸象的瞎子。 要超越普通人的…

思维模型:建立高品质思维的30种模型

第一章 如何快速而全面地做出决策 思维模型1:关注“重要”任务,忽略“紧急”任务 用于区分真正的优先事项和冒牌货。 重要任务和紧急任务区分开: 把活动和需求分类,整理出最重要的任务,并找出为了实现这些重要任务需…

16个顶级思维模型,数据分析师必备 !

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