参考教程
官网安装
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
依赖库
- Eigen : version 3.3.0 or later.
- g2o : Please use the latest release. Tested on commit ID 9b41a4e.
- SuiteSparse : Required by g2o.
- DBoW2 : Please use the custom version of DBoW2 released in https://github.com/shinsumicco/DBoW2.
- yaml-cpp : version 0.6.0 or later.
- OpenCV : version 3.3.1 or later.
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
3 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和cmake
OpenVSLAM。
等测试了再说。
问题
请先看这两个问题在开始后续安装
问题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}")
如图所显示
重新编译即可。
下一篇讲解下基本使用