ORB-SLAM2项目数据集运行(一)
作为一名经过一年机器视觉学习的学生,在创作上有明显的不足之处真的叫人头疼;尽管有时会花费一定的时间去编写代码但这种付出确实能让自己对知识的理解更加深入
cd ORB_SLAM2
chmod +x 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文件逐一单独编译结果发现这一操作竟然成功实现了目标并生成了相应的可执行文件
按照以下顺序进行操作:首先将build.sh文件拆分成各个部分分别进行编译经过测试每个部分均能顺利完成最终生成所需的可执行文件
cd ORB-SLAM2/ThirdParty/g2o/
mkdir build
cd build/
cmake ..
make
结果在lib文件夹中生成了

接着就是ThirdParty的DBoW2共享库的生成:
cd ../../DBoW2/
mkdir build
cd build/
cmake ..
make
生成了文件夹lib下面的共享库:

还有一个与词袋模型相关的文档需要生成,请注意该文档名为ORBvoc.txt,并位于Vocabulary目录中。通过查阅CMakeLists.txt文件可以获取相关信息。这个目标文档共有四个版本需要完成

数据分为三类:TUM、KITTI和EUROC;每一种对应于单目、_rgbd_和立体视觉三种技术。通过在编译指令中添加mono_tum这一选项即可实现对单目相机类型为TUM的目标文件进行生成;并补充说明如何配置参数以完成相关设置。

通过最后一次编译:
cd ORB-SLAM2
mkdir build
cd build/
cmake ..
make
编译的结果为

请注意生成的可执行性文件位于build文件夹中。
请按照README.md中的地址下载数据集。
TUM数据集:http://vision.in.tum.de/data/datasets/rgbd-dataset
其中包含多个数据集供下载。
KITTI数据集:http://www.cvlibs.net/datasets/kitti/eval_odometry.php ,这些场景是在公路上行驶汽车拍摄的大规模公开测试用例。
EUROC项目的数据集:http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets (尚未尝试过)
接下来的操作步骤:
首先,请启动mono_tum工具;
其次,请选择rgbd_dataset_freiburg1_xyz这个特定的数据集合;
最后,请确认其是否熟悉。

在终端输入上面的代码,看下运行结果



构建了一个稀疏的地图;
小白觉得很有意思;他下载了较大的KITTI数据集,并尝试安装它们;看看它的单目运行情况如何;


(2)rgbd-tum 数据集:我可以使用另一个版本(如rgbd_dataset_freiburg1_360),它在TUM数据集中提供相应的工具文件(associate.py),方便您进行后续操作
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

运行一下该数据集:


构建的稀疏地图与关键点跟踪
其他的类型都差不多,这里就不展开来了。
总结:撰写第一篇博客耗费了网上一个上午的时间,并非是我机器性能欠佳导致的延迟运行。机器性能不佳还体现在,在运行时程序初始化耗时较长。
