从Kinect 2获取公制深度贴图

从Kinect 2获取公制深度贴图,kinect,ros,point-cloud-library,Kinect,Ros,Point Cloud Library,我已安装libfreenect2和iai_Kinect 2,用于在我的Kinect上处理PCL和ROS。我一直在研究如何从Kinect 2获取深度贴图数据。我已经能够查看并检查rostopic列表,但我无法理解如何以米而不是整数获取深度数据 当运行rostopic list时,我会得到以下主题: 运行rosnode list时,我得到以下输出: 以下哪些主题将为我提供kinect(kinect v2)的深度贴图信息?我已经回显了所有主题(使用rostopicecho),并且所有主题都发布了[

我已安装libfreenect2和iai_Kinect 2,用于在我的Kinect上处理PCL和ROS。我一直在研究如何从Kinect 2获取深度贴图数据。我已经能够查看并检查
rostopic列表
,但我无法理解如何以米而不是整数获取深度数据

当运行
rostopic list
时,我会得到以下主题:

运行
rosnode list
时,我得到以下输出:

以下哪些主题将为我提供kinect(kinect v2)的深度贴图信息?我已经回显了所有主题(使用
rostopicecho
),并且所有主题都发布了[0255]范围内的值。我无法理解如何获得深度贴图,深度贴图(理想情况下)应该是浮点,而不是离散的0-255范围


另外,这些附加的节点是什么,它们的名称后面附加了点,我如何使用它们?我需要写一些额外的程序来提取深度图吗?如果需要,如何提取?

如果你想使用深度图,你必须订阅主题:
/kinect2/sd/image\u depth
,这样你才能以你想要的方式使用图像


我不知道您的应用程序是否需要深度图像,但是主题
/kinect2/sd/points
/kinect2/hd/points
为您提供了类型为
传感器/PointCloud2
的消息。您可以使用来自PCL的方法将消息转换为PCL点云(
PCL::fromROSMsg
),然后再转换回ROS消息(
PCL::toROSMsg
)。如果您想使用深度图,您必须订阅主题:
/kinect2/sd/image\u depth
,然后才能以您想要的方式使用图像


我不知道您的应用程序是否需要深度图像,但是主题
/kinect2/sd/points
/kinect2/hd/points
为您提供了类型为
传感器/PointCloud2
的消息。您可以使用来自PCL的方法将消息转换为PCL点云(
PCL::fromROSMsg
),然后再转换回ROS消息(
PCL::toROSMsg
)。您必须包括pcl\U转换

欢迎使用SO。请不要对终端输出进行截图,而是复制文本并直接添加到问题中。关于您的问题:消息的类型是什么?可能是pointcloud2,据我记忆所及,它在内部总是将值按字节存储在一个大数组中,与它们的类型无关。您必须在代码中将其转换为正确的PCL pointcloud类型才能访问它。我将您问题的标题改为“我认为更好地反映实际问题的内容”。如果您不同意,请随时更改。欢迎使用SO。请不要对终端输出进行截图,而是复制文本并直接添加到问题中。关于您的问题:消息的类型是什么?可能是pointcloud2,据我记忆所及,它在内部总是将值按字节存储在一个大数组中,与它们的类型无关。您必须在代码中将其转换为正确的PCL pointcloud类型才能访问它。我将您问题的标题改为“我认为更好地反映实际问题的内容”。如果你不同意的话,请随时更改。好的,我是一个纯粹的初学者,包括您的意思是我必须包括github的pcl_转换包,然后再次使用我的包并使用方法进行转换,对吗?您应该已经有了pcl_转换…将其添加到项目中的CMakeLists.txt中的find_包中,如以下代码片段所示:
find_包(柳絮所需组件roscpp rospy roslib std_msgs pcl_转换)
然后你必须在你的包中添加构建和运行依赖项。xml
pcl_ros pcl_转换
最后,在你的代码中:
#include
我们可以使用pcl_ros包pointcloud_to_pcd作为kinectv2提供sensor_msgs/PointCloud2类型的消息吗?好的,我是一个纯粹的初学者,包括你的意思是我必须包括pcl_转换从github打包,然后再次使用我的包并使用方法进行转换,对吗?您应该已经有了pcl_转换…将其添加到项目中的CMakeLists.txt中的find_包中,如以下代码片段所示:
find_包(catkin必需组件roscpp rospy roslib std_msgs pcl_转换)
然后您必须在包中添加构建和运行依赖项。xml
pcl\u ros pcl\u转换
最后,在您的代码中:
\35;包含
我们可以使用pcl\u ros包pointcloud\u到pcd作为kinectv2提供sensor\u msgs/PointCloud2类型的消息吗?