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


相关推荐

  • navicat15激活码(注册激活)

    (navicat15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0X1Z…

    2022年3月28日
    117
  • 「数据游戏」:使用 LSTM 模型预测三天后单股收盘价

    「数据游戏」:使用 LSTM 模型预测三天后单股收盘价

    2021年7月7日
    84
  • myeclipse 8.5注册码_激活码有效期

    myeclipse 8.5注册码_激活码有效期注册码如下:Subscriber:sojson.comSubscriberCode:fLR8ZC-855550-7550535783763475 步骤:MyEclipse—->SubscriptionInformation—->对应输入以上内容finish即可

    2022年9月29日
    2
  • 《Android应用开发揭秘》连载2

    《Android应用开发揭秘》连载2《Android应用开发揭秘》  书名:Android应用开发揭秘作者:杨丰盛出版社:机械工业出版社ISBN:9787111291954出版日期:2010年3月(1版2次)开本:16页码:515版次:1-2定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4200822/China-pub预订地址:http://www.china-pub.

    2022年6月11日
    42
  • JavaScript 数组排序

    JavaScript 数组排序JavaScript数组排序1、reverse方法2、sort方法1、reverse方法reverse方法会将数组内的元素反序排序。如:letarr=[1,2,3,4,5,6];arr.reverse();//arr=[6,5,4,3,2,1]2、sort方法sort方法默认会将元素当成字符串相互对比,也可以传入自己写的比较函数来决定排序顺序。如:letarr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

    2022年6月14日
    31
  • Angular面试题_angular面试

    Angular面试题_angular面试1.angular的数据绑定采用什么机制?详述原理答案:脏检查机制。解析:双向数据绑定是AngularJS的核心机制之一。当view中有任何数据变化时,会更新到model,当model中数据有变化时,view也会同步更新,显然,这需要一个监控。原理就是,Angular在scope模型上设置了一个监听队列,用来监听数据变化并更新view。每次绑定一个东西到view上时AngularJS就会往$watch队列里插入一条$watch,用来检测它监视的mode

    2022年10月18日
    3

发表回复

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

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