对于slam也是刚学习了一个暑假,很多知识还没学到,老师开学安排任务先把orbslam2跑通,对于我这个小菜鸟真的被难倒了。参考了网上很多博客,大部分内容还是相似的,但是自己操作的时候还是会遇到各种报错,今晚终于把它运行出来了,下面写一下我搭建过程中的详细步骤。
我主要参考了 https://www.cnblogs.com/wongyi/p/8596084.html
https://blog.csdn.net/learning_tortosie/article/details/79881165
https://blog.csdn.net/u010128736/article/details/52808650
系统环境:Ubuntu16.04
#准备工作
首先建立一个文件夹 把需要的库都放在这个文件里面
cd /
mkdir myslam
cd myslam
如果建立文件夹过程中出现权限问题 就在mkdir前面加上sudo 提升权限。这样我们就建立了一个文件夹,我们需要下载的库都放在这个文件夹里面。
#安装必要的工具
sudo apt-get install cmake
sudo apt-get install gcc g++
sudo apt-get install git
其中cmake用来编译 g++是linux的可用编译 git我们用来下载东西
#Pangolin的编译与安装
Pangolin是一个用于OpenGL显示/交互以及视频输入的一个轻量级、快速开发库
orbslam中需要Pangolin的支持
(1)安装一下必要的库
Glew:
sudo apt-get install libglew-dev
CMake:
sudo apt-get install cmake
Boost:
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
Python2 / Python3:
sudo apt-get install libpython2.7-dev
(2)在安装完上述依赖后,就可以开始安装Pangolin了,安装过程十分简单
需要先下载一下Pangolin 这里用git下载
git clone https://github.com/stevenlovegrove/Pangolin.git
下载之后需要再myslam文件夹下在新建一个Pangolin的文件夹进行pangolin的编译和安装
cd Pangolin
mkdir build
cd build
cmake ..
make
如果上述安装步骤出现问题,可以尝试下列指令进行编译与安装 当出现权限问题时,在指令前面加上sudo就可以提升权限 我尝试的时候用第一种方法没安装成功,用的第二种方法才可以的。
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j
#安装opencv
这里需要下载opencv可以在官网上下载。一定要确认opencv的版本问题。博主之前在使用git下载了opencv,但并没在意版本问题,之后再ORBslam2编译第三方库时出现了问题,百度了好久都没找到解决办法,所以当时重启电脑好多次,最后注意到了版本问题,又重新在官网上下载的2.4.11版本的opencv,果然编译安装过程很顺利。
sudo apt-get install build-essential //编译相关的
//必须依赖项
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev
libavformat-dev libswscale-dev
下载好的opencv2.4.11将它解压到myslam中,记住我们所有库都放在myslam中,然后进入opencv的文件夹,进行编译和安装。
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
#安装Eigen
cd /myslam
git clone https://github.com/eigenteam/eigen-git-mirror.git
mkdir build
cd build
cmake ..
make
#DBoW2
虽然并不需要安装完整的g2o(在ORB_SLAM2项目的Thirdparty下有),但是我们还是要安装它的依赖项。
sudo apt-get install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev
qt5-qmake libqglviewer-dev
#安装BLAS and LAPACK库
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
#安装ORB_SLAM
上述都弄好了之后,就需要下载orb_slam2的源码啦,使用下述指令进行下载
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
需要注意的是我们所有下载的东西都是需要再myslam文件夹中,所以所有的第一步指令一般都是 cd /myslam 这样我们就可以进入到myslam文件夹
接下来输入以下指令,该指令进入到ORB_SLAM2的文件夹中,并修改build.sh的内容,所以我们应该把build.sh从只读权限变成可写。
cd ORB_SLAM2
chmod +x build.sh
但是我试了很多遍上面的chmod +x build.sh代码,发现改脚本的可读性并没有改变,所以通过各种百度,我执行了chmod +x 777 指令修改了该脚本的可读性,变成了对others的可读写,如果你也遇到了同样的问题,可以尝试我的修改方法
执行完上述指令之后,我们需要将build,sh的内容做更改,更改的目的是为了让安装过程更加顺利,我尝试了不做更改,电脑就会卡住。更改的内容是将该文件中所有的make -j里面的-j删除。可以右键打开方式使用gedit打开该文件进行修改,这就说明了更改该文件权限的重要性。
#编译ORB-SLAM2,第三方库中的DBoW2和g2o,并解压ORB词典
更改之后执行下列指令
./build.sh
#单目例子
本实验使用TUM数据集,从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载序列并解压缩。下载下面图片的压缩包并解压。将解压后的数据集放在ORB_SLAM2文件夹中
执行下列指令
cd /myslam/ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
其中PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml 分别对应 freiburg1, freiburg2 和 freiburg3。我们这里将数据集放在了ORB_SLAM2文件夹中,所以在上述指令中只需要写入数据集文件的名称即可。由于我们下载的是fr1,所以相应的TUMX.yaml应写成TUM1.yaml
运行结果如下图所示
这就是我搭建orb_slam2的全过程,花了我两天时间来进行搭建,其中遇到了很多报错,各种查找,但是经历这次,我可以有信息去编译一个完全陌生的项目,明天继续搭建ros,把orb_slam2用ros跑起来。加油!!