Ubuntu18.04搭建ORB-SLAM3环境

Ubuntu18.04搭建ORB-SLAM3环境

  • 一、环境准备
    • 1.安装gcc、g++
    • 2.安装cmake,用于编译
    • 3.安装Eigen库(矩阵运算)
    • 4.安装git
    • 5.Sophus
    • 6.安装opencv3.2.0
    • 7.安装PCL
    • 8.安装Pangolin(可视化工具)
    • 9.安装Ceres(日志和测试工具)
    • 10.g2o与DBoW2网址
  • 二、编译运行ORB-SLAM3(踩坑记录)

一、环境准备

1.安装gcc、g++

2.安装cmake,用于编译

3.安装Eigen库(矩阵运算)

4.安装git

5.Sophus

6.安装opencv3.2.0

7.安装PCL

8.安装Pangolin(可视化工具)

9.安装Ceres(日志和测试工具)

10.g2o与DBoW2网址

二、编译运行ORB-SLAM3(踩坑记录)

论文地址:https://arxiv.org/pdf/2007.11898.pdf
代码地址:https://github.com/UZ-SLAMLab/ORB_SLAM3
1.安装gcc、g++

sudo apt install g++
sudo apt install gcc

由于后续实验的需要进行gcc/g++降级,降为4.8版本

sudo apt-get install gcc -4.8 
sudo apt-get install g++ -4.8 

之后进入/usr/bin目录实现链接

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.8 gcc
sudo rm g++
sudo ln -s g++-4.8 g++

查看gcc/g++版本

gcc -v
g++ -v

2.安装cmake,用于编译

sudo apt install cmake

3.安装Eigen库(矩阵运算)

sudo apt-get install libeigen3-dev

查看eigen版本
找到/usr/include/eigen3/Eigen/src/Core/util路径下的Macros.h文件

#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 3
#define EIGEN_MINOR_VERSION 4

表示版本为3.3.9
检查安装位置
pkg-config --cflags eigen3
4.安装git

sudo apt-get install git

5.Sophus
选择非模板类,只需编译,无需安装

  git clone https://github.com/strasdat/Sophus.git

  cd Sophus

  git checkout a621ff  #回滚到a621ff版本

  mkdir build

  cd build

  cmake ..

6.安装opencv3.2.0
官网下载速度较慢,如下为镜像网站
https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/
选择3.2.0版本,下载
安装相关依赖项

sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev 

sudo add-apt-repository “deb http://security.ubuntu.com/ubuntu xenial-security main”
将下载的压缩包提取到home进行编译安装

cd  opencv-3.2.0/
mkdir build
cd  build 
cmake ..
make -j4    #npoc查看核心数
sudo make install

配置环境变量

sudo  gedit /etc/ld.so.conf.d/opencv.conf

将会打开一个空白文件
输入:

/usr/local/lib

保存退出

sudo ldconfig

配置环境文件

sudo gedit /etc/bash.bashrc

在末尾加入

#opencv3.2.0
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

检查opencv版本

pkg-config opencv --modversion

7.安装PCL

sudo apt-get install libpcl-dev pcl-tools

如果出现无法下载某个包的情况

sudo apt-get update

8.安装Pangolin(可视化工具)
安装依赖项

sudo apt-get install libglew-dev  libboost-dev libboost-thread-dev libboost-filesystem-dev

安装

git clone https://github.com/zzx2GH/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST= 1 ..
make  -j4
sudo make install

在此遇到错误
Ubuntu18.04搭建ORB-SLAM3环境_第1张图片到src中删除如下代码:

 find_package(FFMPEG QUIET)
    if(BUILD_PANGOLIN_VIDEO AND FFMPEG_FOUND)
      set(HAVE_FFMPEG 1)
      list(APPEND INTERNAL_INC  ${FFMPEG_INCLUDE_DIRS} )
      list(APPEND LINK_LIBS ${FFMPEG_LIBRARIES} )
      list(APPEND HEADERS ${INCDIR}/video/drivers/ffmpeg.h)
      list(APPEND SOURCES video/drivers/ffmpeg.cpp)
      list(APPEND VIDEO_FACTORY_REG RegisterFfmpegVideoFactory )
      list(APPEND VIDEO_FACTORY_REG RegisterFfmpegVideoOutputFactory )

即可快速编译成功
9.安装Ceres(日志和测试工具)
安装依赖项

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev

遇到无法找到libcxsparse3.1.2的问题
解决办法:

sudo gedit /etc/apt/sources.list    #打开sources.list
将deb http://cz.archive.ubuntu.com/ubuntu trusty main universe粘贴到文件中
sudo apt-get update   #更新源

安装

git clone https://github.com/ceres-solver/ceres-solver.git

出现错误
Ubuntu18.04搭建ORB-SLAM3环境_第2张图片
查资料后发现是ceres版本与eigen版本冲突
转而手动下载ceres1.14版本
https://distfiles.macports.org/ceres-solver/
编译失败
10.g2o与DBoW2网址
可不进行安装,在代码中作者已设置好自动安装
git clone https://github.com/dorian3d/DBoW2.git DBoW2
git clone https://github.com/RainerKuemmerle/g2o.git g2o

二、编译ORB-SLAM3

 cd ORB_SLAM3
 chmod +x build.sh
  ./build.sh

编译遇到错误

/home/xuchenxing/ORB_SLAM3/src/LocalMapping.cc:628:49: error: no match for ‘operator/’ (operand types are ‘cv::Matx’ and ‘float’)

在两个文件LocalMapping.cc和KannalaBrandt8.cpp中include后加入

namespace cv
{
template static inline
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n> &a, float alpha)
{
return Matx<_Tp, m, n>(a, 1.f / alpha, Matx_ScaleOp());
}
}

之后此问题解决,出现大量未引用的定义问题Ubuntu18.04搭建ORB-SLAM3环境_第3张图片
经过一段时间的测试,发现是由于后来eigen库的重装导致Pangolin出了问题,重新编译Pangolin后,ORBSLAM3编译通过!

测试
数据集为TUM_VI dataset 是两个fisheye镜头和一个惯性测量sensor录制的,这个数据集是在一个移动机器人上的 Kinect 记录的序列。 里边有包含了有超过 360度的转弯。 Bag文件还包含了激光雷达和odom的信息。
基于ground_truth 的轨迹 - ground truth trajectory
RGB movie and depth movie RGBD的信息
external camera view 扩展的摄像机视野
Downsampled bag file with point clouds
测试为单目相机+IMU

测试只有单目相机
输入命令:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

出现错误:
报错
查资料后发现,仍旧是Pangolin的问题,看了https://blog.csdn.net/qq_35042020/article/details/87632460这篇文章得以解决,方法如下:

//进入Pangolin的CMAKE工程根目录,Pangolin-master/src/display/device/display_x11.cpp 文件,CTRL+F找到GLX_SAMPLE_BUFFERS,注释两行代码。大概在123,124行。

    static int visual_attribs[] =
    {
        GLX_X_RENDERABLE    , True,
        GLX_DRAWABLE_TYPE   , GLX_WINDOW_BIT,
        GLX_RENDER_TYPE     , GLX_RGBA_BIT,
        GLX_X_VISUAL_TYPE   , GLX_TRUE_COLOR,
        GLX_RED_SIZE        , 8,
        GLX_GREEN_SIZE      , 8,
        GLX_BLUE_SIZE       , 8,
        GLX_ALPHA_SIZE      , 8,
        GLX_DEPTH_SIZE      , 24,
        GLX_STENCIL_SIZE    , 8,
        GLX_DOUBLEBUFFER    , glx_doublebuffer ? true : False,
        // 注释这行 GLX_SAMPLE_BUFFERS  , glx_sample_buffers,
        // 注释这行 GLX_SAMPLES         , glx_sample_buffers > 0 ? glx_samples : 0,
        None
    };

之后再次执行命令行又出现了cv的问题

Ubuntu18.04搭建ORB-SLAM3环境_第4张图片
原因是少了libgtk2.0-dev 这个依赖,运行如下命令进行安装

sudo apt-get install libgtk2.0-dev

之后进入opencv的文件夹重新编译,再重新编译ORBSLAM3。
又出现了段错误,将主文件夹中cmakelists与g2o中的cmakelists中-march=native删除即可。
出现Failed to load module “canberra-gtk-module”
解决办法:

sudo apt-get install libcanberra-gtk-module

结果
Ubuntu18.04搭建ORB-SLAM3环境_第5张图片Ubuntu18.04搭建ORB-SLAM3环境_第6张图片
/home/luckyxu/ORB_SLAM3/src/LoopClosing.cc:1911:51: error: no matching function for call to ‘std::list::erase(std::list::const_iterator&)’

你可能感兴趣的:(经验分享)