前言:
我们都知道SLAM中可以分为基于滤波的SLAM算法和基于优化的SLAM算法,那什么是基于滤波SLAM算法?什么又是基于优化的SLAM算法呢?
下面这种方式是属于基于滤波SLAM算法还是属于基于优化SLAM算法?
基于优化的SLAM算法
在SLAM学习过程中容易存在一个误解:
使用了非线性优化方法进行状态估计就是基于优化的SLAM算法吗?
使用了非线性优化并不等同于这是一个基于优化的SLAM系统。SLAM书籍中在介绍非线性优化时,就会介绍非线性最小二乘问题,因为名字中带有优化,所以就会容易误以为使用非线性最小二乘问题求解状态估计就属于基于优化的SLAM算法,这样理解是不对的。
使用最小二乘问题求解状态估计问题确实是非线性优化,但是这并不意味着这个SLAM系统就属于基于是基于优化的SLAM算法,因为状态估计问题只是SLAM中的一个环节,并不是全部,而且状态估计也分为初步的粗略估计和后续的优化估计。
我们通常所说的基于优化的SLAM算法指的是,SLAM算法中会进行多个时刻的状态量的联合优化,而这些联合优化通常使用非线性优化的方法进行求解。(批量的)
举例:
LIO-SAM:属于基于优化的SLAM算法,其在前端进行位姿的状态估计时,使用了因子图优化,联合了多帧的位姿信息和约束量。在进行完scan-to-map的非线性优化之后,其后端又进行了联合历史帧信息、GPS信息、回环帧信息的因子图优化。所以其前端和后端都属于基于优化的SLAM算法。
基于滤波的SLAM算法
滤波器也是最优状态估计,我们通常所说的基于滤波的SLAM算法指的是,对于当前状态量的求解只和上一个时刻有关,和其余时刻的状态量无关(渐进的)。
卡尔曼滤波器及其一些拓展都属于滤波器。
基于滤波的SLAM算法中也可能会使用到非线性最小二乘求解问题。 IEKF的过程
举例:
FAST-LIO:
-------------------------------------------------------待更新-----------------------------------------------------------------