2016-07-27 147 views
1

我已經在我的Kinect上安裝了libfreenect2和iai_kinect2,用於處理PCL和ROS。我一直在研究如何從Kinect 2獲取深度圖數據。我已經能夠查看並檢查rostopic list,但我無法理解如何以米爲單位而不是整數獲取深度數據。從Kinect 2獲取度量深度圖

當運行rostopic list,我得到了以下主題: rostopic

當運行rosnode list,我得到下面的輸出: rosnode

其中的這些議題會給我從Kinect的深度圖信息(kinect v2)?我回應了所有主題(使用rostopic echo <topic name>),並且所有主題都在[0,255]範圍內發佈了值。我無法理解如何獲取深度圖,哪個(理想情況下)應該處於浮點狀態,而不是離散的0-255範圍內?

另外,那些附加的rosnodes是什麼,在它們的名字後面附加了points_xyzrgb_,我該如何利用它們?我是否必須編寫一些額外的程序來以某種方式提取深度圖 - 如果是,如何?

+0

歡迎來到SO。請不要製作終端輸出的截圖,而是複製文本並直接將其添加到問題中。 – luator

+0

關於你的問題:什麼類型的消息?它可能是pointcloud2,就我所記得的內容而言,內部總是將這些值逐字節地存儲在一個大數組中,而與它們的類型無關。您必須將其轉換爲代碼中正確的PCL pointcloud類型才能訪問它。 – luator

+0

我改變了你的問題的標題,我認爲,更好地反映了實際問題。如果您不同意,請隨時再次更改。 – luator

回答

0

如果要使用深度圖,則必須訂閱主題:/kinect2/sd/image_depth,比按照自己的需要可以使用圖像。

我不知道您是否需要應用程序的深度圖像,但主題/kinect2/sd/points/kinect2/hd/points會爲您提供類型爲sensor_msgs/PointCloud2的消息。您可以使用PCL中的方法將消息轉換爲PCL點雲(pcl::fromROSMsg),然後返回到ROS消息(pcl::toROSMsg)。你必須包括pcl_conversions

+0

好吧,我是純粹的初學者,通過包括你的意思是我必須包括來自github的pcl_conversions包,然後再次使用我的包並使用方法來正確轉換? –

+0

你應該已經有pcl_conversions ......在你的CMakeLists.txt其添加在項目中find_package就像這個片斷: 'find_package(柳絮所需的組件 roscpp rospy roslib std_msgs pcl_conversions )' 然後你必須添加構建和運行依賴於你的package.xml中 ' pcl_ros pcl_conversions' 最後,在你的代碼: '的#include Fabiobreo

+0

我們才能'使用pcl_ros p ackage pointcloud_to_pcd作爲kinectv2提供類型sensor_msgs/PointCloud2的消息? –