[关闭]
@snuffles 2016-08-26T23:23:15.000000Z 字数 1213 阅读 955

为什么oxford组里的帅哥辣么多

#不知所云的搬砖#


单目slam基础

(学习笔记)投影与三维视觉——本征矩阵和基础矩阵
多视几何(中文英文)
bobo ppt
mooc 西班牙


0817
1. seqslam-day & night seasons
michael milford
2. FAB 2.0
oxford MRG
3. shell,wget

todo
1. 跑FABMAP
2. ORB中文
3. 投影看完
4. 光流传感器
5. suvey177
6.


orb slam问题及解决方法

ORB-SLAM(1) --- 让程序飞起来

  前面介绍的仅仅是如何把程序运行起来,然而在运行时使用不同的数据集可能会有一些问题,以下将本人在执行ORB SLAM遇到的问题整理下:

5.1 为什么跑数据集时老是出现跟踪失败?

 本人在使用Example.bag时并未出现什么问题,然而在运行自己的数据集时,常常会出现Tracking失败的现象,而且通常是开始时都没问题,运行一段时间后出现的。将数据集中的图片打开感觉前后帧变化不大啊,后来测了一下程序每步执行的时间,稍微看了一下他的代码实现,大致的推论是这样的:
 1). 在用rosbag发布图像时,很多时候都用的30帧每秒的发送速率,然而电脑性能未特别好的情况下,是不能及时处理的,因此读取图像端可能会出现丢帧现象,导致图像不连续,造成跟踪失败;
 2).ORB_SLAM在程序执行时,多个线程共享同一份地图关键帧,造成每个线程可能运行的时间不固定,这个也是导致不能及时处理图片的一个原因吧。
 解决方法:一般跑代码的人是先想看看代码的功能性,效率可以作为接下来考量的东西,因此最简单的办法是将rosbag发布的帧率调低或调到很低,具体方法是在使用BagFromImages工具打包时将帧率参数设置为比较小的数值,而不是通常地30帧。

5.2 为什么跑文献中那个kitti最大场景(sequence 00)的结果与文献中给出的不一致?

  可能对于比较小的数据集出现个跟踪失败现象使用将图像发布速度降低的方法能解决一部分问题,然而想跑一个大场景的数据集时,比如说文献中那个比较庞大的数据集时(如下图),发现前面跑的还好,后面咋就还是由于跟踪失败,导致在回到之前到过场景之前地图一直处于丢失状态。


  开始时本人也是相当困惑的,后来一想ORB_SLAM使用的多线程,资源共享机制还有增量式地图会导致两个因素:一是算法时间不稳定,二是对内存的消耗会越来越大,一旦真实的物理内存用尽了,大家都知道Linux会使用交换分区作为内存的扩展空间,这样的话程序的执行效率会降低不少的,后来通过系统监视器发现4G的内存根本就不够他用,最后通过加了个4G内存然后将图片发布速度控制到很低的帧率,慢吞吞的跑完,终于达到作者所描述的效果(看来科研是有一台性能好的电脑还是有优势的)。

5.3 设置自己相机相关参数

 当使用自己的数据集时,相机的内参数和畸变参数会有不同,因此可在Data下的Settings.yaml中修改:
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注