SLAM算法调研「建议收藏」

SLAM算法调研「建议收藏」作为一名机器人运行控制算法工程师,SLAM算法的调研已初步完成,特意分享。

大家好,又见面了,我是你们的朋友全栈君。

1 SLAM算法

  SLAM,即:同步定位与地图创建(Simultaneous Localization and Mapping,SLAM)。它试图解决这样的问题:一个机器人在未知环境中运动,如何通过环境的观测确定自身的运动轨迹,同时构建出环境的地图。SLAM根据硬件设备的不同主要有两种:基于激光雷达的SLAM和基于视觉的SLAM(VSLAM)。
在这里插入图片描述
可以明显看出,对于同一个场景,视觉SLAM 在后半程中出现了偏差,这是因为累积误差所引起的,所以视觉SLAM 要进行回环检验。

1.1 各类SLAM算法的发展

在这里插入图片描述

1.2各类SLAM的优缺点

在这里插入图片描述
总体来说,激光 SLAM 是目前比较成熟的机器人定位导航技术,而视觉 SLAM是未来研究的主流方向。未来,多传感器的融合是一种必然的趋势。取长补短,优势结合,为市场打造出真正好用的、易用的 SLAM 方案。

2 SLAM算法框架

2.1 基于激光雷达的SLAM算法

  下面介绍几种基于激光雷达的SLAM算法的特点以及优劣,如下表:

在这里插入图片描述

2.2 基于视觉的SLAM

  只利用相机作为外部感知传感器的SLAM称为视觉SLAM (vSLAM)。相机具有视觉信息丰富、硬件成本低等优点,经典的vSLAM系统一般包含前端视觉里程计、 后端优化、 闭环检测和构图四个主要部分。
在这里插入图片描述

  • 视觉里程计 (Visual Odometry):仅有视觉输入的姿态估计;
  • 闭环检测 (Loop Closing): 指机器人在地图构建过程中, 通过视觉等传感器信息检测是否发生了轨迹闭环, 即判断自身是否进入历史同一地点;
  • 后端优化 (Optimization): 后端接受不同时刻视觉里程计测量的相机位姿,以及闭环检测的信息,对它们进行优化,得到全局一致的轨迹和地图;
  • 建图 (Mapping): 根据估计的轨迹,建立与任务要求对应的地图。

根据生成方法的不同,视觉SLAM可以分成两大类:间接方法和直接方法。下面进行详细介绍。

2.3 视觉SLAM-间接法

  间接法首先对测量数据进行预处理来产生中间层,通过稀疏的特征点提取和匹配来实现的,也可以采用稠密规则的光流,或者提取直线或曲线特征来实现。然后计算出地图点坐标或光流向量等几何量,因此间接法优化的是几何误差:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.1 ORB-SLAM

  采用间接法思想的视觉SLAM主要有MonoSLAM、PTAM和ORB-SLAM。 此处重点介绍ORB-SLAM。ORB-SLAM围绕ORB (Orinted FAST and BRIEF) 特征计算,包括视觉里程计与回环检测的 ORB字典。ORB 特征计算效率比 SIFT 或 SURF 高,又具有良好的旋转和缩放不变性。ORB-SLAM 创新地使用了三个线程完成 SLAM,三个线程是:实时跟踪特征点的Tracking线程,局部 Bundle Adjustment 的优化线程和全局 Pose Graph 的回环检测与优化线程。
  该方法的缺点:每幅图像都计算一遍 ORB 特征非常耗时,三线程结构给 CPU带来了较重负担。稀疏特征点地图只能满足定位需求,无法提供导航、避障等功能。

在这里插入图片描述

2.4 视觉SLAM-直接法

  直接法跳过预处理步骤直接使用实际传感器测量值,例如在特定时间内从某个方向接收的光,如图5所示。在被动视觉的情况下,由于相机提供光度测量,因此直接法优化的是光度误差:
在这里插入图片描述

采用直接法思想的视觉SLAM主要有DTAM、LSD-SLAM、SVO(Semi-direct Visual Odoemtry )、DSO(Direct Sparse Odometry)和基于深度学习的SLAM。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149127.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • pycharm远程调试python_pycharm怎么建立新项目

    pycharm远程调试python_pycharm怎么建立新项目一般代码本地调试完成后,需要运行到服务器上,比如自动化测试脚本、爬虫脚本等,所以第一步需要将项目上传到服务器,然后在服务器上进行调试和运行。但是需要长期维护和开发的项目,这样就繁琐了很多,并且我们时常要维护多个测试或者开发环境,每个环境的Python版本和依赖包有可能还存在差异,这样的话,每次更新需要花费的时间就更多了。其实,很多的编辑器都考虑到这个问题,可以实现远程调试,比如Pycharm、Vs…

    2022年8月26日
  • STM32F103C8T6单片机简介「建议收藏」

    STM32F103C8T6单片机简介「建议收藏」TheSTM32F103xxmedium-densityperformancelinefamilyincorporatesthehigh-performanceARMCortex-M332-bitRISCcoreoperatingata72MHzfrequency,high-speedembeddedmemories(Flashmemoryupto128KbytesandSRAMupto20Kbytes),andanextensive

    2022年4月25日
  • 缺陷报告-模板_质量缺陷报告

    缺陷报告-模板_质量缺陷报告1.定义概述:标识并描述发现的缺陷,具有清晰、完整和可重现问题所需的信息的文档。理解:测试人员发现缺陷,将缺陷记录在《缺陷报告》中,通过缺陷报告将缺陷告知给开发人员,并对缺陷进行跟踪和管理。缺陷报告是测试人员与开发人员之间重要的沟通方式。2.什么是缺陷软件缺陷就是通常说的Bug,它是指在软件中(包括文档和程序)存在的影响软件正常运行的问题。软件未达到产品说明书标明的功能,如一个即时通讯App不能聊天。 软件出现了产品说明书指明不会出现的错误,如高考不带身份证。 软件功能超出产品说明书指明

    2022年9月17日
  • win7下IIS的安装和配置

    win7下IIS的安装和配置

    2021年10月8日
  • ai创意插件合集Astute Graphics

    ai创意插件合集Astute GraphicsAstutegraphics是一个AdobeIllustrator的创意插件合集,包含多种常见辅助功能,可以帮你提升平面与矢量设计的效率,AstuteGraphics最新版本也与时俱进的更新了支持CC2017的全系列插件,包含ColliderScribe,DynamicSketch,InkQuest,InkScribe,MirrorMe,Phantasm,Rasterino,VectorScribe,WidthScribe几大插件,插件支持Illustratorcs4/cs5/

    2022年5月30日
  • 获取数据库中所有表名

    获取数据库中所有表名

    2021年10月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号