Skip to content

kinect_based_arm_tracking_cn

Juan Rojas edited this page Dec 2, 2016 · 1 revision

<< 返回主页

EN | 中文

示例2 - 基于kinect的手部追踪



Navigation
  1. 概要
  2. 示例视频
  3. 运行
  4. 程序框架
  5. 常见问题

概要


这是一个让baxter模仿人手部动作的示例。我们使用了openni_tracker去获取人身体的位置数据。这些数据事实上是一连串的坐标点。然后我们把这些坐标点转换成控制baxter的角度。

这个示例目前只在ubuntu 14.04下的ros indigo测试过。如果你碰到了问题可以跟我们联系哟!

文件位置:
  • ./demos/kinect_based_arm_tracking/scripts/tf_listen_v8_controller.py
  • ./demos/kinect_based_arm_tracking/scripts/tf_listen_v8_puber.py

示例视频


https://www.youtube.com/watch?v=U5lJFFy4i3A

运行

我们一开始无法用openni去连接kinect。不过我们之后解决了这个问题,跟着这个网站 (https://github.com/ros-drivers/openni_tracker/issues/9#issuecomment-90533513) 上名字叫BastiAB的好人的步骤,你应该也可以顺利用openni去连接kinect的。

下面是我们运行这个示例的步骤:

!!!一切一切的前提!!!

连接baxter或者在gazebo中开启了它。请确定你已经能控制baxter

  1. 按照此网站上回答者BastiAB提供的步骤,完成相关的安装: https://github.com/ros-drivers/openni_tracker/issues/9#issuecomment-90533513

  2. 把kinect与电脑连接。

  3. 打开一个终端,运行以下指令:

roslaunch openni_launch openni.launch 这个指令会让openni去连接kinect.

接下来, 又打开一个终端,运行一下指令:

rosrun openni_tracker openni_tracker

这个指令会运行openni_tracker,然后相应地产生人的身体的数据。

  1. 打开一个终端,运行一下指令:

    rosrun rviz rviz

当rviz成功打开后,在Fixed Frame中选中“openni_depth_frame”,并添加TF到展示栏中。

现在你应该会看到至少一个人的身体骨架了。

如果你没看到任何东西,请确定kinect前无阻挡的站立了一个人。

  1. 在rviz显示的骨架中,选中你想要跟踪的人,并在我们的puber代码中将“user_index”的值改成这个人的index.

比如:

我们要追踪头部为“head_1”的那个人,

于是我们将tf_listen_v8_puber.py中“user_index”的值改成'1'

(注意这里的'1'是一个字符,不是数字)

接下来,打开一个终端,运行一下指令:

rosrun [package_name] tf_listen_v8_puber

这个命令会运行我们的puber

puber是用来接收身体数据,并把它平滑化的。最后它会把平滑化的数据Publish出去。

  1. 打开一个终端,运行一下指令:

rosrun [package_name] tf_listen_v8_controller

这个命令会运行我们的controller.

它会subscribe那些用于publish平滑化数据的话题,然后把接收到的平滑化的数据用于控制baxter.

  1. 现在站在kinect前面挥动你的手吧!baxter应该会模仿你的动作了!

还有不清楚的可以到下面的FAQ看看哦!

程序框架

tf_listen_v8_puber.py

这个node会用TF去接收人身体的数据,并将这些数据平滑化然后发布出去。

tf_listen_v8_controller.py

这个node会subscribe那些用于发布平滑化数据的话题(tf_listen_v8_puber.py发布的),然后它会相应的用这些数据去控制baxter.

常见问题


Q1. 为什么要把获得的数据平滑化?

A1. 我们从摄像头收集到的数据是有很多干扰的。我们发现在人保持不动的时候,这些数据也会在[0,2]的区间内波动。所以我们决定平滑化它。

Q2. 我不能用openni_launch去连接kinect,怎么办?

A2. 解决这个问题的方法是按照这个网址上回答者BastiAB提供的步骤,去完成相应的安装。 https://github.com/ros-drivers/openni_tracker/issues/9#issuecomment-90533513.

Q3. 我在rviz里面看不到东西,怎么办?

A3. 请确保以下事情:

  1. 你已经可以成功的与kinect连接。

  2. 在运行openni_tracker的终端窗口里,应该会显示一些信息,比如"....User X....".

  3. 你在rviz的Fixed Frame栏里选中了"openni_depth_frame".

  4. 你把TF加到了rviz的展示栏。

如果还是不能解决问题,联系我们哟!