1. 程式人生 > >ubuntu中需要安裝的開源庫(SLAM14講為主)

ubuntu中需要安裝的開源庫(SLAM14講為主)

新裝了ubuntu16.04,之前的開源庫全部需要重灌,這裡總結一下需要裝的庫,以及裝的步驟。

總的來說,需要裝Eigen線性代數庫、Sophus李代數庫、OpenCV計算機視覺庫、PCL點雲庫、Ceres非線性優化庫、G2O圖優化庫(Octomap八叉樹地相簿、DBoW3詞袋模型庫)

1、Eigen線性代數庫

Eigen庫是一個C++線性代數開源庫,它提供了有關線性代數、矩陣和向量運算、數值分析及相關的演算法。

其安裝比較簡單:

sudo apt-get install libeigen3-dev

驗證安裝成功:

sudo updatedb

locate eigen3

2、Sophus李代數庫

Sophus庫提供李代數的支援。

2.1下載

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

2.2安裝:

cd XXXX                 
mkdir build             
cd build               
cmake ..                
make                    

3、OPENCV視覺計算機庫

sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libjasper-dev 
libopenexr-dev libtbb-dev
......(安裝步驟參看2.2)
make             #編譯
sudo make install    #安裝

4、PCL點雲庫的安裝

安裝依賴庫:

sudo apt-get update

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

下載原始碼

 git clone https://github.com/PointCloudLibrary/pcl.git

編譯(時間漫長)

     cd pcl
     mkdir release
     cd release
     cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \
           -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \
           -DCMAKE_INSTALL_PREFIX=/usr ..
 
     make

安裝

     sudo make install

測試安裝結果:

測試程式碼main.cpp:

#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
 
 
int main(int argc, char **argv) {
    std::cout << "Test PCL !!!" << std::endl;
    
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
    uint8_t r(255), g(15), b(15);
    for (float z(-1.0); z <= 1.0; z += 0.05)
    {
      for (float angle(0.0); angle <= 360.0; angle += 5.0)
      {
    pcl::PointXYZRGB point;
    point.x = 0.5 * cosf (pcl::deg2rad(angle));
    point.y = sinf (pcl::deg2rad(angle));
    point.z = z;
    uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
        static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
    point.rgb = *reinterpret_cast<float*>(&rgb);
    point_cloud_ptr->points.push_back (point);
      }
      if (z < 0.0)
      {
    r -= 12;
    g += 12;
      }
      else
      {
    g -= 12;
    b += 12;
      }
    }
    point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
    point_cloud_ptr->height = 1;
    
    pcl::visualization::CloudViewer viewer ("test");
    viewer.showCloud(point_cloud_ptr);
    while (!viewer.wasStopped()){ };
    return 0;
}

CMakeLists.txt檔案:

cmake_minimum_required(VERSION 2.6)
project(pcl_test)
 
find_package(PCL 1.2 REQUIRED)
 
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
 
add_executable(pcl_test main.cpp)
 
target_link_libraries (pcl_test ${PCL_LIBRARIES})
 
install(TARGETS pcl_test RUNTIME DESTINATION bin)

把main.cpp和CMakeLists.txt放在同一個資料夾後,執行

mkdir build

cd build

cmake..

cd ..
make
./pcl_test

結果:

5、Ceres非線性優化庫

見上一篇部落格。

6、g2o圖優化庫

安裝依賴項:

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

(最後一個是需要按tab鍵補全的,我選擇的是比較高的一個版本)

下載原始碼:

 git clone https://github.com/RainerKuemmerle/g2o.git

cmake編譯安裝

cd g2o

mkdir build

cd build

cmake..
make

sudo make install

安裝成功後可以在/usr/local/include/g2o中找到其標頭檔案,在/usr/local/lib中找到其庫檔案。

7、Pangolin

https://github.com/stevenlovegrove/Pangolin

 

.............