最近在学习slam,所以安装orb_slam2,参考了网上的很多博客,中间也遇到一些问题,有些博客讲解的也不是那么详细。现在补充记录如下。
整体思路主要参考了这篇文章:https://www.cnblogs.com/feifanrensheng/p/8480362.html
行文按照这篇文章进行扩充。
1 安装必要工具
首先,有两个工具是需要提前安装的。即cmake和Git。
sudo apt-get install cmake
sudo apt-get install git
开始时sudo不能安装任何软件 ,如下命令得到解决:sudo apt-get install -f
2 安装Pangolin,用于可视化和用户接口
安装依赖项:
sudo apt-get install libglew-dev
sudo apt-get install libpython2.7-dev
先转到一个要存储Pangolin的路径下,例如~/Documents,然后
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make –j
sudo make install
3 安装OpenCV
ubuntu16.04下安装opencv3.1.0
参考博文: http://www.cnblogs.com/feifanrensheng/p/8480286.html
安装opencv时,遇到cuda编译的问题 :cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
解决方案:需要修改一处源码:
在graphcuts.cpp中将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
4 安装Eigen3
最低要求版本为3.1.0。在http://eigen.tuxfamily.org 下载Eigen3的最新版本,一般是一个压缩文件,下载后解压,然后cd到Eigen3的根目录下。
sudo apt-get install libeigen3-dev
Eigen头文件的默认位置在 “usr/include/eigen3”
如果不确定,可以通过以下命令查找
sudo updatedb
locate eigen3
5 安装ORBSLAM2
先转到自己打算存储ORBSLAM2工程的路径,然后执行下列命令
git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2
chmod +x build.sh
./build.sh
编译时遇到很多错误:/ORB_SLAM2/src/LocalMapping.cc:94:28: error: ‘usleep’ was not declared in this scope
需要打开相应的代码,在头文件里面添加usleep 的头文件unistd.h,很多源文件要添加感觉很不方便。
之后会在lib文件夹下生成libORB_SLAM2.so,并且在Examples文件夹下生成mono_tum,mono_kitti, rgbd_tum,stereo_kitti, mono_euroc 和 stereo_euroc。
6,用orb-slam2跑RGB-D Example中的TUM Dataset
找了一个较小的数据集做测试
主要参考这篇文章:https://www.cnblogs.com/bigzhao/p/6246084.html
1.按照要求下载数据集,我下载的是rgbd_dataset_freiburg2_pioneer_360,将其解压到你喜欢的目录.我个人放在了orbslam2工程目录下面了.
2.下载 associate.py.放在/ORB_SLAM2/Examples/RGB-D/目录下面.
3.打开终端,进入到associate.py所在目录,即/ORB_SLAM2/Examples/RGB-D/,之后运行
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt
这一步开始用默认的python3未成功,用python2成功了。
在该目录中将会生成一个associations.txt文件.
4.参照所给链接中的第3步,https://github.com/raulmur/ORB_SLAM2,即
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
PATH_TO_SEQUENCE_FOLDER文件夹即为数据库所在文件夹,我的是在orbslam2工程下面,
ASSOCIATIONS_FILE即为第3步中生成的associations.txt,给出他的制定目录位置