视觉slam学习(一):历史与现状

视觉slam学习(一):历史与现状

转载:http://blog.csdn.net/qinruiyan/article/details/48498593


即时定位与地图构建(Simultaneous Localization and Mapping, 即SLAM)的目的是让机器人在未知环境中持续地构建环境地图,并同时在地图中给自己定位。它可以解决机器人的两个基本问题:

1. Where am I? 

2. What can Ido right here? 

这是移动机器人的基础,因为只有知道当前环境及自身状态,机器人才可以进行下一步的任务计划,执行等操作。

定位和建图两个问题相互依赖,准确的定位依赖于正确的地图,而构建正确的地图又需要准确的定位,这是一个迭代的过程。

  

追本溯源,先回顾一下SLAM技术发展的历史,有点琐碎,可以忽略。

 

概率SLAM(probabilistic SLAM)起源于1986年在旧金山举行的 IEEE Robotics andAutomation Conference,这是机器人领域与人工智能领域研究结合的开端。

一致性是构建地图mapping的基本问题。Cheesman [2] 和Durrant-Whyte [3] 构建了一个统计学框架去描述landmarks之间的相关性,用于解决几何上的不确定性。他们证明了landmarks的估计位置之间具有高度相关性,并且会随着连续的观测而相关性增加。

Ayache 和 Faugeras [4] 从事了视觉导航( visualnavigation ) 的早期研究。而Crowley [5] , Chatila 和 Laumond [6] 进行了基于卡尔曼滤波的声呐导航研究。这两项工作之后,里程碑式的文章被Smith等人提出 [7] 。该文章提出移动机器人在未知环境中获取landmarks的观测值,因为相同的location估计误差,这些landmarks的估计值一定是相关的。它的实现非常复杂,一致的定位和地图构建需要一个机器人pose与每一个landmark位置的联合状态(joint state),在每一次landmark观测之后更新。这需要大量的状态向量(landmark数量的平方)。

文章[7]的问题在于,忽略地图的收敛性质。假设估计的地图误差不收敛,而是无限增加的,所以研究者们只能强制令landmarks之间的相关性最小甚至没有,于是把完整的filter简化成了机器人filter上一系列解耦的landmarks。同样的,因为这些问题,当时基本上是把定位问题与地图构建问题分开处理的。

当把定位与地图构建问题结合在一起,成为单一估计问题时,理论有了新的突破。并且新理论证明了,之前研究者们所试图最小化的landmark之间的相关性,恰恰是最重要的东西,换句话说,landmark之间的相关性越强,结果表现越好。收敛性概念与即时定位建图的概念都是1995年International Symposium on Robotics中的综述文章 [8] 提出的, SLAM之前又被称为concurrent mapping andlocalization(CML).

目前的工作主要着眼于提升计算效率,信息融合及循环控制上。ISRR99上,Thrun把基于Kalman filter的SLAM与概率定位建图结合[9].

 之前的SLAM工作大多以激光测距仪作为主要的传感器。

进入2000年以后,随着计算机处理性能的大幅提升,以各种摄像头为传感器的SLAM逐渐成为研究新热点,并在近年开始有市场化的迹象。

视觉传感器主要分为三种:

1. 单目摄像头(Monocular Camera)

2. 双目摄像头(Binocular Camera)

3. 深度摄像头(RGB-D Camera)

 

深度摄像头可以通过time of flight等方法来直接获得图像及对应的深度信息,优点在于方便获得深度数据,缺点在于成本高,体积大,室外环境基本报废。

双目摄像头可以通过三角方法计算出深度信息,市面上有一些深度摄像头也是直接基于双摄像头来做的。然而双目摄像头在目标距离较远的时候会退化成单目。因此近年来大量的研究都是围绕单目进行的。

单目SLAM可以通过临近图像匹配计算出摄像头位姿的变换,在两个视角上进行三角测距又可以得出对应点的深度信息。通过这样迭代的过程可以实现定位及建图。

 

原理听起来很直观,然而现实环境中大量的测量噪声,计算误差造成了SLAM问题的无限复杂。于是解决不确定性问题是SLAM的核心。

不确定性问题是很多研究领域的核心,但其实并没有很多的解决办法。大多数不确定性问题都用贝叶斯网络进行建模的,所以早期的SLAM问题主要都是在贝叶斯框架下进行讨论的,在该框架下主要有两种计算方案:

1. EKF-SLAM (extended kalman filters ). 利用拓展卡尔曼滤波器对机器人位置进行估计。

2. FastSLAM (Rao-Blackwellized particle filters). 利用粒子滤波器进行位置的估计。

但由于基于Filter的SLAM采用了markov假设,仅考虑最近两组数据的递推关系,会导致误差累加不可恢复,因此近年来基于filter的SLAM已经基本被考虑了全局数据的Graph-based所取代:

 

3. Graph-BasedSLAM。把SLAM问题建模成优化问题,大多采用最小二乘法进行求解。

早期的Graph based SLAM认为如果所有的landmark和所有的state都有连接,那么状态矩阵的规模将非常巨大,无法求解。但后来研究发现其实每一个state只与少量的landmark有链接,整个状态矩阵其实是稀疏(sparse)的,求解可以非常快。基于Gprah的模型不像Filter仅考虑最近的两个状态,进行局部优化,而是对之前的所有状态一起做优化,相当于一个全局优化。于是越来越多的SLAM系统转而使用Graph进行建模求解。通用的Graph SLAM求解器有GTSAM, g2o等。

关于这两种模型的深入分析网上已经有大神们写出来了,之后有时间我再加上自己的理解吧。

 

基于视觉传感器的地图通常分三类:

1. feature map

2. semi-densemap

3. dense map

 

Monocular SLAM的起源是Andrew Davision基于EKF模型的MonoSALM,随后他在oxford的师父David Murray发表了Keyframe based的PTAM,是现在大多数SLAM系统的基石。

最近两年比较流行的单目SLAM有两个,一个是TU Munich的LSD-SLAM,该工作不基于图像特征点匹配,做运动估计,而是直接提取对比图像中梯度变化明显的区域,建立semi-dense的地图。

第二个是University of Zaragoza的ORB-SLAM,该工作本质上与PTAM区别不大,但是作者通过很强的代码实现能力把该系统做成了目前功能最完善最稳定的SLAM系统。ORB-SLAM采用高速的ORB图像特征点,加入了SLAM系统中很重要的re-localizing和loop closure模块,并使用g2o进行全局误差最小化。该系统在多个公开dataset上取得了非常好的效果,经测试,在自然环境下也有一定的实用性。最近作者又放出了ORB-SLAM2,精简了环境配置的繁琐过程,安装更方便,工作更稳定,且可以不依赖ROS工作。

 

关于这几种SLAM的详细分析,之后再分别写出。

 

目前SLAM的主要问题在于:

1. 视觉特征点的稳定性与计算复杂度之间的矛盾。理论上ORB特征的质量肯定比不上SIFT/SURF,但尺度不变特征的高计算复杂度很难满足视觉SLAM的实时性需要,需要GPU进行加速计算。

2. 目前的SLAM系统建立的地图都是无意义的散点,位置不准确且并没有被很好地利用。近年来deep learning在object detection, recognition, semantic segmentation等方面大显神威,让语义地图的实现成为了可能。语义地图可以实现更稳定的data association,有希望在地图中区分出静态与动态物体,并可以在语义层面进行更高层次的场景识别。总体来说语义地图的建立是突破当前SLAM系统性能瓶颈的关键要素。

 

[1] Durrant-Whyte,Hugh, and Tim Bailey. "Simultaneous localization and mapping: partI." Robotics & Automation Magazine, IEEE 13.2 (2006):99-110.

[2] Smith,Randall C., and Peter Cheeseman. "On the representation and estimation ofspatial uncertainty." The international journal of RoboticsResearch 5.4 (1986): 56-68.

[3] Durrant-Whyte,Hugh F. "Uncertain geometry in robotics." Robotics andAutomation, IEEE Journal of 4.1 (1988): 23-31.

[4] Ayache,Nicholas, and Olivier D. Faugeras. "Building, registrating, and fusingnoisy visual maps." The International Journal of RoboticsResearch 7.6 (1988): 45-65.

[5] Crowley,James L. "World modeling and position estimation for a mobile robot usingultrasonic ranging." Robotics and Automation, 1989. Proceedings., 1989IEEE International Conference on. IEEE, 1989.

[6] Chatila,Raja, and Jean-Paul Laumond. "Position referencing and consistent worldmodeling for mobile robots." Robotics and Automation. Proceedings.1985 IEEE International Conference on. Vol. 2. IEEE, 1985.

[7] Smith,Randall, Matthew Self, and Peter Cheeseman. "Estimating uncertain spatialrelationships in robotics." Autonomous robot vehicles. Springer NewYork, 1990. 167-193.

[8] H.Durrant-Whyte, D. Rye, and E. Nebot, “Localisation of automaticguided vehicles,”in Robotics Research: The 7th International Symposium(ISRR’95), G. Giraltand G. Hirzinger, Eds. New York: Springer Verlag,pp. 613–625, 1996.

[9] Thrun,Sebastian, Wolfram Burgard, and Dieter Fox. "A probabilistic approach toconcurrent mapping and localization for mobile robots." AutonomousRobots5.3-4 (1998): 253-271.

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Start programming robots NOW! Learn hands-on, through easy examples, visuals, and code This is a unique introduction to programming robots to execute tasks autonomously. Drawing on years of experience in artificial intelligence and robot programming, Cameron and Tracey Hughes introduce the reader to basic concepts of programming robots to execute tasks without the use of remote controls. Robot Programming: A Guide to Controlling Autonomous Robots takes the reader on an adventure through the eyes of Midamba, a lad who has been stranded on a desert island and must find a way to program robots to help him escape. In this guide, you are presented with practical approaches and techniques to program robot sensors, motors, and translate your ideas into tasks a robot can execute autonomously. These techniques can be used on today’s leading robot microcontrollers (ARM9 and ARM7) and robot platforms (including the wildly popular low-cost Arduino platforms, LEGO® Mindstorms EV3, NXT, and Wowee RS Media Robot) for your hardware/Maker/DIY projects. Along the way the reader will learn how to: Program robot sensors and motors Program a robot arm to perform a task Describe the robot’s tasks and environments in a way that a robot can process using robot S.T.O.R.I.E.S. Develop a R.S.V.P. (Robot Scenario Visual Planning) used for designing the robot’s tasks in an environment Program a robot to deal with the “unexpected” using robot S.P.A.C.E.S. Program robots safely using S.A.R.A.A. (Safe Autonomous Robot Application Architecture) Approach Program robots using Arduino C/C++ and Java languages Use robot programming techniques with LEGO® Mindstorms EV3, Arduino, and other ARM7 and ARM9-based robots. Table of Contents Chapter 1 What Is a Robot Anyway? Chapter 2 Robot Vocabularies Chapter 3 RSVP: Robot Scenario Visual Planning Chapter 4 Checking the Actual Capabilities of Your Robot Chapter 5 A Close Look at Sensors Chapter 6 Programming the Robot’s Sensors Chapter 7 Programming Motors and Servos Chapter 8 Getting Started with Autonomy: Building Your Robot’s Softbot Counterpart Chapter 9 Robot SPACES Chapter 10 An Autonomous Robot Needs STORIES Chapter 11 Putting It All Together: How Midamba Programmed His First Autonomous Robot Chapter 12 Open Source SARAA Robots for All!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值