Fast-LiO2中涉及到的算法学习

2024-01-30 06:50
文章标签 算法 涉及 学习 fast lio2

本文主要是介绍Fast-LiO2中涉及到的算法学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

弄懂Fast-lio2需要看的学习资料
感谢知乎Poao的文章,给我学习起到了很大帮助!

总览

雷达惯性里程计论文阅读笔记—FAST-LIO (一)
雷达惯性里程计论文阅读笔记—FAST-LIO2 (二)

卡尔曼滤波

如何通俗并尽可能详细地解释卡尔曼滤波? - 知乎

FAST-LIO的状态估计过程与卡尔曼滤波过程是高度相似的!
卡尔曼滤波实际上是一种优化估计算法不是我们通俗意义上理解的滤波
假设我们拥有一个机器人,如何估算这个机器人在tk时刻的位姿?
我们有两种手段
1、通过机器人上一时刻t(k-1)的位姿来估计当前时刻的位姿
2、通过机器人上携带的传感器来测量当前时刻的位姿
得到的估计值和观测值是相互独立的,并且二者都符合高斯分布(正态分布)
但是如果我们只采用1,假设t(k-1)时刻的位姿不准确,那么这个估计就是错误的;如果只采用2,假设我们的传感器坏掉了, 那么这个估计也是错误的,卡尔曼滤波实际上就是融合了这两个估计,使得该时刻的估计更加准确。
因为二者都是独立的正态分布,所以这里的融合其实就是两个正态分布相乘,得到一个新的正态分布。

KD-Tree

FAST-LIO论文知识补充—KNN&KD-Tree

在Fast-LIO2中采用了一种新的数据结构,iKD-Tree,这种数据结构是来自KD-Tree
为了搞清楚ikdtree是个什么东西,我们首先需要理解KD-Tree。
KD-Tree实际上是一种搜索算法,给定一空间中的一簇点集N,给定一个坐标点p,如何快速找到距离坐标点p最近的点n且n属于N?KD-Tree就是这样的算法。
主要步骤
1、空间划分
通过点集N中所有点的坐标,将整个空间划分成不同的区域,对一个树干下每次只划分两个树枝,划分依据为在同一坐标轴下所有点中中位数的那个点,分成两个区域后,再对每个区域下进行同样的划分。
2、找到最近邻点
首先根据点p的坐标,沿着根节点开始寻找,循着树枝依次找到最后,最后的点成为s。
3、回溯
因为只通过2找到的最近邻点不一定是真正的最近邻,需要回溯寻找,回溯的方式是“画圆”,然后看看有没有其他的划分线和这个圆相交,如果有的话,看看有没有点在圆内,如果有,这说明s不是距离p最近的在N上的点,假设在园内这个点为k,重复这个过程;否则这说明找到的点s就是点集N上距离p最近的点。

流形

流形-Manifold(1)
浅谈流形学习
对流形(Manifold)的最简单快速的理解

在loam系列的的论文中,毫无例外都提到了流形这一概念,所以必须要学习流形。
1、流形是什么?
流形取自文天祥取的“天地有正气,杂然赋流形”,英文Many Flods,意为许多褶皱。
首先我们要明确,流形是一个空间,不是形状,地球其实就可以看做是一个嵌入在三维空间中的二维流形。
2、流形的作用是什么?
(1)流形其实为了避免冗余的表示出现的。
比如地球是一个三维空间,我们为了表示三维空间中的一个点,会用直角坐标系或者球坐标系,但是对于地球上的某个地点,实际有用的坐标信息其实只有经度和纬度,比如我们要表示北京,只需要(东经116°20′;北纬39°56′)就可以在地球这个三维空间中定位北京的位置,但是如果采用直角坐标系,那么我们就需要(x,y,z)三个参量来确定北京的位置,可是我们采用经纬度只需要两个参量就可以确定北京的位置,经纬度其实就是一种流形的表示方法。
比较直观的一个例子就是球坐标系:
球坐标系
如上所示的球坐标系,针对地球的点,地球的半径是固定的r = r0,由此可以看到x,y,z三个参数就会完全被两个角度参数确定,从这里也可以直观地得到,地球球面上的点是一个二维流形在三维空间的嵌入。
(2)流形可以应用于机器学习中
流形有两种用法

  • 将原来在欧氏空间中适用的算法加以改造,使得它工作在流形上,直接或间接地对流形的结构和性质加以利用
  • 直接分析流形的结构,并试图将其映射到一个欧氏空间中,再在得到的结果上运用以前适用于欧氏空间的算法来进行学习
  • losmap的应用

雅克比矩阵J

对雅可比矩阵的理解
首先膜拜写这篇文章的巨佬,写文章时作者竟然才高二,吾等是在是自愧不如~

该篇文章中:

  • 不能再用一个常数矩阵来描述了

是指的从空间a到空间b的线性变换 f(·) 可以用一个常数矩阵来描述,但是如果这个变换是一个非线性变换 g(·),那么这个变换不能用常数矩阵来描述

  • 每一个不同向量都有自己的矩阵变换,

其实意思就是在如果是线性变换的话,对任意一个向量a,在经过f(·)的变换后,映射到另外一个空间的向量b,这个映射可用一个常数矩阵来表示,但是如果是非线性映射g(·),每个向量对应的常数矩阵就是不一样的了,也就是每个不同向量都有自己的矩阵变换。

  • 因为是“附近”,所以这个向量在邻域内张成的空间可以看作是线性变换的,所以可以用一个特定的矩阵来描述。

类似是求导那里,非线性函数在很短的一段deltax中是线性的,非线性线性化了

n是向量m经过线性变换之后得到向量,如果说我们在空间中的向量是
在这里插入图片描述
那么经过变换之后,得到的向量应该是n撇,又因为在m很小的邻域内进行的这个变换是一个线性变换,那么必然存在一个矩阵J使得
式1
推导J的过程如下
在这里插入图片描述

李群与李代数

李群与李代数这一部分在高博的视觉slam十四讲里面讲解的很清楚,建议直接阅读高波的书,这里贴一个视觉slam十四讲李群李代数部分的知乎的分享笔记。
视觉SLAM-从零爬起打破秃头魔咒——(三)李群与李代数

先验分布、后验分布与似然函数

先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?
如何理解似然函数?

1、先验分布
先验分布是指未知结果,根据经验直接确定原因的概率分布。
2、后验分布
后验分布是指已知结果,根据结果确定原因的概率分布
3、似然函数
似然函数与后验分布很像,都是已知结果,求解原因的概率分布,不同的在于似然函数认为原因是事件的一个固有属性,而后验认为原因只是一个概率。

这篇关于Fast-LiO2中涉及到的算法学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659412

相关文章

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig