Ubuntu 配置安裝PCL


Ubuntu 配置安裝PCL

之前一直在Mac下開發,現在入手Ubuntu,也借此學習一下Linux下的源碼編譯安裝過程.

PCL簡介

PCL(Point Cloud Library)是在吸收了前人點雲相關研究基礎上建立起來的大型跨平台開源C++編程庫,它實現了大量點雲相關的通用算法和高效數據結構,涉及到點雲獲取、濾波、分割、配准、檢索、特征提取、識別、追蹤、曲面重建、可視化等。支持多種操作系統平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式實時系統上運行。如果說OpenCV是2D信息獲取與處理的結晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權方式,可以免費進行商業和學術應用。

具體步驟

1. 安裝依賴項

apt-get update && \
		apt-get install -y libflann-dev \
		libvtk5-dev \
		libqhull-dev

2. 下載源碼

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

3. 配置安裝

cmake -DCMAKE_BUILD_TYPE=Release .
make -j 8 # job數量根據自身的CPU核數定
sudo make install

4. 安裝目錄

  • 通過apt安裝的頭文件(如vtk)在/usr/include里面
  • 通過apt安裝的動態鏈接庫(如vtk)在/usr/lib里面
  • 自己編譯安裝的頭文件(如PCL)在/usr/local/include里面
  • 自己編譯安裝的動態鏈接庫(如PCL)在/usr/local/lib里面

以上文件夾在寫CMakeLists.txt使用find_package()命令都可以找到,這里列出來只是為了更加了解細節,或者有的代碼補全工具會需要庫的具體路徑

測試

main.cpp

#include <pcl/common/common_headers.h>
#include <pcl/visualization/pcl_visualizer.h>

boost::shared_ptr<pcl::visualization::PCLVisualizer> simpleVis(
    pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud)
{
    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(
        new pcl::visualization::PCLVisualizer("3D Viewer"));

    viewer->setBackgroundColor(0, 0, 0);
    viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
    viewer->addCoordinateSystem(1.0);
    viewer->initCameraParameters();
    return (viewer);
}

int main(int argc, char **argv)
{ 
    // 創建點雲
    pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr(
        new pcl::PointCloud<pcl::PointXYZ>);

    for (float z(-1.0); z <= 1.0; z += 0.05)
    {
        for (float angle(0.0); angle <= 360.0; angle += 5)
        {
            // 底面為橢圓
            pcl::PointXYZ basic_point;
            basic_point.x = 0.5 * cosf(pcl::deg2rad(angle));
            basic_point.y = sinf(pcl::deg2rad(angle));
            basic_point.z = z;
            basic_cloud_ptr->points.push_back(basic_point);
        }
    }

    basic_cloud_ptr->width = (int)basic_cloud_ptr->points.size();
    basic_cloud_ptr->height = 1;

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
    viewer = simpleVis(basic_cloud_ptr);
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
        boost::this_thread::sleep(boost::posix_time::microseconds(100000));
    }
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(demo01)

set(CMAKE_CXX_STANDARD 11)

find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(demo01 main.cpp)
target_link_libraries (demo01 ${PCL_LIBRARIES})

命令

cmake .
make
./demo01

運行結果

小結

之前配環境都是apt一鍵解決,在Mac上也是brew一下,沒有從源碼編譯過,這次實驗可以說更進一步了解了底層細節,學到很多.

Linux上開發還是挺舒服的~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM