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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue框架快速入门

    Vue框架快速入门Vue是现在最流行的前端框架之一,而且相对于其他两个框架React和Angular来说也更加易学,而且它的作者是国人,中文文档也很完善。当然Vue框架算是比较高级的框架,所以在使用过程中还需要JavaScript、JavaScript2015、WebPack、NodeJS、npm、ESLint、JavaScript单元测试框架等其他知识和框架的使用方法。在学习Vue之前,最好先学习一下这些知识。由

    2022年6月1日
    39
  • Django(50)drf异常模块源码分析

    Django(50)drf异常模块源码分析异常模块源码入口APIView类中dispatch方法中的:response=self.handle_exception(exc)源码分析我们点击handle_exception跳转,查看该

    2022年7月31日
    6
  • 获取和分析Dump的几种工具简介[通俗易懂]

    获取和分析Dump的几种工具简介[通俗易懂]最近在进一步学习support技能的时候,了解到分析Dump的重要性,经过学习,做一些笔记。一、什么是Dump文件。Dump文件时进程的内存镜像。可以把程序的执行状态保存到Dump文件中。Dump文件分为内核模式Dump和用户模式Dump。其中内核模式Dump是操作系统创建的崩溃转储,例如蓝屏Dump。而在我们调试或Troubleshooting过程中使用的Dump是用户模式Dump,又分为F…

    2022年10月2日
    2
  • python random randint_Python random.randint方法代码示例[通俗易懂]

    本文整理汇总了Python中numpy.random.randint方法的典型用法代码示例。如果您正苦于以下问题:Pythonrandom.randint方法的具体用法?Pythonrandom.randint怎么用?Pythonrandom.randint使用的例子?那么恭喜您,这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在模块numpy.random的用法示例…

    2022年4月10日
    49
  • 评教,路上的风景更美「建议收藏」

    评教,路上的风景更美

    2022年1月30日
    35
  • oracle中拼接字符串_oracle 连接字符串

    oracle中拼接字符串_oracle 连接字符串1.listagg   该方法拼接后是varchar2类型,有最大长度限制,在OracleDatabase中,VARCHAR2字段类型,最大值为4000;PL/SQL中VARCHAR2变量类型,最大字节长度为32767。   适用场景:当要拼接的字符较少时使用。select’select’||col||’from’||table_name||’;’…

    2022年9月20日
    2

发表回复

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

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