2024年1月14日发(作者:)
ORB_SLAM2安装与运行
/myarrow/article/details/53045405
1. 安装C++11编译器
ORB_SLAM2使用了C++11的线程和时间控制函数。
[javascript] view plain copy print?$sudo apt-get install gcc
g++
2.安装Pangolin
ORB_SLAM2使用 Pangolin 构建可视化用户界面. 参见/stevenlovegrove/Pangolin.
[javascript] view plain copy print?$ sudo apt-get install
libglew-dev #安装Glew $ sudo apt-get install cmake
#安装CMake #安装Boost $ sudo apt-get install
libboost-dev libboost-thread-dev libboost-filesystem-dev
$ sudo apt-get install libpython2.7-dev #安装Python2 /
Python3 #下载、编译、安装Pangolin: $ git clone
/stevenlovegrove/ $ cd
Pangolin $ mkdir build $ cd build $ cmake
-DCPP11_NO_BOOST=1 .. $ make $ sudo make install
3. 安装OpenCV 2.4.13
ORB_SLAM2使用OpenCV处理图像以及特征. 参见:
/. 至少需要 2.4.3 的版本.
本测试用 OpenCV 2.4.13. (注:OpenCV 2.4.11与cuda 8.0不兼容,若需要GPU加速(使用cuda8.0,cuda8.0以前的版本不支持GTX1080),则需要安装OpenCV 2.4.13)
[javascript] view plain copy print?$ sudo apt-get install
build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev
libjasper-dev libopenexr-dev cmake python-dev
python-numpy python-tk libtbb-dev libeigen2-dev yasm
libfaac-dev libopencore-amrnb-dev
libopencore-amrwb-dev libtheora-dev libvorbis-dev
libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev
sphinx-common texlive-latex-extra libv4l-dev
libdc1394-22-dev libavcodec-dev libavformat-dev
libswscale-dev $ unzip $ cd
opencv-2.4.13;mkdir build;cd build; $ cmake -D
CMAKE_BUILD_TYPE=RELEASE -D
CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON
-D BUILD_NEW_PYTHON_SUPPORT=ON -D
WITH_V4L=ON -DINSTALL_C_EXAMPLES=ON -D
INSTALL_PYTHON_EXAMPLES=ON
-DBUILD_EXAMPLES=ON -D WITH_QT=ON -D
WITH_OPENGL=ON -DCUDA_GENERATION=Kepler ..
$ make $ sudo make install
[javascript] view plain copy print?#在其中写入: /usr/local/lib
sudo gedit /etc/.d/ #在文件末尾写入:
#PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig #export PKG_CONFIG_PATH sudo
ldconfig sudo gedit/etc/ #source此脚本
source /etc/
4.安装Eigen3.1.0
g2o需要Eigen,下载和安装Eigen3的方法可以看这儿:
. 需要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] view plain copy print?$ sudo apt-get install
libeigen3-dev
and LAPACK
g2o需要BLAS和LAPACK
(1) BLAS: Basic Linear Algebra Subprograms
提供了基本的向量和矩阵操作:
- Level-1 BLAS: 支持 标量、向量、向量-向量 操作
- Level-2 BLAS: 支持 矩阵-向量 操作
- Level-3 BLAS: 支持 矩阵-矩阵 操作
(2) LAPACK:Linear Algebra PACKage
它调用BLAS来实现更高级的功能,支持以下操作:
- 解线性方程组
- 线性方程组的最小二乘解
- 特征值问题和奇异值问题
- 矩阵分解 (LU, Cholesky, QR, SVD, Schur,
generalized Schur)
- 支持密集和带状矩阵,但不支持一般的稀疏矩阵
- 支持单精度和双精度
[javascript] view plain copy print?$ sudo apt-get install
libblas-dev $ sudo apt-get install liblapack-dev
6. DBoW2 and g2o (Included in Thirdparty folder)
ORB_SLAM2使用修改版的DBoW2 库进行位置识别 ,使用 g2o 库进行非线性优化. 这两个修改版的库被放在第三方文件夹内.
7. 编译ORB_SLAM2库和例子程序(单目、双目和RGB-D)
[javascript] view plain copy print?$ git clone
/raulmur/ORB_ ORB_SLAM2
$ cd ORB_SLAM2 $ chmod +x $ ./
生成的libORB_位于lib目录下,可执行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc
and stereo_euroc位于Examples目录下。
8. 运行例子程序
8.1 Monocular 实例
1)TUM 数据集
从/data/datasets/rgbd-dataset/download下载并解压一个序列,如:rgbd_dataset_freiburg1_
执行下面的命令(把 修改为 < freiburg1序列>, <
freiburg2序列> or
< freiburg3序列> )
[javascript] view plain copy
print?$ ./Examples/Monocular/mono_tum
Vocabulary/ ./Examples/Monocular/ PATH_TO_SEQUENCE_FOLDER #for example
$ ./Examples/Monocular/mono_tum
Vocabulary/ ./Examples/Monocular/ ../tum_data/rgbd_dataset_freiburg1_desk2/
2) KITTI 数据集
从
/datasets/kitti/eval_下载数据集(灰度图像), 把 修改为
, or ,这些*各自对应于序列 0 to 2, 3, and 4 to 12. Change
PATH_TO_DATASET_FOLDER to the uncompressed
dataset folder. Change SEQUENCE_NUMBER to 00, 01,
02,.., 11.如有不明白的地方,看一下代码:
[javascript] view plain copy
print?./Examples/Monocular/mono_kitti
Vocabulary/ Examples/Monocular/
PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
8.2 Stereo 实例
1)KITTI 数据集
从
/datasets/kitti/eval_下载数据集(灰度图像),把
修改为 , or
,这些*各自对应于序列 0 to 2, 3,
and 4 to 12. Change PATH_TO_DATASET_FOLDER to
the uncompressed dataset folder. Change
SEQUENCE_NUMBER to 00, 01, 02,.., 11.如有不明白的地方,看一下代码:
[javascript] view plain copy
print?./Examples/Stereo/stereo_kitti
Vocabulary/ Examples/Stereo/
PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
8.3 RGB-D 实例
1)TUM 数据集
从/data/datasets/rgbd-dataset/download下载并解压一个序列,如:
rgbd_dataset_freiburg1_
运行RGB-D实例时需要RGBD(depth)图像和RGB图像,所以需要把每一张RGB图像与之对应的RGBD图像建立关联(在Examples/RGB-D/associations/目录下有一部分关联文件,可以直接使用),关联python文件(根据timestamp进行关联)。
[javascript] view plain copy print?$ python
PATH_TO_SEQUENCE/
PATH_TO_SEQUENCE/ >
执行下面的命令(把 修改为
< freiburg1序列>, < freiburg2序列> or
< freiburg3序列> ),把
ASSOCIATIONS_FILE修改为对应的关联文件。
[javascript] view plain copy
print?$./Examples/RGB-D/rgbd_tum
Vocabulary/ Examples/RGB-D/
PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
# for example $./Examples/RGB-D/rgbd_tum
Vocabulary/ ./Examples/RGB-D/ .
./tum-data/rgbd_dataset_freiburg1_desk2/ ./Examples/RGB-D/associations/fr1_
8.4 ROS实例
8.4.1 安装ROS 9. SLAM和Localization 模式
你可在GUI中切换至SLAM模式或Localization模式。
9.1 SLAM 模式
这是默认模式. 此模式下,系统有三个线程并行运行:
Tracking, Local Mapping and Loop Closing。 系统不停地定位相机,构建新的地图,并且试图闭合环形路径。
9.2 Localization 模式
当你有一个好的工作区域地图时,你可以使用此模式。在这种模式下,局部地图构建以及环路闭合检测将不工作。
系统在你提供的地图上定位相机 (此地图不再更新), 在必要时使用重定位(relocalization)。


发布评论