《视觉SLAM十四讲》中各库的安装

目录

  • 目录
  • 1. Eigen线性代数库的安装
  • 2. Sophus李代数库的安装
  • 3. OpenCV计算机视觉库的安装
  • 4. PCL点云库的安装
  • 5. Ceres非线性优化库的安装
  • 6. G2O图优化库的安装

1. Eigen线性代数库的安装

Eigen库是一个C++线性代数开源库,官方主页http://eigen.tuxfamily.org/dox-devel/modules.html。它提供了有关线性代数、矩阵和矢量运算、数值分析及相关的算法。许多上层的软件库也使用Eigen进行矩阵运算,包括g2o、Sophus等。Eigen库由Ubuntu软件源中提供,通过apt命令可以很方便的安装Eigen。

sudo apt-get install libeigen3-dev

Eigen头文件的默认安装位置在“/usr/include/eigen3/”中,如果不确定,可以输入以下命令查找:

sudo updatedb
locate eigen3

Eigen是一个纯用头文件搭建起来的库,在使用时只需要在CMakeLists.txt中引用Eigen的头文件即可,不需要链接库文件。

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

2. Sophus李代数库的安装

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

git clone http://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff

或直接从https://download.csdn.net/download/hz490727/10510302下载,Sophus库本身是一个cmake工程,使用以下命令对它进行编译(Sophus库只需编译,无需安装)。

tar -xzvf slam.tar.gz        #将下载的文件解压
cd slam                      #进入slam文件夹中
tar -xzvg Sophus.tar.gz      #将Sophus解压到当前文件夹下
cd Sophus                    #进入Sophus文件夹中
mkdir build                  #新建build文件夹
cd build                     #进入build文件夹中
cmake ..                     #在build上一层目录下执行CMake命令
make                         #编译

在CMakeLists.txt中添加Sophus库的头文件和库文件:

#为了使用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提供了大量的开源视觉算法库,是计算机视觉中使用极其广泛的图像处理算法库。在Ubuntu下,可以选择从源代码安装和只安装库文件两种方式。从源代码安装是指从OpenCV官网中下载相应版本的OpenCV源码,然后使用cmake命令中编译安装,好处是可以选择的版本比较丰富,而且可以看到源代码;只安装库文件,是指安装由Ubuntu社区人员编译好的库文件,这样就无需重新编译一遍。本书使用的是OpenCV3系列,由OpenCV官网下载安装包编译安装,官网地址https://opencv.org/releases.html,进入后选择Sources进行下载,此处安装的是OpenCV3.1.0,将下载的压缩文件解压到任意目录下。
在编译之前,需要先安装OpenCV库的依赖项:

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

若安装依赖项报错,则对上述依赖项进行依次单独安装,即:

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

然后对Opencv安装包编译安装,OpenCV库和普通的cmake工程一样,编译安装如下:

cd XXX    #XXX表示OpenCV解压后的文件夹
mkdir build
cd build
cmake ..
make
sudo make install

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

set(CMAKE_CXX_FLAGS "-std=c++11")                          #添加c++11标准支持

find_package( OpenCV REQUIRED )                            #寻找OpenCV库
include_directories( ${OpenCV_INCLUDE_DIRS})         #添加头文件 

add_executable( imageBasics imageBasics.cpp)         #添加可执行文件
target_link_libraries( imageBasics ${OpenCV_LIBS} )       #链接OpenCV库

4. PCL点云库的安装

PCL库是点云库(Point Cloud Library)。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

如果点云图打不开或者打开后点云图无法进行旋转等操作,执行以下命令:

sudo apt-get dist-upgrade                               #升级到最新版本

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

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

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

Ceres库的安装
**法一:**github上下载[https://github.com/ceres-solver/ceres-solver]
法二:从https://download.csdn.net/download/hz490727/10510302下载
Ceres库本身是一个cmake工程,使用以下命令对它进行编译并安装,以法二为例,其安装过程如下,找到下载的slam.tar.gz文件夹:

tar -xzvf slam.tar.gz              #将下载的文件解压
cd slam                            #进入slam文件夹中
tar -xzvg ceres-solver.tar.gz      #将Sophus解压到当前文件夹下
cd ceres-solver                    #进入Sophus文件夹中
mkdir build                        #新建build文件夹
cd build                           #进入build文件夹中
cmake ..                           #在build上一层目录下执行CMake命令
make                               #编译
sudo make install                  #安装

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} )       #添加库文件目录

6. G2O图优化库的安装

g2o是一个基于图优化的库,图优化是一种将非线性理论与图论结合起来的理论,在图优化中将顶点表示优化变量,边表示误差项,从而将非线性最小二乘问题转化成构建一直对应的一个图。
安装依赖项

sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2 libcholmod-dev

如果安装依赖项出错,则依次单独安装,并对依赖项使用table键填充名称
g2o图优化库的安装
**法一:**github上下载[https://github.com/RainerKuemmerle/g2o
法二:从https://download.csdn.net/download/hz490727/10510302下载
g2o库是一个cmake工程,使用以下命令对它进行编译并安装,以法二为例,其安装过程如下,找到下载的slam.tar.gz文件夹:

tar -xzvf slam.tar.gz              #将下载的文件解压
cd slam                            #进入slam文件夹中
tar -xzvg g2o.tar.gz               #将Sophus解压到当前文件夹下
cd g2o                             #进入Sophus文件夹中
mkdir build                        #新建build文件夹
cd build                           #进入build文件夹中
cmake ..                           #在build上一层目录下执行CMake命令
make                               #编译
sudo make install                  #安装

安装完成后,g2o库的头文件将在”/usr/local/g2o/”目录下,库文件在”/usr/local/lib/”目录下。在CMakeList.txt中添加头文件和库文件路径的命令:

# 添加g2o的依赖 
# 因为g2o不是常用库,要添加它的findg2o.cmake文件
LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules ) 
SET( G2O_ROOT /usr/local/include/g2o ) 
FIND_PACKAGE( G2O )

include_directories( ${G2O_INCLUDE_DIRS} )                   #添加头文件目录 
add_executable( curve_fitting main.cpp )                   #添加可执行文件
target_link_libraries( curve_fitting g2o_core g2o_stuff )        #添加库文件目录

你可能感兴趣的:(Linux学习,SLAM学习)