orb_slam从零开始保姆级环境安装配置教程
orb_slam从零开始保姆级环境安装配置教程:
为了学习slam搜了很多的环境安装教程,但是作为初学者,在环境配置上稍有不注意就会安装失败。
感觉为小白入门学习造成了一个不小的麻烦。因此写下这篇博客,一方面帮助更多人安装配置slam环境,另一方面
做个记录为以后的查阅更加方便的找到方法。
一、虚拟机安装ubuntu:
网上安装的方法较多:https://blog.csdn.net/m0_57146086/article/details/121963736
清华源ubuntu的ISO镜像文件下载:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/
我这里选择下载了ubuntu18.4了,安装过程参照上面链接。
安装好以后设置了root密码:
sudo passwd root
安装VM_tool:
https://raksmart.idcspy.com/6171
二、ubuntu内基础环境安装:
(1)更新软件源:
sudo apt update
(2)安装git,用于从GitHub上克隆项目包到本地:
sudo apt-get install git
(3)安装Cmake用于程序的编译:(可以执行下面命令安装最新版本Cmake,也可以安装历史版本)
1.终端命令安装:(二选一)
sudo apt-get install cmake
2.安装包下载安装:
安装Cmake时,要是担心版本太高出现编译问题(opencv):
我下载安装Cmake 3.10.0 ,历史版本也可在上级目录查找:
https://cmake.org/files/v3.10/
参照安装教程: https://www.cnblogs.com/lihw-study/p/15661675.html
解压完后创建软链接:
sudo ln -sf /opt/cmake-3.20.0/bin/* /usr/bin/
(4)安装gcc,g++:
sudo apt-get install gcc g++
三、安装Pangolin,作为可视化和用户界面
(1)安装依赖项:
sudo apt-get install libglew-dev sudo apt-get install libpython2.7-dev
(2)从Ubuntu将项目下载到本地,下载安装Pangolin:(可能会有点慢,如果因为网不太好断开了,再重新执行一次下列命令即可)
git clone https://github.com/stevenlovegrove/Pangolin.git
也可以自己在github上下载安装包后解压安装:https://github.com/stevenlovegrove/Pangolin.git
(3)编译安装:
使用下列命令来安装eigen:
sudo apt-get install libeigen3-dev
进入Pangolin文件夹:
cd Pangolin
创建编译文件夹,命名为build:
mkdir build
进入文件夹进行配置:
cd build cmake .. (注意cmake 与..之间有一个空格) sudo make (可以用 "make -j "命令速度会稍快一些,但如果电脑性能不佳,还是使用make命令较好) sudo make install
四、安装OpenCV,用于处理图像和特征
(1)下载OpenCV 3.4.7的Sources版:
http://opencv.org/releases.html
(2)解压:
unzip opencv-3.4.1.zip
(3)进入opencv文件夹下,安装依赖库和cmake ,如果提醒需要apt-get update,
那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev (处理图像所需的包) sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev sudo apt-get install libxvidcore-dev libx264-dev (处理视频所需的包) sudo apt-get install libatlas-base-dev gfortran (优化opencv功能)
(4)编译安装:
cd opencv-3.4.1 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. (在中间会下载个东西,稍等一下就ok,没什么问题) (如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可) sudo make (漫长的编译过程) sudo make install
make过程中可能会出现:fatal error: Eigen/Core: No such file or directory
已经安装,但当调用 eigen 库时,报错:fatal error: Eigen/Core: No such file or directory
这是因为 eigen 库默认安装在了 /usr/include/eigen3/Eigen 路径下,需使用下面命令映射到 /usr/include 路径下
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
(5)配置环境,添加路径
sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将 OpenCV的库添加到路径,从而可以让系统找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/lib
如下图所示,点击保存即可
执行如下命令使得刚才的配置路径生效:
sudo ldconfig
配置bash:
sudo gedit /etc/bash.bashrc
在最末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
如下图所示,点击保存即可:
保存,执行如下命令使得配置生效:
source /etc/bash.bashrc
更新:
sudo updatedb
(6)安装完成,测试一下
至此所有的配置都已经完成,下面用一个小程序测试一下
找到,cd到opencv-3.4.1/samples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行:
cd opencv-3.4.1/samples/cpp/example_cmake cmake . make ./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
五、安装Eigen3
使用下列命令来安装eigen:
sudo apt-get install libeigen3-dev
六、安装ORB_SLAM2
执行下列命令下载安装ORB_SLAM2:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
编译ORB_SLAM2和第三方库DBoW2和g2o:
进入ORB_SLAM2文件夹:
cd ORB_SLAM2
给build.sh文件权限:
chmod +x build.sh
编译build.sh文件:
./build.sh
如果编译之后出现报错问题1 ,如下:
ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000);
解决方案:
找到对应的System.cc文件的首部加入 头文件:
#include<unistd.h>
需要根据实际情况,提示哪个文件usleep有问题,就去加这个头文件,即可解决问题。
(2)如果是被杀死进程,报告debug错误啥的,再build一遍就可以了。完成后如图所示:
(build.sh文件中make过了就可以跳过以下make)报错解决之后,最后,执行下列指令:
make
(编译过程可能会有点慢,耐心等待哦。这里也可以使用make -j、make -j4、make -j8等命令速度会稍快一些,-j 后的的数字代表线程。但如果电脑性能不佳,可以把build.sh文件和build_ros.sh文件中的最后一句命令make -j 改为make)
至此,ORB_SLAM2已经安装好啦。
七、运行单目SLAM实例
编译完成后会在ORB_SLAM2/Examples文件夹下生成各种可执行文件。这里以单目情况为例,展示如何运行ORB_SLAM2程序。
(1)下载数据集
这部分在github上也有详细描述,包括单目相机(Monocular)、双目相机(Stereo)、RGB-D(RGB-D)相机,包括TUM数据集、KITTI数据集和EuRoC数据集,本人运行的是单目的TUM数据集,具体操作如下:
1、下载数据集,地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/download,
rgbd_dataset_freiburg1_desk
2、将下载好的数据集放在home文件夹下,打开终端,运行下面命令:
cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/yuan/data_set/slam/rgbd_dataset_freiburg1_desk
(home/用户名/MH05/按照自己数据集的路径修改,建议把包放在home下)
用户名写你的客户机名称,如果EuRoC文件夹在别的路径下,更改即可,如果下载的是其他数据包,对应更改末尾的MH05.txt,出现任何问题基本都是路径问题,仔细检查路径。
运行中的状态,结束后窗口自动关闭,并在终端显示这一行:
这是将运行后的数据存在这个文件中,后续用EVO评测时,会用其与真实值作对比。
至此,ORB-SLAM2配置完成。
八、错误相关
安装pangolin后,在slam中编译时出现如下错误:
terminate called after throwing an instance of 'std::runtime_error' what(): Pangolin X11: Unable to retrieve framebuffer options
解决:将源码目录Pangolin\src\display\device下的display_x11.cpp文件做如下修改,注释下面的两行代码即可。
staticint visual_attribs[] = { GLX_X_RENDERABLE , True, GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT, GLX_RENDER_TYPE , GLX_RGBA_BIT, GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR, GLX_RED_SIZE , 8, GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, GLX_ALPHA_SIZE, 8, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 8, GLX_DOUBLEBUFFER , glx_doublebuffer ? True : False, //注释这一行GLX_SAMPLE_BUFFERS , glx_sample_buffers, //注释这一行 GLX_SAMPLES , glx_sample_buffers > 0 ? glx_samples : 0, None };