SLAM | 激光SLAM中开源算法对比

article/2025/8/28 4:50:42

点击上方“AI算法修炼营”,选择加星标或“置顶”

标题以下,全是干货

前面的话

好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术。基于激光雷达的同时定位与地图构建技术(simultaneous localization and mapping, SLAM)以其准确测量障碍点的角度与距离、 无须预先布置场景、可融合多传感器、 在光线较差环境工作、 能够生成便于导航的环境地图等优势,成为目前定位方案中不可或缺的新技术。


激光 SLAM 任务是搭载激光雷达的主体于运动中估计自身的位姿,同时建立周围的环境地图。而准确的定位需要精确的地图,精确的地图则来自于准确的定位,定位侧重自身了解,建图侧重外在了解。

具体细节可以参考文章:2020年最新 iPad Pro上的激光雷达是什么?来激光SLAM技术中找答案

今天来讲讲激光SLAM开源方案对比。

1. 激光SLAM开源方案对比

根据所采用的数学优化框架, 激光 SLAM 可分为两大类:基于滤波器(Filter-based)和基于图优化(Graph-based)的激光 SLAM。

1.1 基于滤波器的激光SLAM方案

由 Smith R 等人提出的扩展卡尔曼滤波 SLAM 方案(EKF-SLAM),使用最大似然算法进行数据关联,该方案的缺点是计算量复杂,鲁棒性较差,构建的地图是特征地图而不是栅格地图,无法应用在导航避障上。

针对 EKF-SLAM 方案的不足, Montemerlo M 等人提出了 FastSLAM 方案,该方案将 SLAM 问题分解成机器人定位问题和基于已知机器人位姿的构图问题, 是最早能够实时输出栅格地图的激光 SLAM 方案。

粒子滤波来估计机器人位姿, 将每个粒子用运动学模型进行传播,对于传播后的粒子用观测模型进行权重计算并根据估计的位姿构建地图。 

该方案存在两个问题, 第一, 由于每个粒子包含机器人的轨迹和对应的环境地图,对于大尺度环境,若里程计误差较大即预测分布与真实分布差异较大, 则需要较多粒子来表示机器人位姿的后验概率分布,严重消耗内存;第二,由于重采样的随机性,随着重采样次数增多,粒子多样性散失,粒子耗散问题会严重影响地图的构建

为了对 FastSLAM 方案进行优化, Grisetti G 等人提出Gmapping 方案, 以 FastSLAM 方案为基本原理,在较小的环境中能实现较好的建图效果,是目前使用最为广泛的2D激光 SLAM 方案。

为了解决内存消耗严重问题, 将粒子的数量保持在一个比较小的数值, 对预测分布采样,然后基于优化扫描匹配来优化位姿。对于缓解粒子耗散问题,采用减少重采样次数,用一个度量表示预测分布与真实分布的差异性,当差异性很小时,不进行重采样,当差异性很大时,进行重采样。该方案不足是在里程计模型在传播时, 对所有的粒子同等对待,优的粒子在传播时可能变成差的粒子, 粒子退化问题严重。因此 Gmapping 方案非常依赖于里程计信息,构建的地图也取决于里程计的精度。

针对 Gmapping 方案的不足, Blanco J L 等人在 2010 年提出了更加优化的 Optimal RBPF 方案,其在里程计模型传播时,一个粒子每次传播会得到 N 个粒子, 在 N 个粒子里面选择最优粒子, 作为此次的真实传播, 相当于每个粒子给了 N次机会,大大减少最优粒子退化为噪声很大的粒子情况。

1.2 基于图优化的激光SLAM方案

在激光雷达领域, Lu F, Milios E 等人首次提出利用图优化(graph-based optimization) 的数学框架优化 SLAM 问题,通过非线性最小二乘方法来优化建图过程中累积的误差。其存在的问题在于没有认识到系统的稀疏性, 离线处理SLAM 问题。 

由 Gutmann J 等人提出的图优化框架与当前的图优化框架相似,包括局部扫描匹配、全局优化、以及子图与子图的闭环检测,不足是同样没有认识到系统的稀疏性,并非实时 SLAM。

为了进一步改善前面工作的不足, Konolige K 等人提出首个基于图优化框架的开源方案 Karto SLAM,该方案认识到了系统稀疏性,在一定程度上替代了基于滤波器的激光SLAM 方案。该方案的不足是采用局部子图匹配之前都要构建子图,耗费时间较长;若采用全局匹配方法,则在搜索范围大的时候速度会变慢

谷歌的 Cartographer开源方案,是对 Karto SLAM 的优化方案, 核心内容是融合多传感器数据的局部子图创建以及用于闭环检测的扫描匹配策略。 

该方案中前端扫描匹配算法是结合 CSM 与梯度优化来实现的。在生成一个子地图后,会进行一次局部的闭环检测;当全部子地图构建完成后,利用分枝定界和预先计算的网格的算法,进行全局闭环检测,从而保证闭环检测的速度。该方案的不足是没有对闭环检测结果进行验证, 在几何对称的环境中,容易引起错误的闭环。


另外, Kohlbrecher S 等人提出了 Hector-SLAM 方案,该方案利用高斯牛顿方法解决前端扫描匹配问题,把每一帧采集到的激光雷达数据和地图进行匹配,该方案仅有前端扫描匹配的模块,无后端优化的过程。与 Gmapping 方案最大的区别在于不需要里程计数据,里程计信息通过激光雷达数据估算出来, 所以对传感器的测量频率要求较高。 在 ROS仿真环境中运行 Hector-SLAM 方案, 若机器人速度过快尤其是在强旋转的时候, Hector-SLAM 方案会发生漂移现象。在真实环境中,由于周围特征点能够辅助机器人定位和建图,构建的栅格地图会比仿真环境中效果好。Hector-SLAM 方案的缺点是对初值敏感,同时难以处理闭环问题。 Hector-SLAM 的整体建图精度高于Gmapping,但对参数配置要求较高。Hector -SLAM 适用于对地图要求较高的场合, Gmapping 易用性更好。

1.3 3D激光SLAM

在 3D 激光 SLAM 领域中, 由 Zhang J 等人提出的LOAM 方案,利用 3D 激光雷达采集数据, 进行基于特征点的扫描匹配, 利用非线性优化方法进行运动估计, 激光里程计的输出与地图进行匹配, 包括直线匹配和平面匹配, 无回环检测模块,点面特征还不够可靠。

为了进一步改进 LOAM 方案的, Zhang J 等人提出视觉结合 3D 激光雷达实时建图的 V-LOAM 方案。利用视觉里程计以高频率估计位姿变换,激光里程计以低频率优化运动估计,并校准漂移。在公开的 KITTI 数据集上,V-LOAM 算法精度排名第一, 而且当传感器高速运动并受到明显的光照变化时,该方法的鲁棒性较好。


Zhang J 等人提出了一种用于自我运动估计和建图的数据处理方案 LVIO。该方案连接 3D 激光扫描仪, 相机和 IMU,顺序多层运行三个模块以产生实时自我运动估计。粗到精数据处理产生高速率估计并在长距离中构建低漂移的地图。

1.4 发展趋势

几种激光SLAM算法对比:

面对复杂的周围环境,多传感器融合的SLAM是必然趋势视觉会提供高精度的里程计以及信息量丰富的地图信息,激光雷达为视觉特征提供准确的深度信息。SLAM算法的鲁棒性与实时性有待进一步提高。在提高SLAM算法鲁棒性方面,需要考虑里程计的标定、激光雷达的外参与时间戳标定、激光雷达运动畸变的去除等数据处理过程,同时针对退化环境、全局定位、动态环境定位等问题还有待完善。

参考:

1. Montemerlo M, Thrun S, Koller D, et al. FastSLAM: a factored solution to the simultaneous localization and mapping problem [C]//Proc of the AAAI National Conference on Artificial Intelligence.California: AAAI press, 2002: 593-598.

2.  Grisetti G, Stachniss C, Burgard W. Improved techniques for grid mapping with Rao-Blackwellized Particle Filters [J]. IEEE Trans on Robotics, 2007, 23 (1): 34-46.

3. 《激光SLAM理论与实践》深蓝学院 曾书格

目标检测系列秘籍一:模型加速之轻量化网络秘籍二:非极大值抑制及回归损失优化秘籍三:多尺度检测秘籍四:数据增强秘籍五:解决样本不均衡问题秘籍六:Anchor-Free视觉注意力机制系列Non-local模块与Self-attention之间的关系与区别?视觉注意力机制用于分类网络:SENet、CBAM、SKNetNon-local模块与SENet、CBAM的融合:GCNet、DANetNon-local模块如何改进?来看CCNet、ANN
语义分割系列一篇看完就懂的语义分割综述最新实例分割综述:从Mask RCNN 到 BlendMask超强视频语义分割算法!基于语义流快速而准确的场景解析CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割基础积累系列卷积神经网络中的感受野怎么算?
图片中的绝对位置信息,CNN能搞定吗?理解计算机视觉中的损失函数深度学习相关的面试考点总结自动驾驶学习笔记系列 Apollo Udacity自动驾驶课程笔记——高精度地图、厘米级定位 Apollo Udacity自动驾驶课程笔记——感知、预测 Apollo Udacity自动驾驶课程笔记——规划、控制自动驾驶系统中Lidar和Camera怎么融合?竞赛与工程项目分享系列如何让笨重的深度学习模型在移动设备上跑起来基于Pytorch的YOLO目标检测项目工程大合集目标检测应用竞赛:铝型材表面瑕疵检测基于Mask R-CNN的道路物体检测与分割
SLAM系列视觉SLAM前端:视觉里程计和回环检测视觉SLAM后端:后端优化和建图模块视觉SLAM中特征点法开源算法:PTAM、ORB-SLAM视觉SLAM中直接法开源算法:LSD-SLAM、DSO视觉SLAM中特征点法和直接法的结合:SVO
2020年最新的iPad Pro上的激光雷达是什么?来聊聊激光SLAM

http://chatgpt.dhexx.cn/article/X2qB4AnH.shtml

相关文章

激光SLAM算法学习(一)——激光SLAM简介

激光SLAM算法学习(一) 激光SLAM简介 1、SLAM是什么 SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地…

SLAM算法

一、概述 Simultaneous Localization and Mapping (SLAM)原本是Robotics领域用来做机器人定位的,最早的SLAM算法其实是没有用视觉camera的(Robotics领域一般用Laser Range Finder来做SLAM)。本文主要关注基于camera图像做SLAM的算法&#xf…

SLAM算法(一)即同步定位与地图构建了解

文章目录 一、SLAM 简介二、SLAM 技术简介三、slam算法实现的几个要点有趣的事,Python永远不会缺席培训说明 一、SLAM 简介 SLAM(Simultaneous Localization and Mapping同步定位与地图构建) 是业界公认视觉领域空间定位技术的前沿方向,它主要的作用是让…

盘点机器人常用的几大主流SLAM算法

SLAM可以说是近几年最火的机器人技术之一,也是机器人领域的关键技术。不少同学表示,学了几年还在「爬坑」,甚至感觉「越学越难」。本文通过整理机器人领域常用的SLAM算法架构及特点,希望为大家的方向选择提供一些参考。 01 SLAM是…

一起自学SLAM算法:7.7 典型SLAM算法

连载文章,长期更新,欢迎关注: 写在前面 第1章-ROS入门必备知识 第2章-C编程范式 第3章-OpenCV图像处理 第4章-机器人传感器 第5章-机器人主机 第6章-机器人底盘 第7章-SLAM中的数学基础 7.1 SLAM发展简史 7.2 SLAM中的概率理论 7.3 估计理论 …

slam原理介绍和经典算法

1.传统slam局限性 slam算法假设的环境中的物体都是处于静态或者低运动状态的,然而,现实世界是复杂多变的,因此这种假设对于应用 环境有着严格的限制,同时影响视觉slam系统在实际场景中的应用性。当环境中存在动态物体时&#xff0…

【漫画】程序员系列苏大强版表情包

点击上方“ 程序IT圈 ”,选择“置顶公众号” 关键时刻,第一时间送达! 整理来源于菜鸟要飞 今天抽空给大家收集了一份苏大强版程序员系列表情包,分享给大家,希望你能够喜欢 。下面做个投票,看看你最喜欢哪个…

10 张令人泪牛满面的程序员趣图

(给程序员的那些事加星标,每天看趣图) 0、没事,我已经全部注释掉了 1、好好的现有库你不用,非得造轮子了! 2、HR 和程序员都是如何看简历的? 3、程序员的灾难曲线图 4、用钉钉子解释软件测试 5、…

[转] 程序员才懂的58张图片,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

来源:程序员最幽默(ID:humor1024)编译配字 01 Java VS C 02 功能先上了再说 03 高级开发人员作为一个团队进行编程 04 调试CSS 05 高级开发人员重构代码 06 能一个手指完成的绝不用两只手 07 看实习生编码的时候,我的表…

趣图:程序员某场景的样子--开心一笑

几组幽默的图片,真实的解释了程序员在一些特定场景时候的样子…… 往运行服务器上直接上传文件时程序员的样 当老板说项目如果能赶在最后期限前开发完成将会有一笔奖金时程序员的样子 当凌晨3点还在修改bug时程序员的样子 当发现没有按CTRL-S就关闭了文件时程序员的…

趣图:程序员的那些事(一)

关注很久了《程序员的那些事》公众号,发现特别有意思的就是 ‘趣图’ 了。 分享给大家,在烦躁的工作中 , 笑上一笑!! 0、趣图是出自美剧《黑客军团》 上图右边那位是主演拉米马雷克,他就是 2019 年奥斯卡影…

【转帖】程序员才懂的58张图片

程序员才懂的58张图片,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 2019年02月02日 21:15:00 大数据v 阅读数:16226 https://blog.csdn.net/zw0Pi8G5C1x/article/details/86762134 导读:春节快到了!你的假期都安排上了吗?今天我们…

10 张有关程序员的趣图,图图戳心

0、没事,我已经全部注释掉了 1、好好的现有库你不用,非得造轮子了! 2、HR 和程序员都是如何看简历的? 3、程序员的灾难曲线图 4、用钉钉子解释软件测试 5、听说你是 CSS 高手 6、客户需求 vs 最终实现 7、程序员的 8 种层级 ↓↓↓…

关于做人处事最火的 6 张图片,改变无数程序员!

1、拥有源码资源的多少并不重要,如果你不懂得去哪抄和如何改,永远都是不够的。 2、修改bug时,多坚持一下,很可能只是差了那么一点点 3、当一名程序员,要懂得自得其乐! 4、锤炼自己学习新技术的能力&#xf…

趣图:用户眼中的程序员 VS 程序员眼中的用户

IT程序猿 微博网友评论: 黑猫喵喵喵喵喵:用户经常可逗了~ UC震惊组:用户经常干些傻事触各种发莫名其妙的Bug 内心毫无波澜的阿仁:哎...熊孩子用户,把程序员心爱键盘玩碎都不能满足其需求 Cui_l2&#xff1a…

11张图揭露了程序员的日常生活,看完笑哭(泪奔)!

(点击上方公众号,可快速关注) 程序员的日常生活中只有代码和电脑,做为一个程序员,我更了解程序员,下面带你走进程序员的神秘日常生活,程序员大佬们也看看,你的生活是否如我所说呢 1…

代码转图片Carbon-高雅程序员必备!

官网平台链接 有时代码受限于编辑器,如何截图才能正常而优雅地显示呢?做成图片或许是不错的方法! 本文要推荐的「Carbon」是一款能将代码转为美丽图片的免费在线工具,只要将原始码粘贴或直接把文件拖曳到网站中,就能选择不同的配色,为代码…

程序员的搞笑事件(趣图)

0 客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?”…

一张程序员人生图,很有意思

在网上看到一张程序员职业规划图