大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。
一、松耦合与紧耦合
1.1松耦合(Loosely Coupled)
在松耦合系统中,将传感器的算法看成黑箱,只考虑输出,不考虑内在性质。松耦合的方法是分别处理来自LiDAR和IMU的数据,然后在高层次上进行融合。具体来说:
1.独立处理:LiDAR和IMU的数据分别被独立处理。LiDAR提供位置和环境特征信息,而IMU提供短时间内的姿态和运动信息。
2.融合层:独立处理后的数据在高层次的融合层进行结合。例如,可以使用卡尔曼滤波器来融合两者的数据,从而提供更精确的位置和姿态估计。
- 优势
1.实现简单:松耦合的方法相对简单,因为它们通常将LiDAR和IMU的数据独立处理,然后在高层次上进行融合。这种方式简化了算法设计和实现。
2.模块化强:松耦合架构下,LiDAR和IMU可以作为独立的模块来开发和调试,方便单独优化和维护。
3.灵活性高:由于LiDAR和IMU是独立处理的,如果需要替换或升级某一传感器,系统整体影响较小,具有较好的灵活性。 - 劣势
1.精度较低:由于数据融合是在高层次进行的,可能导致信息融合不够充分,影响定位和地图构建的精度。
2.时序同步问题:LiDAR和IMU数据独立处理,可能会存在时序同步问题,从而影响系统的整体性能。
3.鲁棒性差:对环境变化和传感器误差的鲁棒性较差,因为独立处理可能无法充分利用各传感器的优势来补偿弱点。1.2 紧耦合(Tightly Coupled)
紧耦合的方法则是更深层次的融合,直接在传感器数据的低层次进行整合。具体来说:
1.联合处理:LiDAR和IMU的数据在一个共同的滤波器(如扩展卡尔曼滤波器或图优化方法)中联合处理。LiDAR的扫描数据和IMU的测量数据一起输入到滤波器中。
2.互补校正:IMU提供高频率的短时间内精确运动估计,LiDAR则提供低频率但更精确的位置信息和环境特征。两者的数据互相补充和校正,从而提高整体系统的精度和鲁棒性。 - 优势
- 高精度:紧耦合方法在低层次上融合LiDAR和IMU数据,能够更好地利用两者的互补优势,显著提高系统的定位和地图构建精度。
- 时序同步好:紧耦合方法中,LiDAR和IMU的数据融合更紧密,可以更好地解决时序同步问题,提升整体性能。
- 鲁棒性强:由于充分利用了LiDAR和IMU的互补特性,系统对环境变化和传感器误差的适应能力更强。
- 劣势
- 实现复杂:紧耦合方法需要在算法设计上更复杂的处理,包括更复杂的数据融合算法和更高的计算要求,实现难度较大。
- 开发周期长:由于系统复杂度增加,开发和调试时间较长,对团队的技术要求更高。
- 调试困难:在紧耦合系统中,各部分高度依赖,出现问题时调试和定位问题会更加困难。
二、松耦合LIO的实现
原理:激光雷达里程计的结果作为状态变量,旋转R、位置p的观测值
框架: - 同步IMU与LIDAR数据
- IMU运动方程得到预测值
- 利预测值对点云去除畸变
- 预测值作为初始值进行迭代优化,最后得到观测值
- 更新到卡尔曼滤波器
松耦合 LIO 系统的代码实现主要分为三个部分:
第一部分,需要将IMU 数据与雷达数据同步。
第二部分,用ESKF对每个IMU 数据的预测值处理雷达的运动补偿。
第三部分,应该从ESKF 中拿到预测的位姿数据,交给里程计算法,再将里程计配准之后的位姿放入ESKF中此外。
LIO的松耦合与上一节IMU与GNSS的组合导航相似,因为只考虑激光雷达里程计的输出,本质为对R,p的直接观测。三、紧耦合LIO的实现
3.1 步骤
详情请见...