将高博的视觉SLAM14讲(第二版)看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑。为了后来的人能够更加快速上手SLAM,现将书中环境安装心得记录如下。
建议直接按书中的方法,使用apt-get安装:
sudo apt-get install libeigen3-dev按照这个方法安装的Eigen版本应该是3.2.92版。
如果安装最新的 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(暗示中…)。
安装 Pangolin 之前需要先安装 Eigen,否则会报有关以下内容的错(详细的报错内容没有记录下来):pangolin::OpenGlMatrix
安装前需要安装以下依赖:
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安装前需要安装以下依赖:
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安装前需要安装以下依赖:
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)可以按照书上的方法直接安装:
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'
源码安装:
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的环境,所以在装书上的环境时就多留了个心眼,将安装的方法、遇到的问题以及相应的解决方法都陆陆续续记录了下来,最后汇总成这篇博文。也是第一次写这么长的博客,希望能够帮助到大家!