搭建ORB_SLAM3在Linux下的编译和运行环境

本次环境搭建总共经历如下10个主要步骤:

1.安装VMware虚拟机和Ubuntu镜像
2.下载、编译和安装CMake
3.安装python
4.安装、编译OpenCV
5.安装PANGOLIN
6.安装boost库
7.安装Eigen 3
8.安装openssl-devel
9.编译源码
10.下载和运行数据集

踩了很多坑,过程比较艰苦,好在最后还是运行起来了。

环境搭建完成之后,
关于ORB_SLAM3开源算法的优化或想法,
就可以在源码中进行修改,编译,并使用数据集运行和验证,
将算法创新Idea付诸实践了。

​注意:
如果在环境搭建过程中,在需要网络链接、下载等步骤里,
如果出现异常,首先考虑切换外网
如果还不行,再具体找原因

开始吧!


1.安装VMware虚拟机和Ubuntu镜像:

(1).安装VMware虚拟机和Ubuntu系统
  参考文档:2020最新版VMware安装Ubuntu20.04教程(巨细)! - 知乎

  在安装Ubuntu镜像过程中,自定义硬件设置时,
  自动分配的虚拟内存和硬盘是2G和20G,
  需要修改大点:内存:10G, 硬盘:50G
  *虚拟内存过低会导致最后编译ORB_SLAM3时虚拟机直接卡死

如果安装过程中没有进行修改,也可以在安装完成后修改。
(2).扩容虚拟内存:
  虚拟内存直接在此调节就行

搭建ORB_SLAM3在Linux下的编译和运行环境_第1张图片

  调节完成之后重启虚拟机,在终端中”free –m”或”free –g”查看:

搭建ORB_SLAM3在Linux下的编译和运行环境_第2张图片

也尝试过创建swap分区进行虚拟内存扩充,
参考文档:
【问题解决】C++: fatal error: Killed signal terminated program cc1plus_tiffiny10的博客-CSDN博客_c++fatal error怎么解决
ubuntu设置swap(交换内存)_zzcchunter的博客-CSDN博客_ubuntu 设置swap
swap分区这种方式亲测过,貌似没有用上,
后来直接在”编辑虚拟机设置”进行修改就运行过了。

(3)扩容虚拟硬盘
虚拟硬盘的扩容相对麻烦点

搭建ORB_SLAM3在Linux下的编译和运行环境_第3张图片

输入磁盘大小之后,“扩展”选项会高亮,点击“扩展”。
启动虚拟机,下载”GParted分区编辑器”进行磁盘扩充
参考文档:
Ubuntu磁盘空间不足?一招轻松扩容_正点原子的博客-CSDN博客_ubuntu扩展磁盘空间

(4).Ubuntu安装完成之后,由于Win10使用了Docker,
Ubuntu和Win10会出现Hyper-V的兼容性问题

搭建ORB_SLAM3在Linux下的编译和运行环境_第4张图片

修改方法:
”控制面板-->程序和功能-->启用或关闭Windows功能”,取消Hyper-V项勾选

搭建ORB_SLAM3在Linux下的编译和运行环境_第5张图片

取消勾选后,打开cmd或powershell输入:
  bcdedit /set hypervisorlaunchtype off
参考文档:

您的主机不满足在启用hyper-v或Device/Credental..._mogexiuluo的博客-CSDN博客_您的主机不满足在启用hyper-v或device
修改后电脑重启和虚拟机重启

如果还有问题,参照如下文档,尝试修改注册表、Windows下关闭虚拟机安全服务等:
您的主机不满足在启用 Hyper-V 或 Device/Credential Guard 的情况下运行 VMware Workstation 的最低要求_TATYBOY的博客-CSDN博客_您的主机不满足在启用hyper-v或device
亲测注册表修改后,虚拟机正常运行。
但是后来又把注册表复原,删掉了新增的注册项,再运行虚拟机也没有问题。
所以目前也不清楚到底是重启后正常,还是修改注册表后正常,该方式留作参考。


2.下载、编译和安装CMake  

方法一:
Linux 命令安装:sudo apt install cmake
但是只能安装到3.16.3的版本
最终编译ORB_SLAM3会报一堆错误,
坑!

方法二:
(1).下载CMake源文件进行编译和安装:

Download | CMake
Latest Release-->Source distributions-->cmake-3.23.1.tar.gz-->右键-->复制链接地址
终端执行:
wget https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1.tar.gz
       (上一步复制的链接地址)

(2).解压缩:tar -zxf cmake-3.23.1.tar.gz
(3).进入目录:cd cmake-3.23.1
(4).配置:./configure --prefix=/home/shawn/cmake-3.23.1/cmake-install
        或者./bootstrap --prefix=/home/shawn/cmake-3.23.1/cmake-install
(5).编译:sudo make all
(6).安装:sudo make install
(7).添加环境变量:sudo vim /etc/profile
(8).在文件的最后一行加入: export PATH=/home/shawn/cmake-3.23.1/bin:$PATH
(9).检查版本:cmake  --version

搭建ORB_SLAM3在Linux下的编译和运行环境_第6张图片

能看到版本号,表示安装成功。
参考文档:

https://www.jianshu.com/p/d51291c3e82eLinux cmake安装,配置以及测试_编号1993的博客-CSDN博客

方法三:
终端命令:sudo snap install cmake –classic

本次环境搭建过程中,CMake安装由于踩过 方法一 的坑,后来又卸载,反复安装。
方法二 和 方法三 都进行过,具体也不知道是最终哪一种生效,
建议可以先试 方法三 ,不行再进行 方法二 源文件编译安装。
卸载命令:
sudo apt remove cmake 保留配置文件
sudo apt purge cmake   卸个干净


3.安装python

终端命令:sudo apt install libpython2.7-dev
查看版本号:python -V 

搭建ORB_SLAM3在Linux下的编译和运行环境_第7张图片


4.安装、编译OpenCV

OpenCV用于ORB特征点提取

(1).官网下载OpenCV,选择sources版本
本次搭建下载的是opencv3.4.16
下载链接:
Releases - OpenCV

最新的ORB_SLAM3的编译需要的是opencv4.4,要不然会报编译错误,
不过不要紧,opencv3.4.16完全够用,在ORB_SLAM3源码里面修改CMakeLists.txt中opencv的    关联版本就可以了。

(2).解压:unzip opencv-3.4.16.zip
进入opencv目录:cd opencv-3.4.16

(3).安装依赖库:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev     libtiff4.dev libswscale-dev libjasper-dev
如果出现libjasper-dev无法安装,就单独对它进行安装:
参考文档:

无法定位软件包libjasper-dev的解决办法_许野平的博客-CSDN博客_无法定位软件包libjasper-devUbuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题_SDUHXP的博客-CSDN博客_libjasper

(4).创建编译目录(release)并进入:mkdir release && cd release

(5).cmake配置编译:
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 -D WITH_QT=ON -D WITH_OPENGL=ON ..

(6).make编译:make

(7).安装:sudo make install

(8).环境配置添加库路径:
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

(9). 更新系统库:sudo ldconfig

(10).配置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 

最后有可能出现source和updatedb命令识别不到的问题
执行:sudo apt-get install mlocate
再执行source和updatedb

(11).使用opencv自带smaple测试是否安装成功
1. cd到opencv-3.4.16/samples/cpp/example_cmake目录下
2. 依次执行:cmake .
                      make
                      ./opencv_example

出现“Hello OpenCV”,表示安装成功

搭建ORB_SLAM3在Linux下的编译和运行环境_第8张图片

参考文档:在ubuntu16.04下安装opencv3.4.10(超详细测试成功)_再打三年球的博客-CSDN博客


5.安装PANGOLIN

Pangolin主要用于可视化和用户界面。

(1).需要先安装如下工具,如果已安装,跳过。
sudo apt-get install vim cmake   (注:查看cmake版本命令 cmake -version)
sudo apt-get install vim git       (注:查看git版本命令 git --version)
sudo apt-get install vim gcc g++  (注:查看gcc g++版本命令 gcc -v g++ -v)

(2).下载源码:https://github.com/stevenlovegrove/Pangolin

搭建ORB_SLAM3在Linux下的编译和运行环境_第9张图片

(3).按照git链接里的官方安装方式进行安装:
# Get Pangolin

cd ~/your_fav_code_directory
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin

(我是直接下了源压缩包解压,没有使用git clone)

# Install dependencies (as described above, or your preferred method)
# recommended

./scripts/install_prerequisites.sh

# Configure and build
mkdir build && cd build
cmake ..
cmake --build .

# GIVEME THE PYTHON STUFF!!!! (Check the output to verify selected python version)
cmake --build . -t pypangolin_pip_install

# Run me some tests! (Requires Catch2 which must be manually installed on Ubuntu.)
ctest

Pangolin在安装过程中出现过如下报错:
E: 无法下载 http://cn.archive.ubuntu.com/ubuntu/pool/universe/f/flite/libflite1_2.1-release-3_amd64.deb  连接失败 [IP: 91.189.91.39 80]
E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?

解决办法:
连海外网络。


6.安装boost库

(1).下载压缩包:Index of main/release/1.79.0/source

(2).依次执行如下命令,完成编译和安装:
解压:
tar -xzvf boost_1_79_0.tar.gz
cd进入解压出来的文件夹,执行命令:sudo ./bootstrap.sh

(3).再执行下面的命令,这样头文件就被默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下
执行:
sudo ./b2 install
           ldconfig

参考文档:
Ubuntu16.04安装boost库 - &大飞 - 博客园
安装过程中未遇到参考文档中所述编译错误,
如有遇到请按照文档中执行解决。


7.安装Eigen 3

源码安装:sudo apt-get install libeigen3-dev
另外也可以官网下载到本地编译安装(本次搭建没有使用这种方式)

参考文档:Ubuntu18.04 两种方式安装eigen3_don't quit的博客-CSDN博客_ubuntu 安装eigen


8.安装openssl-devel

sudo apt-get install libssl-dev


9.编译源码

(1).下载源码 : https://github.com/UZ-SLAMLab/ORB_SLAM3

(2)解压后进目录:cd ORB_SLAM3
Linux下对tar.gz文件的解压命令:tar –zxf
           对.zip文件的解压命令:unzip

(3)修改CMakeList.txt中opencv版本号
在步骤”5.安装 编译OpenCV”中提到过,我们安装的opencv是3.4.16版,
ORB_SLAM3源码编译要的是4.4,版本不对,编译时会报如下错误:

CMake Error at CMakeLists.txt:8 (find_package):
  Could not find a configuration file for package "OpenCV" that is compatible
  with requested version "4".
  The following configuration files were considered but not accepted:
    /usr/local/share/OpenCV/OpenCVConfig.cmake, version: 3.4.16
-- Configuring incomplete, errors occurred!

执行:sudo gedit CMakeLists.txt
搜索:”find_package”
找到opencv的地方,将他修改成安装的版本号

搭建ORB_SLAM3在Linux下的编译和运行环境_第10张图片

(4)先解决源码编译过程中踩到的坑!
 1.编译时有可能会报很多”-std=C++”相关语法错误,具体原因可能是C++支持版本等问题。
    解决办法:sudo gedit CMakeLists.txt 
    直接注掉下面这两行:

搭建ORB_SLAM3在Linux下的编译和运行环境_第11张图片

2.运行时,有可能碰到如下错误,编译到一半,虚拟机直接崩了

搭建ORB_SLAM3在Linux下的编译和运行环境_第12张图片

 解决办法:虚拟机设置-->显示器-->加速3D图像(3),取消勾选

搭建ORB_SLAM3在Linux下的编译和运行环境_第13张图片

(6)编译源码
  依次执行如下命令:
  chmod +x build.sh
 ./build.sh
  

搭建ORB_SLAM3在Linux下的编译和运行环境_第14张图片

100%,无报错,源码编译完成
接下来下载数据集运行。


10.下载和运行数据集

(1).下载数据集:
kmavvisualinertialdatasets – ASL Datasets
本次环境搭建,下载的是V101数据集:

搭建ORB_SLAM3在Linux下的编译和运行环境_第15张图片

(2)运行数据集:
1.在ORC_SLAM3目录下新建Datasets文件夹
2.将下载的数据集拷贝到Datasets下,解压
3.执行如下命令:
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ./Datasets ./Examples/Stereo/EuRoC_TimeStamps/V101.txt

运行结果:
本来是录了一段运行视频,但是不知道怎么发,就发张截图以表成功吧

搭建ORB_SLAM3在Linux下的编译和运行环境_第16张图片

左侧是数据集场景、特征点、轨迹等抓取过程的逐帧播放
右侧是算法运行的效果,其中可以选择显示/隐藏Point、KeyFrame、Gragh等。

至此,本次ORB_SLAM3Linux编译和运行环境搭建完成

总的配置流程是参照如下参考文档进行:
Ubuntu16.04下ORB_SLAM3的编译及运行【完整教程】 - 灰信网(软件开发博客聚合)
十分感谢这篇参考文档的贡献者。

你可能感兴趣的:(xr,算法,ai)