SLAM: 关于Orb_SLAM的使用小综述
0.ORB_SLAM的官方网站:http://webdiis.unizar.es/~raulmur/orbslam/
1. 参考知乎上对 orb-slam 的评价:orb-slam在众多SLAM方法中处于怎样的地位
2. 评价说是 PTAM 的改进版:PTAM主页
3. Orb_SLAM的 GitHub 页面:此页面有详细的使用方法
4. 使用Orb_SLAM的一些实用参考工程:视觉SLAM实战(一):RGB-D SLAM V2、Orb_SLAM
"RGBDSLAMv2 is based on the ROS project, OpenCV, PCL, OctoMap, SiftGPU and more – thanks!" 你还在等什么?装装装!好在这些东西在Ubuntu下安装,就是几句话搞定的事。
ROS hydro安装指南: http://wiki.ros.org/cn/hydro/Installation/Ubuntu (加ppa源后直接安装)
Linux OpenCV安装指南:http://blog.sciencenet.cn/blog-571755-694742.html (从源代码编译)
PCL:http://www.pointclouds.org/downloads/linux.html (加ppa后安装)
5. Orb_SLAM的使用方法中文介绍:ORB-SLAM(1) --- 让程序飞起来
本文给出了一些注意事项和排错方法,值得没有时间读详细文档的使用者参考一下。
6. SLAM:ORB_SLAM源代码中的设计模式分析
此文分析了ORB_SLAM的设计模式的由来。原文链接:SLAM代码(设计模式)
若要读取代码之前先观其思路,看看这个系列的不错:http://blog.csdn.net/wendox/article/month/2016/12
一部分摘抄
引入一个Frame结构,为了实现上述的跟踪器,第一步是读取图像,通过图像的数据估计当前帧对应的位姿状态。场景中相同的点在不同的视角中构成一个基础矩阵的关系,一个图像帧的图像平面和另一帧的图像的平面之间构成单应矩阵的关系。使用最小二乘法通过图像点可以计算得到单应矩阵和基础矩阵,,使用矩阵奇异值分解(SVD)可将单应矩阵或者基础矩阵分解恢复出位姿变化。这些内容的实现可以放到Frame结构,也可以像ORB那样专门放到一个Initializer里边。Frame需要和Map完成互动。除了需要计算当前帧的位姿,还要完成特征点的三维重建。有的方法使用了一个深度滤波器,如SVO,LSD中考虑了极线与深度的夹角,这样会得到一个半稠密的地图。因为稠密的地图点想要试试完成一般是需要使用GPU来完成的。图像的上的特征点和空间中的三维点如何对应呢?常用的方法是PnP。PnP是已知三维点计算相机位姿,三维重建是已知相机位姿计算三维点。
PnP的计算中需要知道相机的内参数,这里引入第二个结构相机模型Camera,他保存并管理相机的参数,进行一些图像空间到世界空间的转换,完成图像点(关键特征点)的去畸变。
如何解决累计误差问题,常用的方法是使用路标点和当前图像点进行匹配估计相机的运动,这时候需要存储这些路标点的描述子。另外一方面在LSD-SLAM, SVO等方法中,是怎样存储路标点的呢?这里引入一个结构叫做Mappoint。
如何评价一个路标点的好坏程度?如何如何保存病管理这些路标点呢?路标点的添加删除等管理工作可以放入另外一个结构Map中进行。地图中以何种形式保存这些路标呢,一种方法是路标放在图像帧里作为关键帧KeyFrame进行保存和提取。关键帧串起来成为一个地图。这样做的好处就是我们使用了关键帧继承了帧的性质,便于以后特征点匹配。在前边累计相机运动的时候参考帧是前一帧图像,这里的参考帧是关键帧的图像。关键帧是相机运动过程中保留了重要信息的最小集合中的元素。理论上关键帧是没有重叠的。后端优化的对象主要是关键帧。
不足之处:
ORB-SLAM工程在设计数据关联时关系链接极为复杂,应该有一种能降低工程模块耦合的方法。
SLAM: 关于Orb_SLAM的使用小综述的更多相关文章
- 自主移动机器人同时定位与地图创建(SLAM)方法概述
1.引言: 机器人的研究越来越多的得到关注和投入,随着计算机技术和人工智能的发展,智能自主移动机器人成为机器人领域的一个重要研究方向和研究热点.移动机器人的定位和地图创建是自主移动机器人领域的热点研究 ...
- SLAM技术在国内的发展现状
近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人.无人机.AVG等领域相继出现它的身影,今天就来跟大家聊一聊国内SLAM的发展现状. SLAM的多领域应用 SLAM应用领域广泛,按其 ...
- SLAM方向公众号、知乎、博客上有哪些大V可以关注?
一.公众号 泡泡机器人:泡泡机器人由一帮热爱探索并立志推广机器人同时定位与地图构建(SLAM)技术的极客创办而成,通过原创文章.公开课等方式分享SLAM领域的数学理论.编程实践和学术前沿. 经典文 ...
- 【论文解读】【半监督学习】【Google教你水论文】A Simple Semi-Supervised Learning Framework for Object Detection
题记:最近在做LLL(Life Long Learning),接触到了SSL(Semi-Supervised Learning)正好读到了谷歌今年的论文,也是比较有点开创性的,浅显易懂,对比实验丰富, ...
- 综述 | SLAM回环检测方法
本文作者任旭倩,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接:综述 | SLAM回环检测方法 在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿 ...
- 视觉slam领域经典综述和具体应用场景
一.经典综述文章 1. Durrant-Whyte H, Bailey T. Simultaneous localization and mapping: part I[J]. IEEE robot ...
- 三维重建面试0:*SLAM滤波方法的串联综述
知乎上的提问,高翔作了回答:能否简单并且易懂地介绍一下多个基于滤波方法的SLAM算法原理? 写的比较通顺,抄之.如有异议,请拜访原文.如有侵权,请联系删除. 我怎么会写得那么长--如果您有兴趣可以和我 ...
- SLAM: Orb_SLAM中的ORB特征
原文链接:什么是ORB 关于Orb特征的获取:参考 最新版的OpenCV中新增加的ORB特征的使用 ORB是是ORiented Brief 的简称,对Brief的特定性质进行了改进. ORB的描述在下 ...
- SLAM入门必收藏的资料
搜集了各大网络,请教了SLAM大神,终于把SLAM的入门资料搜集全了!在分享资料前,我们先来看看,SLAM技术入门前需要具备哪些知识?首先学习SLAM需要会C和C++,网上很多代码还用了11标准的C+ ...
随机推荐
- Java Web项目实战第1篇之环境搭建
写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...
- bupt summer training for 16 #2 ——计算几何
https://vjudge.net/contest/171368#overview A.一个签到题,用叉积来判断一个点在一条线的哪个方向 可以二分,数据范围允许暴力 #include <cst ...
- elasticsearch 权威指南Mapping(映射)
什么是映射 类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型.布尔型等 定义倒排索引的相关配置,比如是否索引.记录pos ...
- float在内存中的存放
一个float型实数在内存中占4个字节,即32个二进制bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位). ...
- 温故之--Linux 初始化 init 系统
参选URL: http://www.ibm.com/developerworks/cn/linux/1407_liuming_init1/index.html 本系列一共三篇,看完记住,那水平就不一样 ...
- hdu_1285_确定比赛名次_201312081335
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- [bzoj3669][Noi2014]魔法森林_LCT_并查集
魔法森林 bzoj-3669 Noi-2014 题目大意:说不明白题意系列++……题目链接 注释:略. 想法:如果只有1个参量的话spfa.dij什么的都上来了. 两个参量的话我们考虑,想将所有的边按 ...
- linux给文件或文件夹加入apache权限
系统环境:ubuntu11.10/apache2/php5.3.6 在LAMP环境中,測试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现例如以下php警 ...
- joinColumns和inverseJoinColumns的使用方法
近期在工作中使用springside.里面用到了hibernate的多对多 一開始我在配置department(部门表)和menu(栏目表)的时候.这样写的. Department实体类中的getMe ...
- js获得子页面元素
在主页面中.添加iframe子页面,假设须要获得子页面的元素则能够使用javascript的contentWindow来获得,注意iframe和frameset必须加入id.详细样例例如以下: mai ...