视觉SLAM学习中各种库安装

参考:https://blog.csdn.net/weixin_44189610/article/details/102611169

https://www.cnblogs.com/feifanrensheng/p/8227716.html

目录

1. Eigen3

2. Sophus(非模板版本)

3. OpenCV3 

4. PCL点云库

5. Ceres非线性优化库

官方网站:


1. Eigen3

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

扫描二维码关注公众号,回复: 10314749 查看本文章

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

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

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

编译过程中可能会出现的问题:

/Sophus/sophus/so2.cpp:32:26: error: lvalue required as left operand of assignment
unit_complex_.real() = 1.;

/Sophus/sophus/so2.cpp:33:26: error: lvalue required as left operand of assignment
unit_complex_.imag() = 0.;

该错误可以定位到so2.cpp源码文件下:(更多问题可参考https://blog.csdn.net/haxiongha/article/details/82464148

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

修改为

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

在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. OpenCV3 

OpenCV提供了大量的开源视觉算法库,是计算机视觉中使用极其广泛的图像处理算法库。在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工程一样,编译安装如下:

cd .....                #进入库文件目录下
mkdir build             #新建build文件夹
cd build                #进入build文件夹
cmake ..                #build上一层目录下执行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} )        #添加库文件目录

 #头文件在/usr/local/include文件夹下
#库文件在/usr/local/lib下

 注:在安装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

  更多安装细节,可参考:https://www.cnblogs.com/fanghao/p/9340742.html

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

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

  安装好依赖项之后,使用cmake编译并安装Ceres库。

cd Ceres                #进入库文件目录下
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. Pangolin

安装依赖库

sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y

1、下载Pangolin、编译并安装(安装在home/下就行)

    git clone https://github.com/stevenlovegrove/Pangolin
    cd Pangolin 
    mkdir build 
    cd build    
    cmake ..     
    make -j4     
    sudo make install

7. Octomap

OctoMap库实现了一个三维网格占用映射方法,提供数据结构和映射算法在C ++特别适合于机器人。

sudo apt-get install libqglviewer-dev-qt4
git clone https://github.com/OctoMap/octomap
cd octomap
mkdir build && cd build
cmake ..
make
sudo make install


 

官方网站:

[1] Eigen官方主页:http://eigen.tuxfamily.org/index.php?title=Main_Page

[2] Sophus in github:http://github.com/strasdat/Sophus

[3] OpenCV官网:http://opencv.org

[4] PCL官网:http://pointclouds.org

[5] Ceres官网:http://ceres-solver.org

[6] Ceres in github:https://github.com/ceres-solver/ceres-solver

[7] G2O in github:https://github.com/RainerKuemmerle/g2o


 

发布了39 篇原创文章 · 获赞 14 · 访问量 8761

猜你喜欢

转载自blog.csdn.net/Night___Raid/article/details/105113617
今日推荐