打印

SLAM技术综述

[复制链接]
369|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 引言:SLAM概念与结构
1.1. SLAM概述
首先,本人认为需要思考一个问题:为什么要做SLAM?SLAM技术可以解决什么问题?简单的引入,这个问题的回答可以是:1.大部分的路径规划需要基础地图,2.定位时,为消除IMU、Wheel Odometry等里程计模型的“误差累加”特性引入观测参考,3. 提供一个全局表征(frame、origin)的参考,等。
再回到SLAM概念的定义:S.L.A.M.全称为Simultaneous Localization and Mapping,是以定位和建图两大技术为目标的一个研究领域。目前主流的slam技术应用为激光slam(基于激光雷达)和视觉slam(基于单/双目摄像头),实现上主要分为基于滤波 (Filter-Based) 的SLAM,和基于图优化(Graph-Based)的SLAM。归结其本质,其实就是---State Estimation in Roboti


使用特权

评论回复
沙发
keer_zu|  楼主 | 2023-7-5 10:32 | 只看该作者
1.2. SLAM结构

数据预处理
Sensor data的的接收
多传感器数据同步;
传感器数据预处理(无效值去除、序列检查、点云遮挡点与平行点去除、坐标系处理,etc);
点云去畸变处理(运动畸变,重力对齐,etc);
前端LIO:
基于sensor-tracker形式的pose-extrapolator;
点云注册&配准
e,g, CSM:Correlative Scan Matcher & Ceres Scan Matcher;
后端Refinement:
基于前端LIO选择的key nodes形成位姿图
利用多传感器数据计算约束实现位姿图的优化(e,g, 基于Google Ceres构建Pose Graph,利用node-submap constraints & submap-submap constraints & node-node constraints作为edges,scan-pose为node);
基于SPA加速的后端优化;
闭环检测:
根据key node搜索neighbor key nodes,尝试进行点云配准(scan2scan or scan2map);
e,g, LoopClosure:Correlative Scan Matcher & Branch and Bound;
地图构建保存与显示:
pbstream文件:建图轨迹信息保存与加载;
根据优化后的key nodes和对应的point cloud生成点云地图;
基于RangefindersRayCasting的概率栅格地图的构建、更新和扩展;



使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-7-5 10:48 | 只看该作者
1.3. 基于滤波的传感器融合算法方案
归结基于滤波的定位算法的核心技术,其实就是贝叶斯滤波或者其衍生算法。整体上的流程大抵都是基于上一时刻的状态量,通过控制量输入和运动方程的推演获取预测的状态量,再由相关传感器的观测对预测进行融合“补偿”。

目前常见的应用在SLAM系统中的滤波算法主要有以下几种:
  • Bayesian Filter;
  • Kalman Filter;
  • Particle Filter(adaptive Monte Carlo Localization);
  • Extended Kalman Filter;
  • Iterated Extended Kalman Filter;
  • Error-State Kalman Filter;
  • Multi-State Constraint Kalman Filter;

使用特权

评论回复
地板
keer_zu|  楼主 | 2023-7-5 11:31 | 只看该作者
1.4. 基于优化的传感器融合算法方案
归结基于优化的定位算法的核心技术,其实就是最小二乘,但应用在SLAM技术中,其关键的地方在于:如何设计与建立SLAM的problem structure:




也就是上述的目标函数是由哪些部分构成的?残差项有哪些?还是以cartographer为例,残差项可以包含关键帧之间的odom约束,关键帧与submap之间的约束(intra和inter),landmark引入产生的约束,等等,以上一起由通过不同的残差项权重整合在一起,共同组成后端优化的目标函数。
那么除去这些呢,还可以引入哪些约束来优化整体的优化结构?或者又有什么方式可以优化优化的处理过程?



使用特权

评论回复
5
keer_zu|  楼主 | 2023-7-5 11:31 | 只看该作者
目前常见的应用在SLAM系统中的优化库主要有以下几种:
  • G2o;
  • Ceres;
  • Gtsam;
  • Isam;
各个优化库的使用和特点就不在此处进行说明了,感兴趣的小伙伴可以自行网上查阅资料~

使用特权

评论回复
6
keer_zu|  楼主 | 2023-7-5 11:33 | 只看该作者
1.5. 地图构建的基本原理
地图可以根据具体的应用场景和功能特性简单地分为几种:
  • 语义地图;
  • 基于概率更新的占栅格地图(黑白灰三色图);
  • 3D点云地图(稀疏、稠密);
  • 基于TSDF的占栅格地图(或点云地图?)

使用特权

评论回复
7
keer_zu|  楼主 | 2023-7-5 11:35 | 只看该作者


2D栅格地图的基本原理大抵会涉及以下几个技术点:
  • 栅格地图的生成与维护
  • 概率更新算法
  • Bresenham画线算法
而与栅格地图特性相对应的是基于TSDF(Truncated Signed Distance Function)原理生成的栅格地图,TSDF生成的地图最大的特性就是生成的地图边界是可以保证单像素级别的,而基于概率更新的栅格地图的边界往往都会由多个像素“混合”在一起。
TSDF示意图



TSDF定义与栅格生成方法



使用特权

评论回复
8
keer_zu|  楼主 | 2023-7-5 13:24 | 只看该作者

2. 激光SLAM主流方案

使用特权

评论回复
9
keer_zu|  楼主 | 2023-7-5 13:25 | 只看该作者
本帖最后由 keer_zu 于 2023-7-5 13:29 编辑

2.1、Gmapping
简介:基于粒子滤波框架的激光SLAM,RBpf粒子滤波算法,即将定位和建图过程分离,先进行定位再进行建图,结合里程计和激光信息,每个粒子都携带一个地图,构建小场景地图所需的计算量较小,精度较高。但在高分辨率建图时,在静止状态下更新不好,存在震荡并noise过多。
Github链接:
https://github.com/ros-perception/openslam_gmapping
https://github.com/ros-perception/slam_gmapping
相关论文:
Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters, IEEE Transactions on Robotics, Volume 23, pages 34-46, 2007.
Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling, In Proc. of the IEEE International Conference on Robotics and Automation (ICRA), 2005.

使用特权

评论回复
10
keer_zu|  楼主 | 2023-7-5 13:31 | 只看该作者
2.2、Hector_SLAM
简介:利用优化方法进行帧间匹配的激光slam算法,search space不大,不需要里程计信息,代码较短。且只处理scan的endpoints(不利用laser scan structure),故而可利用IMU调整laser scan attitude。缺点是在雷达频率不够的设备上效果不佳,快速转向时容易错误匹配;没有loop closure故而若累计误差过大,HectorSLAM没有地图调整能力,且帧间优化匹配时也是全局地图上进行,cpu资源消耗大。
Github链接:
相关论文:
Kohlbrecher, Stefan , et al. “A flexible and scalable slam system with full 3d motion estimation.” 2011 IEEE International Symposium on Safety, Security, and Rescue Robotics IEEE, 2011.

使用特权

评论回复
11
keer_zu|  楼主 | 2023-7-5 13:32 | 只看该作者
2.3、Karto
简介:基于图优化的SLAM,包含回环检测,适用于大面积建图。前端帧匹配采取的的是correlative scan matcher的方式进行粗、精两次匹配, 回环检测上karto没有submap的概念,全部以keyScan的形式存储在Mapper-sensor-Manager中,keyScan的插入依据pose的距离窗口生成localMap进行匹配。local与gloal的loop closure依据graph的结构和Mapper-sensor-Managerss顺序存储分配的ID信息,选择candidates生成localMap进行匹配,依据score进一步确定闭环。
Github链接:
相关论文:
Olson, E. B. . “Real-time correlative scan matching.” Robotics and Automation, 2009. ICRA '09. IEEE International Conference on IEEE, 2009.
Konolige, Kurt , et al. “Efficient sparse pose adjustment for 2D mapping.” 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems IEEE, 2010.

使用特权

评论回复
12
keer_zu|  楼主 | 2023-7-5 13:33 | 只看该作者
2.4、Cartographer

简介:基于图优化的SLAM,源自谷歌,代码优美,是非常完整的激光slam系统,包含相对鲁棒的前端,基于submap和node约束独立的pose graph后端及各类评测工具。模块化、系统化、工程化程度很高, 封装很完善。可将其视为升级版本的Karto的顶配豪华版本,搭载了传感器同步、位姿外推器、激光数据预处理(去畸变、重复点云删除)功能,前端帧匹配上融合使用了karto的暴力匹配csm和hector的基于LM的梯度优化方法匹配,由于引入了submap的概念,后端回环检测上使用分支定界的方法进行快速搜索,后端优化过程基于SPA完成。同时carto还开放了landmark、GPS等数据融合的接口,提供了地图续扫和定位的功能。
Github链接:
Hess, Wolfgang , et al. “Real-Time Loop Closure in 2D LIDAR SLAM.” 2016 IEEE International Conference on Robotics and Automation (ICRA) IEEE, 2016.


使用特权

评论回复
13
keer_zu|  楼主 | 2023-7-5 13:34 | 只看该作者
2.5、LOAM方案
简介:经典制作,长期霸榜kitti odometry门类第一,也衍生很多相关SLAM算法,如A-LOAM、LeGO-LOAM等。其主要思想是通过两个算法:一个高频激光里程计进行低精度的运动估计,即使用激光雷达做里程计计算两次扫描之间的位姿变换;另一个是执行低频但是高精度的建图与校正里程计,利用多次扫描的结果构建地图,细化位姿轨迹。在点云匹配与特征提取时,由于scan-to-scan匹配精度低但速度快, map-to-map匹配精度高但是速度慢,创新性使用scan-to-map来兼具精度与速度,这种思路给后续很多基于激光里程计或多传感器融合框架提供思路。原本的LOAM没有IMU辅助,不带有回环检测,因而不可避免引起漂移。沿着此思路,产生了很多算法如LeGO-LOAM, LINS, LIO-Mapping, LIO-SAM等。
Github链接:
相关论文:
Ji Zhang and Sanjiv Singh. “LOAM: Lidar Odometry and Mapping in Real-time.” Proceedings of Robotics: Science and Systems Conference, 2014.

使用特权

评论回复
14
keer_zu|  楼主 | 2023-7-5 13:36 | 只看该作者
2.6、LeGo-LOAM方案
简介:在LOAM的基础上细化了特征提取与优化,带有回环功能。可以在低功耗嵌入式系统上实现实时姿态估计。主要也是由一个高频低精度激光里程计与一个低频高精度建图回环检测组成。区别在于LeGO-LOAM在LOAM基础上采用地面分割方式将点云分为地面点与非地面点,进一步缩小特征提取范围,以加快计算速度,能够在嵌入式设备上实时运行;在建图模块添加了位姿图与回环检测,解决了LOAM没有后端优化的弊端,提供建图效率,其效果对比如下图。
Github链接:
相关论文:
T. Shan and B. Englot, “LeGO-LOAM: Lightweight and Groundoptimized Lidar Odometry and Mapping on Variable Terrain,”IEEE/RSJ International Conference on Intelligent Robots and Systems,pp. 4758-4765, 2018.

使用特权

评论回复
15
keer_zu|  楼主 | 2023-7-5 13:37 | 只看该作者
2.7、LIO-SAM方案
简介:这是LeGO-LOAM作者新作,通过平滑和匹配的紧密耦合激光雷达惯性SLAM框架。LIO-SAM在因子图(factor graph)上方制定了激光雷达惯性里程表,从而可以将不同来源的大量相对和绝对测量值(包括回路闭合)作为因子合并到系统中,通过惯性测量单元(IMU)预积分的估计运动使点云偏斜,并为激光雷达里程计优化提供了初始预测。为了确保实时高性能,将之前的激光雷达扫描边缘化以进行姿势优化,而不是将激光雷达扫描与全局地图匹配。选择性地引入关键帧以及以有效的滑动窗口将新的关键帧注册到固定大小的先验“子关键帧”集合中,在局部范围而不是全局范围内进行扫描匹配。
算法可以添加不同的模块,组合不同的方案。当同时禁用GPS和闭环检测时,此方法称为LIO-odom,它仅利用IMU预积分和激光雷达里程计因子;当添加GPS因子时,则将此方法称为LIO-GPS;若使用IMU、激光雷达里程计、GPS、回环检测时则称之为LIO-SAM方法。
Github链接:
相关论文:
T. Shan and B. Englot, “LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping,”IEEE/RSJ International Conference on Intelligent Robots and Systems”,2020.
性能介绍:在论文作者录制的数据集上,对比了LOAM、LIOM与自身几种组合方案的建图效果如下左图所示,也比较了几种算法在平移误差及处理单帧数据时所耗时间如右图所示,由此可见LIO-SAM处理速度较LOAM提高很多,精度上也有一定提高。



使用特权

评论回复
16
keer_zu|  楼主 | 2023-7-5 13:38 | 只看该作者
2.8、hdl_graph_slam方案
简介:这是一个基于图优化的3D激光SLAM框架,主要由激光里程计、回环检测以及后端图优化构成,同时融合了IMU、GPS以及地面检测的信息作为图的额外约束。算法首先读入激光雷达的点云数据,然后将原始的点云数据进行预滤波,经过滤波后的数据分别给到点云匹配里程计以及地面检测节点,两个节点分别计算连续两帧的相对运动和检测到的地面的参数,并将这两种消息送到hdl_graph_slam节点进行位姿图(pose graph)的更新以及回环检测,并发布地图的点云数据。hdl_graph_slam在资源消耗、代码复杂度等方面具有优势,且带有定位模块,右图显示了带GPS的室外建图结果。
Github链接:
相关论文:
Kenji Koide, Jun Miura, and Emanuele Menegatti, “A Portable 3D LIDAR-based System for Long-term and Wide-area People Behavior Measurement”, Advanced Robotic Systems, 2019



5525564a501adcb152.png (75.84 KB )

5525564a501adcb152.png

使用特权

评论回复
17
keer_zu|  楼主 | 2023-7-5 13:40 | 只看该作者
2.9、SegMap方案
原理介绍:这是一种基于3D点云中线段提取的方式去建图与定位的解决方案。将三维点云进行分割,把不同的环境目标划分为不同的段(segment),从而提出了一种新的地图表达方法:Segmap。相比于现有仅用来做定位的特征提取器,Segmap利用了数据驱动(深度学习)的描述子提取了语义特征信息。在语义信息层进行数据处理大大减小了计算量,较小维度的语义特征描述子解决了单机器人与多机器人系统的实时数据压缩问题。这种利用CNN语义信息的3D激光SLAM框架,在多机器人全局路径规划场景时比传统SLAM更具有优势。
Github链接:
相关论文:
R. Dubé, A. Cramariuc, D. Dugas, J. Nieto, R. Siegwart, and C. Cadena. “SegMap: 3D Segment Mapping using Data-Driven Descriptors.” Robotics: Science and Systems (RSS), 2018.
R. Dubé, MG. Gollub, H. Sommer, I. Gilitschenski, R. Siegwart, C. Cadena and , J. Nieto. “Incremental Segment-Based Localization in 3D Point Clouds.” IEEE Robotics and Automation Letters, 2018.
R. Dubé, D. Dugas, E. Stumm, J. Nieto, R. Siegwart, and C. Cadena. “SegMatch: Segment Based Place Recognition in 3D Point Clouds.” IEEE International Conference on Robotics and Automation, 2017.

使用特权

评论回复
18
keer_zu|  楼主 | 2023-7-5 13:41 | 只看该作者
2.10、SuMa方案
原理介绍:此算法使用Surfel地图去实现前端里程计和闭环检测,此前Surfel地图曾被用在RGBD-SLAM中,第一次被用在在室外大场景三维SLAM中。Surfel地图最早是用在基于RGB-D相机的三维重建任务中的。SuMa的整体流程就是先处理点云把点云从三维展开成二维,然后生成局部地图用来给当前帧做匹配,接着通过ICP方法进行位姿更新,然后更新surfel地图,最后做闭环检测与后端优化。
Github链接:
相关论文:
J. Behley, C. Stachniss. Efficient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments, Proc. of Robotics: Science and Systems (RSS), 2018.

使用特权

评论回复
19
keer_zu|  楼主 | 2023-7-5 13:43 | 只看该作者
2.11、SuMa++
原理介绍:这是一种新的基于语义信息的激光雷达SLAM系统,可以更好地解决真实环境中的定位与建图问题。该系统通过语义分割激光雷达点云来获取点云级的密集语义信息,并将该语义信息集成到激光雷达SLAM中来提高激光雷达的定位与建图精度。通过基于深度学习的卷积神经网络,可以十分高效地在激光雷达“范围图(range image)”上进行语义分割,并对整个激光雷达点云进行语义标记。通过结合几何深度信息,进一步提升语义分割的精度。基于带语义标记的激光雷达点云,此方法能够构建带有语义信息且全局一致的密集“面元(surfel)”语义地图。基于该语义地图,也能够可靠地过滤移除动态物体,而且还可以通过语义约束来进一步提高投影匹配ICP的位姿估计精度。
Github链接:
相关论文:
Chen, Xieyuanli & Milioto, Andres & Palazzolo, Emanuele & Giguère, Philippe & Behley, Jens & Stachniss, Cyrill. SuMa++: Efficient LiDAR-based Semantic SLAM. 4530-4537. (IROS 2019).


1106064a502a168b92.png (369.13 KB )

1106064a502a168b92.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1351

主题

12429

帖子

53

粉丝