ORBSLAM2安装与运行.docx
《ORBSLAM2安装与运行.docx》由会员分享,可在线阅读,更多相关《ORBSLAM2安装与运行.docx(6页珍藏版)》请在冰豆网上搜索。
ORBSLAM2安装与运行
ORB_SLAM2安装与运行
1.安装C++11编译器
ORB_SLAM2使用了C++11的线程和时间控制函数。
[javascript]viewplaincopyprint?
$sudoapt-getinstallgccg++
2.安装Pangolin
ORB_SLAM2使用Pangolin构建可视化用户界面.参见
[javascript]viewplaincopyprint?
$sudoapt-getinstalllibglew-dev#安装Glew$sudoapt-getinstallcmake#安装CMake#安装Boost$sudoapt-getinstalllibboost-devlibboost-thread-devlibboost-filesystem-dev$sudoapt-getinstalllibpython2.7-dev#安装Python2/Python3#下载、编译、安装Pangolin:
$gitclone$cdPangolin$mkdirbuild$cdbuild$cmake-DCPP11_NO_BOOST=1..$make$sudomakeinstall
3.安装OpenCV2.4.13
ORB_SLAM2使用OpenCV处理图像以及特征.参见:
http:
//opencv.org/downloads.htm.至少需要2.4.3的版本.本测试用OpenCV2.4.13.(注:
OpenCV2.4.11与cuda8.0不兼容,若需要GPU加速(使用cuda8.0,cuda8.0以前的版本不支持GTX1080),则需要安装OpenCV2.4.13)
[javascript]viewplaincopyprint?
$sudoapt-getinstallbuild-essentiallibgtk2.0-devlibjpeg-devlibtiff4-devlibjasper-devlibopenexr-devcmakepython-devpython-numpypython-tklibtbb-devlibeigen2-devyasmlibfaac-devlibopencore-amrnb-devlibopencore-amrwb-devlibtheora-devlibvorbis-devlibxvidcore-devlibx264-devlibqt4-devlibqt4-opengl-devsphinx-commontexlive-latex-extralibv4l-devlibdc1394-22-devlibavcodec-devlibavformat-devlibswscale-dev$unzipopencv-2.4.13.zip$cdopencv-2.4.13;mkdirbuild;cdbuild;$cmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local-DWITH_TBB=ON-DBUILD_NEW_PYTHON_SUPPORT=ON-DWITH_V4L=ON-DINSTALL_C_EXAMPLES=ON-DINSTALL_PYTHON_EXAMPLES=ON-DBUILD_EXAMPLES=ON-DWITH_QT=ON-DWITH_OPENGL=ON-DCUDA_GENERATION=Kepler..$make$sudomakeinstall
[javascript]viewplaincopyprint?
#在其中写入:
/usr/local/libsudogedit/etc/ld.so.conf.d/opencv.conf#在文件末尾写入:
#PKG_CONFIG_PATH=$PKG_CONFIG_PATH:
/usr/local/lib/pkgconfig#exportPKG_CONFIG_PATHsudoldconfigsudogedit/etc/bash.bashrc#source此脚本source/etc/bash.bashrc
4.安装Eigen3.1.0
g2o需要Eigen,下载和安装Eigen3的方法可以看这儿:
http:
//eigen.tuxfamily.org.需要3.1.0及以上。
(Opencv2.4.13编译时依赖此模块,最好在OpenCV2.4.13编译前安装)
提供以下功能模块:
1)密集矩阵和数组操作
2)解密集线性方程组和矩阵分解
-求解线性最小二乘系统
-密集矩阵分解(Cholesky,LU,QR,SVD,特征值分解)
3)解稀疏线性方程组和矩阵分解
-稀疏矩阵操作
-求解稀疏线性最小二乘系统
-稀疏矩阵分解(SpareCore,OrderingMethods,SpareCholesky,SpareLU,SparseQR,迭代线性求解)
4)空间变换
-2D旋转(角度)
-3D旋转(角度+轴)
-3D旋转(四元组:
quaternion)
-N维缩放
-N维平移
-N维仿射变换
-N维线性变换(旋转、平移、缩放)
[javascript]viewplaincopyprint?
$sudoapt-getinstalllibeigen3-dev
5.BLASandLAPACK
g2o需要BLAS和LAPACK
(1)BLAS:
BasicLinearAlgebraSubprograms
提供了基本的向量和矩阵操作:
-Level-1BLAS:
支持标量、向量、向量-向量操作
-Level-2BLAS:
支持矩阵-向量操作
-Level-3BLAS:
支持矩阵-矩阵操作
(2)LAPACK:
LinearAlgebraPACKage
它调用BLAS来实现更高级的功能,支持以下操作:
-解线性方程组
-线性方程组的最小二乘解
-特征值问题和奇异值问题
-矩阵分解(LU,Cholesky,QR,SVD,Schur,generalizedSchur)
-支持密集和带状矩阵,但不支持一般的稀疏矩阵
-支持单精度和双精度
[javascript]viewplaincopyprint?
$sudoapt-getinstalllibblas-dev$sudoapt-getinstallliblapack-dev
6.DBoW2andg2o(IncludedinThirdpartyfolder)
ORB_SLAM2使用修改版的DBoW2库进行位置识别,使用g2o库进行非线性优化.这两个修改版的库被放在第三方文件夹内.
7.编译ORB_SLAM2库和例子程序(单目、双目和RGB-D)
[javascript]viewplaincopyprint?
$gitcloneORB_SLAM2$cdORB_SLAM2$chmod+xbuild.sh$./build.sh生成的libORB_SLAM2.so位于lib目录下,可执行程序mono_tum,mono_kitti,rgbd_tum,stereo_kitti,mono_eurocandstereo_euroc位于Examples目录下。
8.运行例子程序
8.1Monocular实例
1)TUM数据集
从http:
//vision.in.tum.de/data/datasets/rgbd-dataset/download下载并解压一个序列,如:
rgbd_dataset_freiburg1_desk2.tgz
执行下面的命令(把TUMX.yaml修改为TUM1.yaml<freiburg1序列>,TUM2.yaml<freiburg2序列>orTUM3.yaml
<freiburg3序列>)
[javascript]viewplaincopyprint?
$./Examples/Monocular/mono_tumVocabulary/ORBvoc.txt./Examples/Monocular/TUMX.yamlPATH_TO_SEQUENCE_FOLDER#forexample$./Examples/Monocular/mono_tumVocabulary/ORBvoc.txt./Examples/Monocular/TUM1.yaml../tum_data/rgbd_dataset_freiburg1_desk2/
2)KITTI数据集
从把KITTIX.yaml修改为
KITTI00-02.yaml,KITTI03.yamlorKITTI04-12.yaml,这些*xx.yaml各自对应于序列0to2,3,and4to12.ChangePATH_TO_DATASET_FOLDERtotheuncompresseddatasetfolder.ChangeSEQUENCE_NUMBERto00,01,02,..,11.如有不明白的地方,看一下代码:
[javascript]viewplaincopyprint?
./Examples/Monocular/mono_kittiVocabulary/ORBvoc.txtExamples/Monocular/KITTIX.yamlPATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
8.2Stereo实例
1)KITTI数据集
从
修改为KITTI00-02.yaml,KITTI03.yamlorKITTI04-12.yaml,这些*xx.yaml各自对应于序列0to2,3,and4to12.ChangePATH_TO_DATASET_FOLDERtotheuncompresseddatasetfolder.ChangeSEQUENCE_NUMBERto00,01,02,..,11.如有不明白的地方,看一下代码:
[javascript]viewplaincopyprint?
./Examples/Stereo/stereo_kittiVocabulary/ORBvoc.txtExamples/Stereo/KITTIX.yamlPATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
8.3RGB-D实例
1)TUM数据集
从http:
//vision.in.tum.de/data/datasets/rgbd-dataset/download下载并解压一个序列,如:
rgbd_dataset_freiburg1_desk2.tgz
运行RGB-D实例时需要RGBD(depth)图像和RGB图像,所以需要把每一张RGB图像与之对应的RGBD图像建立关联(在Examples/RGB-D/associations/目录下有一部分关联文件,可以直接使用),关联python文件associate.py(根据timestamp进行关联)。
[javascript]viewplaincopyprint?
$pythonassociate.pyPATH_TO_SEQUENCE/rgb.txtPATH_TO_SEQUENCE/depth.txt>associations.txt
执行下面的命令(把TUMX.yaml修改为TUM1.yaml<freiburg1序列>,TUM2.yaml<freiburg2序列>orTUM3.yaml<freiburg3序列>),把ASSOCIATIONS_FILE修改为对应的关联文件。
[javascript]viewplaincopyprint?
$./Examples/RGB-D/rgbd_tumVocabulary/ORBvoc.txtExamples/RGB-D/TUMX.yamlPATH_TO_SEQUENCE_FOLDERASSOCIATIONS_FILE#forexample$./Examples/RGB-D/rgbd_tumVocabulary/ORBvoc.txt./Examples/RGB-D/TUM1.yaml../tum-data/rgbd_dataset_freiburg1_desk2/./Examples/RGB-D/associations/fr1_desk2.txt
8.4ROS实例
8.4.1安装ROS9.SLAM和Localization模式
你可在GUI中切换至SLAM模式或Localization模式。
9.1SLAM模式
这是默认模式.此模式下,系统有三个线程并行运行:
Tracking,LocalMappingandLoopClosing。
系统不停地定位相机,构建新的地图,并且试图闭合环形路径。
9.2Localization模式
当你有一个好的工作区域地图时,你可以使用此模式。
在这种模式下,局部地图构建以及环路闭合检测将不工作。
系统在你提供的地图上定位相机(此地图不再更新),在必要时使用重定位(relocalization)。