视觉SLAM十四讲(第二版)环境安装心得体会

前言

将高博的视觉SLAM14讲(第二版)看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑。为了后来的人能够更加快速上手SLAM,现将书中环境安装心得记录如下。

环境安装

1. 安装 Eigen3

建议直接按书中的方法,使用apt-get安装:

sudo apt-get install libeigen3-dev

按照这个方法安装的Eigen版本应该是3.2.92版。

2. 安装 Sophus

  • 如果安装最新的 Sophus(Sophus 1.0.0),则会报错,提示说需要 Eigen3.3.0 以上的版本,导致 Sophus 和Eigen 冲突的问题。

  • 我一开始是使用源码安装了 Eigen3.3.0,但由于源码安装的Eigen不是放在系统默认路径上,我之后安装 SuMa 的时候,报了各种关于 Eigen 的错,怎么都解决不掉。并且 Sophus 1.0.0 似乎和视觉SLAM十四讲中的代码不是很匹配,在跑第八章的direct.cpp的时候,报了如下错误(详细的报错内容没有记录下来):‘ScalarBinaryOpTraits’ in namespace ‘Eigen’

  • 解决方法:依然使用apt-get安装 Eigen3,然后安装高博在14讲里面使用的 Sophus。这个版本的 Sophus 可以在十四讲的 百度备份 里面找到(之后的环境的源码也可以使用这里面的,就不用再git clone)。

  • 或者大家到 这里 直接下该版本的 Sophus(暗示中…)。

3. 安装 Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make install

安装 Pangolin 之前需要先安装 Eigen,否则会报有关以下内容的错(详细的报错内容没有记录下来):pangolin::OpenGlMatrix

4. 安装 Ceres

安装前需要安装以下依赖:

sudo apt install -y \
    liblapack-dev \
    libsuitesparse-dev \
    libcxsparse3.1.4 \
    libgflags-dev \
    libgoogle-glog-dev \
    libgtest-dev

之后即可正常安装:

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make install

5. 安装 G2O

安装前需要安装以下依赖:

sudo apt install -y \
    qt5-qmake \
    qt5-default \
    libqglviewer-dev \
    libsuitesparse-dev \
    libcxsparse3.1.4 \
    libcholmod3.0.6

其中,之后安装了libqglviewer-dev后,才能够使用 g2o_viewer。之后源码安装 G2O:

git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make install

若安装过程中遇到以下报错:libg2o_viewer.so: cannot open shared object file

可按照以下步骤解决(参考了 这篇博文):

  1. 在终端中编辑/etc/ld.so.confsudo vim /etc/ld.so.conf
  2. include /usr/local/lib 添加到文件中
  3. 退出后,更新缓存:sudo ldconfig

6. 安装 OpenCV3

安装前需要安装以下依赖:

sudo apt install -y \
    build-essential \
    libgtk2.0-dev \
    libvtk5-dev \
    libjpeg-dev \
    libtiff5-dev \
    libjasper-dev \
    libopenexr-dev \
    libtbb-dev

之后和前面相似,使用源码安装的方式安装 OpenCV3,就不再赘述了。如果在安装时遇到报错(can not find vtkVersionMacros.h),则可通过安装以下依赖解决(参考了 这篇博文):

sudo apt install -y \
    python-vtk6 \
    libvtk6-dev \
    python-vtk

如果系统自带OpenCV2,可以参考 这篇博文 来安装OpenCV3,之后在CMakeLists.txt中添加如下代码来调用OpenCV3:

set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_DIR} )
include_directories(/usr/local/opencv3/include)

7. 安装 PCL

可以按照书上的方法直接安装:

sudo apt-get install libpcl-dev pcl-tools

但因为我想安装高版本的 PCL ,因此采用源码安装的方式,安装过程可以参考 这篇博文 。在源码安装之前,还需要安装其他的一些依赖:

sudo apt install -y \
    libvtk6.2 \
    libvtk6.2-qt \
    libvtk6-dev \
    libproj-dev

其中,若没有安装依赖libproj-dev,则会在安装 PCL 过程中报如下错误:*** No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so'

8. 安装 DBow3:

源码安装:

git clone https://github.com/rmsalinas/DBow3.git
cd DBow3
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make install

十四讲第11章的代码中,使用 DBow3 的方法有错,应将CMakeLists.txt中的:

set( DBoW3_LIBS "/usr/local/lib/libDBoW3.a" )

改为:

set( DBoW3_LIBS "/usr/local/lib/libDBoW3.so" )

总结

因为之后要做 SLAM 相关的课题,因此前后花了大概两个多月的时间看完了十四讲,说实话收获还是蛮大的。因为要在多台设备上安装SLAM的环境,所以在装书上的环境时就多留了个心眼,将安装的方法、遇到的问题以及相应的解决方法都陆陆续续记录了下来,最后汇总成这篇博文。也是第一次写这么长的博客,希望能够帮助到大家!

你可能感兴趣的:(环境安装,SLAM十四讲,c++)