[SLAM] 01. "Simultaneous Localization and Mapping"

本篇带你认识SLAM,造成客观的认识和体系

 

1、经过行业招聘初步了解SLAM

发信人: leecty (Terry), 信区: ParttimeJobPost
标 题: 创业公司招SLAM 算法工程师
发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内html


咱们是一家年轻的初创公司,核心团队来自清华大学和中科院。依托强大的视觉SLAM算法,咱们深刻投身到机器人,虚拟现实,加强现实等前沿产业。

招聘:
视觉SLAM 算法工程师 (能够兼职/实习)

要求:
1. 熟悉SVO,SFM,ORB SLAM,LSD SLAM,PTSAM等算法,或至少熟悉用过其中任一方面
2. 专业:自动化,计算机,数学(熟悉运筹优化,数值计算等)
3. 熟悉C ,C++,Matlab
4. 最好熟悉Linux 

联系方式: ......@126.com

待遇:
工资不能保证是行业的最高水平,当咱们能保证:
1. 和目前行业最领先的人一块儿,在最前沿的领域成长
2. 丰厚的期权。享受创业的成果。优秀的实习生和正常招聘得到期权股票途径一致,只要你是牛人。前端


 

2、牛逼哄哄的SLAM技术 即将颠覆哪些领域?

机器人在未知环境中,要实现智能化的四大任务:python

  • 定位(Localization),
  • 建图(Mapping),
  • 路径规划(Navigation),
  • 控制技术(Controlling)

而这四个问题中的前三个,SLAM都扮演了最核心的功能。git

 

2013年的Course : Cyrill Stachniss程序员

 


 

3、ICCV研讨会:实时SLAM的将来以及深度学习与SLAM的比较

第一部分:为何 SLAM 很重要?github

SLAM 是卷积神经网络和深度学习的补充:算法

  • SLAM 关注于几何问题
  • 深度学习是感知(识别)问题的大师。

 

若是你想要一个能走到你的冰箱面前而不撞到墙壁的机器人,那就使用 SLAM。编程

若是你想要一个能识别冰箱中的物品的机器人,那就使用卷积神经网络。后端

 

SLAM 是 SfM(运动恢复结构:Structure from Motion)的一种实时版本。网络

视觉 SLAM 或基于视觉的 SLAM 是 SLAM 的一种仅使用摄像头的变体,放弃了昂贵的激光传感器 和 惯性测量单元(IMU)。

  • 单眼 SLAM(Monocular SLAM)仅使用单个摄像头,
  • 非单眼 SLAM(non-monocular SLAM)一般使用一个预校准的固定基线的立体相机套件。

 

SLAM 是计算机视觉领域所谓的「几何方法(Geometric Method)」最好案例。

事实上,卡内基梅隆大学(CMU)的机器人研究所将研究生水平的计算机视觉课程分红了一个「基于学习的视觉方法」和一个单独的「基于几何的视觉方法」课程。

 

From: CMU course list

16-822 Geometry Based Methods in Computer Vision

16-824 Learning-based Methods in Vision

 

 

1.运动恢复结构 Sfm vs 视觉 SLAM

运动恢复结构(SfM)和 SLAM 所解决的问题很是类似,但 SfM 传统上是以离线形式进行的,而 SLAM 则已经慢慢走向了低功耗/实时/单 RGB 相机的运行模式。

今天许多运动恢复结构方面的专家都在为世界上一些最大的科技公司,帮助打造更好的地图。若是没有关于多视图几何(multiple-view geometry)、SfM 和 SLAM 的丰富知识,像谷歌地图这种成功的地图产品根本就不可能出现。

典型的 SfM 问题遵循:

给定一个单个室外结构(如大剧场/大致育馆)的大型照片集合,构建该结构的 3D 模型并肯定每一个相机的姿式。这个照片集合以离线形式处理,并且大型结构重建所需时间从几小时到几天不等。

流行的 SfM 相关的软件库:

    • Bundler:一个开源的运动恢复结构工具包

    • Libceres:一个非线性最小二乘极小化工具(对束调整(bundle adjustment)问题颇有用)

    • Andrew Zisserman 的多视图几何 MATLAB 函数

 

2.视觉 SLAM vs 自动驾驶

研讨会的组织者之一 Andrew Davison 表示,尽管自动驾驶汽车是 SLAM 最重要的应用之一,但用于自动化载具的 SLAM 应该有其本身的研究轨道。(并且正如咱们所见,研讨会的展现者中没有一个谈到了自动驾驶汽车。)在接下来的许多年里,独立于任何一个「圣杯级」的应用而继续在研究的角度上研究 SLAM 是有意义的。

尽管在自动化载具方面存在着太多的系统级细节和技巧,但研究级的 SLAM 系统所需的不过是一个网络摄像头、算法知识和一点辛劳而已。

视觉 SLAM 做为一个研究课题对数以千计的博士生的早期阶段要友好得多,他们将首先须要好几年的使用 SLAM 的实验室经验,而后才能开始考虑无人驾驶汽车等昂贵的机器人平台。

 

 

第二部分:实时 SLAM 的将来

你也许不知道 Andrew 是谁,他是伦敦帝国学院独一无二的 Andrew Davison 教授

他最知名的成就是其 2003 年的 MonoSLAM 系统,他是第一个展现如何在单个「单眼」摄像头上构建 SLAM 系统的人,而那时候其余全部人都还认为打造 SLAM 系统须要一个立体的「双眼」摄像头套件。

最近,他的研究成果已经对戴森(Dyson)等公司的发展轨迹和他们的机器人系统的能力产生了影响(如全新的 Dyson360)

 

在 Davidson 的研讨会介绍演讲中,他讨论了一些过去 10-15 年里科研界所打造的典范系统:

    • MonoSLAM

    • PTAM

    • FAB-MAP

    • DTAM

    • KinectFusion

 

1. Davison vs Horn:机器人视觉的下一篇章

Davison 还提到他正在写一本关于机器人视觉的新书,这对计算机视觉、机器人和人工智能领域的研究者来讲应该是一个激动人心的好消息。

上一本机器人视觉的书是由 B.K. Horn 写的(出版于 1986 年),如今也到该更新的时候了。

尽管我很乐意阅读一本重在机器人视觉原理的巨著,但我我的但愿该书关注的是机器人视觉的实用算法,就像

Hartley 和 Zissermann 的杰做《Multiple View Geometry(多视图几何)》

Thrun、Burgard 和 Fox 所著的《Probabilistic Robotics(几率机器人学)》那样。

一本关于视觉 SLAM 问题的「食谱」将会受到全部严肃的视觉研究者欢迎。

... ...

 

 

第三部分:深度学习 vs SLAM

SLAM 小组讨论真是乐趣无穷。

在咱们进入重要的「深度学习 vs SLAM」讨论以前,我应该说明每一位研讨会展现者都赞成:

语义对构建更大更好的 SLAM 系统是必需的。

 

关于将来的方向,这里有不少有趣的小对话。在争论中,Marc Pollefeys(一位知名的 SfM 和多视角几何研究者)提醒全部人「机器人是 SLAM 的一个杀手级应用」,并建议咱们保持对「大奖」的关注。这使人很是惊讶,由于 SLAM 传统上是适用于机器人问题的,但过去几十年机器人并无什么成功(谷歌机器人?),致使 SLAM 的关注重点从机器人转移到了大规模地图构建(包括谷歌地图)和加强现实上。研讨会上没人谈论过机器人。

 

1.将语义信息集成到 SLAM 中

人们对将语义整合到今天最出色的 SLAM 系统中有很大兴趣。当涉及语义时, SLAM 社区不幸地卡在了视觉词袋(bags-of-visual-words)的世界里,而在如何将语义信息整合进他们的系统上没有什么新想法。在语义一端,咱们如今已经看到 CVPR/ICCV/ECCV 上冒出了不少实时语义分割演示(基于卷积神经网络);在我看来,SLAM 须要深度学习,而深度学习也同样须要 SLAM。

 

 

2.「端到端学习(end-to-end learning)会主宰 SLAM 吗?」 

在 SLAM 研讨会小组讨论结束时,Zeeshan Zia 博士提出了一个震惊全部人的问题,并引起了一场充满能量的讨论,使人难忘。

你应该看看小组成员们脸上的表情。那就像是将一个深度学习的火球投向一群几何学家。他们的面部表情表达出了他们的困惑、愤怒和厌恶。他们想:「你怎么敢质疑咱们?」正是在这些稍纵即逝的时刻,咱们才能真正体会到大会的体验。

Zia 的问题基本上是:「在构建今天的 SLAM 系统时,端到端学习很快就将取代大部分人工劳动吗?

 

Zia 的问题很是重要,由于端到端的可训练系统已经慢慢进入到了不少高级的计算机问题中,相信 SLAM 会是一个例外是没有道理的。有好几位展现者都指出当前的 SLAM 系统过于依赖几何,以致于让彻底基于深度学习的 SLAM 系统看起来不合理了——咱们应该使用学习技术获得更好的点描述,而不要管几何。「你可使用深度学习作一个计算器,并不意味你应该这么作。」

 

尽管许多小组讨论发言人都使用了有些确定的「不行」回应,但让人惊讶的是,倒是 Newcombe 声援了深度学习和 SLAM 联姻的可能。

 

Research Manager Oculus Research, Surreal Vision Co-Founder, Affiliate Assistant Professor.

 

 

3.Newcombe 的提议:使用 SLAM 助力深度学习

尽管 Newcombe 在深度学习可能如何帮助 SLAM 上没有提供不少证据或想法,但他却为 SLAM 如何可能为深度学习提供帮助给出了一条清晰的路径。

想一想看咱们使用大规模 SLAM 已经构建出的地图以及这些系统所提供的对应(correspondence)——这难道不是一个构建能帮助深度学习的万亿级图像到图像「相关」数据集的清晰路径吗?其基本思路是:

今天的 SLAM 系统是大规模的「对应引擎」,能够用来生成大规模数据集,而这正是深度卷积神经网络所须要的。

 

 

结语

此次 ICCV 大会上主流的工做(重在机器学习)和本次实时 SLAM 研讨会所呈现出现的工做(重在束调整等几何方法)之间存在至关大的脱节。主流的计算机视觉社区在过去十年内已经见证了屡次小型变革(如:Dalal-Triggs、DPM、ImageNet、ConvNets、R-CNN),而今天的 SLAM 系统和它们八年前的样子并无很大的不一样。Kinect 传感器多是 SLAM 领域惟一的最大的完全变革的技术,但基础算法仍旧保持着原样。

 


 

4、2015深度学习回顾:ConvNet、Caffe、Torch及其余

研究生过去经常避开了关于Yann LeCun的笑话,Yann LeCun坚持认为机器学习在未来的某一天会作特征设计阶段的工做。如今彷佛是这种状况,当你坚持认为“手工特征设计”将省掉一天时间的时候,整个视觉社区都会忽略你。Yann LeCun作了一个主题报告,并给了它一个有趣的标题:“深度学习怎么了?”,这代表了卷积神经网络(也叫CNNs或ConvNets)存在于CVPR的任何角落。

过去在CVPR很难发表ConvNet(卷积神经网络)研究论文,而如今若是你没有对ConvNet作一个基本的比较的话,很可贵到一篇CVPR文献。获得一个很酷的新问题了么?哦,你没有试一下基于ConvNet的基本方法么?很好,这说明为何没人关心了。

还有不少事情等着视觉科学家去作,一个扎实的数学上的正式教育比其余任何都要重要。咱们过去是使用梯度降低来训练,如今也是如此。就比如咱们过去喝咖啡,如今也喝咖啡同样。其本质上,其实仍是数学。

很是清楚的是:经过卷积神经网络语言来铸造你的计算机视觉问题,你将战胜全部用手作计算机视觉的人。我认为Yann LeCun(深度学习之父其中之一)就是一个现代的笛卡尔,只是由于我认为开创性的工做是指日可待。他的ConvNets思想框架就像是一个必备的坐标系统——咱们可能不知道目的地像什么,但咱们如今知道如何来绘制一张地图。

 

在CVPR上,咱们既有Torch教程也有Caffe教程。我参加了DIY深度学习的教程,这是一个充满Caffe的屋子——在会议开始的5分钟前,站在房子里的参会人员只有像我这样的懒虫。

相比之下,Caffe是更受欢迎的,但对于Torch,当谈及到一些深度学习的权威人员时(如+Andrej Karpathy和其余深度思惟科学家),一些特定的专家小组彷佛从Caffe转移到了Torch。

  Caffe是在Berkeley发展起来的,有一些充满活力的社区,与Python结合而且在大学生中彷佛至关流行。Trevor Darrell教授甚至找了一些博士后来帮助Caffe发展。若是我再年轻几岁而且刚得到博士学位,那么我必定会申请的。

  Torch并无跟随Python的潮流,它是基于Lua的。对于解释器没有必要像Matlab或者Python那样,Lua会给你神奇的控制台。Torch被Facebook人工智能研究实验室和位于伦敦的谷歌DeepMind大量使用。对于那些惧怕相似于Lua这样新语言的人,在此不用担忧——若是你已经涉足Python,JavaScript或者Matlab的话,那么你会感到Lua语言学起来特别“轻松”。

 

如今,愈来愈清晰的是:深度学习的将来主要是来自像Caffe或Torch那样有自给自足的软件包,而不是像OpenCV或Matlab那样的处在生死边缘上的全能工具。

当你在OpenCV上分享创做,你最终会分享源代码,但有了深度学习工具包,你最终提供的是你的网络预训练

对于你的计算机视觉管道,你没必要再考虑20个“小”算法的组合——你只要考虑你想要的流行网络架构,而后就是数据集

    • 若是你有GPU和庞大的数据,你能够作完整的端到端的训练。
    • 若是你的小数据集或者中等数据集,你能够微调最后几层。你甚至能够在最后一层的顶部训练一个线性分类器,
    • 若是你怕麻烦——那么你要作的只是超越SIFT(尺度不变特征变换算法),HOG(方向梯度直方图 ),GIST(通用搜索树)以及全部在计算机视觉过去二十年里庆祝的算法。

 


 

5、学习SLAM须要哪些预备知识? 

  1. 首先搬出宝典:Multiple View Geometry in Computer Vision。这本书基本涵盖了Vision-based SLAM这个领域的所有理论基础!读多少遍都不算多!
  2. 另外建议配合Berkeley的课件学习。(更新:这本书书后附录也能够一并读完,包括附带bundle adjustment最基本的levenberg marquardt方法,newton方法等)
  3. 只要是SLAM问题就要涉及optimization,就要用到各类least square算法。因此另外一个基础理论是Sparse Matrix,这是大型稀疏矩阵处理的通常办法。能够参考Dr. Tim Davis的课件:Tim Davis ,他的主页里有所有的课程视频和Project。针对SLAM问题,最经常使用的least square算法是Sparse Levenberg Marquardt algorithm,这里有一份开源的代码以及具体实现的paper:Sparse Non-Linear Least Squares in C/C++
  4. 而后是框架级的工具。最经常使用的机器人框架ROS ROS.org | Powering the world's robots,可使用在Windows,Linux和MacOS等操做系统上,里面包含一整套经常使用的机器人理论的算法和工具的实现。另外一个开源工具集OpenSLAM OpenSLAM.org,其中的g2o是目前最流行的graph optimization的实现工具。另外OpenCV也是视觉相关必备的基础工具,Multiple View教材中的经常使用算法在OpenCV中都有经常使用的实现。(更新:OpenCV的文档Camera Calibration and 3D Reconstruction 中,包含SLAM相关的基础理论公式以及C/C++/Python实现的API)

另外多说一句题外话,由于 Optimization 和 feature extraction 是SLAM里最核心的两个问题,而这两个问题都是运算量极大的。好的SLAM框架要兼顾速度和精确度。目前大部分Vision或者RGBD的SLAM框架都是用C++来实现完成的以确保运算速度。虽然我我的很欣赏Python,而且Python3也支持SciPy,OpenCV,ROS等重要工具,不过依然有大量的诸如g2o等基础性库在python下没法使用,并且若是要借鉴其余人的代码,最方便的仍是在C++中实现。因此若是提问者有志于在这个领域作深刻研究,夯实的C++基础是必不可少的。Introduction to Algorithms,以及 @vczh 推荐的C++ Primer等,都是在实际工做前要本身作好的功课。


下面说一些硬件和实验上的知识储备。

首先Vision-based SLAM经常使用摄像机标定(Camera Calibration)的世界通用简单方法,是张正友博士(Dr. Zhengyou Zhang,主页Zhengyou Zhang's Home Page)的方法(张正友博士是本领域里少数的具备极其巨大影响力和贡献的华人学者,已成脑残粉嘤嘤嘤)。具体方法和实现,我在这里推荐两个,

  • 一个是Caltech工具箱:Camera Calibration Toolbox for Matlab ,以及相关paper:Camera Calibration Toolbox for Matlab
  • 该方法的另外一个实现,是Matlab最新版本内置的Camera Calibration的application,自动导入标定图片并把获得的结果输出给Matlab,更加自动化,更加便捷准确。更多的Camera Model理论知识请参考Multiple View Geometry。

至于RGB-D Camera,最经常使用的采集设备有两种:

一种是Microsoft Kinect,一个生态环境完备的RGBD Camera,能够直接用Visual Studio可Kinect SDK直接开发,也有大量开发好的程序以供借鉴参考,也能够用OpenNI和ROS采集处理,我就很少介绍了,毕竟微软是对程序员最友好的公司没有之一(微软大法好)。

另外一个是Google的Project Tango,Google对于这个自家的神器仍是很低调的,能够看看宣传片ATAP Project Tango ,绝对酷炫——惋惜咱们lab刚刚买的那一台,我尚未用过,因此对具体开发不太了解。


另外有几个网上成熟的数据集和测试方法,

  • 一个是Malaga Dataset,一个西班牙的团队采集的Malaga城市数据:The Málaga Stereo and Laser Urban Data Set,覆盖了城市中汽车驾驶的各类状况(停车,加速,减速,行人,建筑,绿化带等),里面提供了双摄像头,Laser,IMU等数据以及GPS的ground truth trajectory。不过该版本由于是在市中心,因此GPS的ground truth并不可靠。
  • 另外一个是慕尼黑工业大学Computer Vision Lab的RGB-D dataset ,里面提供了大量的室内的RGBD数据集,以及很是方便好用的benchmark tools。
  • 第三个是KITTI Dataset:The KITTI Vision Benchmark Suite,也是承认度很普遍的汽车驾驶数据集。

 


 

Next:

博士-半闲居士

视觉slam十四讲学习

 


 

7、补充些市场信息

让Android手机能像人类同样感知物理世界,Google发布“Tango”计划 (2014)

Google的ATAP项目组为Tango计划定制了一款5英寸的Android手机,经过该手机上内置的特殊硬件及软件,系统能够追踪设备的整个3D运动过程而且绘制出包含位置、方向等物理数据的地图。就像咱们在房屋里走上两次就能够感知到房间的大小、方位同样,当你拿着这款定制的Android手机时,经过这个过程它就能绘制出相应的地图。

当手机能和人那样创建起对真实环境的感知,那么它在功能扩展层面上将会大大增强。在一些和真实环境结合的比较密切的领域,好比导航和游戏,用户体验将获得质的提高。

按照Google的说法,因为目前这款手机内置的算法和API等都还处于比较早期的阶段,因此ATAP项目组也但愿能有一些专业开发人员来帮助他们完善产品。因而Google准备将现有的200款原型机发放给多个领域的开发者以期待他们能帮助Google推进这项技术的发展进而创造出非同寻常的用户体验。若是你认为本身符合Google提出的相关条件,那么能够到这里填写申请表。

事实上,在Google的Tango计划以前,微软的Kinect、苹果收购的PrimeSense都能让数字设备得到对真实世界的感知能力。

不过与它们不一样的是,Google把这项技术用在了手机上,而这就要求其背后的视觉处理器能足够节能以致于手机电池就能维持它的正常运行。根据TC的消息Movidius公司制造的Myriad 1三维视觉处理芯片确实知足了Google的这一要求,维持Myriad 1的正常运转仅需几百毫瓦特的电力。在 Myriad 1成功突破能耗障碍以后,这类技术终于能够在手机上正常运行,而它天然就成了Tango计划原型机上的核心部件

ATAP项目组本属于摩托罗拉旗下,但Google并未在此前的交易中将其出售给联想而是将其并入Android团队。Tango项目虽然属于ATAP项目组但并非Android的一部分,在将来等到技术成熟它也许会和Android进行整合,但至少在今天它们仍是分离的。(2014年)

 

这仍是手机吗!联想PHAB 2 Pro、Moto Z发布

Tango技术的AR手机让生活充满魅力

联想与谷歌共同打造出全球首款搭载Tango技术的AR大屏智能手机PHAB 2 Pro采用了6.4英寸2K的超高清屏幕;智能Assertive Display技术,能够根据环境照明与内容的不一样对画质进行优化。PHAB 2 Pro(及PHAB 2全系产品)配备了三个麦克风,以及支持清晰4K视频录制的16MP内置摄像头,采用了具备降噪效果的空间采集技术,同时搭载了通过优化的Tango版高通骁龙652八核处理器、4GB内存以及Fluence Pro功能,还有杜比音效采集5.1和杜比全景声回放功能。将于今年9月在全球范围内陆续上市,售价499美圆。

 

Demo: PHAB 2 Pro

相关文章
相关标签/搜索