1.前言
我在搭建ORB-SLAM2的环境时,踩过了很多的坑,现在想出一个宝宝级的攻略,希望能够帮助大家快速搭建ORB-SLAM2的环境,规避一些毒教程的糟粕。
如果大家通过我的攻略安装成功,请在评论区打出“好用“希望能够帮助到更多人。
我用的是Ubuntu20.04的版本。
2.安装库
如果大家之前安装过一些库,在编译ORB-SLAM2时由于库的问题导致错误,请把残余的库删除干净后在跟着攻略进行安装。
没安装过的可以直接跟着我按照下列步骤进行:
1.安装一些必要“工具”
1.安装之前要更新系统软件包的列表:
sudo apt-get update
2. 安装cmake、gcc、g++、git:
sudo apt-get install cmake
2.安装Pangolin(0.5版本)
虽然0.5版本会出现一些错误,但只要跟着攻略走就会成功。库的下载地址如下:Pangolin
下载好后把它解压到主目录下并修改名字为Pangolin。
1. 打开终端依次输入下面的命令:
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
2.正常来说,你应该能够看出来安装成功,如果不放心那么就打开新的终端输入下面的命令(注意这些操作都是在你的主目录下完成的,请注意识别。):
cd Pangolin
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
输入后出现下方图片的彩色正方形则代表安装成功。
3.安装Eigen3
sudo apt-get install libeigen3-dev
4.安装opencv3
1.下载链接:Releases - OpenCV 请下载opencv-3.4.5的版本。
下载好后把它解压到主目录下并修改名字为opencv3。
打开一个新的终端输入如下命令:
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 libtiff-dev libjasper-dev libdc1394-22-dev
2.当输入第三条命令时可能会出现如下的情况(无法定位软件包):
解决方法如下:
打开一个新的终端并输入如下命令:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
3.解决完成后打开新的终端输入如下命令(保证流程的完整性):
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 libtiff-dev libjasper-dev libdc1394-22-dev
cd opencv3
mkdir build
cd build
cmake ..
make -j
sudo make install
注意:当输入cmake ..时可能会出现一个明显的卡顿让你感觉是不是出错了。情况如下:
这种情况造成的原因是:github服务器在国外,下载极慢,甚至无法访问。不要慌,直接等着就行(我就是等着它下载成功的)。开一把黑回来就差不多了(嘿嘿)。
当然也可以选择手动下载文件进行替换,具体细节就不展开了,大家可以在CSDN上通过查找ippicv这样的关键词寻找手动替换的具体解决方法。
因为博主没有尝试这种方法所以无法确定它是否操作容易,我还是建议您耐心的等待一阵子。
解决后就能接着cmake..后边的命令进行输入了。
4.安装完成后打开新的终端输入如下命令:
sudo gedit /etc/ld.so.conf.d/opencv.conf
5.稍等片刻会出现一个空的文本编译器,输入如下内容保存并退出。
/usr/local/lib
6.接着打开新的终端输入如下内容:
sudo ldconfig
7.再次打开新的终端输入如下内容:
sudo gedit /etc/bash.bashrc
8.这时候会出现一个文档,在文档的最后输入如下内容:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
9.保存后退出,打开新的终端输入如下内容:
source /etc/bash.bashrc
sudo updatedb
10.这时候可能会出现新的问题(找不到命令)如下图所示:
解决方法如下:
输入如下命令:
apt-get install mlocate
之后就能解决问题了。再次运行第9步,到这里opencv就算安装成功了。
11.你可以通过下边的方法进行检验:
打开终端输入如下命令:
cd opencv3/samples/cpp/example_cmake
cmake .
make
./opencv_example
如果出现了一个显示窗显示了内容就说明你安装成功了。
3.下载并运行ORB-SLAM2
1.下载
在主目录下打开终端并输入如下命令进行下载ORB-SLAM2:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
2.运行
下载好后输入如下命令进行编译:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
3.解决问题
运行时并不会一帆风顺,可能会出现下面这些问题:
问题一:
ORB-slam2库构建时出现的错误error: ‘decay_t’ is not a member of ‘std’;did you mean ‘decay’
解决方法请看这篇文章:ORB-slam2库构建时出现的错误error: ‘decay_t’ is not a member of ‘std’;did you mean ‘decay’-CSDN博客
问题二:
ORB-slam2库构建时出现的错误error: ‘usleep’was not declared in this scope usleep(.....)
解决方法请看这篇文章:ORB-slam2库构建时出现的错误error: ‘usleep’was not declared in this scope usleep(3000)-CSDN博客
问题三:
ORB-slam2库构建时出现的错误error: static assertion failed: std::map must have the same value
问题四:
ORB-slam2库构建时出现的错误/usr/bin/ld: 找不到 -lEigen3::Eigen
解决方法请看这篇文章:ORB-slam2库构建时出现的错误/usr/bin/ld: 找不到 -lEigen3::Eigen-CSDN博客
以上是我出现的四个问题,如果您也遇到请查看相应的文章进行解决,之后输入命令就能运行ORB-SLAM2了:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
如果您还出现了什么其他问题,请在评论区留言,让我们一起解决它。
4.结束语
这个ORB-SLAM的配置如果没有教程会很难,可能会踩很多的坑,希望我的宝宝级攻略能够真的帮助到了大家。
如果真的对大家有帮助,请给我一键三连吧,您的支持是我前进的动力。