阅读高翔的RGBD-SLAM博文笔记
高翔的RGBD-SLAM笔记
RGBD相机的特点:
使用RGBD相机中的深度这一维信息,以及相机的针孔成像模型,相机的内参,可以将二维点恢复成三维()
前端VO:
二维的RGB图像则用于视觉里程计Visual Odometry,以连续两帧为例:
对两帧图像做特征点匹配(先分别提取特征,然后计算描述子,根据匹配算法来计算点对之间的匹配距离)
有了匹配点对,可以用ICP 或是PnP 等方法求解相机的变换矩阵T (由旋转矩阵Rotation和平移矩阵Translation组成),也就是相机的位姿估计
一个简单的两帧VO形成,存在问题:
当帧数增多时,如何取舍?
误差会随着时间累积,如何通过回环检测来减少误差累积带来的影响
得到姿态后,可以将其都转到同一坐标系下,且都转为3D点云,拼接,由此可以得到这两帧对应在某个世界坐标系下的地图 (也就是点云拼接)
- 需要注意!!!这里是RGBD SLAM,也就是深度信息是已知的,相当于估计出相机自身的位姿之后,就可以将图像里的观测数据转换成估计的路标点(或是估计的环境内容 属于mapping的内容)
后端优化
引入姿态图,G = {V, E}
最简单情况下,节点V代表相机的各个时刻的姿态,而边指的是两个节点之间的变换
- 可以理解成,节点 $v_1 = T_1 = T_{world->frame1} $, 而边 \(e_{12} = T_{12} = T_{frame1->frame2}\)
在VO中,姿态图是链状结构

但是如果是存在回环,则由于存在误差,使得所有的边给出的数据并不一致【比如 T13 * X1 不等于 T23 * X2 】

由此,可以优化一个不一致性误差:
\[
\min E = \sum_{i,j} ||x_i^*-T_{i,j} x_j^*||^2_2
\]
这里的 \(x_i^*\) 表示 \(x_i\) 的估计值,也就是随机或指定一个初始值 然后通过优化算法不断迭代更新的
关键帧的提取
把每一帧都拼到地图里面比较耗费时间与空间,因为帧间距离很近(时间间隔短)
所以只把关键帧拼到地图里。具体来说,对于新来的帧,将其和当前所有关键帧的最后一帧匹配,估计一下从关键帧到新帧的变换矩阵:
如果变换较小 则认为离前一个关键帧很近,丢弃;
如果变换太大,可能是计算错误;
如果匹配点较少则说明该帧图像质量不高;
剩下的情况是,特征匹配成功,运动估计正确,同时又离上一个关键帧有一定距离,则认为是新的关键帧
最后再将新的关键帧加入后端优化的过程:检测回环、加入姿态图优化、拼接点云地图
回环的检测
回环的本质是识别曾经到过的地方。
最简单的回环检测策略,就是把新来的关键帧与之前所有的关键帧进行比较,不过这样会导致越往后,需要比较的帧越多。所以,稍微快速一点的方法是在过去的帧里随机挑选一些,与之进行比较。更进一步的,也可以用图像处理/模式识别的方法计算图像间的相似性,对相似的图像进行检测。
阅读高翔的RGBD-SLAM博文笔记的更多相关文章
- 视觉SLAM实战(一):RGB-D SLAM V2
写在前面 首先打个广告.SLAM研究者交流QQ群:254787961.欢迎各路大神和小白前来交流. 看了前面三篇博文之后,是不是有同学要问:博主你扯了那么多有用没用的东西,能不能再给力一点,拿出一个我 ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三
最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...
- ROS_RGB-D SLAM学习笔记--室内环境测试
ROS_RGB-D SLAM学习笔记 RTAB-Map's ros-pkg. RTAB-Map is a RGB-D SLAM approach with real-time constraints. ...
- 一起做RGB-D SLAM(7) (完结篇)
第七讲 添加回环检测 2016.11 更新 把原文的SIFT替换成了ORB,这样你可以在没有nonfree模块下使用本程序了. 回环检测的阈值作出了相应的调整. 请以现在的github上源码为准. 简 ...
- 三维重建7:Visual SLAM算法笔记
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要系列文章索引
从发表第一篇文章到最后一篇文章,时间间隔有整整一个月,虽只有5篇文章,但每一篇文章都是我吸收<LEARNING HARD C#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二
今天继续分享我的阅读<LEARNING HARD C#学习笔记>知识点总结与摘要二,仍然是基础知识,但可温故而知新. 七.面向对象 三大基本特性: 封装:把客观事物封装成类,并隐藏类的内部 ...
- (1)RGB-D SLAM系列- 工具篇(硬件+关键技术)
/*************************************************************************************************** ...
- 一起做RGB-D SLAM 第二季 (一)
小萝卜:师兄!过年啦!是不是很无聊啊!普通人的生活就是赚钱花钱,实在是很没意思啊! 师兄:是啊…… 小萝卜:他们都不懂搞科研和码代码的乐趣呀! 师兄:可不是嘛…… 小萝卜:所以今年过年,我们再做一个S ...
随机推荐
- tomcat快速入门
简介 Tomcat 是什么 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理 ...
- 攻防世界web-unserialize3
漏洞编号CVE-2016-7124 详情 https://xz.aliyun.com/t/378 题目源码 class xctf{ '; public function __wakeup(){ ex ...
- jQuery的配置。
在python中有提前定义模板的功能,所以提前将jQuery的导入语句导入就可以直接使用jQuery语法: 一.下载jQuery包. 下载官网: https://jquery.com/ 可下载迷你版的 ...
- lua 14 metatable (类似操作符重载)
转自:http://www.runoob.com/lua/lua-metatables.html 感性认识: “Lua中Metatable这个概念, 国内将他翻译为元表. 元表为重定义Lua中任意一个 ...
- 洛谷 P4710 「物理」平抛运动
洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...
- luoguP3181 [HAOI2016]找相同字符
题意 考虑将\(s1\)和\(s2\)接在一起求出相同子串个数,再求出\(s1\)自己匹配的相同子串个数和\(s2\)自己匹配的相同子串个数减去即可. 如何求相同子串个数: 我们知道子串的集合即所有后 ...
- xargs 用法理解
原来一直不理解,linux shell下 xargs和 管道的区别: 1.管道在linux shell用得比较广泛,管道常常用来组合两个及以上的命令,共同完成一个功能: 比如:我们要统计某一个文件有多 ...
- jdbc工具类是多例的
一直以为他 是单例的, 以为创建个工具类就是为了单例, 节省效率 , 其实 是为了封装代码, 简洁 ! 还有重要一点 : 所欲工具类里面不要抛异常 要捕捉异常 !
- HTML连载21-序选择器上
解释CSS3 中新增的选择器中最具有代表性的就是序选择器,大致可以分为两类: (1)同级别的第几个(2)同类型的第几个 先写一个公共代码 <body> <h1>优秀</h ...
- LeetCode 841:钥匙和房间 Keys and Rooms
题目: 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 ...