将高博的视觉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(暗示中…)。
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
安装前需要安装以下依赖:
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的环境,所以在装书上的环境时就多留了个心眼,将安装的方法、遇到的问题以及相应的解决方法都陆陆续续记录了下来,最后汇总成这篇博文。也是第一次写这么长的博客,希望能够帮助到大家!