FAST-LIO论文学习

目录

前言

1 一些概念

1.1 流形(Manifold )

1.2 松耦合与紧耦合

1.2.1 松耦合

1.2.2 紧耦合

1.3 IMU 连续模型和离散模型

1.3.1 连续模型

1.3.2 离散模型

2 论文学习

2.1 框架

2.2 创新点

2.3 雷达数据预处理

2.3.1 雷达点累积(间隔采样)

2.3.2特征提取

2.4 状态估计

2.4.1 雷达IMU数据处理

1. 前向传播(状态估计)

2. 反向传播和运动补偿

2.4.2 残差

2.4.3 误差卡尔曼滤波器ESKF

3 FAST-LIO2


前言

本文为笔者在学习FAST-LIO时的学习笔记,如有问题欢迎指出,希望能和大家一起交流学习

1 一些概念

1.1 流形(Manifold )

1.1.1 定义:局部具有欧几里得空间性质的 空间 ,在数学上用于描述几何形体

流形学的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,即这些数据所在的空间是“嵌入在高维空间的低维流形”。如,一维流形是曲线,二维流形是曲面,三维流形是我们所熟知的物理空间。

注意:流形是空间,不是形状

1.1.2 作用

  • 高维空间有冗余,通过流形的方式对数据进行降维

    eg:三维空间中的一个球面,用xyz桑坐标轴确定时会产生冗余,只需要用经纬两个坐标就可以确定了。所以三维空间中的球面就是一个二维流形

局部同胚

设流形为M,对于所有x属于M 并且 一个包含x的开子集U属于M,存在一个双射函数【同胚】fi,能将U中的点映射到R上

于是乎,我们得到广义加、广义减的定义

                         x,y\epsilon M,u\epsilon R^n

(原谅我打不出这俩符号,只能发挥大家丰富的想象力了)

田:流形M上一个元素 与 R^n上一个元素进行运算,结果还在流形M上,参考上图流形M上的点x

日:流形M上两个元素进行运算,结果是R^n上的向量

上述可能有点抽象,但是当M为SO(3)时,

流形上x加一个向量空间的u,相对于旋转矩阵加一个扰动u

第二个式子就相对于求李代数上的扰动u

1.2 松耦合与紧耦合

1.2.1 松耦合

原理:分别处理激光雷达与IMU测量结果,并在后端融合两者结果

优点:激光雷达点云配准与IMU积分数据松耦合融合方法减少了计算负载

缺点:忽略了系统的其他状态(例如速度)与激光雷达重新扫描姿态之间的相关性。此外,在无特征的情况下,激光雷达点云配准可能在某些方向上退化,点云配准退化,会导致后端融合不再可靠

1.2.2 紧耦合

原理:将激光雷达的原始特征点(而不是点云配准结果)与IMU数据融合。

实现紧耦合LIO的两种主要方法:①基于优化②基于滤波器

1.3 IMU 连续模型和离散模型

1.3.1 连续模型

由于我们的IMU与雷达是刚性安装在机器人上的,它们的相对位置不会发生变化,因此它是一个欧式变化,只包括旋转、平移。

我们通过 ①物理测量与 ②传感器标定 ,可以得到Lidar到IMU的外参矩阵,反之乘上-1即可。

①物理测量,拿把卷尺,手动测量雷达和IMU的相对位置

②传感器标定教程参考大佬的文章LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题_lio_sam 建图不清晰-CSDN博客

Tips:【若选择②,记得标定完检查下参数是否正常,笔者曾踩过坑,使用标定功能包得到了很离谱的数据】

雷达和IMU的关系可用下式表示

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        T_L^I =(R_L^I,P_L^I)

进而推出运动学模型:

img

测量模型

测量值=真值+噪声+零偏

需要注意的是,加速度测量值的计算,需减去重力加速度的影响,由于我们需要转换到IMU坐标系下,还需乘上I^R_G

其余跟中学公式很像,此处不再赘述

1.3.2 离散模型

基于上面定义的运算,我们可以在IMU采样周期delta_t 处使用零阶保持器对连续模型进行离散化。得到的离散模型为

零阶保持器: 将采样信号转变为在两个连续采样瞬时之间保持常量的信号。


2 论文学习

论文引入了两个符号,广义加、广义减

定义M是一个n维的流形(流形定义参考上文):

(1)当R是SO(3)旋转矩阵,r是一个三维向量,那么R田r,得到R乘r的指数映射

(2)当a、b都是R^n上的向量,运算就如平时的向量加减

2.1 框架

图(a)

  • 雷达输入到预处理模块——>点累积到一定数量——>特征提取——>获得面点和角点

  • IMU输入进行前向传播(积分得到粗略位姿估计),反向传播进行运动补偿

  • 计算雷达里程计残差,利用迭代卡尔曼滤波估计位姿变换,直到收敛

  • 更新点云地图,下采样——>用于下一步注册更多的新点

2.2 创新点

之前算法存在的问题:

  • 易受到无特征环境或小视场(FOV)激光雷达的影响

  • 特征点数量多,计算量大

  • 激光点采样时间不同,导致运动失真

创新:

  • 高计算效率、高鲁棒性的雷达里程计;1200特征点25ms

  • 紧耦合迭代扩展卡尔曼滤波,融合雷达特征点和IMU测量,提出反向传播来弥补运动失真;

  • 新卡尔曼增益计算公式;

2.3 雷达数据预处理

2.3.1 雷达点累积(间隔采样)

  • 为什么:原始雷达点采样频率非常高,不会一接收到新点就对其处理,这样会导致计算量大、效率低下。于是采用累积的方法,就像拼夕夕拉满多少助力就能拿到现金红包,不好意思跑偏了。累积法将一段时间内【默认最小累积时间间隔为20ms】的点统一进行处理,这段时间内的点作为一次scan。

  • 好处:提高状态估计【里程计输出】、地图更新频率

2.3.2特征提取

曲率计算公式:

S:相同scan的近邻点集

上式可以用下图表示,

曲率C大的为角点,小的为面点。

 详细讲解见如何轻松拿捏LIO-SAM-LOAM论文及原理讲解_哔哩哔哩_bilibili

2.4 状态估计

为估计状态量,使用了迭代扩展卡尔曼滤波IEKF,

举个栗子,有一个人从起点出发,走了K步。x1为他预测自己所在的地方,y1是GPS观测到他所在地。将这两个数据输入给卡尔曼滤波器,输出一个最优估计值x',作为下一次的起点,再重复上述过程,直到到达目的地

2.4.1 雷达IMU数据处理

1. 前向传播(状态估计)

看到这个词不禁让我联想到,深度学习中的一张插图,

(输入层——隐藏层——输出层,上一层的输出作为下一层的输入,并计算下一层的输出,直到运算到输出层为止)

只不过此处我们的输入输出数据为
输入:IMU数据

输出:状态量(估计的位移、加速度、误差量、协方差矩阵等)
 

目的:

  • 对两帧雷达间的IMU积分,得到预估位置变换

  • 传递误差量的变化【因为FAST-LIO采用误差状态卡尔曼滤波】——>传递误差量的协方差矩阵——>用于迭代更新

步骤:

  • 利用IMU积分算出一个粗略的状态量(用于反向传播)

  • 计算传播误差量

  • 计算协方差矩阵

  • 直至搜索到最终时刻,结束

2. 反向传播和运动补偿

原理:根据IMU积分得到的 位姿变换 ,估计扫描中每个点相对于扫描结束时间的位姿的激光雷达位姿。估计的相对姿态使我们能够根据扫描中每个单独点的精确采样时间,将所有点投射到扫描结束时间

反向传播的目的:补偿运动失真/去除运动畸变

3 总结:前向传播与反向传播

2.4.2 残差

定义:残差是或预期模型之间的差异。通常使用距离度量来定义残差,比如点到地图或模型的最近距离。

存在原因:进行特征提取时,会将得到的间隔采样雷达数据点与现有的地图数据点相比较,并提取出其中更加接近的系列特征点,而在这个过程中存在着偏差。

常用方法

  • ICP:通过最小化两个点云或线段的距离度量来优化点云的对齐

  • 点到平面、点到线:将地图表示为平面or线段,计算到每个点的距离

  • 特征匹配:kd-Tree中搜索得到

输入:前向传播得到的状态量,反向传播输出的(补偿后的)点云

残差计算

  • 角点:点到近邻直线距离

  • 面点:点到近邻平面距离

  • 通过优化位姿,使残差和趋于0

残差 = dist | 特征点的估计全局坐标 - 地图上最近的平面或边缘点 |

计算完残差后,通过误差状态卡尔曼滤波器,进行状态更新,一直迭代直到收敛

2.4.3 误差卡尔曼滤波器ESKF

  • 为什么要使用ESKF

    1. 旋转的误差状态通常是一个很小的值,

    2. ESKF通常用旋转向量表示,四元数过参数化(用4X4的协方差矩阵表示三自由度)

    3. 传统卡尔曼滤波器(及其变种)具有时间复杂度O(m²),其中m是测量维度,这可能导致在处理大量激光雷达测量数据时候计算负载非常高

过程

ESKF估计的是误差量 𝑥~,结合状态量的估计——>得到最优估计x-,如下

我们再回到刚刚人走路的例子,他从起点出发走了K步(按照他认为均匀步长走)。x1为他预测自己所在的地方,y1是GPS观测到他所在地。【这跟刚刚一样】,不同的是,输入给卡尔曼滤波器的数据换成了x1和y1误差量,即小人自己估算他步长的误差量,以及GPS观测与小人预测之间的误差。

由于步长是小人自己认为走的均匀的,他每次以自己认为的步长(比如50厘米)进行运动,那他每次预测的误差就是0。但是由于他在运动,协方差是不断增加的,于是乎我们将预测误差、观测误差、两个协方差输入给卡尔曼滤波器,得到误差量delta_x',那么得到最终的估算位置就是【x1+误差量delta_x'】,再以该点为下一个起点,重复上述操作,直至抵达目标点/收敛。

收敛后把新点云插入全局地图中,同时,从地图下采样的submap中通过残差计算寻找近邻点,见下图


3 FAST-LIO2

比较:FAST-LIO2相较于1,做了以下改进:

  • 状态估计方面,状态变量变为24维【FL1有18维,此处增加了旋转、平移的外参共六个维度】

  • 直接将原始点云注册到地图,不提取特征

  • 建图方面,论文提出了ikd-Tree的方法

解决问题:

  • 减少计算量

  • 地图数据庞大,需要支持有效的查询通信搜索,同时实时更新,纳入新的测量

后期笔者将整理FAST-LIO2改进部分的笔记,与大家一同学习、讨论。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Fast-lio-localization是一种快速的激光雷达定位技术,可以在复杂的环境中实现高精度的定位。它利用激光雷达扫描周围环境,通过对激光点云数据的处理和分析,确定机器人在环境中的位置和姿态。这种技术在自动驾驶、机器人导航等领域有着广泛的应用。 ### 回答2: Fast-lio-localization是指一种高效的激光雷达定位算法。激光雷达作为机器人感知环境的重要设备,具有高精度、高稳定性等优点,广泛应用于机器人导航和定位中。快速、准确的机器人定位是机器人实现自主导航的重要前置条件之一。 Fast-lio-localization基于几种建图方法(如点云匹配技术)和滤波算法(如卡尔曼滤波)进行数据处理,以实现机器人的高精度定位。这种算法的主要优点在于它能够在较短时间内完成机器人定位,且定位的精度较高,比传统的定位算法速度快、精度高。 Fast-lio-localization算法主要包含以下几个步骤:首先,在机器人行进过程中,激光雷达会产生一堆散点云数据,接着使用建图算法将这些散点云融合成地图,用于机器人的定位;接着,使用几何滤波进行滤波处理,去除冗余噪声数据;最后,使用卡尔曼滤波处理数据,完成机器人的定位。 Fast-lio-localization算法的优势主要表现在速度和精度两个方面。首先,在定位精度方面,即使是在不良环境下,这种算法仍然可以实现高精度的定位。其次,在定位速度方面,这种算法可以应对海量数据的处理,且不需要大量的计算资源。 总体来说,Fast-lio-localization是一种高效的机器人定位算法,可以实现快速、准确的机器人定位。此外,它还可以扩展到更多其他领域,例如自动驾驶、机器人巡检等,具有广阔的应用前景。 ### 回答3: Fast-LIO-Localization是基于激光雷达的实时定位与地图构建系统。它使用现有的和准确的传感器,如激光雷达和惯性测量单元(IMU),快速地实时定位和构建场景的三维地图。系统中主要包含以下模块:激光雷达数据处理和点云匹配、IMU数据处理和运动噪声估计、位姿优化和地图构建,以及位姿跟踪和发布。Fast-LIO-Localization不需要预先应用标记或地标,并能快速响应任何类型的场景和不同的平台。 目前,Fast-LIO-Localization已被广泛应用于无人驾驶车辆、机器人和无人机等领域。在无人驾驶车辆中,Fast-LIO-Localization能够实时定位和构建实时地图,从而能够提高车辆的自主导航能力。在机器人领域,该系统能够提供精确的定位和地图构建,从而使机器人在复杂环境中进行自主操作更加稳健和准确。在无人机中,Fast-LIO-Localization能够提供实时的高精度定位数据和地图,从而能够改善无人机的飞行轨迹控制和导航计划。 总之,Fast-LIO-Localization是一种高效的定位与地图构建系统,它不仅能够广泛应用于各种智能移动设备和系统中,而且还能够提高设备和系统的性能和可靠性。它在实时性、精确性和普适性方面的优势,使得Fast-LIO-Localization成为了目前最受欢迎的激光雷达实时定位和地图构建的解决方案之一。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值