前言

将高博的视觉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十四讲(第二版)环境安装心得体会相关推荐

  1. 视觉SLAM十四讲第二版踩坑总结

    寒假花了点时间把slam第二版过了一遍,安装库文件实在太麻烦,我又总是因为内存问题把ubuntu系统搞坏,前前后后安了三四次.在此,记录第二版安装踩坑,如果未来不幸又要重装,留个参考. 视觉SLAM十 ...

  2. 《视觉SLAM十四讲 第二版》笔记及课后习题(第一讲)

    前言 之所以想要写这个系列的博客,是因为想要总结一下高博的<SLAM视觉十四讲第二版>的各章内容以及自己对书后习题的一些做法,也算是对自己学习过程的一个总结和回顾.博客分为两个大部分,即读 ...

  3. 《视觉SLAM十四讲 第二版》课后习题

    本文为<视觉SLAM十四讲>(第二版)的课后习题解答,为本人学习时参考着网上的资源所写的答案,可能有所纰漏,希望大家指出. 文章目录 第1讲 预备知识 第2讲 初始SLAM 第3讲 三维空 ...

  4. 《视觉SLAM十四讲 第二版》笔记及课后习题(第七讲)

    读书笔记:视觉里程计1 之前的内容,介绍了运动方程和观测方程的具体形式,并讲解了以非线性优化为主的求解方法.从本讲开始,我们结束了基础知识的铺垫,开始步入正题:按照第二讲的内容,分别介绍视觉里程计.优 ...

  5. 《视觉SLAM十四讲 第二版》笔记及课后习题(第十二讲)

    读书笔记:建图 本讲我们开始介绍建图部分的算法.在前端和后端中,我们重点关注同时估计相机运动轨迹与特征点空间位置的问题.然而,在实际使用SLAM 时,除了对相机本体进行定位之外,还存在许多其他的需求. ...

  6. 《视觉SLAM十四讲 第二版》笔记及课后习题(第三讲)

    读书笔记:三维空间刚体运动 本讲介绍视觉 SLAM 的基本问题之一:一个刚体在三维空间中的运动是如何描述的.我们当然知道这由一次旋转加一次平移组成.平移确实没有太大问题,但旋转的处理是件麻烦事.我们将 ...

  7. 视觉SLAM十四讲第二版[第2讲]

    目录 前言 一.2.1-2.2内容 二.2.3内容 1.运动和观测概念 2.观测方程 三.2.4内容 总结 前言 兄弟,本章没什么难理解的东西,就是后面如果你对ubuntu不了解的话就会像我每天跟个弱 ...

  8. slam十四讲第二版 pdf_聊聊这两年学习slam啃过的书

    作者:Amber 来源:微信公众号|3D视觉工坊(系投稿) 「3D视觉工坊」技术交流群已经成立,目前大约有8000人,方向主要涉及3D视觉.CV&深度学习.SLAM.三维重建.点云后处理.自动 ...

  9. 史上最简SLAM零基础解读(10.1) - g2o(图优化)→简介环境搭建(slam十四讲第二版为例)

    本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始   文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}提供了本人 \co ...

  10. 【slam十四讲第二版】【课本例题代码向】【第七讲~视觉里程计Ⅱ】【使用LK光流(cv)】【高斯牛顿法实现单层光流和多层光流】【实现单层直接法和多层直接法】

    [slam十四讲第二版][课本例题代码向][第七讲~视觉里程计Ⅱ][使用LK光流(cv)][高斯牛顿法实现单层光流和多层光流][实现单层直接法和多层直接法] 0 前言 1 使用LK光流(cv) 1.1 ...

最新文章

  1. 如何最大限度提高.NET的性能
  2. [ 一起学React系列 -- 6 ] 秘术之时间旅行-1
  3. 视频编解码的理论和实践2:Ffmpeg视频编解码
  4. python笔记基础-python学习笔记(一)python简介和基础
  5. Xilinx IP解析之Processor System Reset v5.0
  6. 216位攻城狮送给程序猿的10个新年礼物
  7. c语言程序阅读题库,C语言程序设计-阅读程序题库及答案.doc-资源下载在线文库www.lddoc.cn...
  8. 微矿Qlib:业内首个AI量化投资开源平台
  9. mysql 参数化分页_LR12 DataWizard从Mysql数据取参数化数据
  10. nth-of-type和nth-child的区别
  11. VS2010 winform程序发布步骤
  12. 【狂神说Redis】2Redis入门 2-1概述
  13. DSP初识-20151111
  14. 新买的笔记本电脑怎么分盘_2020年笔记本电脑选购有哪些建议和推荐?
  15. 【洛谷】P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布(详细代码)
  16. 51单片机学习:LED闪烁实验
  17. ASCII码对照表:
  18. 十一、决策树和随机森林
  19. SpringBoot定时器+文件Md5码实现文件变动检测
  20. 电脑桌面登录服务器,使用windows远程桌面连接登录Windows实例

热门文章

  1. Java数据结构之单链表下
  2. 计算机游戏专业开题报告,2015游戏设计专业毕业论文开题报告范文(2)
  3. Zotero使用第三方云服务同步(Dropbox、OneDrive、Google Drive)
  4. Navicat 查询创建工具 | 设计 SELECT 查询 - Part 1
  5. MIPS架构下的逆向初探
  6. css中radio单点,css3实现radio选择效果
  7. CF#504,#505(based on VK Cup 2018 Final)上红记
  8. 浏览器排行榜 哪个更好用!~
  9. 2百G数据排序的笨驴方法与猴子方法
  10. 18岁,赚到了人生中的第一个10W!