pcl畫圓球 PCL之軌跡繪製(二)

2021-10-12 14:37:51 字數 2259 閱讀 5443

之前學習點雲庫做一些簡單的應用都是直接複製demo的**,然後把匯入檔案改一下,今天嘗試自己寫一些程式,結果錯漏百出,難受的早上,不過堅持了下來,求誇~~~

這個主要是乙個簡單的繪製軌跡的教程,繪製軌跡只需要兩個東西,旋轉r和平移t,只要我們能夠得到這兩個東西,再結合初始座標點,利用點雲庫裡面的visualization模組中的addline函式就可以實現軌跡的繪製了。

這裡為了簡單,我們直接採用模擬的資料以及模擬的旋轉矩陣。先一步一步講解流程,最後再附上原始碼~~

1.生成點雲資料

```c++  //為了方便,我們在這裡只生成乙個點

pcl::pointcloud::ptr cloud1(new pcl::pointcloud);

cloud1->width = 1;

cloud1->height = 1;

cloud1->points.resize(cloud1->width * cloud1->height);

cloud1->points[0].x = 1;

cloud1->points[0].y = 1;

cloud1->points[0].z = 1;

cout << "cloud1 size " << cloud1->points.size()<

2.模擬生成旋轉矩陣

2.模擬生成旋轉矩陣

```c++

//模擬乙個旋轉矩陣,為了簡單,這裡只是用乙個,每次迭代都使用這個矩陣,效果是x方向一次增加1個單位長度

//我們知道旋轉矩陣形式如下[ r t

eigen::matrix4f transform_1 ;

transform_1 << 1 , 0 , 0 , 1 ,

0 , 1 , 0 , 0 ,

0 , 0 , 1 , 0 ,

0 , 0 , 0 , 1 ;

cout << transform_1 <

3.接下來會用來 register模組中的transforms函式來實現點的轉變

```c++ //將矩陣進行變化

pcl::pointcloud::ptr cloud2(new pcl::pointcloud);

pcl::transformpointcloud (cloud1, cloud2, transform_1);

cout << "original cloud1 points "<< cloud1->points[0].x<

cout<

吐槽:不知道為啥b乎每次都把我們格式弄壞了。。。

4.最後會用到visualization模組中的pclvisualizer類顯示視窗

pcl::visualization::pclvisualizer::ptr viewer(new pcl::visualization::pclvisualizer ("3d viewer"));

viewer->setbackgroundcolor (0, 0, 0);

viewer->addtext("trajector", 10, 10, "v1 text");

viewer->addcoordinatesystem (1.0);

viewer->initcameraparameters ();

int line_numeber = 0;

char str[25];//這乙個的作用是為了下面給每條線段 1 個唯一的id符,不然的畫只能畫出一條線

while(!viewer->wasstopped())

viewer->spinonce (100);一定要加這一句,否則什麼現象也沒有

2.bool pcl::visualization::pclvisualizer::addline(const p1 & pt1, const p2 & ptr2,const std::string& id ="line",int viewpoint = 0 )

add a line segment from two points.parameters

[in]pt1the first (start) point on the line

[in]pt2the second (end) point on the line

[in]idthe line id/name (default: "line")

[in]viewport(optional) the id of the new viewport (default: 0)

note:每一條線都需要有自己的id號

總結:還是要多多自己敲**,複製貼上一時爽,真定編碼火葬場~~~b乎的格式和typora很不一樣....,還是csdn好。

pcl畫圓球 基於PCL繪製模型並渲染

前言 拋開演算法層面不談,要利用pcl庫中pclvisualizer視覺化類,顯示出不同模型並對模型做出不同渲染,製作出豐富的視覺化效果以增強自己應用的功能。下面將對如何新增立方體模型和圓球模型到視窗並渲染進行乙個大概描述。立方體模型 向視窗新增乙個立方體模型並渲染,只顯示線框。若不要顯示線框將下面...

pcl畫圓球 基於PCL繪製模型並渲染

前言 拋開演算法層面不談,要利用pcl庫中pclvisualizer視覺化類,顯示出不同模型並對模型做出不同渲染,製作出豐富的視覺化效果以增強自己應用的功能。下面將對如何新增立方體模型和圓球模型到視窗並渲染進行乙個大概描述。立方體模型 向視窗新增乙個立方體模型並渲染,只顯示線框。若不要顯示線框將下面...

PCL 基於PCL繪製包圍盒基礎介紹(1)

包圍盒顧名思義就是類似乙個盒子把物體包圍起來。以下內容來自百科 包圍盒是一種求解離散點集最優包圍空間的演算法,基本思想是用體積稍大且特性簡單的幾何體 稱為包圍盒 來近似地代替複雜的幾何物件。常見的包圍盒演算法有aabb包圍盒 包圍球 方向包圍盒obb以及固定方向凸包fdh。碰撞檢測問題在虛擬實境 計...