从零入门激光SLAM(二十一)——看不懂FAST-LIO?进来

news2024/11/24 23:42:12

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。

FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter

论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9372856

代码:https://github.com/hku-mars/FAST_LIO

一、文章概述

1.问题导向

固态激光雷达最近成为激光雷达发展的主要趋势:成本低、重量轻、高性能。尽管潜力巨大,但固态激光雷达给SLAM带来了新的挑战。

1)固态激光雷达视场角小,更容易退化

2) 高分辨率的点云融合到IMU中需要巨大的计算资源

3) 无人机螺旋桨和发动机的持续旋转也给IMU测量带来了显著的噪声,同时引起点云的运动畸变

2.目标

使LiDAR导航适用于小型移动机器人,如无人机。构建一个计算高效且坚固耐用的激光雷达-惯性里程计算法。

3.摘要

本文提出了一种计算高效和健壮的激光雷达-惯性里程计框架。我们使用紧密耦合的迭代扩展卡尔曼滤波将LiDAR特征点与IMU数据融合,以便在发生退化的快速运动、噪声或杂乱环境中进行稳健导航。为了在大量测量的情况下降低计算量,我们提出了一种新的卡尔曼增益计算公式。新公式的计算量依赖于状态维而不是测量维。在不同的室内外环境下对该方法及其实现进行了测试。在所有测试中,我们的方法实时产生可靠的导航结果:运行在四旋翼车载计算机上,它在一次扫描中融合了1200多个有效特征点,并在25ms内完成了iEKF步骤的所有迭代。我们的代码在Github上是开源的。

4.贡献

1)   为了适应快速运动、噪声或杂乱的环境,我们采用了一种紧耦合的迭代卡尔曼滤波来融合LiDAR特征点和IMU测量,并提出了一种形式化的反向传播过程来补偿运动失真。

2)   为了降低LiDAR特征点的计算量,提出了一种新的卡尔曼增益计算公式,新公式的计算复杂度依赖于状态维度而不是测量维度。

3)   该系统能够在小型四旋翼机载计算机上运行。

4)   我们在不同的室内和室外环境中进行了实验,并用实际的无人机飞行测试来验证系统在快速运动或强烈振动噪声存在时的鲁棒性。

二、方法解析

2.1 系统pipeline

激光雷达的输入被送入特征提取模块,以获得平面和边缘特征。然后将提取的特征和惯性测量反馈到我们的状态估计模块中,以进行10 Hz−50 Hz的状态估计。然后,估计的姿势将特征点注册到全局框架,并将它们与到目前为止构建的特征点地图合并。在下一步中,最终使用更新后的地图来配准进一步的新点。

2.2 系统符号定义

2.2.1符号说明

2.2.2流形

       流形是局部类似于欧几里得空间的空间,在流形上的每个点,我们可以定义一个与该点相切的线性空间,这个空间就是正切空间。正切空间是局部近似流形的一个线性空间。在姿态中,旋转矩阵的李群就是一个SO(3)流形,其局部对应的欧氏空间是李代数so(3),为了避免奇异性和保持结构特性,使用流形进行运算。

  • 广义加与广义减

广义加

该公式表示一个从流形 𝑀和欧几里得空间 𝑅𝑛到流形 𝑀的映射:把一个流形上的点和欧几里得空间中的一个向量结合起来,并将结果映射回流形上

描述从初始旋转𝑅出发,经过一个旋转增量 𝑟后的新的旋转矩阵

广义减

从两个流形 𝑀上的点到欧几里得空间 𝑅𝑛的映射:

描述了两个旋转矩阵之间的相对旋转,以旋转向量的形式表示。

对于欧氏空间广义加和广义减就是常用的加减法。

则有

2.2.3  IMU的运动学模型

l  连续模型

P为位置、R为姿态、v为速度

即为:

l  离散模型

系统状态分解为两个组成部分:流型中的状态量加上正切空间中的误差量,表达如下

状态变量x、输入u、噪声w、方程为f()

其实就是

2.2.4 雷达数据预处理

雷达原始数据频率非常高,200KHz,在这么高的频率下,不可能做到实时接收,我理解在激光雷达的内部信号处理中,一般做法是累积一段时间,再一块接收,也就是一帧数据,实现降频,在FAST-LIO中,一般为50Hz,按照这个频率计算的话,一帧数据包括4K的原始数据。在论文中,累积处理的时间被记为𝑡𝑘,对于原始数据,我们可以通过高平滑性得到平面特征,低平滑性得到边特征。假设在20ms时间内雷达发生了转弯和线性运动,所以这一帧中的雷达点采集的时间戳是不一样的,每个时间戳对应的位姿也是不一样的,就需要借助IMU来去除运动畸变。

2.3    预测步

定义误差状态向量

l  前向传播

向前传播是计算IMU的预测值和预测协方差矩阵,主要公式如下。

1.   预测值计算,用离散模型

2.   计算真实值和估计值之间的差值,使用了近似线性化的方法

3.   预测协方差矩阵计算公式

P预测阶段的误差协方差

Q过程噪声协方差矩阵

是状态转移矩阵

l  向后传播和运动补偿

点云是在各自不同的实践内采集的,坐标系不相同,所以需要IMU预测的位姿向后传播去除运动畸变。之前IMU的向前传播得到了tk-1到tk的运动状态,以及tk时刻的位姿。反向传播就是用tk时刻的位姿反推pj时刻的位姿j=i—tk,可以将对应的云点坐标系全部转换到tk时刻坐标系。

转换公式如下

反向传播只针对位移、速度和旋转进行反向传播,不考虑噪声

通过后向传播可以得到p;到scan结束时间如之间的相对运动,即旋转和平移变换。这一相对变换将每个点的坐标系都转换到scan结束时间t下的坐标系。

2.4    计算残差

假设迭代卡尔曼滤波器的当前迭代次数为k,对应的位姿估计是

将点云转换到世界坐标系,公式如下

假设其附近特征点在地图中定义的最近的平面或边缘是该点真正所属的位置。激光部分的残差被定义为坐标变换后的激光点到全局地图中对应边缘或平面的距离:

地图上最近的平面或边缘点则由kd-Tree中搜索得到,并且将残差高于阈值的点会被定义为离群值或 新观测到的点。

2.5    迭代更新

2.5.1 点云残差

为了融合激光点云匹配残差z和上述IMU前向传播得到的当前状态估计x和误差协方差矩阵P。需要将点云残差与真实状态和LIDAR的测量噪声相关联。

测量噪声来源于激光雷达测距噪声和波束定向噪声

去除点云噪声的公式如下

我们建立的观测方程如下

观测模型是hj,输入是系统状态xk和观测噪声n

泰勒展开线性化如下

其中z为匹配残差,H为残差的雅可比矩阵,v表示LIDAR点的测量噪声

2.5.2 IMU的残差

2.5.3 迭代更新

总残差方程包含IMU残差和点云残差,表达如下。

卡尔曼滤波中更新过程中的卡尔曼增益和第k+1次迭代的估计值,如果第k+1次迭代时对应的残差小于一定阈值,则本次迭代结果为最优状态估计和协方差。卡尔曼增益和更新方程如下

如果观测噪声很大(𝑅很大),卡尔曼增益𝐾较小,说明观测对状态更新的影响较小,主要依赖于预测状态。

如果预测误差协方差𝑃较大,卡尔曼增益𝐾较大,说明观测对状态更新的影响较大,主要依赖于新观测。

但由于激光雷达中的点数量庞大,求解卡尔曼增益时会对一个维度很大的矩阵求逆,在本文中将对激光数据的求解转移到对状态的求解,使维度极大得降低,得到新的卡尔曼增益形式。新公式大大节省了计算量,因为状态维数通常比LIO中的测量值要低得多(例如,在10hz扫描速率下,扫描中有1000多个有效特征点,而状态维数只有18)

2.6    算法流程

2.7    地图更新

通过将求解得到的状态转化为旋转矩阵和平移向量,然后将雷达坐标系下的点转换到全局坐标系下,最后添加到全局地图中。

2.8    初始化

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

三、总结

本文提出了 FAST-LIO,这是一种计算效率高且稳健的 LiDAR-惯性里程计框架,采用紧耦合迭代卡尔曼滤波器。我们使用前向和后向传播来预测 LiDAR 扫描中的状态并补偿运动。此外,我们证明并实施了一个等效公式,该公式可以大大降低卡尔曼增益计算的复杂度。FAST-LIO 在无人机飞行实验中进行了测试,在具有大旋转速度的具有挑战性的室内环境和室外环境中进行了测试。在所有测试中,我们的方法都产生了精确、实时且可靠的导航结果。

参考文献

学习Fast-LIO系列代码中相关概念理解_fast-lio解析-CSDN博客、

FAST-LIO论文阅读_fastlio论文-CSDN博客

FAST-LIO(一):论文简要介绍 - 知乎 (zhihu.com)

从零入门激光SLAM(十八)——ESKF实现组合导航 - 古月居 (guyuehome.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue】input框自动聚焦且输入验证码后跳至下一位

场景:PC端 样式: <div class="verification-code-input"><input v-model="code[index]" v-for="(_, index) in 5" :key="index" type="text" maxlength="1" @input="handleInput(index)" …

数据库—— MySQL数据库安装

一、MySQL数据库定义 MySQL是一种开源关系型数据库管理系统&#xff0c;它使用SQL语言进行数据的管理。通过MySQL&#xff0c;可以创建数据库、表格、插入、查询、更新和删除数据等操作。MySQL支持多种操作系统&#xff0c;并且被广泛应用于Web应用程序开发中。MySQL以其高性能…

【HTML】制作一个跟随鼠标的流畅线条引导页界面(可直接复制源码)

目录 前言 HTML部分 CSS部分 JS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段HTML代码&#xff0c;图中线条可跟随鼠标移动&#xff0c;具体内容如下&#xff1a; 开始 首先新建一个HTML的文本&#xff0c;文本名改为[index.html]&#xff0c;创建好后右…

(Oracle)SQL优化基础(三):看懂执行计划顺序

往期内容&#xff1a; &#xff08;Oracle&#xff09;SQL优化基础&#xff08;一&#xff09;&#xff1a;获取执行计划 &#xff08;Oracle&#xff09;SQL优化基础&#xff08;二&#xff09;&#xff1a;统计信息 获取到执行计划后&#xff0c;对于新手朋友来讲可能不知道…

win11安装docker运行Open-Webui 界面化展示 ollama大模型

1.OpenWeb UI运行需要docker 环境下载docker Get Started | Docker 2.需要命令提示符docker -v 查询是否安装成功&#xff1b; 查询docker详情docker version 3.github拉取open-webUi镜像Package open-webui GitHub 复制命令运行在命令提示符&#xff1b; 等待下载完成 4.到…

[图解]SysML和EA建模住宅安全系统-07 to be块定义图

1 00:00:01,970 --> 00:00:05,040 入侵者这里有个∞ 2 00:00:05,530 --> 00:00:07,000 说明它下面已经有子图了 3 00:00:07,010 --> 00:00:08,080 我们看看里面子图 4 00:00:10,200 --> 00:00:17,000 这里&#xff0c;我们看位置 5 00:00:19,030 --> 00:00:…

find 几招在 Linux 中高效地查找目录

1. 介绍 在 Linux 操作系统中&#xff0c;查找目录是一项常见的任务。无论是系统管理员还是普通用户&#xff0c;都可能需要查找特定的目录以执行各种操作&#xff0c;如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目…

MyBatis-Plus介绍及Spring Boot 3集成指南

我们每个Java开发者都在使用springbootmybatis开发时&#xff0c;我们经常发现自己需要为每张数据库表单独编写XML文件&#xff0c;并且为每个表都需要编写一套增删改查的方法&#xff0c;较为繁琐。为了解决这一问题&#xff0c;MyBatis-Plus应运而生。在本文中&#xff0c;我…

http协议报文头部结构解释

http协议报文头部结构 请求报文 报文解释 请求报文由三部分组成&#xff1a;开始行、首部行、实体主体 开始行&#xff1a;请求方法&#xff08;get、post&#xff09;url版本 CRLE 方法描述GET请求指定页面信息&#xff0c;并返回实体主体HEAD类似get要求&#xff0c;只不…

【论文阅读】Rank-DETR(NIPS‘23)

paper:https://arxiv.org/abs/2310.08854 code:https://github.com/LeapLabTHU/Rank-DETR

图片、视频画质增强变清晰工具分享(免费)

生活中可能会修一下模糊图片那么这就有一款用来修图片的管理工具&#xff0c;也有可能会修一下模糊的视频&#xff0c;在吾爱上有大佬开发了这么一款工具&#xff0c;免费的&#xff0c;不需要开任何VIP&#xff0c;我试了一下&#xff0c;好用&#xff0c;分享出来&#xff0c…

redis核心面试题一(架构原理+RDB+AOF)

文章目录 0. redis与mysql区别1. redis是单线程架构还是多线程架构2. redis单线程为什么这么快3. redis过期key删除策略4. redis主从复制架构原理5. redis哨兵模式架构原理6. redis高可用集群架构原理7. redis持久化之RDB8. redis持久化之AOF9. redis持久化之混合持久化 0. red…

Kubernetes——资源调度与Pod探针

目录 前言 一、资源调度策略 1.默认调度器&#xff08;Default Scheduler&#xff09; 2.自定义调度器&#xff08;Custom Scheduler&#xff09; 3.亲和性与反亲和性&#xff08;Affinity and Anti-Affinity&#xff09; 4.污点与容忍&#xff08;Taints and Toleration…

达梦数据库使用dmlcvt命令找回更改前的数据

在生产系统上不小心修改了表数据后最快的方法是用闪回查询找回。但时间不能超过undo_retention&#xff08;默认90秒&#xff09;。其实最标准的处理方法是在其他机器上将数据库恢复到修改前的时刻。但数据库比较大时恢复时间较长。真实场景可能比较急。那么也可以分析归档日志…

DotNetty ByteBuffer

DotNetty是一个高性能的.NET网络通信框架&#xff0c;基于Netty&#xff0c;支持TCP、UDP、HTTP、WebSocket等协议。适用于高并发、低延迟场景&#xff0c;如实时通信、游戏服务器、IoT应用及大型分布式系统&#xff0c;通过异步I/O、零拷贝等技术提升性能&#xff0c;具备易用…

eNSP小练习一枚

问答看到的&#xff0c;随便敲了敲&#xff0c;希望各路大佬不吝赐教~ 话说现在的问答全是ai&#xff0c;乌烟瘴气的 首先配置全互通&#xff0c;ip vlan 端口隔离 ospf啥的 SWA # vlan batch 10 20 30 99 # interface Vlanif1ip address 10.1.1.2 255.255.255.0 # interf…

【ETAS CP AUTOSAR工具链】ARXML文件详解

本篇文章首先对ARXML这种文件格式做了一个概述&#xff0c;叙述了这种标签语言的基本语法&#xff08;如果您用HTML做过网页&#xff0c;那么这种格式您一定不会陌生&#xff09;&#xff0c;然后对ARXML文件都会包含的一些基本信息做了详细的解读&#xff0c;最后基于使用ISOL…

[数据集][目标检测]吸烟检测数据集VOC+YOLO格式1449张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1449 标注数量(xml文件个数)&#xff1a;1449 标注数量(txt文件个数)&#xff1a;1449 标注…

鸿蒙开发配置官方地图

一共需要配置 p12 p7b cer csr 四个文件 p12文件配置 注意创建文件名必须是.p12 到AGC创建项目 AppGallery Connect 添加自己的项目名称 我没有开启 暂时不需要 看个人需求 下载刚创建的cer证书 回到我的项目中 点击刚创建的项目 点击这里 四个文件齐全了 "metadata&qu…

近临算法(个人总结版)

背景 近邻算法&#xff08;Nearest Neighbor Algorithm&#xff09;是一种基本但非常有效的分类和回归方法。最早由Fix和Hodges在1951年提出&#xff0c;经过几十年的发展和改进&#xff0c;已成为数据挖掘、模式识别和机器学习领域的重要工具。近邻算法基于相似性原则&#x…