参考英文维基:https://en.wikipedia.org/wiki/Slam

参考文档:视觉slam研究分析的一点认识

1、 请简单描述您对机器人的SLAM的概念理解?

答: 机器人需要在自身位置不确定的条件下,在完全未知环境中创建地图, 同时利用地图进行自主定位和导航。这就是移动机器人的同时定位与地图创建(simultaneous localization and mapping (SLAM)  ) 问题。

算法上一般分为 相机定位跟踪 和 场景地图构建 两个高度相关的部分。场景地图构建是指 构建相机所在场景的三维地图;相机定位跟踪是指 利用相机自身姿态的估计值和通过传感器得到的观测值来确定相机在环境中的位置。

参考:SLAM:使用G2O-ORB-SLAM

2、 请描述常见的SLAM算法及原理?

答:常见的SLAM方法有单目SLAM方法和双目SLAM方法.

  单目SLAM方法用帧与帧之间的运动距离和运动角度来估算深度信息,传统的视觉SLAM方法多采用特征提取
匹配和数据关联的方式来完成。

根据单目SLAM方法在是否引入概率框架方面 划分为 基于概率框架的方法和基于非概率框架的方法。基于概率框架的方法把SLAM问题描述为滤波问题,代表方法有基于kalman滤波的方法、基于粒子滤波的方法等;  非概率框架的方法 主要方法为使用关键帧和稀疏绑定调整优化(BA),使用的数值优化方法 直观描述形式为图优化。

参考:SLAM:使用G2O-ORB-SLAM

3、 SLAM的常用概率解法有哪几类?分别有什么优缺点?

答:采用概率框架的方法的思路大致为:假设从初始时刻到当前 时刻的观测数据和控制输入已知,那么就可以联合后验概率来构建一个后验概率密度函数,这个函数用来描述相机姿态 和 地图中的特征的空间位置,进而通过递归的贝叶斯滤波算法 来对构建的概率密度函数进行估计,从而完成SLAM问题的解决。

在基于KF的方法中,假设满足高斯分布并且系统的非线性较小时可以得到不错的效果,另外从后验概率的不同可以分为EKF-SLAM方法、扩展信息滤波(EIF)方法、UKF-SLAM方法、SEIF方法等,例如,Davison等提出的单目视觉SLAM系统(MonoSLAM)和Roussillon[提出的实时单目视觉SLAM系统(RTSLAM)就是建立在扩展卡尔曼滤波(EKF)的基础上的。

再基于PF的方法中,主要有Doucet[7]提出的基于Rao-Blackwellized粒子滤波器(RBPF)的方法 和在此基础上Montemerlo[8]提出的 FastSLAM方法等,其中FastSLAM方法可以用于非线性的系统

优点: 基于概率框架的方法的计算框架类似,其中基于EKF的单目视觉,一般可以分为运动模型和观测模型并在HMM 的假设下可以实现系统状态的预测和观测更新。地图也可以在线更新。

缺点:但是这种方法多采用增量式的地图创建方法,故在系统不稳定和观测的不确定性的影响下造成误差的累积,在大规模场景时会导致最终地图的不一致性,难于保持准确度和鲁棒性。

4、 SLAM中回环检测(闭环检测)的目的是什么?简述一下SLAM中可以使用的回环检测方法?

答:参考维基:Loop closure :Loop closure is the problem of recognizing a previously-visited location and updates the beliefs accordingly. This can be a problem because model or algorithm errors can assign low priors
to the location. Typical loop closure methods apply a second algorithm to measure some type of sensor similarity, and re-set the location priors when a match is detected. For example, this can be done by storing and comparingbag
of words
vectors of SIFT features from each previously visited location.

回环检测/闭环检测 是一个 场景识别的问题,若slam完成闭环检测,则可以大大得减少检测误差。因此,SLAM中的闭环检测则是为了减少SLAM中的累积误差。

参考文章:SLAM系统研究点介绍

闭环检测一般使用词袋模型作为场景匹配方法。而作为一个场景识别问题,闭环检测可以看做是一个视觉系统的模式识别问题。所以可以使用各种机器学习的方法来做,比如什么决策树/SVM,也可以试试CNN方法。不过实际当中要求实时检测,没有那么多时间训练分类器。所以SLAM更侧重在线的学习方法。

在线的视觉机器学习方法有在线SVM和在线随机森林 等工具。

5、 SLAM算法中的机器人“绑架”问题是什么?可以用哪些方法解决这样的问题?

答:机器人的“绑架”问题是指在缺少它之前的位置信息情况下,去确定机器人的当前位姿,例如当机器人被安置在一个已经构建好地图的环境中,但是并不知道它在地图中的相对位置,或者在移动过程中,由于传感器的暂时性功能故障或相机的快速移动,都导致机器人先前的位置信息的丢失,就像人质的眼睛被蒙上黑布条,拉上集装箱被运送到了未知的地方,此时,人质就无法给自己定位了。

解决方案: 暂时没有详细考虑结果!!!

方案一:使用替代传感器,比如在 视觉机器人中 使用 惯导系统。

参考知乎文章:http://www.zhihu.com/question/29453727

三维重建:SLAM算法的考题总结的更多相关文章

  1. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

  2. 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势

    SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...

  3. [SLAM]Karto SLAM算法学习(草稿)

    Karto_slam算法是一个Graph based SLAM算法.包括前端和后端.关于代码要分成两块内容来看. 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https:// ...

  4. SLAM学习笔记(2)SLAM算法

    SLAM算法分为三类:Kalman滤波.概率滤波.图优化 Kalman滤波方法包括EKF.EIF:概率滤波包括RBPF,FastSLAM是RBPF滤波器最为成功的实例, 也是应用最为广泛的SLAM方法 ...

  5. 对比几种在ROS中常用的几种SLAM算法

    在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是 ...

  6. SLAM概念学习之随机SLAM算法

    这一节,在熟悉了Featue maps相关概念之后,我们将开始学习基于EKF的特征图SLAM算法. 1. 机器人,图和增强的状态向量 随机SLAM算法一般存储机器人位姿和图中的地标在单个状态向量中,然 ...

  7. 视觉SLAM算法框架解析(1) PTAM

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本系列文章旨在总结主流视觉SLAM算法的框架,对比各个算法在子模块的差异,最终提炼出融合各个算法优点的架构. PTAM[1]是视觉SLAM领域里程 ...

  8. 2D激光SLAM算法比较+cartographer

    Hector slam: Hector slam利用高斯牛顿方法解决scan-matching问题,对传感器要求较高. 缺点:需要雷达(LRS)的更新频率较高,测量噪声小.所以在制图过程中,需要rob ...

  9. SLAM算法中提取特征总结

    我们要知道三维空间中的点在图像中的位置,就需要提取特征与特征匹配了. 1.检测特征点 2.计算描述子 3.特征匹配 1.检测特征点 我们用到的检测特征点的方法是FAST算法,最大的特点就是快! 算法原 ...

随机推荐

  1. BFOA

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> ...

  2. 微信小程序·前端-锦囊

    ========================== flex[盒子]   display: flex; flex-direction: column; [从上到下排列]↓ justify-conte ...

  3. Codeforces Round #417 (Div. 2)——ABCE

    题目链接 题面有点长需耐心读题. A.一个人行道上的人被撞有4种情况 1.所在车道有车驶出 2.右边车道有左转车 3.左边车道有右转车 4.对面车道有直行车 #include <bits/std ...

  4. Beetl学习总结(3)——高级功能

    3.1. 配置GroupTemplate Beetl建议通过配置文件配置配置GroupTemplate,主要考虑到未来可能IDE插件会支持Beetl模板,模板的属性,和函数等如果能通过配置文件获取,将 ...

  5. VScode使用简介

    1.1 VSCode简介 VSCode官网:https://code.visualstudio.com/ 支持语音: 速度较快,对超大文件读写速度飞快(打开10M代码不到1s,Subline原生会卡近 ...

  6. MySQL5.7出现无法启动服务等问题

    MySQL5.7版本后有点不同,就是没有DATA文件夹.总是莫名其妙出现一些错误.比如连不上数据库了,出现错误 can't connect mysql on localhost,键入 net star ...

  7. cogs 259. 亲戚

    259. 亲戚 ★   输入文件:relations.in   输出文件:relations.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     或许你并不知道,你 ...

  8. [Cypress] Test Variations of a Feature in Cypress with a data-driven Test

    Many applications have features that can be used with slight variations. Instead of maintaining mult ...

  9. hdu 3810 Magina 队列模拟0-1背包

    题意: 出一些独立的陆地,每片陆地上有非常多怪物.杀掉每一个怪物都须要一定的时间,并能获得一定的金钱.给出指定的金钱m, 求最少要多少时间能够得到m金钱,仅能选择一个陆地进行杀怪. 题解: 这题,假设 ...

  10. jquery ui progressbar简单使用deom

    jquery api 和下载: http://api.jqueryui.com/progressbar/#option-value <!doctype html> <html lan ...