专栏系列文章如下:
一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN博客
二.激光SLAM框架学习之A-LOAM框架---介绍及其演示_goldqiu的博客-CSDN博客
三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)_goldqiu的博客-CSDN博客
四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取_goldqiu的博客-CSDN博客
五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计_goldqiu的博客-CSDN博客
六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)_goldqiu的博客-CSDN博客
七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图_goldqiu的博客-CSDN博客
八.激光SLAM框架学习之LeGO-LOAM框架---框架介绍和运行演示_goldqiu的博客-CSDN博客
九.激光SLAM框架学习之LeGO-LOAM框架---速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据_goldqiu的博客-CSDN博客
十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码_goldqiu的博客-CSDN博客
十一.激光惯导LIO-SLAM框架学习之LIO-SAM框架---框架介绍和运行演示_goldqiu的博客-CSDN博客
十二.激光SLAM框架学习之livox-loam框架安装和跑数据集_goldqiu的博客-CSDN博客
十三.激光SLAM框架学习之livox-Mid-70雷达使用和实时室外跑框架_goldqiu的博客-CSDN博客
十四.激光和惯导LIO-SLAM框架学习之惯导内参标定_goldqiu的博客-CSDN博客
十五.激光和惯导LIO-SLAM框架学习之惯导与雷达外参标定(1)_goldqiu的博客-CSDN博客
十六.激光和惯导LIO-SLAM框架学习之配置自用传感器实时室外跑LIO-SAM框架_goldqiu的博客-CSDN博客
十七.激光和惯导LIO-SLAM框架学习之IMU和IMU预积分_goldqiu的博客-CSDN博客
十八.多个SLAM框架(A-LOAM、Lego-loam、LIO-SAM、livox-loam)室外测试效果粗略对比分析_goldqiu的博客-CSDN博客
十九.激光和惯导LIO-SLAM框架学习之项目工程代码介绍---代码框架和一些文件解释_goldqiu的博客-CSDN博客
二十.激光、视觉和惯导LVIO-SLAM框架学习之相机内参标定_goldqiu的博客-CSDN博客
二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)_goldqiu的博客-CSDN博客
二十二.香港大学火星实验室R3LIVE框架跑官方数据集_goldqiu的博客-CSDN博客
二十三.激光和惯导LIO-SLAM框架学习之LIO-SAM项目工程代码介绍---基础知识_goldqiu的博客-CSDN博客
二十四-香港大学火星实验室FAST-LIO2框架跑官方数据集
个人观点:目前的SLAM论文还可做这样的一个分类,即是侧重于建图还是侧重于定位。
如果说是侧重于建图,那么目的就是为了建好一个地图,其中考虑鲁棒性、效率等。
示例论文:其关键词是里程计和建图(里程计中涵盖定位功能,是为了拼接地图)
LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter
这种类型的SLAM的定位功能主要是为建图服务的,比如前端里程计的NDT实现,就是一种局部的建图定位,是为了更好的进行点云拼接。
那么建图整体流程中是这么体现的:
如果说是侧重于定位,那么主要工作是场景识别place recognition,其建图主要是为了定位服务,比如实时建立局部地图(注:这里其实也有定位,因为建图还是需要有为建图服务的定位,可称之为局部建图定位)和全局地图进行匹配,并定位,且要变换到全局坐标系,所以这里的定位其实应该指的是全局定位。
示例论文:其关键词是定位或重定位、场景识别
Tightly-Coupled Multi-Sensor Fusion for Localization with LiDAR Feature Maps
LiDAR-Based Initial Global Localization Using Two-Dimensional (2D) Submap Projection Image
Range Image-based LiDAR Localization for Autonomous Vehicles
Rover Relocalization for Mars Sample Return by Virtual Template Synthesis and Matching
A Hierarchical Dual Model of Environment and Place-Specific Utility for Visual Place Recognition
不管是侧重于建图还是侧重于定位的SLAM,其进行机器人的状态估计可以说是为了实现定位功能,只是侧重于建图的SLAM,定位是为了拼接地图;而侧重于定位的SLAM,更多是说在全局地图下的定位。
无非包括前端里程计和后端优化,其中还会有基于重定位的回环检测。
不论是前端匹配还是后端优化,其核心原则是准确、高效地把里程计相对位姿、回环相对位姿、惯导先验位姿进行融合;鲁棒性可以由多传感器融合来提高,其效率可以由改变实现方法来提高,比如采用滑动窗口、滤波代替优化、优化采用增量优化的方法。这个过程属于机器人状态估计的过程,其精确位姿的生成就是一个定位过程,并不断在优化后精确位姿的基础下进行地图叠加。
所以说为什么SLAM是一个状态估计问题,因为不论是侧重于建图还是侧重于定位,都是要先进行机器人自身的状态估计,其主要区别是侧重于定位的SLAM重点是在解决全局地图上的全局定位问题。
其核心就是场景识别。
重定位、回环检测和全局定位都是找到地图中与当前帧匹配的关键帧,这一步称为场景识别place recognition;找到匹配帧后还需要通过时间序列匹配等方法去除误匹配;最后可以对帧与帧进行姿态解算。
对于激光SLAM,可使用3D-3D方法求得当前帧在世界坐标系的位姿,具体有ICP和NDT。对于视觉SLAM中,可以使用ORB的BoW方法实现快速的重定位、回环检测和全局定位。
其中回环检测和重定位更多是在建图中为了建立全局一致性更佳的地图。
侧重于定位的话主要是还是考虑全局定位,这也是从SLAM到Navigation的重要步骤。
一般指在开机后在建好的地图上定位,此时当前帧的位姿可能出现在已有地图中的任意位姿,甚至已有地图之外。有时也可以人为给定大致的初始位姿或者最后开机和关机的位置是确定的。为了更加通用,通常考虑初始位姿完全未知的情况。
注:这里概念有点混淆,其实就是解决场景识别问题。把在路径规划中需要提供定位信息称之为全局定位,把slam中为建图服务的定位称为建图定位(局部);回环检测就还是回环检测,是全局一致性的一个很好的优化策略。重定位是属于解决跟踪丢失的问题。
而解决定位问题的话同样也涉及到点云匹配的问题,但是又不仅仅是点云匹配的问题,还涉及位姿初始化,定位方面的后端优化等等,还有全局地图的不同形式,包括自己建好的地图和其他地方获取的地图,如测绘地图。
其实不管是为了定位和还是为了建图,根本问题是解决机器人状态估计问题,其中涉及很多原理都是一样的,只是处理的方式不一样,最终希望得到的效果也不一样。定位和建图都可以使用多传感器融合提高鲁棒性,都可以使用后端优化来提高精度,最终是为了得到更精确、鲁棒、有效率的地图或全局位姿。