Customizable Buttons

Description: Using a white piece of paper and a black pen, you can draw your own array of buttons that are touch-activated

Submitted By: Garratt Gallagher

Keywords: buttons, sound board, customizable


How to Reproduce Your Entry

Physical Setup

The interface is pretty simple. White paper, black thick pen.

There are several assumptions that this program uses:

  • The normal of the drawing surface is pointing in the positive z direction
  • The drawing surface is pretty much white (I threshold at r,g,b > 240)

  • the kinect is stationary
  • the pen color is very dark (I threshold at r+g+b < 100)

  • all the buttons are visible unless your hand is over at least one button

The buttons can track up to 1cm/frame. If they go any faster, or are blocked for about a second, they will re-associate.

Code to Checkout

  1. First you have to check out and compile the mit-ros-pkg repository. Please follow the MIT Kinect Demos General Installation instructions.

  2. You can then continue on that page to follow the instructions for installing the 'Customizable Buttons' Demo, which have been copied here for your convenience:

    rosmake impromptu_buttons --rosdep-install

Running the Code

This demo uses the openni kinect driver. To launch it run:

roslaunch openni_camera openni_kinect.launch

The one step you will have to do manually is provide a static transform from /world to /openni_camera which will make the normal of the drawing surface point in the positive z direction. In the video above, I ran the following:

rosrun tf static_transform_publisher 0 0 1.2 0 .33 0 /world /openni_camera 10

Finally, to launch this demo, run:

rosrun impromptu_buttons buttons



This package depends on the Simple Fast Media Library to play sounds. you can install the dependencies using rosdep:

rosdep install impromptu_buttons

ROS Packages

  • ni
  • pcl
  • pcl_ros

Wiki: openni/Contests/ROS 3D/Customizable Buttons (last edited 2011-02-03 19:03:17 by GarrattGallagher)