FAST-LIO(一):论文简要介绍


前言

论文题目:FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter,FAST-LIO:一种基于紧耦合IKF算法的快速的,鲁棒性的激光雷达惯性里程计。这里主要按照自己的理解对论文内容要简短的介绍。


论文主要贡献

相比于其他的松耦合方案,该论文提出了一套激光雷达惯性紧耦合方案,采用了IEKF(迭代扩展卡尔曼滤波器)去减缓线性误差。

1.论文架构

在这里插入图片描述
论文架构图如上:输入为激光雷达数据和imu数据。雷达数据经过预处理环节:激光点累积,以及特征提取(平面特征,边缘特征),imu数据经过前向推算,后向推算,以及为激光雷达点云提供畸变去除,在更新过程中,联合IMU和雷达数据构建观测方程,滤波框架采用IEKF。IMU的后向过程是一个后向的推算,主要作用是为雷达去畸变提供运动约束。

2.系统介绍

2.1 符号定义

定义了两种符号,如下所示,可以支持在旋转矩阵以及流形两种符号的公式表述。当是旋转矩阵时,就代表加减。
在这里插入图片描述

2.2 连续域模型

假设IMU和激光雷达刚性连接,所以它们之间的安装角和杆臂是固定的。如下是连续域下的运动方程,为微分形式。这里把零偏建模成随机游走过程。
在这里插入图片描述

2.3 离散域模型

离散域下的模型如下所示,连续域转到离散域要乘以采样时间t。
在这里插入图片描述
从下面公式可以到,状态变量为18维,这里不太清楚为啥把世界坐标系下的重力放在状态变量中了,因为它本身就是个固定值。
在这里插入图片描述

2.4 雷达数据预处理

雷达原始数据频率非常高,200Hz,一般做法是累积一段时间,再一块接收,也就是一帧数据,实现降频,一般为50Hz,假设在20ms时间内雷达发生了转弯和线性运动,所以这一帧中的雷达点采集的时间戳是不一样的,就需要借助IMU来去除运动畸变。

3.状态估计

这是论文的核心内容。

3.1 前向过程

前向过程其实就是卡尔曼滤波的预测过程,有两个方程:状态变量的预测方程,以及协方差矩阵的预测方程。
如下是系统预测方程。
在这里插入图片描述
如下分别为系统转换矩阵和噪声转换矩阵。
在这里插入图片描述
下面是协方差先验过程。
在这里插入图片描述

3.2 后向过程&运动补偿

为何要进行后向过程,其实涉及到一个时间软同步的问题。IMU和激光雷达的时间不可能完全对比,相差在几个ms。激光雷达一帧数据由很多点组成,这些点显然不是同一时间测量得到的,所以需要补偿时间差带来的运动误差。如下所示,已知j刻度的激光雷达点坐标,如何求k时刻的激光雷达点坐标,k时刻代表真正的采集时间,当然,这个时间可以用线性插值方法获取,也存在一定的插值误差,但是一般误差足够小了。需要先转换到IMU坐标系,再通过后方推算得到k时刻IMU坐标下的激光点坐标,最后再转换回到激光雷达坐标系,就得到了k时刻的雷达点坐标系。
在这里插入图片描述

3.3 残差计算

残差计算是为了构建滤波器的观测方程。如下所示,雷达点坐标,先转到IMU坐标系,再转到世界坐标系下。
在这里插入图片描述
接下来,需要计算世界坐标系下的激光点坐标和地图中实际对应的点之间的距离,并且投影到对应的边的方向上来。如下公式所示:
在这里插入图片描述
如何寻找最近地图中的边,或者平面,可以建立KD树搜索。通过构建残差方程,对于残差过大的激光点观测,我们就可以把它当成野值处理。

3.4 迭代更新

我们建立的观测方程如下,其实和残差构建是一致的。
在这里插入图片描述
我们知道EKF需要做泰勒公式展开,求雅可比矩阵,如下所示:
在这里插入图片描述
H矩阵就是对应的雅可比矩阵,文中提到下面两种计算增益的公式是等价的,第一个公式相比第二个公式,在计算效率上会更高。
在这里插入图片描述
在这里插入图片描述
协方差的恶后验计算公式如下:
在这里插入图片描述
状态变量的后验如下:
在这里插入图片描述
从最优化的角度来看滤波器,则IEKF的最优化公式如下:
在这里插入图片描述
状态估计的整体流程如下,IEKF的迭代过程,有一个终止条件,就是看残差小于一个特定值。
在这里插入图片描述

4. 地图更新

地图更新过程就是把激光雷达点投影到世界坐标系的过程,如下公式所示:
在这里插入图片描述

5. 初始化

初始化需要静止2s,静止状态下可以计算陀螺仪的零偏,以及加速度计的重力向量。

6. 实验结果

如下所示,可以看到,相比LOAM以及LOAM+IMU的方案,FAST-LIO用时更短,并且LOAM+IMU是松耦合的方案。
在这里插入图片描述
从下图中可以看到,相比LOAM以及LOAM+IMU,FAST-LIO无论在慢速还是快速运动情况下,建图效果都更好。
在这里插入图片描述

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fast-lio-localization 是一个基于激光雷达的定位算法,它的核心思想是将激光雷达数据转化为一些特征,并根据这些特征进行定位。下面是 fast-lio-localization 的代码详解: 1. 读取激光雷达数据 首先,在 main 函数我们需要读取激光雷达数据。fast-lio-localization 支持多种不同类型的激光雷达,包括 Velodyne HDL-32E、Velodyne VLP-16、Hokuyo UTM-30LX 和 Sick LMS200。 2. 预处理激光雷达数据 预处理激光雷达数据是 fast-lio-localization 的一个重要步骤。在这个步骤,我们需要将激光雷达数据转化为一些特征。这些特征包括: - 点云:将激光雷达数据转化为点云,便于后续处理。 - 点云滤波:对点云进行滤波,去除一些噪声点。 - 特征提取:从点云提取一些特征,如角点和平面点。 3. 初始化粒子滤波器 fast-lio-localization 使用粒子滤波器来进行定位。在初始化粒子滤波器时,我们需要设置一些参数,如粒子数量、初始位置和方向等。 4. 运行粒子滤波器 在运行粒子滤波器时,我们需要执行以下步骤: - 根据当前机器人的运动模型,对粒子进行预测。 - 使用激光雷达数据和地图,计算每个粒子的权重。 - 根据粒子的权重,重新采样粒子。 5. 输出定位结果 在粒子滤波器运行完毕后,我们可以得到一些最终的粒子。通过对这些粒子的统计分析,我们可以得到机器人的位置和方向,并输出定位结果。 以上就是 fast-lio-localization 的代码详解。需要注意的是,fast-lio-localization 是一个比较复杂的算法,需要对激光雷达数据和粒子滤波器等知识有一定的了解才能深入理解它的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值