Skip to content

ROS and Wallframe

Kel Guerin edited this page Oct 14, 2013 · 7 revisions

Important Concepts

We chose the Robot Operating System (ROS) for a base framework for WallFrame. (Click here for a good introduction. ROS was designed primarily for robotic systems where several disperate components (such as cameras, motor controllers or laser scanners) needed to be connected to one another in a modular manner.

Sound familiar? This kind of functionality is exactly what we need for a modular application management system for display walls.

IMPORTANT !! It is essential that you understand ROS. Please... do not continue unless you have gone throught the ROS Tutorials and understand words like topic, parameter, TF, service and launch.

Now that you are a ROS Expert

Here is how we use ROS to make WallFrame work:

Component Communication

All of the core modules in WallFrame are ROS modules. Modules communicate with one another in an asynchronous manner using the topic publisher and subscriber design patter. This means that the firmware that talks to my depth camera (Kinect, Xtion, ect) can publish the positions of a users joints in 3D to any other module that listens. Similarly, if I have a user manager that is detecting gestures from that data, I can now publish the gesture events out to applications. Everything is its own process; no need to recompile or share libraries.

ROS Packages

The packages we previously discussed in the overview, namely wallframe_core, wallframe_user, wallframe_tracker, and wallframe_msgs, are all ROS packages. As well, _each WallFrame Application is a ROS package complete with its own cmake file, manifest, launch files and source. This makes it very clean to manage different applications, as they are all compartmentalized.

Parameters and the ROS Parameter Server

Parameters are used extensively in WallFrame, to specify user limits, screen rendering regions, thresholds and lots of other stuff. By setting a parameter on the server under the namespace /wallframe/~, it will be accessible to any WallFrame module or application.

Launch Files

As you learned in the ROS tutorials, launch files allow you to bring up multiple executables or nodes at the same time, specify parameters, and do other cool stuff. We use launch files to fire up the core WallFrame modules, set the WallFrame parameters, and each wall application has its own launch file, where you specify app specific parameters, or multiple components inside that app, should you choose to do so. This means that you could have more than one application in a single package, but we discourage this.

Next: [A Sample Application](Sample Application)