经典文献阅读之--Point-LIO(鲁棒高带宽激光惯性里程计)

news2025/1/16 23:39:53

0. 简介

在我们之前接触的算法中,基本上都是要处理帧间雷达畸变的,类似于VSLAM系统,频率固定(例如10Hz), 而实际上,激光雷达点是按照不同的时间瞬间顺序采样的,将这些点累积到帧中会引入人工运动畸变,并且会对地图结果和里程计精度产生负面影响。低帧率还会增加里程计的延迟并限制可达带宽,其中里程计带宽类比于动态系统的带宽,即系统增益下降到0.707的频率。里程计带宽表示运动速度可以多快,里程计才能满意地进行估计。Mars实验室提出了《Point-LIO: Robust High-Bandwidth LiDAR-Inertial Odometry》这篇文章,Point-LIO能够在严重振动和激烈运动(高达75 rad/s的角速度)下提供准确的高频率里程计(4-8 kHz)和可靠的建图,超出了IMU测量范围。


1. 主要贡献

在这项工作中,我们通过两种关键的新技术解决了这些问题:点对点状态更新和随机过程增强的运动学模型。具体而言,我们的贡献如下:

  1. 提出了一种逐点(point-wise) LIO框架,该框架在实际采样时间融合激光雷达点,而不会累积到帧中。去除点累积消除了帧内运动失真,并允许以接近点采样率的高里程计输出和建图更新,这进一步使系统能够跟踪非常快的运动。
  2. 为了进一步提高系统带宽到超出IMU测量范围,用随机过程模型对IMU测量进行建模。将该模型扩展到系统运动学中,并将IMU测量值视为系统输出。即使IMU饱和,随机过程增强的运动学模型也可以平滑估计系统状态,包括角速度和线加速度。
  3. 将这两个关键技术集成到一个完全紧耦合的LIO系统中,称为Point-LIO。系统使用流形扩展卡尔曼滤波器通过在其各自的采样时间融合每个LiDAR点或IMU数据来更新系统状态。通过利用系统的稀疏性和线性,开发的系统即使在微型飞行器上基于低功耗ARM的计算机上也能实现实时状态估计。
  4. 开发的系统在由具有非常小FoV的新兴固态LiDAR收集的各种挑战性的现实世界数据中进行了测试。结果表明,Point-LIO具有运动畸变补偿能力,具有高里程计输出速率 (4-8 kHz) 和高带宽 (>150Hz) 的能力。该系统还能够在初始阶段后通过饱和IMU测量来估计极端激进运动 (角速度大于75 rad/s) 下的状态。此外,对来自各种公开LiDAR数据集的12个序列的详尽基准比较表明,Point-LIO实现了与其他方法一致可比的准确性和效率,同时花费更少的计算资源。最后演示了实际无人机上的实际应用。

2. 系统综述

本文设计理念是根据以下两点得出的:

1)激光雷达点是按照各自的时间顺序采样的,而不是在同一时间采样的帧;

2)IMU数据是系统的测量,而不是输入。

一旦接收到各自的测量(每个激光雷达点或IMU数据),我们在基于流形的扩展卡尔曼滤波框架[55]中融合这两个测量。我们设计的系统概述如图1所示,按顺序采样的激光雷达点和IMU数据都用于在它们各自的时间戳上更新状态,从而实现极高速率的里程计输出,即实际上为4-8 kHz。特别地,对于每个接收到的激光雷达点,我们会从地图中搜索相应的平面。如果该点与地图中点拟合的平面匹配,则计算残差以使用基于流形的卡尔曼滤波器更新系统状态。最终优化的姿态将激光雷达点注册到全局坐标系并合并到地图中,然后继续下一次测量(激光雷达点或IMU数据)。否则,如果该点没有匹配的平面,则通过卡尔曼滤波器预测的姿态直接添加到地图中。为了同时实现快速平面对应搜索和允许新注册点的加入,我们使用了增量k-d树结构ikd-Tree,该结构最初是在FAST-LIO2 [29]中开发的。对于每个IMU测量,会分别进行饱和检查,对于具有饱和值的通道不会用于状态更新。

在这里插入图片描述

图1:Point-LIO系统概述。⊕表示信息添加。

3. 符号说明

Point-LIO的状态估计是一个紧耦合的基于流形的卡尔曼滤波器。在这里,我们简要介绍滤波器的基本公式和工作流程,并参考[55]提供更详细和理论性的基于流形的卡尔曼滤波器解释。

为了方便说明,我们采用以下符号:

在这里插入图片描述

此外,我们引入两个封装操作 ⊞ ⊞ (“boxplus”)和其逆 ⊟ ⊟ (“boxminus”),在[55]中定义,用于描述维度为 n n n的流形 M M M上的系统,并在欧几里得空间 R n \mathbb{R}^n Rn中参数化状态误差。同时,这些操作可以更紧凑地描述离散时间中的系统状态空间模型。我们参考[55]提供更详细的定义和推导。在本文中,我们只关注流形 S O ( 3 ) SO(3) SO(3) R n \mathbb{R}^n Rn

在这里插入图片描述

其中,$Exp®= I + sin(∥r∥)\frac{|r|}{∥r∥} + (1 − cos(∥r∥))∕\frac{|r|2}{∥r∥2} 是 是 SO(3) 上的指数映射, 上的指数映射, 上的指数映射,Log 是其逆映射。对于一个复合流形 是其逆映射。对于一个复合流形 是其逆映射。对于一个复合流形M = SO(3) × \mathbb{R}^n ,它是两个子流形 ,它是两个子流形 ,它是两个子流形M = SO(3)$ 和 R n \mathbb{R}^n Rn的笛卡尔积,我们有:

在这里插入图片描述

4. 运动学模型

我们首先推导系统模型,它由状态转移模型和测量模型组成。

4.1 状态转移模型 (与Fast-LIO2类似)

以IMU坐标系(表示为I)作为机体坐标系,以第一个IMU坐标系作为全局坐标系(表示为G),连续的运动学模型为:

在这里插入图片描述

其中, G R I ^GR_I GRI G p I ^G p_I GpI G v I ^G v_I GvI表示IMU在全局坐标系中的姿态、位置和速度, G g ^G g Gg表示全局坐标系中的重力向量。 b g b_g bg b a b_a ba是由高斯噪声驱动的随机漂移IMU偏差,分别为 n b g ∼ N ( 0 , Q b g ) n_{b_g} ∼ N(0, Q_{b_g} ) nbgN(0,Qbg) n b a ∼ N ( 0 , Q b a ) n_{b_a} ∼ N(0, Q_{b_a} ) nbaN(0,Qba)。符号 ⌊ a ⌋ ⌊a⌋ a a ∈ R 3 a ∈ \mathbb{R}^3 aR3的反对称叉积矩阵。 I ω I_ω Iω I a I_a Ia表示IMU在机体坐标系即IMU坐标系中的角速度和加速度。正如[14]所提出的,某些机器人运动(角速度 I ω I_ω Iω和线性加速度 I a I_a Ia)总是可以视为信号集合或群体的样本,这使我们能够通过随机过程在统计上描述机器人运动。此外,正如[14]所建议的那样,由于机器人系统的运动通常具有一定的平滑性(例如,由于执行器延迟),角速度和加速度的快速变化相对不太可能,因此N阶积分器随机过程通常足以实际使用。特别地,我们选择由高斯噪声 w g ∼ N ( 0 , Q g ) w_g ∼ N(0, Q_g ) wgN(0,Qg) w a ∼ N ( 0 , Q a ) w_a ∼ N(0, Q_a ) waN(0,Qa)驱动的一阶积分器模型来分别模拟角速度 I ω I_ω Iω和线性加速度 I a I_a Ia

然后,在每个测量步骤 k k k处离散化连续模型(2)。将 ∆ t k ∆t_k tk表示为当前测量间隔,它是前一个测量(IMU数据或LiDAR点)和当前测量(IMU数据或LiDAR点)之间的时间差。通过假设输入在间隔 ∆ t k ∆t_k tk中保持不变,将连续模型(2)离散化,导致

在这里插入图片描述

其中,流形 M M M、函数 f f f、状态 x x x和过程噪声 w w w的定义如下:

在这里插入图片描述

其中, Q = d i a g ( Q b g , Q b a , Q g , Q a ) Q = diag(Q_{b_g},Q_{b_a},Q_g,Q_a) Q=diag(QbgQbaQgQa)是过程噪声 w w w的协方差矩阵。

4.2 测量模型 (重点)

该系统有两个测量,一个LiDAR点或一个IMU数据(包括角速度和加速度测量)。这两个测量通常在不同的时间被系统采样和接收,因此我们将它们分别建模。 假设LiDAR坐标系与机体(即IMU)坐标系重合或具有预校准的外参,则LiDAR点 I p m k ^Ip_{m_k} Ipmk等于在本地IMU坐标系中的真实位置 I p k g t ^Ip^{gt}_k Ipkgt,该位置是未知的,受到加性高斯噪声 n L k ∼ N ( 0 , R L k ) n_{L_k} ∼ N(0, R_{L_k}) nLkN(0,RLk)的污染:

在这里插入图片描述

将该真实点使用真实(但未知)的IMU位姿 G T I k = ( G R I k , G p I k ) ^GT_{Ik} = (^GR_{Ik},^Gp_{Ik}) GTIk=(GRIkGpIk)投影到全局坐标系后,应该正好位于地图中的一个局部小平面补丁上(参见图2),即:

在这里插入图片描述

在这里插入图片描述

图2:LiDAR点直接注册到地图的示意图。蓝色表示平面的向量。 G q i ^Gq_i Gqi u i u_i ui表示地图中的一个点和法线。


其中, G u k ^Gu_k Guk是相应平面的法向量, G q k ^Gq_k Gqk是位于平面上的任意点。请注意, G T I k ^G T_{I_k} GTIk 包含在状态向量 x k x_k xk 中。(6)对状态向量 x k x_k xk 引入了隐式的测量模型。

IMU测量由角速度测量( I ω m ^Iω_m Iωm)和加速度测量( I a m ^Ia_m Iam)组成:

在这里插入图片描述

其中 n g ∼ N ( 0 , R g ) , n a ∼ N ( 0 , R a ) n_g ∼ N (0, R_g ),n_a ∼ N (0, R_a ) ngN(0,Rg)naN(0,Ra)均为高斯噪声。 n I = [ n g T n a T ] T ∼ N ( 0 , R I ) = N ( 0 , d i a g ( R g , R a ) ) n_I = [n^T_g n^T_a]^T ∼ N (0, R_I ) = N (0, diag(R_g , R_a )) nI=[ngTnaT]TN(0,RI)=N(0,diag(Rg,Ra))表示IMU的测量噪声。可以看出,在角速度测量 ω m ω_m ωm(或加速度测量 a a a)中,两个状态 ω ω ω b g b_g bg(以及类似地 a a a b a b_a ba)在状态方程(2)中是分开的,但现在是相关的。

综上所述,系统的测量模型可以用以下紧凑形式表示:

在这里插入图片描述

5. 扩展卡尔曼滤波器

点云-激光惯性导航系统使用紧耦合的扩展卡尔曼滤波器进行状态估计。本节介绍EKF的工作流程。

5.1 状态传播

假设我们已经收到了 k k k步的测量,并且在那个时间步骤上更新的状态为 x ˉ k x̄_k xˉk,更新的协方差矩阵为 P ˉ k P̄_k Pˉk。从第 k k k步到下一个测量步骤 k + 1 k + 1 k+1的状态传播直接遵循方程(3)中的状态转移模型,将 w k w_k wk设置为0:

在这里插入图片描述

协方差矩阵的传播方式为:

在这里插入图片描述

其中 Q k Q_k Qk是过程噪声 w k w_k wk的协方差,矩阵 F x k F_{x_k} Fxk F w k F_{w_k} Fwk计算如下:

在这里插入图片描述

其中, x k + 1 x_{k+1} xk+1 是时间步 k + 1 k+1 k+1 的状态向量的真值, F 11 = E x p ( − I w ~ k ∆ t k ) F_{11} = Exp(- ^I\tilde{w}_k ∆t_k) F11=Exp(Iw~ktk) F 31 = − G R ˉ I k ⌊ I a ˉ k ⌋ ∆ t k F_{31} = -^G R̄_{I_k} ⌊^I ā_k⌋∆t_k F31=GRˉIkIaˉktk F 38 = G R ˉ I k ∆ t k F_{38} = ^G R̄_{I_k} ∆t_k F38=GRˉIktk

5.2 残差计算 LiDAR测量:(重点)

雷达测量:根据Kalman传播(9)中的预测姿态 G T ^ I k + 1 = ( G R ^ I k + 1 , G p ^ I k + 1 ) ^G T̂_{I_{k+1}} =(^G R̂_{I_{k+1}},^Gp̂_{I_{k+1}}) GT^Ik+1=GR^Ik+1Gp^Ik+1,将测量的LiDAR点 I p m k + 1 ^I p_{m_{k+1}} Ipmk+1 投影到全局坐标系中的 G p ^ k + 1 = G R ^ I k I p m k + 1 + G p ^ I k + 1 ^Gp̂_{k+1} = ^GR̂_{I_k} ^I p_{m_k+1} + ^G p̂_{I_{k+1}} Gp^k+1=GR^IkIpmk+1+Gp^Ik+1,并在由ikd-Tree组织的地图中搜索其最近的5个点(距离 G p ^ k + 1 ^G p̂_{k+1} Gp^k+1 不超过5 m)。然后,使用找到的最近邻点来拟合局部小平面补丁,其法向量为 G u k + 1 ^G u_{k+1} Guk+1,重心为 G q k + 1 ^G q_{k+1} Gqk+1,如测量模型所示(参见方程(6)和图2)。如果最近的5个点不在拟合的平面路径上(即,任何点到平面的距离大于0.1 m),则当前的LiDAR点 G p ^ k + 1 ^G p̂_{k+1} Gp^k+1 的测量直接合并到地图中,无需进行残差计算或状态更新。否则,如果局部平面拟合成功,则根据方程(8)计算残差( r L k + 1 r_{L_{k+1}} rLk+1)。

在这里插入图片描述

其中, δ x k + 1 = x k + 1 ⊟ x ^ k + 1 δx_{k+1} = x_{k+1} ⊟ x̂_{k+1} δxk+1=xk+1x^k+1,其中 x k + 1 x_{k+1} xk+1 是时间步 k + 1 k+1 k+1 的状态向量的真值, x ^ k + 1 x̂_{k+1} x^k+1 是时间步 k + 1 k+1 k+1 的状态向量的估计值。

在这里插入图片描述

IMU测量:通过检查当前测量值与额定测量范围之间的差距来判断IMU测量通道是否被丢弃。如果差距太小,则该IMU测量通道将被丢弃而不会更新状态。然后,收集未饱和IMU通道的加速度和角速度测量值,根据方程(7)计算IMU残差( r I k + 1 r_{I_{k+1}} rIk+1)(为简化符号,我们在此处使用所有六个通道的测量值)。

在这里插入图片描述

其中, δ x k + 1 = x k + 1 ⊟ x ^ k + 1 δx_{k+1} = x_{k+1} ⊟ x̂_{k+1} δxk+1=xk+1x^k+1,其中 x k + 1 x_{k+1} xk+1 是时间步 k + 1 k+1 k+1 的状态向量的真值, x ^ k + 1 x̂_{k+1} x^k+1 是时间步 k + 1 k+1 k+1 的状态向量的估计值。

在这里插入图片描述

总之,来自LiDAR点测量(公式12)或IMU测量(公式14)的残差与状态 x k+1 和相应的测量噪声之间的关系如下:

在这里插入图片描述

…详情请参照古月居

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

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

相关文章

3_机器学习数学基础知识

文章目录 一、偏导数二、目标函数(损失函数)求解方法2.1 梯度下降法2.2 坐标轴下降法2.2.1 坐标轴下降法算法公式2.2.2 坐标轴下降法算法过程 2.3 坐标轴下降法和梯度下降法的区别 三、概率3.1 大数定律、中心极限定理3.2 最大似然函数3.3 概率知识3.3.1…

windows下python下载及安装

下载python安装包 进入python官网:https://www.python.org/ 鼠标移动到“Downloads”->"Windows"上,可以看到最新版本是3.11.3版本 点击“Windows”按钮,可以去下载其他版本 标记为embeddable package的表示嵌入式版本&#x…

MyBatis:使用到的代码整理

文章目录 MyBatis:Day 04框架1. 依赖:pom.xml2. 外部配置文件:db.properties3. 核心配置文件:mybatis-config.xml4. 工具类:MybatisUtils.java5. 实体类6. 接口:xxxMapper.java7. 实现类:xxxMap…

[数据库系统] 三、简单查询

目录 第1关:简单查询 1.检索数据表所有的元组 2.检索符合条件的元组 educoder 第2关:多表查询 1.笛卡尔积 2.等值连接 3.自然连接 4.左外连接和右外连接的表示方法及转换为SQL educode 第3关:集合操作 1.集合并操作 2.集合交操作…

小学生护眼用什么样的台灯比较好用一点?小学生护眼台灯排行榜

孩子近视了,很多家长认为是数码产品导致的。其实除了数码产品,灯光也是一个非常重要的原因。或许你认为卧室的灯亮孩子写作业就没有问题,其实这种情况仍会出现灯下黑的现象。如果你想孩子写作业不受灯光的影响,那么一定要给他们配…

实验四 数据库设计

【实验目的】 1、掌握规范化数据库设计包括步骤及其任务、方法、结果等。 2、掌握数据库设计过程中关键文档的写法。 3、了解数据库辅助设计工具。 【实验内容】 请按下面大纲书写实验报告(请自行附页)。 (1)需求分析&#…

【MySQL】Mysql索引失效场景(15个必知)

文章目录 背景数据库及索引准备创建表结构初始化数据数据库版本及执行计划 1、联合索引不满足最左匹配原则2、 使用了select *3 、索引列参与运算4、 索引列参使用了函数5、 错误的Like使用6、 类型隐式转换7、使用OR操作8、 两列做比较9、 不等于比较10、 is not null11、 not…

ChatGPT实现stackoverflow 解释

stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…

系统分析师之系统设计(十五)

目录 一、软件流程设计 1.1 业务流程分析方法 1.2 业务流程建模 1.2.1 标杆瞄准 1.2.2 IDEF 1.2.3 DEMO 1.2.4 流程建模语言 1.2.5 基于服务的BPM 1.2.6 业务流程重组BPR 1.2.7 业务流程管理BPM 二、软件架构设计 2.1 概念 2.2 软件架构风格 三、 结构化设计 四…

这样的应急科普,你爱了吗?

“当我给救援队叔叔系上红领巾的时候,我特别的自豪,很开心!” “救援队的叔叔、阿姨们都很伟大,我长大了,也想和他们一样。” “我爸爸就是一名救援队队员,我很崇拜他!” 敬少先队员礼&#…

高通 Android 8/9/12/13 兼容U盘识别extfat模式

Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现 Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下(需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原…

最强算法视频公开课!(内容硬核,完全免费!

和录友们汇报一下,代码随想录算法公开课已经更新完毕了。 由我亲自录制了140期算法视频,覆盖了 《代码随想录》纸质版上全部题目的讲解。 视频全部免费开放在B站:代码随想录 目录就在视频播放的右边,完全按照代码随想录的顺序讲…

利用Redis的SetNx一步步实现分布式锁并改进

文章目录 1 基本原理和实现方式对比2 Redis分布式锁的实现核心思路3 利用setnx方法实现分布式锁加锁逻辑释放锁逻辑修改业务代码 4 Redis分布式锁误删情况说明5 解决Redis分布式锁误删问题6 分布式锁的原子性问题7 Lua脚本解决多条命令原子性问题8 利用Java代码调用Lua脚本改造…

DevOps产品开发实践

背景 2022年11月,公司启动了智能运维产品的研发项目,该项目基于zabbix进行二次开发,对行业客户的数据中心的基础软硬件设施进行数据采集和分析,通过持续的数据采集和监控,及时发现数据中心软硬件的异常状态并预警&…

k8s集群部署 | 三节点(复用)高可用集群过程参考

文章目录 1. kubeadm 部署三节点(复用)高可用 k8s 集群1.1 环境规划阶段1.1.1 实验架构图1.1.2 系统版本说明1.1.3 环境基本信息1.1.4 k8s 网段划分 1.2 基础安装及优化阶段1.2.1 系统信息检查1.2.2 静态 IP 地址配置1.2.3 配置主机名1.2.4 配置/etc/hos…

open3d 源码阅读kd_tree_search.py

核心函数接口: search_radius_vector_3d search_knn_vector_3d # ---------------------------------------------------------------------------- # - Open3D: www.open3d.org - # ----------------------…

基于Html+css的图展示52

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh

前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…

【Linux】Linux安装Nexus(图文解说详细版)

文章目录 1.下载2.解压3.启动4.打开防火墙(云服务器)5.访问nexus 1.下载 https://help.sonatype.com/repomanager3/product-information/download/download-archives—repository-manager-3 新建nexus文件夹,上传到服务器中 2.解压 tar -zxvf nexus-3.…

Java序列化引发的血案

1、引言 阿里巴巴Java开发手册在第一章节,编程规约中OOP规约的第15条提到: **【强制】**序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱&#x…