zoukankan      html  css  js  c++  java
  • openvslam开发(一)ubuntu1804安装openvslam

    参考教程

    官网安装

    https://openvslam.readthedocs.io/en/master/installation.html

    参考博客

    https://blog.csdn.net/qianbin3200896/article/details/107894029

     

    安装过程

    安装前先到最后看下可能遇到的问题。

    个人前提

    已经装过显卡驱动,装过cuda10.1(非必要),装过opencv4(本版也可以是3)

    电脑 联想y7000 

    显卡 1050TI

    系统 ubuntu18.04.5

    依赖库

    0.依赖安装

    sudo apt upgrade -y --no-install-recommends
    # basic dependencies
    sudo apt install -y build-essential pkg-config cmake git wget curl unzip
    # g2o dependencies
    sudo apt install -y libatlas-base-dev libsuitesparse-dev
    # OpenCV dependencies
    sudo apt install -y libgtk-3-dev
    sudo apt install -y ffmpeg
    sudo apt install -y libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev
    # eigen dependencies
    sudo apt install -y gfortran
    # other dependencies
    #请注意官网libyaml-cpp-dev 直接在这里安装了但是版本很低,需要用源码安装
    #sudo apt install -y libyaml-cpp-dev libgoogle-glog-dev libgflags-dev
    sudo apt install -y  libgoogle-glog-dev libgflags-dev
    
    # (if you plan on using PangolinViewer)
    # Pangolin dependencies
    sudo apt install -y libglew-dev
    
    # (if you plan on using SocketViewer)
    # Protobuf dependencies
    sudo apt install -y autogen autoconf libtool
    # Node.js
    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    sudo apt install -y nodejs
    
    #官网到此结束了 下面是网友额外的安装,怕少东西自己也可以装下
    
    sudo apt-get install -y libopenblas-dev
    sudo apt-get install -y --no-install-recommends libboost1.58-all-dev 
    sudo apt-get install -y libx11-dev 
    sudo apt-get install -y libgl1-mesa-dev sudo apt-get install libglu1-mesa-dev 
    sudo apt-get install -y freeglut3-dev 
    sudo apt-get install -y doxygen 
    wget https://nchc.dl.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz --no-check-certificate 
    tar -xzvf glew-2.1.0.tgz cd glew-2.1.0/ 
    make -j2
    sudo make install 
    sudo ln -s /usr/lib64/libGLEW.so.2.1 /usr/lib/libGLEW.so.2.1
    

      

      

    下面开始,每个库都要下在压缩包,自己找个地方存起来

    1. Eigen安装(最新3.3.7)

    wget -q https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.bz2
    tar xf eigen-3.3.7.tar.bz2
    rm -rf eigen-3.3.7.tar.bz2
    cd eigen-3.3.7
    mkdir -p build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        ..
    make -j4
    make install
    

     

    2 安装opencv

    2-1 官网的opencv是3.2,在ubuntu18上编译不通过,因为cuda10兼容问题。

    2-2 下面是网友安装的opencv3.4(简易版能用,没有cuda ,没有扩展库)

    wget -q https://github.com/opencv/opencv/archive/3.4.5.zip
    unzip -q 3.4.5.zip
    rm -rf 3.4.5.zip
    cd opencv-3.4.5
    mkdir -p build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        -DENABLE_CXX11=ON 
        -DBUILD_DOCS=OFF 
        -DBUILD_EXAMPLES=OFF 
        -DBUILD_JASPER=OFF 
        -DBUILD_OPENEXR=OFF 
        -DBUILD_PERF_TESTS=OFF 
        -DBUILD_TESTS=OFF 
        -DWITH_EIGEN=ON 
        -DWITH_FFMPEG=ON 
        -DWITH_OPENMP=ON 
        ..
    make -j2
    sudo make install 
    sudo ldconfig -v
    

      

    2-3 我直接从源码编译了最新的opencv4.5.1+扩展库+cuda10.1的依赖,需要一晚上。

    你要是想从源码编译,可以有选择选择编译哪些模块。例如省去扩展库和cuda

    教程

    https://www.cnblogs.com/kekeoutlook/p/14232440.html

    DBoW2

    cd /path/to/working/dir
    #安装作者自己的DBoW2
    git clone https://github.com/shinsumicco/DBoW2.git
    cd DBoW2
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        ..
    make -j4
    make install
    

      

      

    4 g2o

    强烈建议到官网手动下载源码最新压缩包代替git命令行下载。
    #git clone https://github.com/RainerKuemmerle/g2o.git
    cd g2o
    git checkout 9b41a4ea5ade8e1250b9c1b279f3a9c098811b5a
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        -DCMAKE_CXX_FLAGS=-std=c++11 
        -DBUILD_SHARED_LIBS=ON 
        -DBUILD_UNITTESTS=OFF 
        -DBUILD_WITH_MARCH_NATIVE=ON 
        -DG2O_USE_CHOLMOD=OFF 
        -DG2O_USE_CSPARSE=ON 
        -DG2O_USE_OPENGL=OFF 
        -DG2O_USE_OPENMP=ON 
        ..
    make -j4
    make install
    

      

    5安装yaml-cpp

    手动到网页

    https://github.com/jbeder/yaml-cpp/tags

     下载压缩包

    这里需要在CMakeLists.txt开启fPIC选项,即需要把160行左右行改为:

    set(yaml_cxx_flags "-Wall ${GCC_EXTRA_OPTIONS} -fPIC -pedantic -Wno-long-long ${yaml_cxx_flags}")
    

      如图所显示

    然后编译

    cd yaml-cpp
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        ..
    make -j2
    sudo make install 
    sudo ldconfig -v
    

      

    6 如何可视化

    有两种模式安装

    6-1PangolinViewer 软件查看

    cd /path/to/working/dir
    git clone https://github.com/stevenlovegrove/Pangolin.git
    cd Pangolin
    git checkout ad8b5f83222291c51b4800d5a5873b0e90a0cf81
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        ..
    make -j4
    make install
    

      

    6-2 socket.io-client-cpp 网页模式查看

    安装依赖 Protobuf.

    # for Ubuntu 18.04 (or later)
    sudo apt install -y libprotobuf-dev protobuf-compiler
    

    或者源码编译安装

    wget -q https://github.com/google/protobuf/archive/v3.6.1.tar.gz
    tar xf v3.6.1.tar.gz
    cd protobuf-3.6.1
    ./autogen.sh
    ./configure 
        --prefix=/usr/local 
        --enable-static=no
    make -j4
    make install
    

      

      

    安装SocketViewer

    强烈建议到官网手动下载源码最新压缩包代替git命令行下载。
    cd /path/to/working/dir
    git clone https://github.com/shinsumicco/socket.io-client-cpp.git
    cd socket.io-client-cpp
    git submodule init
    git submodule update
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        -DBUILD_UNIT_TESTS=OFF 
        ..
    make -j4
    make install
    

      

    3编译OPENVSLAM

    下载工程

    git clone https://github.com/xdspacelab/openvslam
    

      

    如果是 PangolinViewer,-DUSE_PANGOLIN_VIEWER=ON and -DUSE_SOCKET_PUBLISHER=OFF.

    mkdir build && cd build
    cmake 
        -DBUILD_WITH_MARCH_NATIVE=ON 
        -DUSE_PANGOLIN_VIEWER=ON 
        -DUSE_SOCKET_PUBLISHER=OFF 
        -DUSE_STACK_TRACE_LOGGER=ON 
        -DBOW_FRAMEWORK=DBoW2 
        -DBUILD_TESTS=ON 
        ..
    make -j4
    

      

    如果是SocketViewer  -DUSE_PANGOLIN_VIEWER=OFF and -DUSE_SOCKET_PUBLISHER=ON.

    cd /path/to/openvslam
    mkdir build && cd build
    cmake 
        -DBUILD_WITH_MARCH_NATIVE=ON 
        -DUSE_PANGOLIN_VIEWER=OFF 
        -DUSE_SOCKET_PUBLISHER=ON 
        -DUSE_STACK_TRACE_LOGGER=ON 
        -DBOW_FRAMEWORK=DBoW2 
        -DBUILD_TESTS=ON 
        ..
    make -j4
    

      

    安装

    sudo make install
    

      

    安装成功测试

     ./run_kitti_slam -h
    

      

    最后,如果工程

    如果OpenVSLAM异常终止,请使用配置-DBUILD_WITH_MARCH_NATIVE=OFF选项重建g2o和cmakeOpenVSLAM。

    等测试了再说。

    问题

    请先看这两个问题在开始后续安装 

    问题0 git下载的代码不是最新的,导致版本问题

    问题描述

    很多库的源码使用命令行直接git来的,但是不是最新的源码,导致编译生成的库不是最新的带来版本问题。

    例如:

    G2O

    git clone https://github.com/RainerKuemmerle/g2o.git
    

     用命令行下载的不是最新的,导致g2o版本不是最新的,后面openvslam编译时候找不到。

    yaml-cpp

    git clone https://github.com/jbeder/yaml-cpp
    

    也是同样问题。

    解决:

    直接手动网页访问,手动下载最新源码压缩包。

    问题1  yaml-cpp带来的问题

    ymal在后期opencvslam编译时候报错,调库的问题

     官网要求本版

    但是官网提供的安装方式

    apt install -y libyaml-cpp-dev

    默认最新也才是0.52不满足起码0.6的要求。

    需要从源码自己编译

    git clone https://github.com/jbeder/yaml-cpp
    cd yaml-cpp
    mkdir build && cd build
    cmake 
        -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
        ..
    make -j2
    sudo make install 
    sudo ldconfig -v
    

     

    但是,直接命令行git下载的不是最新的代码 

    git clone https://github.com/jbeder/yaml-cpp

    需要手动到网页

    https://github.com/jbeder/yaml-cpp/tags

     下载压缩包

      

    这里需要在CMakeLists.txt开启fPIC选项,即需要把160行左右行改为:

    set(yaml_cxx_flags "-Wall ${GCC_EXTRA_OPTIONS} -fPIC -pedantic -Wno-long-long ${yaml_cxx_flags}")
    

      如图所显示

     重新编译即可。





    下一篇讲解下基本使用



  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/14238636.html
Copyright © 2011-2022 走看看