ORB-SLAM2项目数据集运行(一)

作为一名学习一年的机器视觉的学生,一直以来都没有写过像样点的自己的东西,真的是不像话,虽然有时候觉得会占用一些时间,但是能很大程度上帮助自己理解。
从github上可以下载到源码:[https://github.com/raulmur/ORB_SLAM],这ORB-SLAM;而ORB—SLAM2的源码地址:[https://github.com/raulmur/ORB_SLAM2],对于ORB-SLAM后面的ORB-SLAM2添加了RGBD和Stereo结构。
下载之后里面有个README.md文件,有Ubuntu默认的文本编辑器打开,开头是一些依赖库的安装,按照上面的教程去安装就好,因为我先看的高博的十四讲,所以这些库都已经安装了,就不在赘叙了,我们来说一下直接编译运行。按教程上的方法是:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

因为作者把一些分步进行编译的命令都放到build.sh中,我们可以看一下build.sh

echo "Configuring and building Thirdparty/DBoW2 ..."

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../g2o

echo "Configuring and building Thirdparty/g2o ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../../

echo "Uncompress vocabulary ..."

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..

echo "Configuring and building ORB_SLAM2 ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

从上面的语句可以知道,都是通过创建文件夹来编译生成CMakeLists.txt中需要的第三方共享库.so文件

Building CXX object CMakeFiles/ORB_SLAM2.dir/src/KeyFrameDatabase.cc.o
Building CXX object CMakeFiles/ORB_SLAM2.dir/src/PnPsolver.cc.o
virtual memory exhausted: Cannot allocate memory
virtual memory exhausted: Cannot allocate memory
virtual memory exhausted: Cannot allocate memory
virtual memory exhausted: Cannot allocate memory
virtual memory exhausted: Cannot allocate memory
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/FrameDrawer.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/Converter.cc.o] Error 1
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/KeyFrame.cc.o] Error 1
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/Viewer.cc.o] Error 1
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/Frame.cc.o] Error 1
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,

出现上面的错误,我也在网上找了一些解决方案,但是都不行,然后到这里就结束了吗?显然不能放弃啊,也不知道是不是脑袋抽了,想到编译说内存用尽,于是就把build.sh文件拆开来,一步步单独编译,你还别说编译还通过了,也生成了相应的可执行性文件。
下面是我单独编译的顺序:

cd ORB-SLAM2/ThirdParty/g2o/
mkdir build
cd build/
cmake ..
make

结果在lib文件夹中生成了
ORB-SLAM2项目数据集运行(一)_第1张图片
接着就是ThirdParty的DBoW2共享库的生成:

cd ../../DBoW2/
mkdir build
cd build/
cmake ..
make

生成了文件夹lib下面的共享库:
这里写图片描述
还有一个关于词袋模型的文件要生成,即ORBvoc.txt,这个文件在Vocabulary下面。
生成的目标文件有4个:可以看CMakeLists.txt文件可以知道
ORB-SLAM2项目数据集运行(一)_第2张图片
数据有三种类型TUM,KITTI,EUROC,每个都对应的单目,rgbd,stereo三种。
如果你想编译生成:mono_tum(单目-相机类型为TUM)目标文件,可以在上面的程序中加上一句:
ORB-SLAM2项目数据集运行(一)_第3张图片
通过最后一次编译:

cd ORB-SLAM2
mkdir build
cd build/
cmake ..
make

编译的结果为
ORB-SLAM2项目数据集运行(一)_第4张图片
声明一下,因为是分步编译的所以上面生成的可执行性文件在我创建的build文件夹内,而按照源程序README.md编译,可执行性文件在Example下的二级目录内。
数据集按照README.md中给出的地址下载。
TUM数据集:http://vision.in.tum.de/data/datasets/rgbd-dataset
里面有很多数据集,随便下载一个,说明一下,这里的数据都是RGB-D的,所以运行单目时用不到深度信息。(后面几个其他类型的数据集也是一样的)
KITTI数据集:http://www.cvlibs.net/datasets/kitti/eval_odometry.php ,里面的数据集都特别大,因为这些都是在户外公路上用汽车收集的数据。
EUROC数据集:http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets (我没有试过)
运行一下:
(1)mono_tum
数据集:rgbd_dataset_freiburg1_xyz(这个数据集是不是很熟悉,没错它在高博的书中有用到哦!)
ORB-SLAM2项目数据集运行(一)_第5张图片
在终端输入上面的代码,看下运行结果
ORB-SLAM2项目数据集运行(一)_第6张图片
ORB-SLAM2项目数据集运行(一)_第7张图片
ORB-SLAM2项目数据集运行(一)_第8张图片
构建的稀疏地图
小白我觉得很有意思,就把大的KITTI数据集也下下来玩了一下,看下它的单目运行情况:
ORB-SLAM2项目数据集运行(一)_第9张图片
ORB-SLAM2项目数据集运行(一)_第10张图片
(2)rgbd-tum
数据集:上面那个也行,不过我换了一个,rgbd_dataset_freiburg1_360
要在上面TUM数据集里下载tool文件associate.py

  python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt


运行一下该数据集:
ORB-SLAM2项目数据集运行(一)_第11张图片
ORB-SLAM2项目数据集运行(一)_第12张图片
构建的稀疏地图与关键点跟踪

其他的类型都差不多,这里就不展开来了。

总结:写第一篇博客花了一个网上和一个上午的时间,主要是我机子太差了,虚拟机老是卡,总是等。机子差还有一个表现,就是在上面运行时,程序初始化好久才开始追踪。

你可能感兴趣的:(视觉SLAM)