视觉SLAM学习中各种库安装

参考:3. 视觉SLAM十四讲各种库安装_HITLDY的博客-CSDN博客

视觉slam十四讲开源库安装教程 - feifanren - 博客园

(104条消息) 视觉SLAM十四讲学习笔记—ch6 关于bug aka class ceres::internal::FixedArray<double, 3>}’ has no member named_路拾遗37的博客-CSDN博客

目录

目录

目录

1. Eigen3

2. Sophus

非模板类

模板类

3. OpenCV3 

opencv+contrib安装

opencv+contrib+cuda安装

4. PCL点云库

pcl-1.8

1. 下载源码:

2. 安装依赖:

3. 安装pcl:

5. Ceres非线性优化库

6. Pangolin

7. Octomap

8. Cmake

9. g2o

官方网站:


 


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

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源码文件下:(更多问题可参考ubuntu下安装Sophus库出现问题及解决办法_逗比熊二的大哥-CSDN博客)

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.);
}

模板类

slam十四讲(第二版)中安装的为模板类Sophus,该sophus对eigen库的版本有要求,如果你有3.3以下的版本的eigen,那么请先卸载:

sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums  

安装eigen3.3以上版本(这里我选用最新的3.3.6,注意3.2系列的不可以!!!)

注意:千万不要使用 sudo apt-get install libeigen3-dev 因为这个命令下载的是3.2版本的eigen,从而无法与模板类的sophus相匹配

正确方法:
(1)在官网(Eigen)下载安装包:eigen-3.3.6.tar.bz2 ,然后提取到此处
(2)进入文件夹eigen-3.3.6,右键在终端打开。
(3)进行安装

mkdir build
cd build
cmake ..
sudo make install

Sophus安装

自己建立一个文件夹,在终端打开,然后

git clone https://github.com/strasdat/Sophus.git
cd Sophus/

mkdir build
cd build
cmake ..
make
sudo make install

在这里强调!不要回滚git checkout a621ff,否则会装成老版本的非模板sophus(网上大多教程都有回滚)
千万不要回滚!!!!!
且强调
sudo make install一定要有

在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 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..               
#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共存\


opencv+contrib安装

文件准备

1.opencv-3.3.1.zip
2. opencv_contrib-3.3.1.zip

准备
先安装以下依赖包

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  

sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-dev

sudo apt-get install pkg-config

编译
1.解压下载好的包:

sudo unzip opencv-3.3.1.zip
sudo unzip opencv_contrib-3.3.1.zip

2.解压完后需要将opencv_contrib.zip提取到opencv目录下,同时在该目录下新建一个文件夹build:

sudo cp -r opencv_contrib-3.3.1 opencv-3.3.1  #复制opencv_contrib到opencv目录下

cd opencv-3.3.1

sudo mkdir build                              #新建文件夹build

3.现在进入到opencv-3.3.1目录下,查看文件结构:

#ls

3rdparty  cmake            data     LICENSE               platforms
apps      CMakeLists.txt   doc      modules               README.md
build     CONTRIBUTING.md  include  opencv_contrib-3.3.1  samples

4.进入build目录,并且执行cmake生成makefile文件:

cd build  
  
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/nvidia/opencv-3.3.1/opencv_contrib-3.3.1/modules/ .. 
 

opencv+contrib+cuda安装

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=OFF \
      -D OPENCV_EXTRA_MODULES_PATH=~/software/opencv-3.3.1/opencv_contrib-3.3.1/modules \-D WITH_CUDA=ON \
      -D WITH_CUBLAS=ON \
      -D DCUDA_NVCC_FLAGS="\
      -D_FORCE_INLINES" \
      -D CUDA_ARCH_BIN="6.1" \
      -D CUDA_ARCH_PTX="" \
      -D CUDA_FAST_MATH=ON \
      -D WITH_TBB=ON \
      -D WITH_V4L=ON \
      -D WITH_GTK=ON \
     -D WITH_OPENGL=ON ..

注意:OPENCV_EXTRA_MODULES_PATH就是你 opencv_contrib-3.3.1下面的modules目录,请按照自己的实际目录修改地址。还有后面的两点不可省略!!

接下来就是漫长的等待了…

生成完毕提示:

--   Install path:                  /usr/local
-- 
--   cvconfig.h is in:              /home/files/opencv-3.3.1/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv-3.3.1/build

5.在cmake成功之后,就可以在build文件下make了:

make -j8    	#8线程编译
sudo make install

接下来就是更漫长的等待了…具体时间因人而异,我的电脑跑了30分钟。没报错就意味着成功了,再sudo make install就ok了!

注意:make期间多多少少会遇到一些常见的错误提示,如:

编译时提示opencv_contrib缺少boostdesc_bgm.i等文件

错误提示:~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No suchfileor directory

这时如果查看build文件夹下的CMakeDownloadLog.txt,会发现其中指出boostdesc_bgm.i缺失,到其指定地址下载。

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

百度云链接:百度网盘 请输入提取码

提取码:e1wc

放在 opencv_contrib-3.3.1/modules/xfeatures2d/src/ 路径下,重新编译即可

报错 fatal error: opencv2/xfeatures2d.hpp: No such file or directory

删除build下的编译文件

cmake时加入

-D BUILD_opencv_xfeatures2d=OFF

然后重新编译

更多错误可参考:记录Ubuntu编译安装opencv

Linux Ubuntu16.04 Opencv3(+CUDA9.0)安装记录_差点没学上的xlj的博客-CSDN博客

6.链接库共享

编译安装完毕之后,为了让你的链接库被系统共享,让编译器发现,需要执行管理命令ldconfig:

sudo ldconfig -v  

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-dev

  更多安装细节,可参考:Ubuntu 配置安装PCL - 潇雨危栏 - 博客园

安装完成后,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

pcl-1.8

1. 下载源码:

网址:https://github.com/PointCloudLibrary/pcl/releases
找到 pcl-1.8.1,下载Source code



2. 安装依赖:

sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui 
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common  
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev 
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
sudo apt-get install libqhull-dev
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev



3. 安装pcl:

将下载的pcl源码解压后放在主目录下,然后编译安装:

cd pcl-pcl-1.8.1
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None -DBUILD_apps=ON -DBUILD_examples=ON ..
make -j4
sudo make install

CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.5)
project(pcl_test)

find_package(PCL 1.8 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(pcl_test pcl_test.cpp)

target_link_libraries (pcl_test ${PCL_LIBRARIES})

install(TARGETS pcl_test RUNTIME DESTINATION bin)

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


sudo apt-get install ros-kinetic-octomap ros-kinetic-octomap-mapping ros-kinetic-octomap-msgs ros-kinetic-octomap-ros ros-kinetic-octomap-rviz-plugins ros-kinetic-octomap-server

8. Cmake

1.通过以下命令查询cmake版本。

$ cmake --version

2.这里,我并没有卸载旧版本的cmake,而是直接安装新版本,而且这样没有出现问题。【非必须】
可去http://www.cmake.org/files查找需要的版本,写本博客时最新版为3.11.3,以此为例。

$ sudo apt-get install build-essential
$ wget http://www.cmake.org/files/v3.11/cmake-3.11.3.tar.gz
$ tar xf cmake-3.11.3.tar.gz
$ cd cmake-3.11.3
$ ./configure
$ make
$ sudo make install

3.创建cmake的软连接

  ln -sf /your cmake3.11 path/bin/*  /usr/bin/ 
  ln -sf /your/cmake-3.11.3/path/bin/*  /usr/bin/ 

4.然后,输入以下命令查询cmake版本。

$ cmake --version

如果输出以下信息,则表明安装成功。

cmake version 3.11.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).

9. g2o

某些软件包编译时需要高版本的Cmake,因此需要升级Cmake。 不能使用 sudo apt-get remove cmake卸载低版本cmake后再重装高版本,这样做会导致之前编译和安装的很多库一起被卸载!!!

正确步骤是:

1.去https://cmake.org/files/下载所需版本的源码。也可以使用wget下载,例如:

 wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz

2.解压

    tar -xvzf cmake-3.22.1.tar.gz

 3.进入解压目录,配置成功之后显示:CMake has bootstrapped. Now run make.

    chmod 777 ./configure
    ./configure

4.  配置完成后,编译:

    make

 5.编译完成后,安装:

    sudo make install

 6.最后使用新安装的cmake替换旧版本,其中/usr/local/bin/cmake为新安装的cmake目录。

sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force

7.最后测试cmake版本:

    cmake --version
    # cmake version 3.22.1

    # CMake suite maintained and supported by Kitware (kitware.com/cmake).


 

官方网站:

[1] Eigen官方主页:Eigen

[2] Sophus in github:GitHub - strasdat/Sophus: C++ implementation of Lie Groups using Eigen.

[3] OpenCV官网:Home - OpenCV

[4] PCL官网:Point Cloud Library | The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing.

[5] Ceres官网:Ceres Solver — A Large Scale Non-linear Optimization Library

[6] Ceres in github:GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library

[7] G2O in github:GitHub - RainerKuemmerle/g2o: g2o: A General Framework for Graph Optimization


 

你可能感兴趣的:(自动驾驶)