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

这篇具有很好参考价值的文章主要介绍了盘点机器人常用的几大主流SLAM算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

01 SLAM是啥?

我们先界定一下SLAM技术。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构建的点云地图
盘点机器人常用的几大主流SLAM算法
使用视觉SLAM构建的稠密点云地图

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

后端

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

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

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

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

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

03 6大主流SLAM算法

  • Cartographer

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

盘点机器人常用的几大主流SLAM算法
Cartographer系统架构图

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

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

  • Karto

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

盘点机器人常用的几大主流SLAM算法
Karto系统架构图

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

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

  • LIO-SAM

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

盘点机器人常用的几大主流SLAM算法
LIO-SAM系统架构图

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

  • LOAM系列

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

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

盘点机器人常用的几大主流SLAM算法
LOAM系统架构图

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

盘点机器人常用的几大主流SLAM算法
基于LOAM系统的地图构建局部
  • ORB-SLAM3

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

盘点机器人常用的几大主流SLAM算法
ORB-SLAM3系统架构图

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

  • VINS-Fusion

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

盘点机器人常用的几大主流SLAM算法
VINS-Fusion系统架构图

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

04 如何选择SLAM方案?

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

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

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

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

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

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

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

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

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

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

参考资料:

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

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

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

[4]王琪-基于非线性优化的单目VINS系统的研究.哈尔滨工业大学文章来源地址https://www.toymoban.com/news/detail-447877.html

到了这里,关于盘点机器人常用的几大主流SLAM算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《机器人SLAM导航核心技术与实战》第1季:第5章_机器人主机

    《机器人SLAM导航核心技术与实战》第1季:第5章_机器人主机 视频讲解 【第1季】5.第5章_机器人主机-视频讲解 【第1季】5.1.第5章_机器人主机_X86与ARM主机对比-视频讲解 【第1季】5.2.第5章_机器人主机_ARM主机树莓派3B+-视频讲解 【第1季】5.3.第5章_机器人主机_ARM主机RK3399-视频讲

    2024年02月08日
    浏览(35)
  • 学习记录-自动驾驶与机器人中的SLAM技术

    以下所有内容均为高翔大神所注的《自动驾驶与机器人中的SLAM技术》中的内容 作者实现了一个2D 的ICP,包含了点到线的处理方式 实现了一个似然场法的配准,介绍了相关公式,使用了高斯牛顿法和g2o进行求解,其中g2o中有对核函数的使用 实现了一个 并发的ICP 配准 实现了点

    2024年02月02日
    浏览(35)
  • 机器人运动学——轮速里程计(SLAM)

    目录 一、机器人运动学分析 二、阿克曼小车  2.1运动学分析   想要让机器人运动, 除了提供目标速度还不够, 需要将机器人的目标速度转换每个电机实际的目标速度, 最终根据电机的目标速度对电机的控制实现对机器人的控制。 机器人的目标速度转换成电机的目标速度这

    2024年02月16日
    浏览(27)
  • 机器人SLAM导航学习-All in one

    参考引用 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022. 本博客未详尽之处可自行查阅上述书籍 移动机器人激光SLAM导航(文章链接汇总) 1. ROS 入门必备知识 ROS学习笔记(文章链接汇总) 2. C++ 编程范式 《21天学通C++》读书笔记(文章链接汇总) 3. OpenCV 图像

    2024年02月16日
    浏览(33)
  • 冰达ROS机器人使用-实现slam建模、自主导航、避障

    1.在windows中下载好远程连接工具: xshell 、 puty 1 2.机器人有两种模式: 模式 说明 AP模式 机器人自己创建一个热点,电脑端连接该热点,实现局域网互通 WiFi模式 机器人和电脑同时连接一个路由器,实现局域网通信 ps:本文使用AP模式,因为用起来比较方便 3.在机器人AP模式下

    2023年04月08日
    浏览(34)
  • 【配置Swarm-SLAM(swarm slam : 开源的多机器人协同CSLAM算法)更新中】

    旨在记录Swarm-SLAM过程。 Swarm-SLAM: Sparse Decentralized Collaborative Simultaneous Localization and Mapping Framework for Multi-Robot Systems Swarm-SLAM 是一个开源的多机器人协同同时定位与建图(C-SLAM)系统,旨在可扩展,灵活,分散和稀疏,这些都是集群机器人的关键属性。其系统支持激光雷达、双

    2024年01月17日
    浏览(39)
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成建图仿真

    博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及仿真详见之前博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 gazebo+rviz 仿真 - zylyehuo - 博客园 参考链接 Autolabor-ROS机器人入门课程《ROS理论与实践》 安装 gmapping 包(用于构建地图): sudo apt install ros-melodic-gmapping 安

    2024年02月04日
    浏览(39)
  • 【配置跑通Swarm-SLAM(swarm slam : 开源的多机器人协同CSLAM算法)(持续更新中......)】

    旨在记录Swarm-SLAM过程。 Swarm-SLAM: Sparse Decentralized Collaborative Simultaneous Localization and Mapping Framework for Multi-Robot Systems Swarm-SLAM 是一个开源的多机器人协同同时定位与建图(C-SLAM)系统,旨在可扩展,灵活,分散和稀疏,这些都是集群机器人的关键属性。其系统支持激光雷达、双

    2024年02月05日
    浏览(48)
  • 高翔:《自动驾驶与机器人中的SLAM技术 》-Slam_in_autonomous_driving 编译过程中遇到的问题

    使用的环境是ubuntu20.04 问题1.安装g2o没有问题,不过在编译整个项目工程时候报错: ”openmp_mutex.h: 30:10: fatal error: g2o/config.h: No such file or directory“: 解决办法: 问题2. No rule to make target ’gmock’,needed by \\\'../bin/test_preintegration\\\' . stop src/ch4/CMakeFiles/test_preintegration.dir/all] Error 2:

    2024年02月03日
    浏览(32)
  • 【ROS2机器人入门到实战】使用SLAM_TOOLBOX完成建图

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn SLAM 是通过传感器获取环境信息然后进行定位和建图。在 ROS 2 中,

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包