正文

前言

  本篇博客主要写了视觉SLAM常用库的安装方法,主要包括Eigen线性代数库、Sophus李代数库、OpenCV计算机视觉库、PCL点云库、Ceres非线性优化库和G2O图优化库等。安装步骤是直接从高翔大牛书上搬抄过来了的,目的是为了大家学习SLAM时能够顺利安装好这些开源库。Ubuntu系统为14.04版本,亲测安装有效,童叟无欺!初步先写这些库的安装过程,可能后面会写学习库的笔记等。工欲善其事,必先利其器,大家一起快乐的学习视觉SLAM吧,加油!初稿完成于2017年7月23日上午晴

1、Eigen线性代数库的安装

  Eigen库是一个C++线性代数开源库[1],它提供了有关线性代数、矩阵和矢量运算、数值分析及相关的算法。许多上层的软件库也使用Eigen进行矩阵运算,包括g2o、Sophus等。Eigen库由Ubuntu软件源中提供,通过apt命令可以很方便的安装Eigen。

sudo apt-get install libeigen3-dev

  Eigen与其他库不同,它是一个由头文件搭建起来的库,Eigen头文件的默认安装位置在“/usr/include/eigen3/”中。我们在使用时,只需引入Eigen头文件,不需要链接它的库文件,在CMakeLists.txt里添加Eigen头文件的目录。

#添加头文件
include_directories("/usr/include/eigen3")

  学习更多Eigen知识,请参考:http://eigen.tuxfamily.org/dox-devel/modules.html

2、Sophus李代数库的安装

  Eigen库提供了几何模块,但是没有提供李代数的支持。一个较好的李代数库是由Strasdat维护的Sophus库。Sophus库支持三维运动的SO(3)SE(3),此外还支持二维运动的SO(2)SE(2)和相似变换Sim(3)等内容。它是直接在Eigen库基础上开发的,因此我们不需要安装额外的依赖库。读者可以直接从github上获取Sophus库[2],Sophus库有模板类库和非模板类库两个版本,本书选择的是非模板类库。可以通过输入以下命令获得非模板类的Sophus库:

git clone http://github.com/strasdat/Sophus.git

  Sophus库本身是一个cmake工程,使用以下命令对它进行编译(Sophus库只需编译,无需安装)。

cd XXXX                 #进入Sophus库文件目录下
mkdir build #新建build文件夹
cd build #进入build文件夹
cmake .. #build上一层目录下执行CMake命令
make #编译

  在CMakeLists.txt中添加Sophus库的头文件和库文件,如下所示。find_package命令是cmake提供的寻找某个库的头文件和库文件的命令。如果cmake能找到它,就会提供头文件和库文件所在目录的变量。

#为了使用Sophus,需要使用find_package命令
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS})        #添加头文件目录 add_executable( useSophus useSophus.cpp)          #添加可执行文件
target_link_libraries( useSophus ${Sophus_LIBRARIES} )  #添加库文件目录

3、OpenCV计算机视觉库的安装

  OpenCV[3]提供了大量的开源视觉算法库,是计算机视觉中使用极其广泛的图像处理算法库。在Ubuntu下,可以选择从源代码安装和只安装库文件两种方式。从源代码安装是指从OpenCV官网中下载相应版本的OpenCV源码,然后使用cmake命令中编译安装,好处是可以选择的版本比较丰富,而且可以看到源代码;只安装库文件,是指安装由Ubuntu社区人员编译好的库文件,这样就无需重新编译一遍。本书使用的是OpenCV3系列,由OpenCV官网下载安装包编译安装。

  在编译之前,需要先安装OpenCV库的依赖项:

sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev 
libopenexr-dev libtbb-dev

  在configure中选择默认设置即可,opencv3要下载一个ippicv的第三方包(ippicv_linux_20151201.tgz),直接下比较慢,可以自己下后,放到 3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e里即可。 然后对Opencv安装包编译安装,OpenCV库和普通的cmake工程一样,编译安装如下:

......
make            #编译
sudo make install    #安装

  OpenCV库的头文件和库文件默认安装在"/usr/local"目录下,在CMakeLists.txt中添加OpenCV库的头文件和库问价如下所示:

find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS})         #添加头文件目录 add_executable( imageBasics imageBasics.cpp)          #添加可执行文件
target_link_libraries( imageBasics ${OpenCV_LIBS} )   #添加库文件目录

注:在安装opencv 3.2时,由于ROS系统自带opencv2,因此需要修改安装目录,参考博客:ubuntu下opencv3.2.0和opencv2.4.8共存\

4、PCL点云库的安装

  PCL库是点云库(Point Cloud Library)[4]。PCL库的安装比较容易,输入以下命令即可(也可以使用源代码安装):

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

  安装完成后,PCL库的头文件将安装在"/usr/include/pcl-1.7/"中。库文件位于"/usr/lib/"中。在CMakeLists中添加头文件和库文件如下:

find_package( PCL REQUIRED COMPOMENT common io )
include_directories( ${PCL_INCLUDE_DIRS})         #添加头文件目录 add_executable( joinMap joinMap.cpp)          #添加可执行文件
target_link_libraries( joinMap ${PCL_LIBRARIES} )   #添加库文件目录

  生成的点云文件以pcd的格式存储,用PCL提供的可视化程序打开这个文件:

pcl_viewer map.pcd

5、Ceres非线性优化库的安装

  Ceres库是来自谷歌的非线性优化库[5],Ceres库面向通用的最小二乘问题的求解,作为用户,我们需要做的就是定义优化问题,然后设置一些选项,输入Ceres求解即可。Ceres库建议去github上下载[6],Ceres库是一个cmake工程,安装前需要安装它的依赖项,主要是谷歌的一些日志和测试工具。

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

  安装好依赖项之后,使用cmake编译并安装Ceres库。Ceres库的头文件安装在"/usr/local/include/ceres/"目录下,库文件安装在"/usr/local/lib/"目录下。在CMakeList.txt中添加头文件和库文件路径的命令,如下。

# 添加cmake模块以使用ceres库
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )
find_package( Ceres REQUIRED )
include_directories( ${CERES_INCLUDE_DIRS})         #添加头文件目录 add_executable( curve_fitting main.cpp )          #添加可执行文件
target_link_libraries( curve_fitting ${CERES_LIBRARIES} )   #添加库文件目录

视觉slam十四讲开源库安装教程的更多相关文章

  1. 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM

    下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/slambook 第二讲:初识SLAM 2.4.2 Hello SLAM(书本P2 ...

  2. 《视觉SLAM十四讲》第2讲

    目录 一 视觉SLAM中的传感器 二 经典视觉SLAM框架 三 SLAM问题的数学表述 注:原创不易,转载请务必注明原作者和出处,感谢支持! 本讲主要内容: (1) 视觉SLAM中的传感器 (2) 经 ...

  3. 高博-《视觉SLAM十四讲》

    0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...

  4. 《视觉SLAM十四讲》第1讲

    目录 一 视觉SLAM 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 视觉SLAM 什么是视觉SLAM? SLAM是Simultaneous Localization and Mappin ...

  5. 视觉slam十四讲第七章课后习题6

    版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...

  6. 视觉slam十四讲第七章课后习题7

    版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/newneul/p/8544369.html  7.题目要求:在ICP程序中,将空间点也作为优化变量考虑进来 ...

  7. 视觉SLAM十四讲:从理论到实践 两版 PDF和源码

    视觉SLAM十四讲:从理论到实践 第一版电子版PDF 链接:https://pan.baidu.com/s/1SuuSpavo_fj7xqTYtgHBfw提取码:lr4t 源码github链接:htt ...

  8. 高翔《视觉SLAM十四讲》从理论到实践

    目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...

  9. 《视觉SLAM十四讲》学习日志(二)——初识SLAM

    小萝卜机器人的例子: 就像这种机器人,它的下面有一组轮子,脑袋上有相机(眼睛),为了让它能够探索一个房间,它需要知道: 1.我在哪——定位 2.周围环境怎么样——建图 定位和建图可以理解成感知的 &q ...

随机推荐

  1. Linux Device Tree

     原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ 设备树使用手册 基本数据格式 设备树是一个包含节点和属性的简单树状结构.属性就是键-值对,而 ...

  2. 1、一、Introduction(入门): 0、Introduction to Android(引进到Android)

    一.Introduction(入门) 0.Introduction to Android(引进到Android) Android provides a rich application framewo ...

  3. pip更换下载源(提升下载速度)

    经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,或者下载速度很慢,所以我们最好是将自己使用的pip源更换一下,这样就能解决被 ...

  4. linux 网卡配置信息

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

  5. mysql类型对应Java的类型

    整型 JDBCtinyint         java.lang.Integersmallintmediumint       java.lang.Longint          bigint    ...

  6. Jsoup(三)-- Jsoup使用选择器语法查找DOM元素

    1.Jsoup可以使用类似于CSS或jQuery的语法来查找和操作元素. 2.实例如下: public static void main(String[] args) throws Exception ...

  7. osg剔除背面开启

    //设置背部剔除看不见背面东西 osg::ref_ptr<osg::CullFace> cullface=new osg::CullFace(osg::CullFace::BACK); s ...

  8. 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)

    在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...

  9. rgba和opacity区别

    首先来看rgba: R:红色值.正整数 | 百分数G:绿色值.正整数 | 百分数B:蓝色值.正整数 | 百分数A:Alpha透明度.取值0~1之间. 再看opacity: 后面的取值为从 0.0 (完 ...

  10. Malab 常用数学函数

    l        三角函数和双曲函数 名称 含义 名称 含义 名称 含义 sin 正弦 csc 余割 atanh 反双曲正切 cos 余弦 asec 反正割 acoth 反双曲余切 tan 正切 ac ...