【Fast-LIO系列】Fast-LIO、Fast-LIO2、Faster-LIO系列特点分析

news2024/10/1 5:59:09

【FAST-LIO】Fast-LIO系列特点分析

    • 1. FAST-LIO核心贡献
      • 1.将IMU和Lidar特征点紧耦合在一起
      • 2.使用反向传播考虑到了运动补偿
      • 3. 基于IESKF中的 卡尔曼增益更新 K
    • 2. FAST-LIO2核心贡献(2021年)
      • 1. 不用线,面特征点而使用全局点云
      • 2. 使用ikd-tree存储点云
      • 3. ikd-Tree
    • 3. Faster-LIO 核心贡献

1. FAST-LIO核心贡献

【FAST-LIO】FAST-LIO论文详解

1.将IMU和Lidar特征点紧耦合在一起

2.使用反向传播考虑到了运动补偿

3. 基于IESKF中的 卡尔曼增益更新 K

将IEKF的卡尔曼滤波 P H T ( H P H T + R ) − 1 PH^{T}(HPH^{T}+R)^{-1} PHT(HPHT+R)1 转为 ( H T R − 1 H + P − 1 ) − 1 H T R − 1 (H^{T}R^{-1}H+P^{-1})^{-1}H^{T}R^{-1} (HTR1H+P1)1HTR1 ,这样做的好处是原本公式中求逆中的矩阵是观测维度的,新公式求逆中的矩阵是状态维度的,需要求逆H的矩阵维度减小了(因为在实际情况中,激光特征点的数量维度要远大于状态量的维度)

详细的证明见blog【FAST-LIO】FAST-LIO论文详解

详细的推导过程:
根据矩阵逆引理[27],我们可以得到:

( P − 1 + H T R − 1 H ) − 1 = P − P H T ( H P H T + R ) − 1 H P \left(P^{-1}+H^T R^{-1} H\right)^{-1}=P-P H^T\left(H P H^T+R\right)^{-1} H P (P1+HTR1H)1=PPHT(HPHT+R)1HP

将上述代入公式(20),我们可以得到:

K = ( H T R − 1 H + P − 1 ) − 1 H T R − 1 = P H T R − 1 − P H T ( H P H T + R ) − 1 H P H T R − 1 K=\left(H^T R^{-1} H+P^{-1}\right)^{-1} H^T R^{-1} \\ =P H^T R^{-1}-P H^T\left(H P H^T+R\right)^{-1} H P H^T R^{-1} K=(HTR1H+P1)1HTR1=PHTR1PHT(HPHT+R)1HPHTR1

现在注意 H P H T R − 1 = ( H P H T + R ) R − 1 − I HPH^{T} R^{-1}=\left(HPH^{T}+R\right) R^{-1}-I HPHTR1=(HPHT+R)R1I。将其代入上述,我们可以得到标准卡尔曼增益公式(18),如下所示。

K = P H T R − 1 − P H T R − 1 + P H T ( H P H T + R ) − 1 = P H T ( H P H T + R ) − 1 . K=P H^T R^{-1}-P H^T R^{-1}+P H^T\left(H P H^T+R\right)^{-1} \\ =P H^T\left(H P H^T+R\right)^{-1}. K=PHTR1PHTR1+PHT(HPHT+R)1=PHT(HPHT+R)1.

在FAST-LIO算法中,通过应用矩阵逆引理(Matrix Inverse Lemma),将原本需要在观测维度上进行求逆的矩阵转换为在状态维度上进行求逆。具体到上述公式中的求逆矩阵维度变化如下:

  1. 原始卡尔曼增益公式
    K = ( H T R − 1 H + P − 1 ) − 1 H T R − 1 K = (H^T R^{-1} H + P^{-1})^{-1} H^T R^{-1} K=(HTR1H+P1)1HTR1
    这里, H T R − 1 H H^T R^{-1} H HTR1H 的维度是状态维度乘以状态维度,而 P − 1 P^{-1} P1 的维度同样是状态维度乘以状态维度。

  2. 应用矩阵逆引理后
    ( P − 1 + H T R − 1 H ) − 1 = P − P H T ( H P H T + R ) − 1 H P \left(P^{-1} + H^T R^{-1} H\right)^{-1} = P - P H^T \left(H P H^T + R\right)^{-1} H P (P1+HTR1H)1=PPHT(HPHT+R)1HP
    在这个公式中, H P H T + R H P H^T + R HPHT+R 的维度是观测维度乘以观测维度, ( H P H T + R ) − 1 \left(H P H^T + R\right)^{-1} (HPHT+R)1 需要在观测维度上求逆。

  3. 维度变化

    • 在原始公式中,需要在观测维度上求逆的矩阵是 H T R − 1 H H^T R^{-1} H HTR1H,其维度通常远大于状态维度。
    • 在应用矩阵逆引理后,需要求逆的矩阵变为 H P H T + R H P H^T + R HPHT+R,其维度是观测维度乘以观测维度,但通过巧妙的代数操作,实际上避免了直接在这个大矩阵上进行求逆。在这里插入图片描述
  4. 最终的卡尔曼增益
    K = P H T ( H P H T + R ) − 1 K = P H^T \left(H P H^T + R\right)^{-1} K=PHT(HPHT+R)1
    这里,尽管看起来仍然需要在观测维度上求逆,但实际上通过前面的步骤,已经将求逆的负担从观测维度转移到了状态维度,大大减少了计算量。

在FAST-LIO中,这种转换使得算法能够更高效地处理大量的观测数据(如激光雷达点云),同时保持了状态估计的准确性。通过这种方式,算法能够处理更高频率的数据更新,提高了SLAM系统的整体性能。

本文的IEKF的更新频率是基于雷达的采样频率k,一帧雷达点云估计出一个后验状态。其中状态方程是IMU离散传播。观测方程是scan-submap匹配的,特征用点和面特征。

每帧状态量会做反向传播利用 Δ T \Delta T ΔT 传播到特征点时间戳下的状态 T j T_{j} Tj (一帧雷达点云包含若干个IMU状态,两个IMU状态之间包含若干个特征时间戳,在计算时考虑到了不同的IMU状态),增量式更新是SLAM研究里非常核心的话题。然后将特征点经过外参 L T {}_{L}^{T} LT T进行运动补偿,并将得到的点转到全局坐标系下,并与submap进行scan-submap匹配,计算点线,点面的残差,并将观测方程通过变换后的IEKF进行迭代估计。得到增量式距离 x k k + 1 x_{k}^{k+1} xkk+1 ,直到每次迭代的增量都小于阈值,以代表收敛。

2. FAST-LIO2核心贡献(2021年)

paper: FAST-LIO2: Fast Direct LiDAR-inertial Odometry

对于FAST-LIO2而言,相较于FAST-LIO,做了如下改进:

1. 不用线,面特征点而使用全局点云

2. 使用ikd-tree存储点云

文章中提到的第一点,通过原始点云与地图的配准Q,可以有效地利用环境中的细微特征,从而提高准确性,同时不使用特征提取也可以更好地适应不同的激光雷达。另一块就是设计了增量k-d树数据结构ikd-Tree,以高效地表示大型稠密点云地图,除了高效的最近邻搜索外,新的数据结构还支持增量地图更新(即点插入、下采样、点删除)和以最小计算成本进行动态平衡。同样ikd-Tree支持下采样,在不影响精度的同时能够相较于八叉树,R-树,nanoflann,k-d树等传统的方法获得更快的计算精度。得益于ikd-Tree,Fast-LIO2不再是类似LOAM般的提取edge特征与plane特征,而是直接将每个三维点与地图配准。因此,其能够较稳定地运行在一些较难提取手工特征的场景中。此外FAST-LIO2的状态估计是从FAST-LIO继承的紧耦合迭代卡尔曼滤波器(IEKF),FAST-LIO2的流程如下图所示,顺序采样的激光雷达原始点首先在10ms(用于100Hz更新)和100ms(用于10Hz更新)之间的时间段内累积。累积的点云称为扫描数据,为了执行状态估计,新扫描中的点云通过紧耦合迭代卡尔曼滤波框架配准到大型局部地图中维护的地图点(即里程计),大型局部地图中的全局地图点由增量k-d树结构ikd树组织。

在这里插入图片描述

3. ikd-Tree

众所周知,kd树类结构的优势在于可以严格地查询K近邻,也可以以范围或盒子形式来查询最近邻(range search/box search),查询过程中可以设置最大距离等限制条件,实现快速的近似最近邻查找(Aproximate Nearest Neighbor, ANN)。而ikd-Tree在point-wise和block-wise,通过对结点新加了deleted, treedeleted, pushdown,treesize, invalidnum属性,进而减小了插入,删除,检索,re-insert的时间复杂度,并达到增量更新的目的;并且能够通过设置的参数,检测到二叉树不平衡时,进行重建。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. Faster-LIO 核心贡献

Faster-LIO: Lightweight Tightly Coupled Lidar-Inertial Odometry Using Parallel Sparse Incremental Voxels

FASTER-LIO作为FAST-LIO2的升级版,通过一些优化措施进一步提升了处理速度。该算法不再采用复杂的基于树的数据结构来组织空间点云,而是采用了一种名为增量体素(iVox)的点云空间数据结构,这种结构是从传统的体素演变而来,支持点云的增量插入和并行近似k-NN查询。以下是文章中提到的一些改进要点:

  1. 使用增量体素(iVox)存储点云:在存储点云时,采用被动删除LRU(最近最少使用)策略来删除体素。在检索过程中,会考虑体素内的点云。在每个体素内部,根据点云的密度,选择使用线性方法或PHC(一种点云处理算法)进行处理,当点云数量较多时,倾向于使用PHC。

  2. 与FAST-LIO2相比的实验结果:精度方面两者相当,但FASTER-LIO通过牺牲一小部分配准精度来减少处理时间。在大多数数据集上,处理时间减少了约一半。

LIO系统的计算流程通常包括:从IMU获取初步估计,将雷达数据与历史数据进行配准,最后使用某种状态估计算法进行滤波或优化。由于IMU处理部分的差异不大,因此LIO系统的计算效率主要取决于点云处理算法和后端算法。

点云最近邻的数据结构对于点云配准至关重要。点云配准的核心任务是计算给定点与历史点云的最近邻,通常需要依赖某些高效的最近邻数据结构。这些数据结构主要分为基于树的(treelike)和基于体素的(voxellike)。对于LIO系统而言,最近邻问题是一个低维、增量式的问题。作者认为,增量式的体素结构更适合LIO系统。

FASTER-LIO以FAST-LIO2为基础进行改进。实验表明,FAST-LIO2的主要耗时在于IEKF+ICP的迭代过程。当使用iVox替代iKd-tree后,这一过程的耗时显著减少。在UTBM数据集上,IEKF迭代的时间从大约20ms降低到了5-8ms,这同时也意味着ICP搜索的效率得到了提升。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

P3131 [USACO16JAN] Subsequences Summing to Sevens S Python题解

[USACO16JAN] Subsequences Summing to Sevens S 题目描述 Farmer John’s N N N cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to ta…

C语言 | Leetcode C语言题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {for (int i 0; i < numsSize; i) {int x (nums[i] - 1) % numsSize;nums[x] numsSize;}int* ret malloc(sizeof(int) * numsSize);*returnSize 0;for (in…

特征工程——一门提高机器学习性能的艺术

当前围绕人工智能(AI)和机器学习(ML)展开的许多讨论以模型为中心&#xff0c;聚焦于 ML和深度学习(DL)的最新进展。这种模型优先的方法往往对用于训练这些模型的数据关注不足&#xff0c;甚至完全忽视。类似MLOps的领域正迅速发展&#xff0c;通过系统性地训练和利用ML模型&…

ZYNQ: GPIO 之 MIO 控制 LED 实验

GPIO 之 MIO 控制 LED 实验目的 使用 GPIO 通过两个 MIO 引脚控制 PS 端两个 LED 的亮灭&#xff0c;实现底板上 PS_LED0、PS_LED1 两个 LED 灯同亮同灭的效果。 简介 ZYNQ PS 中的外设&#xff08;如 USB 控制器、UART 控制器、I2C 控制器以及 GPIO 等等&#xff09;可以通…

亲测无限坐席在线客服系统源码/二开版/基于ThinkPHP+搭建教程

源码简介&#xff1a; 亲测了一款实用的无限坐席在线客服系统源码&#xff0c;这可是基于ThinkPHP框架开发的二开版哦&#xff01;里面还附带了一份超详细的搭建教程。 安装过程简直不能更简单&#xff0c;只需一键操作&#xff0c;启动两个端口就搞定了。而且&#xff0c;它…

动态库的加载全过程

区分一组概念&#xff1a;逻辑地址&#xff0c;虚拟地址&#xff0c;物理地址。 逻辑地址&#xff1a;是我们的代码在编译过程&#xff0c;编译器帮对每一条代码所生成的指令所编写的地址。 物理地址&#xff1a;当程序被放入到内存中时&#xff0c;内存与每一条指令所对应的…

回执单识别-银行回单识别API-文字识别OCR API

银行回单是一种由银行提供的交易凭证&#xff0c;记录了账户资金的交易明细。它通常包括存款、取款、转账、汇款、支付等各种类型的资金往来信息。银行回单可以是纸质的&#xff0c;也可以是电子版的&#xff0c;内容详尽记录了交易的相关信息&#xff0c;具有法律效力&#xf…

CSS 效果:实现动态展示双箭头

最近写了一段 CSS 样式&#xff0c;虽然不难&#xff0c;但实现过程比较繁琐。这个效果结合了两个箭头&#xff0c;一个突出&#xff0c;一个内缩&#xff0c;非常适合用于步骤导航或选项卡切换等场景。样式不仅仅是静态的&#xff0c;还可以通过点击 click 或者 hover 事件&am…

【机器学习(五)】分类和回归任务-AdaBoost算法

文章目录 一、算法概念一、算法原理&#xff08;一&#xff09;分类算法基本思路1、训练集和权重初始化2、弱分类器的加权误差3、弱分类器的权重4、Adaboost 分类损失函数5、样本权重更新6、AdaBoost 的强分类器 &#xff08;二&#xff09;回归算法基本思路1、最大误差的计算2…

JavaSE——面向对象2:方法的调用机制、传参机制、方法递归、方法重载、可变参数、作用域

目录 一、成员方法 (一)方法的快速入门 (二)方法的调用机制(重要) (三)方法的定义 (四)注意事项和使用细节 1.访问修饰符(作用是控制方法的使用范围) 2.返回的数据类型 3.方法名 4.形参列表 5.方法体 6.方法调用细节说明 (五)传参机制 1.基本数据类型的传参机制 …

C++模拟实现vector容器【万字模拟✨】

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客 数据结构与算法_Stark、的博客-CSDN博客 座右铭&#xff1a;梦想是一盏明灯&#xff…

idea2023-快速搭建一个本地tomcat的javaWeb项目(从0到1保姆教学)

前言 如何在新版idea中搭建一个javaWeb项目&#xff0c;并且应用在物理的tomcat中&#xff0c;本文将进行从零到一&#xff0c;完成搭建步骤&#xff0c;以及相关注意事项的讲解。 为什么需要配置tomcat&#xff1f; 我们开发的javaWeb项目&#xff0c;最后都需要打包部署到真正…

了解华为计算产品线,昇腾的业务都有哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 随着 ChatGPT 的现象级爆红&#xff0c;它引领了 AI 大模型时代的深刻变革&#xff0c;进而造成 AI 算力资源日益紧缺。与此同时&#xff0c;中美贸易战的持续也使得 AI 算力国产化适配成为必然趋势。 …

Flet介绍:平替PyQt的好用跨平台Python UI框架

随着Python在各个领域的广泛应用&#xff0c;特别是在数据科学和Web开发领域&#xff0c;对于一个简单易用且功能强大的用户界面&#xff08;UI&#xff09;开发工具的需求日益增长。传统的Python GUI库如Tkinter、PyQt虽然功能强大&#xff0c;但在易用性和现代感方面略显不足…

ZYNQ:Hello World 实验-PS-串口打印“Hello World”

Hello World 实验目的 PS-串口打印“Hello World” 创建 Vivado 工程 设置工程名为“hello_world” 使用 IP Integrator 创建 Processing System 搜索栏中键入“zynq”&#xff0c;找到并双击“ZYNQ7 Processing System” 串口配置 配置完成后的 ZYNQ7 Processing Sys…

微信小程序 图片的上传

错误示范 /*从相册中选择文件 微信小程序*/chooseImage(){wx.chooseMedia({count: 9,mediaType: [image],sourceType: [album],success(res) {wx.request({url:"发送的端口占位符",data:res.tempFiles[0].tempFilePath,method:POST,success(res){//请求成功后应该返…

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…

Python从入门到高手3.5节-程序实战之最小值算法

目录 3.5.1 算法思路 3.5.2 构造随机数 3.5.3 条件控制语句 3.5.4 完整的代码实现 3.5.5 大神薯条老师 3.5.1 算法思路 算法原理很简单&#xff0c;先任取两个数进行比较&#xff0c;以计算两个数中的最小值&#xff1a; 假设得到的最小值为min_&#xff0c;再用这两个数…

PaddleDetection 自定义训练目标检测

PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件&#xff0c;在提供丰富的模型组件和测试基准的同时&#xff0c;注重端到端的产业落地应用&#xff0c;通过打造产业级特色模型|工具、建设产业应用范例等手段&#xff0c;帮助开发者实现数据准备、模型选型、模…

制造企业各部门如何参与生产成本控制与管理?

​国内制造业的分量可不轻&#xff0c;从日常生活用品到高端工业设备&#xff0c;中国制造几乎涵盖了各个领域。 不过很多制造业企业在管理方面确实存在一些难题&#xff1a;成本控制不容易&#xff0c;产品质量并不稳定&#xff0c;生产周期也常常较长。 一、中国制造业生产管…