【问题标题】:Get metric depth map from Kinect 2从 Kinect 2 获取度量深度图
【发布时间】:2016-12-01 18:52:35
【问题描述】:

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

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

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

其中哪些主题会为我提供来自 kinect(kinect v2)的深度图信息?我已经回应了所有主题(使用rostopic echo <topic name>)并且所有主题都发布了 [0, 255] 范围内的值。我无法理解如何获得深度图,它(理想情况下)应该是浮点数而不是离散的 0-255 范围?

另外,这些额外的 rosnode 是什么,它们的名称附加了 points_xyzrgb_,我该如何使用它们?我是否必须编写一些额外的程序来以某种方式提取深度图——如果是,如何?

【问题讨论】:

  • 欢迎来到 SO。请不要对终端输出进行截图,而是复制文本并直接添加到问题中。
  • 关于您的问题:消息的类型是什么?它可能是 pointcloud2,据我所知,它在内部始终将值按字节存储在一个大数组中,与它们的类型无关。您必须在代码中将其转换为正确的 PCL 点云类型才能访问它。
  • 我将您问题的标题更改为我认为更能反映实际问题的内容。如果您不同意,请随时更改。

标签: kinect ros point-cloud-library


【解决方案1】:

如果你想使用深度图,你必须订阅主题:/kinect2/sd/image_depth,才能以你想要的方式使用图像。

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

【讨论】:

  • 好吧,我是纯初学者,包括你的意思是我必须从 github 包含 pcl_conversions 包,然后再次使用我的包制作并使用方法进行转换对吗?
  • 你应该已经有 pcl_conversions...在你的 CMakeLists.txt 的项目中添加它,就像在这个 sn-p 中一样:find_package(catkin REQUIRED COMPONENTS roscpp rospy roslib std_msgs pcl_conversions ) 然后你必须在你的包中添加构建和运行依赖项.xml <build_depend>pcl_ros</build_depend> <run_depend>pcl_conversions</run_depend> 最后,在您的代码中:#include <pcl_conversions/pcl_conversions.h>
  • 我们可以使用pcl_ros包pointcloud_to_pcd作为kinectv2提供sensor_msgs/PointCloud2类型的消息吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多