机器人平台搭建(三)——为机器人装配Kinect

目录

总述
1、freenect_camera功能包
2、PC端驱动Kinect

总述

除普通USB摄像头,很多应用场景下还会用到RGB-D摄像头来获取更加丰富的环境信息,如Kinect,让机器人不仅可以看到周围的世界,还可感受到周围物体的三维位置。

1、freenect_camera功能包

Kinect在Linux下有两种开源的驱动包,即OpenNI和Freenect。ROS针对这两个驱动也有相应的功能包:openni_camera和freenect_camera。这里使用freenect_camera来驱动Kinect。freenect_camera功能包的相关话题和参数接口如下。
(1)话题与服务
(2)参数可以使用如下命令安装freenect_camera功能包:

sudo apt-get install ros-kinetic-freenect-*

2、PC端驱动Kinect

将Kinect连接到PC端的USB接口,然后使用lsusb命令查看是否连接成功。在打印的信息中可以找到Kinect的相关信息。
freenect_camera功能包的launch文件夹下包含一个驱动节点的启动文件freenect.launch,运行该文件可以直接驱动Kinect传感器。为方便节点参数的配置,单独创建一个launch文件来启动Kinect。

这个launch文件设置了一些Kinect的驱动参数,其中有一个参数是depth_registration,设置这个选项为true后,在驱动Kinect时会把深度数据和摄像头数据进行配准,尽量保证每个像素点的深度信息和图像数据一致,减少偏移。
运行freenect;launch文件,启动Kinect:

roslaunch <功能包名> freenect.launch

Kinect启动后并没有直观的感受,无法确定传感器数据是否正常,可以使用ROS中的可视化工具rviz来查看Kinect发布的三维数据。
使用如下命令启动rviz:

rosrun rviz rviz

rviz界面成功启动后,点击列表栏左下角的“Add”按钮,添加一个显示Kinect传感器的可视化插件,选择“PointCloud2”类型,然后点击“OK”按钮。
若此时还看不到任何数据显示在主界面中,左侧列表栏中甚至还会提示一些错误或警告信息。修改“Fixed Frame”参数,以及点云显示插件中的订阅话题“Topic”,即可消除错误。

修改完成后,在右侧的主界面中应该可看到Kinect点云数据。

由于选择的坐标系使数据对应真实空间坐标发生了旋转,可以使用鼠标拖动界面以调整点云数据,就可以看到真实环境的信息。
从点云信息中,可以看到Kinect眼中的三维世界与人眼反馈的信息类似,不仅包含颜色信息,而且包含每个像素点的深度信息。还可以调整点云的信息格式,如选择Color Transformer为AxisColor,通过颜色表示点云的深度。