SLAM 技术的发展距今已有 30 余年的历史,涉及的技术领域众多。由于本身包含许多步骤,每一个步骤均可以使用不同算法实现,SLAM 技术也是机器人和计算机视觉领域的热门研究方向。

一. 什么是SLAM

SLAM 是同步定位与地图构建 (Simultaneous Localization And Mapping) 的缩写,最早由 Hugh Durrant-Whyte 和 John J.Leonard 提出,SLAM是机器人与计算机视觉领域中的基本问题。它主要研究装置通过各种传感器在未知环境中的感知和定位自身方位并同时构建环境三维地图。所以视觉slam根本就是回答两个问题,机器人在哪和机器人本身所处的环境是什么样的。这和人进入到一个陌生环境时所思考的问题非常相似。比如人被进入一个陌生的屋子(环境),人首先会观察观察自身处的环境(屋子),接下来会思考自身所处的位置。人是通过眼睛、大脑来完成观察和思考,而机器人是利用摄像头和处理器来完成人做作的观察和思考。SLAM有着广泛的应用,如室内扫地机、室内服务机器人、自动驾驶、空中的无人机、、虚拟现实、增强现实等,基本上,需要定位和三维感知的应用都需要用到SLAM技术。

二.SLAM的常用Sensor有哪些?

SLAM常用的Sensor有红外传感器,激光雷达或者深度传感器,摄像头,惯性传感器:

  • 红外传感器:主要应用在较近距离的感应,常用于扫地机器人。
  • 激光雷达或者深度传感器:会应用在自动驾驶中,因为自动驾驶需要高精度地图,而高精地图的获取很大程度依赖激光雷达以及摄像头。

激光雷达有单线多线之分,角分辨率及精度也各有千秋。SICK、velodyne、Hokuyo以及国内的北醒光学、Slamtech是比较有名的激光雷达厂商。

  • 摄像头:单目、双目、单目结构光、双目结构光、多目等。自动驾驶领域中,所应用的摄像头主要有单目摄像头和双目摄像头两类。

(单目主要是可见光摄像头,双目由一个可见光摄像头加一个红外光摄像头组成。)

  • 惯性传感器(英文叫做IMU,包括陀螺仪,加速度计):智能手机标配。

惯性测量单元(IMU)通过内置的陀螺仪和加速度计可以测量角速度和加速度,进而推算相机的姿态

SLAM运行结果是设备根据传感器的信息,计算自身的位置(在空间中的位置和朝向),构建环境地图(稀疏活着稠密的三维点云),可以是稀疏的三维点云或者是稠密的三维点云,甚至是三维的几何模型。

三.SLAM的常用框架核心计算流程

自2007年PTAM工作出来之后,现在的SLAM方法基本上都采用了并行跟踪和建图框架,前台输入的数据,包括传感器数据(rgb图像,深度图,imu测量值),前台线程根据传感器数据进行跟踪求解,实时回复每个时刻自身的位姿,同时后台线程进行局部地图或者全局地图和关键帧优化,减少误差累计,这时候后台线程还会对场景进行闭合回路的检测和校验,最后输出设备实时的位姿和三维点云。

为什么进行回路检测?
在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说的累积误差。一个消除误差有效的办法是进行回路检测。回路检测判断机器人是否回到了先前经过的位置,如果检测到回环,它会把信息传递给后端进行优化处理。

四.SLAM的行业应用

  • 扫地机器人
  • 无人机
  • 无人车
  • 虚拟/增强现实:inside-out方案

1.小米扫地机器人以激光雷达为核心

2.戴森

eye 扫地机器人以视觉为核心
戴森扫地机器人在顶部有个全景摄像头。

3.大疆无人机 phantom4

结合双目立体视觉和超声波,实现空中更精准悬停和自动生成安全航线。

4.无人车waymo

google无人车项目waymo,使用高精度激光雷达构建地图。

5.mobileeye,特斯拉等自动驾驶

mobileeye,特斯拉等自动驾驶方案使用廉价的摄像头为主

6.虚拟/增强现实:inside-out方案

目前绝大多数vr头盔都采用outside-in的定位方案,需要在环境中放置一个或多个传感器,不支持大范围移动定位。基于SLAM技术的VR/AR可以实现Inside-Out方案:将创干起固定在使用者端。这种方案的有点是不需要提前不知环境中的传感器,没有活动范围的限制。Inside-Out方案是未来的趋势。

Inside-out vs. outside-in tracking (Image: Ishii, 2010)

1.什么是inside-out定位?
Inside-out空间定位技术,简单来说就是利用设备自身,而不依靠外部的传感器等配件,实现虚拟场景里的空间定位,以及更多的人机交互。2.inside-out定位跟踪原理是什么?
Inside-out是一种光学跟踪系统,光源发射装置安装在被跟踪目标上,获取光源信号的传感器/标记点固定在使用环境中,其原理都是以三角定位算法为基础,测量目标反射或者是主动发射的光线,并经过计算机特殊的视觉算法可转换成目标的空间位置数据,从而实现对目标的位置跟踪。
在VR设备领域,主要是在VR头显上安装摄像头,让 VR 头显自己检测外部环境变化,借助计算机或者自身的算法芯片计算出 VR 头显的空间位置。3.什么是外向内追踪技术(Outside-in Tracking)?
目前位置追踪的解决方案里,外向内追踪技术有较高的准确度,且因为传输资料量少,运算的延迟也低,降低部分因延迟产生的不适感。但是外接设备的限制也很明显,例如:追踪物体远离传感器的测距或是被物体遮挡时,就无法获得位置讯息;操作者不能随意离开传感器的有效监测区,也就限制了其自由活动范围。4.外向内追踪技术有几种类型?
a.激光定位技术,通过定位器进行每秒若干次的激光与光敏传感器进行位置追踪;
b.采用红外光光学定位,通过一个类似直立麦克风的感测器进行追踪;
c.通过体感摄像头配合五彩斑斓的神奇魔法棒做可见光光学定位。

光学定位与追踪技术_视觉SLAM技术学习笔记(一)基础知识以及SLAM的应用相关推荐

  1. python 图像分析自然纹理方向与粗细代码_数字图像处理与Python实现笔记之基础知识...

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  2. 激光SLAM入门学习笔记

    激光SLAM入门学习笔记 激光SLAM入门学习笔记 一.推荐阅读书籍 二.推荐公众号.知乎.博客 1.公众号 2.知乎 3.博客 三.推荐阅读论文&代码(参考泡泡机器人) 2D激光SLAM 3 ...

  3. > 《物联网技术与应用》课程学习笔记

    <物联网技术与应用>课程学习笔记 文章目录 前言 第一次课 1.什么是物联网 2.物联网的特征 3.解释NB-IOT(窄带宽中束物联网)的含义 4.解释RFID有源.无源的含义 ~~5.物 ...

  4. 庄懂的技术美术入门课系列——学习笔记

    关AO的知识之前涉及到就# 庄懂的技术美术入门课系列--学习笔记 本系列旨记录看视频学习时的一些看个人的理解和思考 1.三色混合的环境光 基本思路: 物体的环境光可以想象成是在物体四周全方位向物体射出 ...

  5. 学习计算机基础知识论文,中小学生应注重学习计算机的基础知识_信息技术论文.doc...

    中小学生应注重学习计算机的基础知识_信息技术论文_范文先生网 "知识爆炸"和"知识老化"这两大问题,不断困扰着现代教育,人们解决这一问题的良方之一,就是加强学生 ...

  6. ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

    ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

  7. 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...

    [初阶]unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流 一.关于 显示分数时,如何让函数之间相互交流 这是一个非常好的逻辑问题 1 思路:主 ...

  8. 阿里云趣味视觉AI训练营学习笔记Day 5

    阿里云趣味视觉AI训练营学习笔记Day 5 学习目标 学习内容 前言 一.创建人像卡通化应用 二.应用配置 三.后端服务开发部署 四.小程序前端开发 阿里云高校计划,陪伴两千多所高校在校生云上实践.云 ...

  9. 处理器_深度学习及 KPU 基础知识

    kpu 处理器_深度学习及 KPU 基础知识_weixin_39909212的博客-CSDN博客深度学习及 KPU 基础知识1. 阅读完本章文档可以了解什么?了解深度学习一些基础内容了解 K210 内 ...

  10. 计算机技术基础概念,2017年计算机三级网络技术基本概念与名词解释:计算机基础知识部分...

    计算机基础知识部分 1. 计算机系统发展历程:电子管计算机.晶体管计算机.集成电路计算机.大规模及超大规模集成电路计算机. 2. 电子计算机时代开始的标志:以美国1945年生产.1946年2月交付使用 ...

最新文章

  1. Android Studio 编译: Program type already present: XXX 解决方案
  2. 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...
  3. Ubuntu10.10更新源
  4. C#调用WebService出现“基础连接已经关闭:接收时发生错误”错误
  5. Java—接口与抽象类
  6. 6-tips-for-managing-property-files-with-spring--转
  7. 微软将迎来迄今最大补丁日 一次修补49个漏洞
  8. 操作系统(一)计算机系统概述
  9. mysql典型安装和自定义_Mysql8.0.19下载安装—windows版本自定义安装
  10. CAD制图系列之中心线画法
  11. 启动XP出现“Operating System Not Found”
  12. 内卷时代,普通测试员的铁饭碗究竟是什么?
  13. Tushare使用分享
  14. Unity零基础到入门 ☀️| 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】!
  15. 京东/淘宝的手机销售榜(前4名 -- 手机品牌 --手机型号*3 --手机分辨率 -- 手机操作系统 --安卓版本号)...
  16. 马尔克斯写给读者的告别信
  17. 基于PHP+MySQL托管中心管理系统的设计与实现#计算机毕设
  18. 华为nova8pro鸿蒙系统怎么看,华为nova8的隐藏功能_华为nova8隐藏功能怎么开启
  19. k宝无法连接计算机,农行K宝无法识别
  20. 真正的互联网诞生:TCP/IP协议的出现

热门文章

  1. java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除
  2. 教你编写高性能的mysql语法
  3. easyui获取图片路径_Python玩转图片九宫格
  4. 微信小程序微商城(十):用户收货地址管理
  5. Laravel报错:Whoops, looks like something went wrong.
  6. gogs仓库代码拉取不需要用户账号验证问题
  7. ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
  8. 搜索附近店铺到用户的距离的小经验
  9. LINUX编译GtkLP(开源的打印机图形化工具)
  10. 全网首发:怎样制作CDKEY(4)-生成CDKEY