ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Sending Kinect Visual Studio output data to ROS in order to run on a Baxter robot

asked 2017-08-14 10:48:17 -0500

YongZhann gravatar image

Hi all,

ROS beginner here - I have recently been trying to implement people detection on a Baxter robot. Now, I believe that it already works quite well in terms of moving, displaying images and speaking due the high number of pure ROS packages it is running.

My goal is to give it the ability to detect people - skeleton tracking is a solution. Microsoft being the developers for Kinect seem to have developed a fairly well made Visual Studio project using the Xbox One Kinect (2.0) called BodyBasics (available for download from the Kinect 2.0 SDK that needs to be installed first).

What BodyBasics does is it creates a black window - while the Kinect is connected to my laptop, any person going in front of the Kinect will show up on the window as a "skeleton" of colored limbs (or sticks), up to a total of three people. Whenever they move, the window will update with the movement of the skeletons, quite like it is shown here:Kinect SDK skeleton tracker

Unfortunately no packages on ROS can emulate this kind of functionality given that Openni seems not to have an official driver for the Kinect 2.0.

I wish to get the data from the window in real time- which is running Visual Studio on a Windows laptop- to output in some way to the overall ROS bundle that the Baxter Robot operates from.

Would I be able to do this via two laptops (one on Windows and one on Ubuntu) with the aid of rosserial or should I set up something of a ROS network over which I could send the data from the Kinect in real time?

Thank you for reading- I am quite new to ROS so obviously have not explored all of its capacities - such as serial or network communication. (all the tutorials I have followed have been related to virtual robots such as the turtlebot in gazebo)

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2017-10-26 10:48:18 -0500

ReedHedges gravatar image

updated 2017-10-26 10:57:50 -0500

Hello, have you found some ideas for doing this yet? I don't have any experience doing something like this, but have been looking into it a bit. Looks like rosserial_windows can be used in a client, though ideally in your application you would run a node in windows that contain a publisher of the skeleton data, so other clients can receive it. So you may need a relay node of some kind that your windows program can send data to, which simply turns around and publishes it on a topic so that other clients can receive it. Or you could use some other network communications method to send the data from the Windows program to a ROS node to publish it to ROS. This would unfortunately add latency. Anyone more familiar with rosserial and rosserial_windows, please correct me if wrong! There is also experimental support to run ROS using Windows Subsystem for Linux, but I wouldn't expect the Kinect SDK to be usable within that system? I suppose you could also just implement your tracking and other application specific stuff in the Windows program using the Kinect SDK, and just use rosserial_client to control the Baxter.

edit flag offensive delete link more

Question Tools



Asked: 2017-08-14 10:48:17 -0500

Seen: 1,391 times

Last updated: Oct 26 '17