Kinect快速启动指南

描述:从这里开始。本教程演示如何在ROS中打开Kinect(或其他OpenNI设备),介绍ROS工具进行可视化和配置,并解释如何获得配准(深度+RGB)输出,如彩色点云。

1. 启动设备

打开一个命令行,启动OpenNI驱动程序:

roslaunch openni_launch openni.launch

就是这样! openni.launch启动你的Kinect,把原始数据处理成像点云这样的方便输出。请参阅openni.launch发布的所有主题的参考文档。我们将在下面探索其中的一些。

2. 可视化数据

2.1.rviz

我们将使用rviz3D可视化环境来观察点云:

rosrun rviz rviz

将固定帧(在全局选项下的显示面板的顶部)设置为/camera_link。

在显示面板中,单击Add并选择PointCloud2显示。将主题设置为/camera/depth/points。将背景色转换为浅灰色可以帮助观看。

这是在深度(IR)相机中未配准的点云。它与RGB相机图像不匹配。下面我们将看到彩色点云。目前,将彩色变压器设置为轴向或根据距离对点进行颜色映射。

Kinect快速启动指南

也可以尝试打开一个图像显示并查看各种图像主题。

2.2.图像浏览器

或者你也可以使用image_view来查看RGB图像:

rosrun image_view image_view image:=/camera/rgb/image_color

和深度图像:

rosrun image_view image_view image:=/camera/depth/image

Kinect快速启动指南Kinect快速启动指南

image_view还包含了针对sensor_msgs/DisparityImage消息的disparity_view浏览器:

rosrun image_view disparity_view image:=/camera/depth/disparity

Kinect快速启动指南

尽管对于一般的3D处理来说是很有用的,但是对于一般的3D处理,你会被鼓励使用点云或者深度图片主题而不是视差图像,这是立体视觉的。有关深度图像的技术细节,请参见代表118。

3. 图像配准

深度和彩色图像来自两个独立的,略微偏移的相机,所以它们没有完全重叠。然而,对于深度图像中的每个像素,我们可以计算它在三维空间中的位置,并将其重新投射到RGB摄像机的图像平面上。通过这种方式,我们构建了一个配准的深度图像,其中每个像素都与RGB图像中的对应对象对齐。

OpenNI有一个内置的配准功能,它使用Kinect工厂的校准功能。我们可以使用dynamic_reconfigure来在运行时更改ROSOpenNI驱动程序的设置。打开动态重新配置GUI:

rosrun rqt_reconfigure rqt_reconfigure

从下拉菜单中选择/camera/driver。启用depth_registration复选框。

Kinect快速启动指南

注意,ROS驱动程序现在正在接收来自底层OpenNI框架的配准深度映像;它无法访问未配准的数据。ROS的驱动程序不再在未配准/camera/depth/命名空间中发布,而是在/camera/depth_registered/。

例如,查看已配准的视差图像:

rosrun image_view disparity_view image:=/camera/depth_registered/disparity

Kinect快速启动指南

现在让我们看一下配准的点云。返回到rviz,并将您的PointCloud2显示主题更改为/camera/depth_registered/points。将颜色转换器设置为RGB8。你应该看到一种颜色,你的场景的3D点云。

Kinect快速启动指南