MAC 如何配置 PCL 庫並在 VS Code 中使用

Last_Whisper發表於2023-03-06

MAC 如何配置 PCL 庫並在 VS Code 中使用

首先,讓我們簡單介紹一下。PCL(英語:Point Cloud Library)是一個開源的演算法庫,用於處理點雲和計算機視覺中的三維幾何過程。PCL包含點雲濾波、特徵估計、三維重建、點雲配準、模型擬合、目標識別和分割等演算法。每個模組都由一個更小的庫實現(如:libpcl_filterslibpcl_featureslibpcl_surface等),可以單獨編譯。PCL有自己的儲存點雲的資料格式——PCD(英語:Point Cloud Data),但也可以載入和儲存許多其他格式的資料。它是用C++ 編寫的,並在BSD許可下發布。

接下來我將介紹我如何在 MAC OS 上配置 PCL 並編譯執行一個示例程式。

Step1 安裝 Homebrew

開啟終端,輸入:

ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

Step2 使用 Home-brew 安裝 PCL

brew install pcl

這樣就會安裝到 PCL 的相關依賴庫。我這裡下載到的路徑是:(透過 ⌘command + ⇧shift + . 開啟隱藏軟體檢視)/usr/local/Cellar 下(這在後面的配置中很重要)

Step3 編譯並測試一個示例的 PCL 程式碼

首先,我們需要在工程目錄,或者當前的目錄下新建 CMakeLists.txt 例如 (~/Desktop/PCL_Test/CMakeLists.txt),在該檔案中寫入:

我們可以先在終端中測試是否存在 cmake ,如果不存在可以使用 brew install cmake 安裝

cmake_minimum_required(VERSION 2.6 FATAL_ERROR) # 選擇cmake版本
project(PCLtest) # 給工程命名
find_package(PCL 1.3 REQUIRED COMPONENTS common io) # 使用find_package尋找指定版本PCL的指定模組,如果想匯入全部模組,也可以寫為 find_package(PCL REQUIRED) include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(PCLtest main.cpp)
target_link_libraries(PCLtest ${PCL_LIBRARIES})

這一段我目前也沒有看懂。

其次,我們在當前工作目錄建立一個 main.cpp~/Desktop/PCL_Test/main.cpp),並寫入:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
 
int main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ> cloud;
 
  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.points.resize (cloud.width * cloud.height);
 
  for (size_t i = 0; i < cloud.points.size (); ++i)
  {
    cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }
 
  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
 
  for (size_t i = 0; i < cloud.points.size (); ++i)
    std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
 
  return (0);
}

隨後在,當前工作目錄新建 build 資料夾,如(~/Desktop/PCL_Test/build

cd ~/Desktop/PCL_Test
mkdir build

最後開啟終端,進行編譯:

cd build
cmake ..
make 

編譯後執行工程檔案(樣例中,我們命名的是 PCLtest

>>>> ./PCLtest
>>>> Saved 5 data points to test_pcd.pcd.
    0.0080142 0.694695 -0.26015
    -0.342265 -0.446349 0.214207
    0.173687 -0.84253 -0.400481
    -0.874475 0.706127 -0.117635
    0.908514 -0.598159 0.744714

Step4 解決在 VS Code 中的使用問題。

因為 PCL 是新下載的,如果我們不把路徑告訴 VS Code 的話,就會在 include 的位置,出現特別折磨的紅色波浪線。

我們透過以下幾步即決:

  • ⌘command + shift + p 呼叫出命令皮膚
  • 選擇,首選項,開啟使用者設定(JSON)
  • 進去後,找到 "C_Cpp.default.includePath"

新增對應路徑:(我們只需要新增最後兩個即可,eigen 是用於解決 #include <pcl/io/pcd_io.h> 的路徑問題。

"C_Cpp.default.includePath": [
		"xxxxx",
        "/usr/local/Cellar/pcl/1.12.1_2/include/pcl-1.12/",
        "/usr/local/Cellar/eigen/3.4.0_1/include/eigen3"
    ],

Reference

相關文章