理解點雲庫

2021-09-14 02:43:13 字數 1534 閱讀 3586

說好了要學習點雲處理,那就從基礎做起,我將根據《ros機械人程式設計》中點雲部分的內容寫一系列學習筆記。

完成後,再學習點雲庫pcl高階。

點雲是由飛行時間(time of flight)攝像頭和雷射掃瞄器在3d空間採集的有限點集構成的。

點雲庫(pcl)提供了大量資料型別和資料結構,不僅能方便的表示取樣空間中的點,而且可以表示取樣空間的不同屬性,比如顏色、法向量等。pcl同樣提供了許多最先進的演算法對資料樣本進行處理,比如濾波、模型估計、表面重建等。

點雲庫為處理3d資料提供了一組資料結構和演算法,ros的pcl介面提供了一組訊息以及訊息與pcl資料結構之間的轉換函式

點雲中最重要的公共字段

pcl演算法利用這些欄位來處理資料,並且使用者可以利用它們來建立自己的演算法。

pcl定義了許多不同型別的點,最常用到的型別如下:

pcl演算法都是模板化的,不僅可以使用已經可用的型別,還可以使用使用者定義的語法正確的型別。

pcl的開發者把每個演算法做出乙個類,這個類屬於乙個有著特定共性的繼承類。這就允許開發者通過獲取已經存在的演算法並加上新演算法所需的引數,以重用這些演算法,並且允許使用者通過訪問器輕鬆地為演算法提供他所需要的引數值,而其餘的引數都去預設值。

下面**展示了通常是如何使用pcl演算法的:

pcl::pointcloud\::ptr cloud(new pcl::pointcloud\);

pcl::pointcloud\::ptr result(new pcl::pointcloud\);

pcl::algotithm\algorithm;

algorithm.setinputcloud(cloud);

algorithm.setparameter(1.0);

algorithm.setanotherparameter(0.33);

algorithm.process (*result);

通過ros自帶的基於訊息的通訊系統,ros的pcl介面提供了與pcl資料結構進行通訊所需要的方法。

最重要的訊息型別如下:

通過ros的pcl功能包提供的轉換函式可以將前面的訊息轉換為pcl型別或者從pcl型別轉換為訊息。

sensor_msgs::pointcloud2指定了一組函式執行訊息與pcl型別的轉換:

void torosmsg(const pcl::pointcloud&, sensor_msgs::pointcloud2 &);

void fromrosmsg(const sensor_msgs::pointcloud2 &, pcl::pointcloud&);

void movefromrosmsg(const sensor_msgs::pointcloud2 &, pcl::pointcloud&);

標準版本執行對資料的深複製,而move版本執行淺複製並登出源資料容器。

PCL點雲庫概述

pcl點雲概述 點雲處理技術廣泛應用在逆向工程 cad cam 機械人學 雷射遙感測量 機器視覺 虛擬實境 人機互動 立體3d影像等諸多領域。由於其涉及計算機學 圖形學 人工智慧 模式識別 幾何計算 感測器等諸多學科,但一直以來由於點雲獲取手段的昂貴,嚴重阻礙其在各個行業上的廣泛應用,也造成國內點雲...

PCL點雲庫SAC IA ICP點雲配準拼接

採用sac ia 取樣一致性初始配準演算法 進行粗匹配得到大概位置,再結合icp 迭代最近點演算法 iterative cloest point,icp 演算法進行精確配準。綠色是源點雲,紅色是目標點雲,藍色是配準之後的點雲 點雲視覺化 void visualize pcd pointcloud p...

PCL點雲庫的安裝

pcl庫是點雲庫 point cloud library 4 pcl庫的安裝比較容易,輸入以下命令即可 也可以使用源 安裝 sudo add apt repository ppa v launchpad jochen sprickerhof de pcl sudo apt get update su...