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

article/2025/8/28 4:44:53

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

01 SLAM是啥?

我们先界定一下SLAM技术。SLAM,是指即时定位和地图构建,一种同时实现机器人自身定位和环境地图构建的技术。

原理是使用相机、激光雷达、惯性测量单元等传感器,来收集环境信息,然后用算法将这些信息融合起来,以确定机器人在未知环境中的位置,并构建一张环境地图。

通过SLAM技术,机器人可以在未知环境中进行自主探索和导航。像家用的扫地机,就是一个非常好的应用实例。

 SLAM技术也不只用于机器人,还广泛应用在AR、VR、无人机、自动驾驶等领域。

02 SLAM的通用架构

根据传感器的不同,机器人用的SLAM算法可以分为二维激光SLAM、三维激光SLAM,以及视觉SLAM。

其中,二维激光SLAM常用的有CartographerKarto,三维激光SLAM较流行的是LIO-SAMLOAM系列,视觉SLAM主流的方案为ORB-SLAM3VINS-Fusion……

 不同的SLAM算法,实现的具体细节会有所不同,但一般都包含前端和后端。

前端

从传感器中获取原始数据,并将这些数据与已有地图进行关联,从而确定机器人轨迹的过程。

  • 数据采集:通过传感器获取机器人周围环境的数据,如激光点云数据、图像数据等。 

  • 数据时空同步:将从不同传感器或不同时间戳接收到的数据进行同步,以便后续配准。

  • 特征提取:从采集的数据中提取用于建图的特征点,如关键点、特征描述子等。

  • 数据融合:将不同传感器获取的数据融合起来,提高建图的准确性和稳定性。

  • 数据关联:将当前帧的特征与之前的地图,或者其他帧之间的特征进行匹配,以确定机器人的运动轨迹。

  • 运动估计:通过数据关联得到机器人的运动轨迹,可以是平移、旋转等运动。

使用激光SLAM构建的栅格地图

使用激光SLAM构建的点云地图

使用视觉SLAM构建的稠密点云地图

前端的质量对SLAM系统的准确性及稳定性有着至关重要的影响,因此前端的算法设计和实现需要精心制定,以确保系统的可靠性和实用性。

后端

根据前端获取的运动轨迹和地图信息,对机器人的状态、地图和传感器误差等进行估计和优化的过程。

  • 非线性优化:通过非线性最小二乘法等,对机器人姿态和地图进行优化,使得机器人的位置和地图更加准确。

  • 回环检测:识别机器人经过的相似位置,避免累积误差的产生。可以有效降低机器人的定位误差,提高SLAM算法的精度和鲁棒性。

后端优化的关键,是对整个系统的运动轨迹和地图进行全局优化,以消除积累误差和提高定位的准确性。

03 6大主流SLAM算法

  • Cartographer

由谷歌开发的一款基于激光雷达和RGB-D相机数据的SLAM算法。可以跨平台使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多种传感器配置,被广泛用于机器人导航、自动驾驶等领域。

Cartographer系统架构图

Cartographer算法在前端完成占据栅格地图的构建,得出激光雷达扫描帧的最佳位姿后,将扫描帧插入到子地图Submap中,得到局部优化的子地图并记录位姿。

后端根据扫描帧间的位姿关系进行全局的地图优化,并使用分支定界法加速求解,进而得出闭环扫描帧在全局地图中的最佳位姿。

  • Karto

一种基于位姿图优化的SLAM方法,使用了高度优化和非迭代的cholesky矩阵对系统进行解耦并求解。适用于各种室内环境,可以处理静态和动态障碍物。

Karto系统架构图

Karto使用图论的标准形式表示地图,其中每个节点代表了移动机器人运行轨迹上的一个位姿点,以及当前位姿下传感器返回的感知信息。

节点之间的边,代表了相邻机器人位姿之间的位移矢量。对每一个新的位姿点定位,需要节点间匹配关系和边带来的约束,保持定位估计误差的前后一致。

  • LIO-SAM

一种新型的激光惯性导航系统,结合了激光雷达和惯性测量单元数据,可以实现机器人的高精度定位和运动轨迹的建图。

LIO-SAM系统架构图

前端在传统的LIDAR-SLAM基础上,利用卡尔曼滤波和因子图优化算法,将激光雷达和IMU数据融合,进一步提高机器人的定位精度和建图效果。后端加入优化算法,使得机器人的定位精度和建图精度都得到极大提升。

  • LOAM系列

一种成熟的基于激光雷达的SLAM算法,包括LOAM、LOAM-Velodyne、LOAM-LiDAR等。

其中LOAM使用3D激光雷达的数据来进行建图和定位,利用点云数据的特征,如空间聚类、连续性约束等来估计位姿。

LOAM系统架构图

LOAM-Velodyne则使用Velodyne激光雷达的3D点云数据,以实现更高精度的地图重建和定位;LOAM-LiDAR采用LiDAR传感器来进行建图和定位,可以高效获取目标物体的三维坐标信息,在一些机器人应用场景具有很大的优势。

基于LOAM系统的地图构建局部

  • ORB-SLAM3

当前最优秀的基于特征点的视觉SLAM系统之一,支持单目、双目、RBG-D等多种相机模式,在特征提取、关键帧选取、地图维护、位姿优化等方面进行了优化,并能建立短期、中期和长期的数据关联,使得该系统兼具精度和鲁棒性。

ORB-SLAM3系统架构图

前端视觉里程计基于ORB特征,建立图像帧之间特征点的数据关联,以及图像特征点和地图点之间3D到2D的数据关联,具有较好的鲁棒性和提取效率,回环检测和重定位也基于ORB特征实现。

  • VINS-Fusion

一种基于视觉惯性传感器的视觉SLAM算法。它将视觉和惯性信息进行融合,来提高机器人在未知环境下的定位和导航能力。

VINS-Fusion系统架构图

前端和后端之间通过一个状态传递机制来交换数据。前端将IMU和图像数据合并,生成一组状态量,然后将其传递给后端进行融合和优化;后端将优化后的状态量传递回前端,以便更新机器人的运动估计。

04 如何选择SLAM方案?

事实上,不同方案的SLAM算法,都有它的应用空间。

二维SLAM就适合在二维平面上运动的机器人,如扫地机、配送机器人、迎宾机器人等。

具体来看,Cartographer的总体表现最为优秀,定位精度和建图质量都很高,同时鲁棒性也很强,能承受一定的噪声和漂移干扰,可以应用于大范围建图;Karto适合建图面积不是太大的低成本应用场景,可以在一定程度上满足建图需求,同时工程实现难度也不太高。

三维SLAM则适用于机器人需要在三维空间中进行建模和定位的场景,比如无人机在室外飞行、机器人在户外环境中进行探测等。

其中,LIO-SAM的鲁棒性和实时性表现相对优秀,适用于建图面积和硬件资源有限的小型机器人应用场景;在建图面积和鲁棒性方面比较弱的LOAM方案,适用于小而快速的机器人及小型场景的定位、建图任务。

视觉SLAM通过摄像头等可视传感器来获取机器人与环境之间的相对位置关系,不需要其他传感器,更为轻量化。但对于光照变化、运动模糊等情况的处理仍存在挑战。

定位精度和实时性都比较高的ORB-SLAM3,面对场景变化能够快速适应,适用于多种场景的建图。与之相比,VINS-Fusion适用于对定位精度要求较高,且建图面积相对较小的机器人应用场景。

 总的来说,这些算法各有优劣,如何选择最合适的算法,需要根据具体的应用场景和实际需求来综合考虑。

以上就是本期的全部内容,后续我们还将对个别算法进行详细解读和细节分析,感兴趣的同学可以持续关注。

参考资料:

[1]https://zhuanlan.zhihu.com/p/501102444

[2]罗琦-基于惯性测量单元和激光点云的SLAM算法优化.广西大学

[3]朱建康-结构化场景下的主动SLAM算法研究.电子科技大学

[4]王琪-基于非线性优化的单目VINS系统的研究.哈尔滨工业大学


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

相关文章

一起自学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 客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?”…

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

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

趣图:程序员的真实写照!这也太形象了吧!

马上就要过年了,给还在拼命加班的程序员轻松一下 来点程序员的小段子 请各位大佬多多关注转发哦~ 程序员的爱情观: 爱情就是死循环,一旦执行就陷进去了; 爱上一个人,就是内存泄漏–你永远释放不了; 真…

20 张图表达程序员的心酸

「1」被老板委派接手刚刚离职同事的项目... 「2」当他们要求我测试所有应用功能时 「3」准备下班的时候,测试又提bug过來了… 「4」使用新框架却忘记阅读文档 「5」测试实习生的代码 「6」网络延迟的危害... 「7」测试刚写完的代码 「8」delete 时,忘记加 where 条件…

程序员的搞笑图片

1.测试人员、开发人员、管理人员对BUG的不同反应 2.程序员最好的放松方式,我的代码还在编译当中 3.苦逼的程序员 女程序员之歌: 程序员之歌: 无开发文档,就要程序员去接手的时候 产品上线前添加功能的时候 “代码上线后又追加了新…

程序员恶搞图片===爆笑中......娱乐一下.....

首先申明:非针对程序员 本人也是程序员。纯属娱乐,幽默一下 笑了的朋友,请支持一个哦........... 程序员恶搞图片,恶搞程序员图片,it民工图片,恶搞程序员搞笑图片,程序员搞笑图片 图片分享&…