当前位置:网站首页>FAST-LIO,FAST-LIO2与FASTER-LIO
FAST-LIO,FAST-LIO2与FASTER-LIO
2022-07-18 23:53:00 【Hermit_Rabbit】
0. 简介
继LLOAM后,三维SLAM迎来了蓬勃的发展,最近一只FAST-SLAM为代表的3D-SLAM迎来了蓬勃的发展,FASTER-LIO也可以看到国内知名SLAMer高博的影子。为此我们来看一下FAST-SLAM这类SLAM算法的优势在哪里。
1. FAST-LIO
首先我们需要先明白FSAT-LIO相较于其他的LIO好处在哪里:
- 将IMU和Lidar特征点紧耦合在一起
- 使用反向传播考虑到了运动补偿
- 将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} (HTR−1H+P−1)−1HTR−1 ,这样做的好处是原本公式中求逆中的矩阵是观测维度的,新公式求逆中的矩阵是状态维度的,需要求逆 H H H的矩阵维度减小了(因为在实际情况中,激光特征点的数量维度要远大于状态量的维度)
本文的IEKF的更新频率是基于雷达的采样频率 k k k,一帧雷达点云估计出一个后验状态。其中状态方程是IMU离散传播。观测方程是scan-submap匹配的,特征用点和面特征。
每帧状态量会做反向传播利用 Δ T \Delta T ΔT传播到特征点时间戳下的状态 T j T_j Tj(一帧雷达点云包含若干个IMU状态,两个IMU状态之间包含若干个特征时间戳,在计算时考虑到了不同的IMU状态),增量式更新是SLAM研究里非常核心的话,这也是后面两篇文章着重去写的部分。然后将特征点经过外参 L I T ^I_LT LIT进行运动补偿,并将得到的点转到全局坐标系下,并与submap进行scan-submap匹配,计算点线,点面的残差,并将观测方程通过变换后的IEKF进行迭代估计。得到增量式距离 x k k + 1 x_k^{k+1} xkk+1,直到每次迭代的增量都小于阈值,以代表收敛。
2. 流形的定义
原文中如图这样定义:
下面就是流形的计算公式,其中 R \mathbb{R} R代表了域, E x p Exp Exp代表了罗德里格斯公式: E x p ( r ) = I + r ∣ ∣ r ∣ ∣ sin ( ∣ ∣ r ∣ ∣ ) + r 2 ∣ ∣ r ∣ ∣ 2 ( 1 − cos ( ∣ ∣ r ∣ ∣ ) ) Exp(r)=I+ \frac {r}{||r||} \sin (||r||)+ \frac {r^ {2}}{||r||^2} (1- \cos(||r||)) Exp(r)=I+∣∣r∣∣rsin(∣∣r∣∣)+∣∣r∣∣2r2(1−cos(∣∣r∣∣)), L o g Log Log是将李群转为李代数数据
⊞ : M × M ; ⊟ : M × M → R n \boxplus: M \times M; \boxminus:M \times M \rightarrow R^ {n} ⊞:M×M;⊟:M×M→Rn
M = S O ( 3 ) : R ⊞ r = R E x p ( r ) ; R 1 ⊟ R 2 = L o g ( R 2 T R 1 ) M=SO(3): R\boxplus r=RExp(r); R_ {1} \boxminus R_ {2} =Log( R_ {2}^ {T} R_ {1} ) M=SO(3):R⊞r=RExp(r);R1⊟R2=Log(R2TR1)
M = R n ; a ⊞ b = a + b ; a ⊟ b = a − b M= \mathbb{R}^ {n}; a\boxplus b=a+b;a\boxminus b=a-b M=Rn;a⊞b=a+b;a⊟b=a−b
在矩阵中的运算如下图
[ R a ] ⊞ [ r b ] = [ R ⊞ r a + b ] ; [ R 1 a ] ⊟ [ R 2 b ] = [ R 1 ⊟ R 2 a − b ] \left[ \begin{matrix} R\\a \end{matrix} \right] \boxplus \left[ \begin{matrix} r\\b \end{matrix} \right] = \left[ \begin{matrix} R\boxplus r \\a + b \end{matrix} \right] ; \left[ \begin{matrix} R_1\\a \end{matrix} \right] \boxminus\left[ \begin{matrix} R_2\\b \end{matrix} \right] = \left[ \begin{matrix} R_1\boxminus R_2 \\a - b \end{matrix} \right] [Ra]⊞[rb]=[R⊞ra+b];[R1a]⊟[R2b]=[R1⊟R2a−b]
根据上面的定义,很容易验证:
( x ⊞ u ) ⊟ x = u ; x ⊞ ( y ⊟ x ) = y ; ∀ x , y ∈ M , ∀ u ∈ R n (x\boxplus u) \boxminus x = u; x\boxplus (y \boxminus x) = y; \forall x,y \in M, \forall u \in \mathbb{R}^ {n} (x⊞u)⊟x=u;x⊞(y⊟x)=y;∀x,y∈M,∀u∈Rn
3. FAST-LIO2
对于FAST-LIO2而言,相较于FAST-LIO,做了如下改进:
- 不用线,面特征点而使用全局点云
- 使用ikd-tree存储点云
文章中提到的第一点,通过原始点云与地图的配准,可以有效地利用环境中的细微特征,从而提高准确性,同时不使用特征提取也可以更好地适应不同的激光雷达。另一块就是设计了增量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树组织。
4. 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的时间复杂度,并达到增量更新的目的;并且能够通过设置的参数,检测到二叉树不平衡时,进行重建。
与静态tree进行对比,增量更新时间复杂度降低,查询复杂度烧逊色于静态tree,如下图所示:
5. FASTER-LIO
FASTER-LIO作为FAST-LIO2的续作,通过一些处理将速率进一步提升,文中不使用复杂的基于树的结构来划分空间点云,而使用增量体素(iVox)作为我们的点云空间数据结构,它是从传统体素修改而来的,支持增量插入和并行近似k-NN查询。下面是一些文中的改进点:
…详情请参照古月居
边栏推荐
- A translation JS reverse, call stack simple usage
- Build your own network model with pytorch
- DDD based on ABP -- warehousing practice
- Cours d'introduction aux tests d'interface
- VIM编辑器的宏操作
- MySQL 字符串操作(substr-截取、locate-instr-position子父串判断)
- "Sharing" devaxpress WPF v22.1 latest version system environment configuration requirements
- 小白如何再中信开通靠谱安全的账户?
- 2. ES6 新特性
- Segment tree
猜你喜欢
随机推荐
最基础的命名规范,也是最能体现一个程序员是否为良好程序员的基本素养
day03_ 3_ Process control exercises
Intelligent cockpit fighting method of Internet manufacturers
Intelligent cockpit fighting method of Internet manufacturers
「分享」DevExpress WPF v22.1最新版本系统环境配置要求
Chapter VIII tasks and functions
第七天HCIP笔记整理(OSPF的配置)
在线XML转JSON工具
安全研究人员发现针对工业运营商的恶意软件
某翻译js逆向,调用栈简单用法
QQ群无法下载视频和图片解决方案
Hello World 凑个数
父子同名属性,直接访问和通过方法访问的区别
7.18模拟赛总结
Window switching of selenium
A translation JS reverse, call stack simple usage
Is it safe to open an account online in flush
vim基本操作命令
【智能硬件】Jetson nano 问题杂记
数据分析基础