[SLAM] Ubuntu系统下SLAM运行环境配置指南——参考资料

个人笔记,如有错误,敬请指正

序言

  众所周知,相比于写代码与跑代码,配置环境才是最麻烦的部分。去年的时候,我基于甲骨文公司的 VirtualBox 虚拟机,在 Ubuntu 下对《视觉SLAM十四讲》(第一版)中所有示例代码的运行环境进行了配置,最终大部分代码都可以成功运行。此外,我将过程中的一些需要注意的点,较为简略地记录在了文本文档中。但是,如此记录毕竟不够妥当,因此现特将其转录到个人博客中。

  这份记录最大的问题就是失之简略,可是今后大抵是不会再更新的,因为我已决定对第二版的运行环境进行配置,并详加记录。而两版代码的运行环境是有差别的——第一版所用的库都较老,第二版所用的库都较新,因而某些函数的定义已迥然不同,需要修改之后才能运行,毕竟不便。

  尽管如此,我认为这份记录还是具有一定参考价值的,现将其重新排版,具体内容如下:

基本配置

  Ubuntu14.04以及Ubuntu16.04实测问题较多,因此弃而不用,最后选择的是Ubuntu18.04

  同时,以下安装均需要一些必要的依赖库顺序如下:
  gcc
  g++
  cmake
  eigen3-dev

  其中cmake不用下载源文件再编译,直接apt-get安装即可

  此外,我也安装了一些其他的软件如下:
  vim
  kdevelop

  虚拟机最开始是使用Win10自带的hype-v,但是莫名其妙很卡,于是改用VirtualBox,事实证明,后者操作更为方便而且不卡。

Ceres库的配置

  Ceres最好下载老版本,这里使用的是1.13.0版本,较新的版本2.0.0会出现与Eigen3.3的冲突问题导致编译错误,这一错误参见: https://blog.csdn.net/qq_40574708/article/details/105325819

  https://blog.csdn.net/zhiwei121/article/details/88537576

  注意Ceres的依赖库也有Eigen,默认apt-get下载的是3.3.4版本的,因此与Ceres2.0.0版本出现冲突。

  Ceres1.13.0下载地址为:ceres-solver.org/ceres-solver-1.13.0.tar.gz

  首先安装依赖项,参考书上的依赖包以及https://blog.csdn.net/gj295983859/article/details/95182810如下

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev

  其中libcxsparse3.1.2这一版本的包不存在,可以换一个版本安装,这里安装的是libcxsparse3

g2o库的配置

  g2o的安装在Ubuntu14.04以及Ubuntu16.04中错误太多,原因似乎是一些依赖库比如Qt的版本问题,参见: https://blog.csdn.net/sunshinefcx/article/details/82945216

  与此同时,g2o不能安装新版本,否则会出现编译错误,作者在issues上现身说法说需要安装旧版本,下载地址:
  https://github.com/RainerKuemmerle/g2o/archive/20170730_git.tar.gz

  首先安装依赖项,参考新版本自带的README说明:
  libsuitesparse-dev
  libqt4-dev
  qt4-qmake
  libqglviewer-qt4-dev

  同时参考书上内容以及https://blog.csdn.net/qq_41647175/article/details/103093651
  libcholmod-dev qtdeclarative5-dev qt5-qmake

  这里libcholmod-dev并不存在,转而安装libcholmod3
  然后直接分析编译即可

Opencv库的配置

  书上需要安装的是OpenCV3,因此上https://gitee.com/mirrors/opencv下载OpenCV3.4版本的压缩包。

  首先安装依赖项,参考https://www.cnblogs.com/huangkai-blog/p/10202540.html如下:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

  参考书上依赖项,发现缺少libvtk5-dev,这个可以通过换中科大的软件源解决。而缺少的libjapser-dev则参考https://www.cnblogs.com/enumx/p/12357468.html如下:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

  此外,在编译OpenCV源代码时,注意不能在Windows共享文件夹下编译,否则会出现无法链接的错误如下。
  CMake Error: cmake_symlink_library: System Error: Operation not supported

PCL库的配置

  书上的libpcl-all这一依赖项并不存在,因此参考https://blog.csdn.net/Coderii/article/details/87636882更换为libpcl-dev

  三步骤如下:

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all

  实例运行后,发现找不到pcl_viewer,直接参照提示进行安装:
  sudo apt-get install pcl_tools

Sophus库的配置

  首先安装源代码:https://github.com/strasdat/Sophus
  然后一定要记得版本回滚

  编译出现错误,那么就参考https://blog.csdn.net/qq_40641575/article/details/81006349更改源文件Sophus/sophus/so2.cpp如下:

  SO2::SO2()
 {
   //unit_complex_.real() = 1.;
   //unit_complex_.imag() = 0.;
   unit_complex_.real(1.); 
   unit_complex_.imag(0.);
 }

  Eigen库如果出现找不到库文件的问题,那么就开sudo nautilus复制一下Eigen到usr/include/

  如果Sophus库出现未定义引用的问题,经过参考https://blog.csdn.net/u010003609/article/details/68961293以及https://blog.csdn.net/weixin_30673715/article/details/97520499分析可得出,其原因是因为没有将make install后/usr/local/lib/libSophus.so链接到Sophus_LIBRARIES,因此在CMakeLists.txt中,在链接之前添加:

  set(Sophus_LIBRARIES "/usr/local/lib/libSophus.so")

便可完美解决。

你可能感兴趣的:(SLAM)