当前位置:   article > 正文

ORB-SLAM3安装教程-Ubuntu18.04_orbslam3安装

orbslam3安装

1、前言

安装环境:虚拟机VMware运行的Ubuntu版本是18.04。
主要参考:
ORB SLAM3安装方法一
ORB SLAM3安装方法二

Ubuntu20.04安装ORB SLAM3参考:
1、https://blog.csdn.net/kuvinxu/article/details/125992909
2、https://blog.csdn.net/kuvinxu/article/details/126233165

2、ORB_SLAM3所依赖的包有EIGEN3,pangolin,OPENCV,DBoW2 和 g2o

最好创建一个文件夹,将要下载的文件都放在这个文件夹中。

1.ORB-SLAM3源码下载

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
  • 1

2.安装Eigen3

sudo apt-get install libeigen3-dev
  • 1

3.安装pangolin 0.6版本

先git下载

git clone https://github.com/stevenlovegrove/Pangolin.git
  • 1

安装依赖

sudo apt install libglew-dev

sudo apt install cmake

sudo apt install libpython2.7-dev

sudo apt install pkg-config

sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

编译

cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
  • 1
  • 2
  • 3
  • 4
  • 5

测试
在你所放置的Pangolin文件下,运行此示例,效果显示是一个红绿蓝立方体,表示即为安装成功。

cd build/examples/HelloPangolin
./HelloPangolin
  • 1
  • 2

4.安装Opencv安装

参考ORB SLAM3安装方法二
最新的ORB-SLAM3要求OpenCV 4.4及以上,但是最好不要安装OpenCV4以上。4默认不会生成.pc文件,最后查看版本的时候查看不到,找不到包。

查看已安装的opencv版本

pkg-config --modversion opencv
  • 1

5.DBoW2 and g2o安装

DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
ORB-SLAM3的源码包自带DBoW2 and g2o,编译时会自动安装,不用管。

3、ORB-SLAM3编译和安装

参考博文:https://blog.csdn.net/holly_Z_P_F/article/details/118031317
官方源码编译

cd ORB_SLAM3
chmod +x build.sh
./build.sh
  • 1
  • 2
  • 3

注意:在这之前先打开ORB-SLAM3对应的CMakeLists.txt
找到 find_package(OpenCV 4.4)这行代码,将OpenCV版本号改为find_package(OpenCV 3.2)
因为我们之前安装的就是3.2版本的,而在最新的ORB-SLAM3中要求是4.4及以上版本,改成3.2不影响实验

注意:这个build.sh是官方给的安装脚本,执行这个即可编译。但会出现报错:
在这里插入图片描述这个报错原因就是内存不够,我虚拟机分配的1G内存,执行最后一步对ORB SLAM3进行编译的时候会疯狂的吃内存。
打开build.sh这个脚本,脚本里面内容如下:

echo "Configuring and building Thirdparty/DBoW2 ..."
 
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
 
cd ../../g2o
 
echo "Configuring and building Thirdparty/g2o ..."
 
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
 
cd ../../../
 
echo "Uncompress vocabulary ..."
 
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
 
 
echo "Configuring and building ORB_SLAM3 ..."
 
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

把这里面的make -j 换成了make -j4 来执行
因为 make -j 的话会自动检测你的核心数,选用合适的数量。我感觉是我分配的太多了,我分了八核,编译时候16G内存都不够,后来我改成了 make -j4 竟然编译好了,而且也不是很慢,就不到十分钟的样子。如果一直不行的话,可以试试换成 make 单核编译,就是速度慢一些而已。

因此建议依次执行如下每条指令进行编译。

1.编译Thirdparty/DBoW2

在ORB_SLAM3文件夹下打开终端

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
  • 1
  • 2
  • 3
  • 4
  • 5

2.编译Thirdparty/g2o

在/ORB_SLAM3下开终端

cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
  • 1
  • 2
  • 3
  • 4
  • 5

3.编译Thirdparty/Sophus

在/ORB_SLAM3下开终端

cd Thirdparty/Sophus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
  • 1
  • 2
  • 3
  • 4
  • 5

4.解压/ORB_SLAM3/Vocabulary/ORBvoc.txt.tar.gz

在/ORB_SLAM3下开终端

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
  • 1
  • 2
  • 3

5.编译ORB_SLAM3

在/ORB_SLAM3下开终端

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
  • 1
  • 2
  • 3
  • 4

第5步 编译ORB_SLAM3 是最容易出错的,解决办法参考https://blog.csdn.net/qq_64991046/article/details/132011407

4、数据集下载和运行

1.数据集下载

EuRoc数据集下载地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
下载比较慢,有百度网盘的可以用下面这个地址,我将所有EuRoc数据集(包括bag格式和ASL格式)都下载下来放里面了,链接永久有效
链接:https://pan.baidu.com/s/1-48M4G-CJ-j_AFSeLr8XDw?pwd=wd0s
提取码:wd0s
如图,Downloads下的ASL Dataset Format,点击任意link下载即可/ORB_SLAM3下新建Datasets,将下载好的文件Vicon Room 102放入Datasets,并改名为V102 。
在这里插入图片描述

2.运行

然后在ORB-SLAM3文件夹下创建一个文件夹dataset,

在dataset文件夹下将解压的数据集文件夹放进来

ma_slam /ORB-SLAM3/dataset/V102/mav0

然后,在ORB-SLAM3的源码中,有一个Examples文件夹

里面有一个脚本euroc_examples.sh,打开这个脚本

PS. 最新的ORB-SLAM3版本已经找不到了,可以去下面这个链接拷贝过来
https://github.com/electech6/ORB_SLAM3_detailed_comments
并且里面还有ORB-SLAM3的详细注释,打开这个脚本,里面有ORB-SLAM3各种运行模式针对各个数据集的运行指令,选择下载数据集对应模式下的指令,提取出来(以V102、单目+IMU为例):
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml “$pathDatasetEuroc”/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi

我加粗的地方需要改,“$pathDatasetEuroc”改为 ./dataset/V102,表示数据集所在的路径。(将dataset-V102_monoi 删除才会保存轨迹,我也不懂为什么,虽然带不带都不会报错)
最终得到下面这条指令

./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt
  • 1

报错解决:加载共享库报错解决
在ORB-SLAM3文件夹下打开终端执行这条指令
ORB-SLAM3成功运行
在这里插入图片描述
ps.这里好像出了一点小错误,存储轨迹出错了但神奇的是,仍然能看见存储的轨迹文件。
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/646937
推荐阅读
相关标签
  

闽ICP备14008679号