本次环境搭建总共经历如下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).扩容虚拟内存:
  虚拟内存直接在此调节就行

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

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

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

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

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

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

取消勾选后,打开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

能看到版本号,表示安装成功。
参考文档:
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


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”,表示安装成功

参考文档:在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

(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的地方,将他修改成安装的版本号

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

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

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

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

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


10.下载和运行数据集

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

(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

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

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

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

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

搭建ORB_SLAM3在Linux下的编译和运行环境相关推荐

  1. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  2. Linux下程序编译通过运行时提示error while loading shared libraries(动态链接库问题)

    问题: Linux下程序编译通过了,但是运行时提示 :error while loading shared libraries: libXXX.so.X: cannot open shared obj ...

  3. 在x86服务器上 搭建基于docker的arm64程序编译和运行环境

    docker 镜像: multiarch/qemu-user-static:register arm64v8/ubuntu:18.04 必要的组件: qemu https://github.com/m ...

  4. linux下caffe编译以及python环境配置手记

    caffe是一个深度学习的库,相信搞深度学习的话,不是用这个库就是用theano吧.要想使用caffe首先第一步就是要配置好caffe的环境.在这里,我主要说的是在debian的linux环境下如何配 ...

  5. 【泡咖啡1】linux下caffe编译以及python环境配置手记

    caffe是一个深度学习的库,相信搞深度学习的话,不是用这个库就是用theano吧.要想使用caffe首先第一步就是要配置好caffe的环境.在这里,我主要说的是在debian的linux环境下如何配 ...

  6. linux下如何运行c编译,Linux下如何编译并运行C程序

    GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C.C++.Ada.Fortran.Objective.Perl.Python.Ruby以及Ja ...

  7. Linux下如何编译并运行C程序

    2017-6-26 源代码(test.cpp) #include<stdio.h> int main(int argc,char **argv) {printf("%d\n&qu ...

  8. Linux下怎么编译并运行C程序

    比如打印一个"hello world" 很简单的代码如下: #include<stdio.h> #include<stdlib.h> int main() ...

  9. Linux下的编译(环境是centos6.8 gcc 4.4.7)

    Linux下的编译(环境是centos6.8 gcc 4.4.7) 1. 运行命令:yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs Pytho ...

  10. Linux下静态编译的一个TIP

    Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...

最新文章

  1. 14招保你ERP选型成功
  2. windows10中的Ubuntu
  3. VUE config/index.js文件配置
  4. LeetCode 55. 跳跃游戏(贪心)
  5. oracle的sga
  6. Iptables详解+实例
  7. java 设置不可点击_Java Selenium webdriverwait 解决元素不可点击问题
  8. java 输出字符集合里的字_Java基础 -- 字符串(格式化输出、正则表达式)(示例代码)...
  9. Grafana+Prometheus系统监控MySQL
  10. 利用 Zabbix 监控 mysqldump 定时备份数据库是否成功 | 运维进阶
  11. shell 第一次练习
  12. PE启动盘安装操作系统
  13. 重磅!2021年国内Java培训机构排名前十最新出炉啦
  14. mfc将图形涂满颜色,(c++)使用顺序栈
  15. 气死老师的作文(转贴)
  16. Git最佳实践(init、config、status、add、commit、diff、push) 1.0v
  17. JavaSE 第 3 章 数组
  18. css 按空格键对按钮暂停,当按下回车键后,怎么清空回车键的空格,或者模拟发送按键让光标向上?...
  19. ACC自适应巡航控制系统介绍
  20. Linux进程详解(二)完结

热门文章

  1. POJ 3233 Matrix Power Series(矩阵快速幂)
  2. 云原生小课堂 | Envoy请求流程源码解析(一):流量劫持
  3. Ionic3 Demo
  4. (转自头条新闻)黄金搭档:自然语言处理(NLP)+ 知识图谱
  5. Win10 Ctrl+Alt+方向键 屏幕显示翻转解决办法
  6. Communication(Floyed+并查集 || Trajan)
  7. android 判断 飞行模式,Android 设置飞行模式,判断是否是飞行模式
  8. 用自己电脑做网站服务器
  9. My97DateTimePicker使用说明
  10. 中国手机沉浮录:告别青铜时代