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

    技术2022-07-13  90

    前言

    将高博的视觉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

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

    在终端中编辑/etc/ld.so.conf :sudo vim /etc/ld.so.conf将 include /usr/local/lib 添加到文件中退出后,更新缓存: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的环境,所以在装书上的环境时就多留了个心眼,将安装的方法、遇到的问题以及相应的解决方法都陆陆续续记录了下来,最后汇总成这篇博文。也是第一次写这么长的博客,希望能够帮助到大家!

    Processed: 0.019, SQL: 9