ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确。因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色。这一小节探讨一下ORB-SLAM里用到的优化。 ORB-SLAM选用g2o作为图优化的方法,关于g2o可以参考http ...
ORB SLAM中优化使用g o库,先复习一下g o的用法,上类图 其中SparseOptimizer就是我们需要维护的优化求解器,他是一个优化图,也是一个超图 包含若干顶点和一元二元多元边 ,怎样定义图的顶点 优化变量 estimate 和边 误差项 error 是用户需要考虑的问题,可以从g o types查找是否已经有定义好的顶点或边,若没有,需要自己去实现。 自己实现的时候注意,基本都是去 ...
2017-03-01 12:46 0 5822 推荐指数:
ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确。因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色。这一小节探讨一下ORB-SLAM里用到的优化。 ORB-SLAM选用g2o作为图优化的方法,关于g2o可以参考http ...
ORB-SLAM程序提供了运行Monocular、Stereo和RGBD数据的程序。编译成功后,可以通过运行TUM的标准数据来验证程序是否成功。如果想自己测试一些数据,可以通过OpenCV提供的接口调起电脑的摄像头。 个人认为,ORB-SLAM是一个完整的单目SLAM实现,集合了当前流行 ...
ORB主要借鉴了PTAM的思想,借鉴的工作主要有Rubble的ORB特征点;DBow2的place recognition用于闭环检测;Strasdat的闭环矫正和covisibility graph思想;以及Kuemmerle和Grisetti的g2o用于优化。 首先需要了解ORB-SLAM ...
ORB-SLAM是一种基于ORB特征的三维定位与地图构建算法(SLAM)[1]。该算法由Raul Mur-Artal,J. M. M. Montiel和Juan D. Tardos于2015年发表在IEEE Transactions on Robotics。ORB-SLAM基于PTAM架构,增加了 ...
LocalMapping作用是将Tracking中送来的关键帧放在mlNewKeyFrame列表中;处理新关键帧,地图点检查剔除,生成新地图点,Local BA,关键帧剔除。主要工作在于维护局部地图,也就是SLAM中的Mapping。 1. 处理新关键帧:ProcessNewKeyFrame ...
最近在读ORB-SLAM的代码,虽然代码注释算比较多了,但各种类和变量互相引用,看起来有点痛苦。索性总结了一下Tracking部分的代码结构,希望能抓住主要思路,不掉坑里。 作者的程序分为两种模式:SLAM模式和Localization模式。SLAM模式中,三个线程全部都在工作,即在定位也在建图 ...
上一篇提到,无论在单目、双目还是RGBD中,追踪得到的位姿都是有误差的。随着路径的不断延伸,前面帧的误差会一直传递到后面去,导致最后一帧的位姿在世界坐标系里的误差有可能非常大。除了利用优化方法在局部和全局调整位姿,也可以利用回环检测(loop closure)来优化位姿。 这件事情就好比一个人 ...
KeyFrame类利用Frame类来构造。对于什么样的Frame可以认为是关键帧以及何时需要加入关键帧,是实现在tracking模块中的。 由于KeyFrame中一部分数据会被多个线程访问修改,因此 ...