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}")
    

      如图所显示

     重新编译即可。





    下一篇讲解下基本使用



  • 相关阅读:
    关于OC中.m文件下实现私有变量的方法,在.h文件下实现公有变量的方法
    mac中安装homebrew
    ios架构
    github命令记录
    Unity 游戏框架搭建 MonoBehaviour单例的模板
    Unity 游戏框架搭建 单例的模板
    unity 单列
    简单工厂与工厂
    NGUI动态播放视频
    在一个GameObject上进行多个AudioSource的控制
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/14238636.html
Copyright © 2011-2022 走看看