天天看點

如何在ROS中使用PCL(2)

記錄關于我們運作roslaunch openni_launch openni.launch  指令時生成的話題以及這些話題的資料類型便于後期的處理,隻有知道它們的資料結構,才能很好的對資料進行處理,我們觀察到使用rostopic list的所有話題的清單,當然其中也有一些不經常使用的話題類型,比如下面這些話題是我們經常使用的

/camera/depth/image

/camera/depth/image_raw

/camera/depth/points

/camera/ir/image_raw

/camera/rgb/image_color

/camera/rgb/image_raw

釋出的話題:

使用指令檢視sensor_msgs/Image的資料

如何在ROS中使用PCL(2)
如何在ROS中使用PCL(2)

介紹幾個ROS節點運作的幾種工具。他們的作用是ROS格式點雲或包與點雲資料(PCD)檔案格式之間的互相轉換。

(1)bag_to_pcd

用法:rosrun pcl_ros bag_to_pcd <input_file.bag> <topic> <output_directory>

讀取一個封包件,儲存所有ROS點雲消息在指定的PCD檔案中。

(2)convert_pcd_to_image

用法:rosrun pcl_ros convert_pcd_to_image <cloud.pcd>

加載一個PCD檔案,将其作為ROS圖像消息每秒中釋出五次。

(3) convert_pointcloud_to_image

用法:rosrun pcl_ros convert_pointcloud_to_image input:=/my_cloud output:=/my_image

訂閱一個ROS的點雲的話題并以圖像的資訊釋出出去。

(4)pcd_to_pointcloud

用法:rosrun pcl_ros pcd_to_pointcloud <file.pcd> [ <interval> ]

<file.pcd> is the (required) file name to read.

<interval> is the (optional) number of seconds to sleep between messages. If <interval> is zero or not specified the message is published once.

加載一個PCD檔案,釋出一次或多次作為ROS點雲消息

(5)pointcloud_to_pcd

訂閱一個ROS的話題和儲存為點雲PCD檔案。每個消息被儲存到一個單獨的檔案,名稱是由一個可自定義的字首參數,ROS時間的消息,和以PCD擴充的檔案。

那麼我們使用一個簡單的例子來實作在ROS中進行平面的分割,同時注意到使用的資料轉換的使用

在這裡我們的input就是要訂閱的話題/camera/depth/points

我們在rosrun 的時候注明input:=/camera/depth/points的這樣就可以使用kienct釋出的點雲資料,同時你也可以指定點雲的資料