本次环境搭建总共经历如下10个主要步骤:
踩了很多坑,过程比较艰苦,好在最后还是运行起来了。
环境搭建完成之后,
关于ORB_SLAM3开源算法的优化或想法,
就可以在源码中进行修改,编译,并使用数据集运行和验证,
将算法创新Idea付诸实践了。
注意:
如果在环境搭建过程中,在需要网络链接、下载等步骤里,
如果出现异常,首先考虑切换外网
如果还不行,再具体找原因
(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
亲测注册表修改后,虚拟机正常运行。
但是后来又把注册表复原,删掉了新增的注册项,再运行虚拟机也没有问题。
所以目前也不清楚到底是重启后正常,还是修改注册表后正常,该方式留作参考。
方法一:
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 卸个干净
终端命令:sudo apt install libpython2.7-dev
查看版本号:python -V
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博客
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 的选项再试试?
解决办法:
连海外网络。
(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库 - &大飞 - 博客园
安装过程中未遇到参考文档中所述编译错误,
如有遇到请按照文档中执行解决。
源码安装:sudo apt-get install libeigen3-dev
另外也可以官网下载到本地编译安装(本次搭建没有使用这种方式)
参考文档:Ubuntu18.04 两种方式安装eigen3_don't quit的博客-CSDN博客_ubuntu 安装eigen
sudo apt-get install libssl-dev
(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%,无报错,源码编译完成
接下来下载数据集运行。
(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等。
总的配置流程是参照如下参考文档进行:
Ubuntu16.04下ORB_SLAM3的编译及运行【完整教程】 - 灰信网(软件开发博客聚合)
十分感谢这篇参考文档的贡献者。