搭建ORB-SLAM3在Ubuntu下的编译和运行环境
ORB-SLAM3论文
ORB-SLAM3 An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
搭建ORB-SLAM3在Ubuntu下的编译和运行环境
1. 安装编译PANGOLIN
Pangolin主要用于可视化和用户界面。
i. 下载源码:https://github.com/stevenlovegrove/Pangolin
ii. 按照git链接里的官方安装方式进行安装:
|
|
(我是直接下了源压缩包解压,没有使用git clone)
|
|
|
|
|
|
这一步存在问题,似乎没影响?(待解决)
cmake编译完成后,可以用官方提供的实例代码运行测试看看,路径/examples/HelloPangolin
./HelloPangolin
运行程序,结果如下:
2. 安装编译OpenCV
OpenCV用于ORB特征点提取
i. 官网下载OpenCV,选择sources版本
本次搭建下载的是opencv3.4.16
下载链接:Releases - OpenCV
最新的ORB_SLAM3的编译需要的是 opencv4.4,要不然会报编译错误,
需要在ORB_SLAM3源码里面修改 CMakeLists.txt 中 opencv 的关联版本。
ii. 解压
unzip opencv-3.4.16.zip
进入opencv目录:
cd opencv-3.4.16
iii. 安装依赖库:
|
|
如果出现 libjasper-dev 无法安装(大部分情况下会出现),就单独对它进行安装:
|
|
不出意外的话,就会出意外了,在
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
这一步有可能会报错如下(没报错的话就直接下一步了):
原因是更换三方源没有对应的Key,
解决办法:直接执行如下命令,比如这里没有 3B4FE6ACC0B21F32
,就需要执行
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
iv. 创建编译目录(release)并进入
mkdir release && cd release
v. cmake配置编译
|
|
vi. make编译
sudo make
vii. 安装
sudo make install
viii. 环境配置添加库路径
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
ix. 更新系统库
sudo ldconfig
x. 配置bash
sudo vim /etc/bash.bashrc
在文件最末尾添加:
|
|
执行命令使配置生效:source /etc/bash.bashrc
更新:sudo updatedb
有可能出现updatedb
命令识别不到的问题
执行:sudo apt install mlocate
再执行updatedb
xi. 使用opencv自带smaple测试是否安装成功
- cd 到
opencv-3.4.16/samples/cpp/example_cmake
目录下 - 依次执行:
|
|
出现 “Hello OpenCV”,表示安装成功
3. 安装boost库
i. 下载压缩包
Index of main/release/1.79.0/source
ii. 依次执行如下命令,完成编译和安装
解压:tar -xzvf boost_1_79_0.tar.gz
cd进入解压出来的文件夹,执行命令:sudo ./bootstrap.sh
iii. 再执行下面的命令,这样头文件就被默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下
执行:
|
|
4. 安装Eigen 3
sudo apt install libeigen3-dev
5. 安装openssl-devel
sudo apt install libssl-dev
6. 安装Realsense
-
下载realsense
-
安装依赖项
1 2 3 4 5
cd librealsense sudo apt-get install libudev-dev pkg-config libgtk-3-dev sudo apt-get install libusb-1.0-0-dev pkg-config sudo apt-get install libglfw3-dev sudo apt-get install libssl-dev
-
make(可能需要root用户)
1 2 3 4 5 6 7
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && udevadm trigger mkdir build cd build cmake ../ -DBUILD_EXAMPLES=true make sudo make install
-
测试
realsense-viewer
7. 编译SLAM3源码
i. 下载源码
https://github.com/UZ-SLAMLab/ORB_SLAM3
ii. 解压后进目录
|
|
iii. 修改CMakeList.txt中opencv版本号
由于之前安装的opencv是3.4.16版,
ORB_SLAM3源码编译要的是4.4,版本不对,编译时会报如下错误:
执行:sudo vim CMakeLists.txt
找到opencv的地方,将他修改成安装的版本号
iv. 解决源码编译过程中踩到的坑!(编译时候只能说一步一坑了)
-
Eigen版本问题
解决办法:
修改 CMakeLists.txt 中Eigen版本号
执行:
sudo vim CMakeLists.txt
FIND_PACKAGE(Eigen3 3.1.0 REQUIRED)
改为FIND_PACKAGE(Eigen3 REQUIRED)
-
编译时有可能会报很多
-std=C++
相关语法错误,具体原因可能是C++支持版本等问题解决办法:
sudo vim CMakeLists.txt
直接注掉下面这两行:
-
运行时,有可能碰到如下错误,编译到一半,虚拟机直接崩了
解决办法: 虚拟机设置 –> 显示器 –> 加速3D图像(3),取消勾选
-
内存溢出
解决办法:
合理修改
build.sh
中make -j
参数(因为
make -j
的话会自动检测你的核心数,选用合适的数量,比如换成make -j4
或者make -j1
来执行) -
C++标准版本错误
解决方法:
指定C++标准版本为14
orb-slam3/CMakeLists.txt
中添加set(CMAKE_CXX_STANDARD 14)
或者add_compile_options(-std=c++14)
v. 编译源码
依次执行如下命令:
|
|
成功编译如图:
8. 数据集测试
i. 下载数据集
kmavvisualinertialdatasets – ASL Datasets
本次环境搭建,下载的是V101数据集:Vicon Room 1 01(下载ASL格式)
ii. 运行数据集
- 在
ORC_SLAM3
目录下新建DataSets
文件夹 - 将下载的数据集拷贝到
DataSets
下,解压 - 执行如下命令:
|
|
运行结果如下:
右侧是数据集场景、特征点、轨迹等抓取过程的逐帧播放
左侧是算法运行的效果,其中可以选择显示/隐藏Point、KeyFrame、Gragh等。
iii. 其他数据集测试
Machine Hall 01:
|
|