Exemplar: Authoring Sensor Based Interactions

Project Overview
What kind of tools would you need to prototype an accelerometer based control for an existing game in less than 30 minutes?

An increasingly diverse set of sensing technologies is appearing in smart products and research projects alike. Our group's goal is to develop prototyping tools that allow designers to gain insight into the design space of sensor-based interactions more rapidly.

Exemplar is a tool that introduces new techniques for authoring sensor based interactions through programming by demonstration. To generalize from demonstrations, Exemplar provides a graphical direct manipulation interface.

Hardware

Exemplar was designed to communicate with the d.tools hardware interface. We have also written firmware for Wiring and Arduino boards to stream data to Exemplar, as well as a custom serial port driver to interface with SparkFun Electronics' WiTilt wireless accelerometer board.

For our prototypes, we have been using force sensitive resistors, accelerometers, bend sensors, IR rangers, light sensors, touch sensors, buttons, switches and more...

Software

Exemplar is a plug-in written for Eclipse 3.2.

The Exemplar GUI is organized according to a horizontal data flow metaphor : sensor data from the hardware interface arrives on the left hand side of the screen and, through manipulations, arrives transformed on the right hand side as discrete or continuous events.

Live data from all connected sensors is shown simultaneously in a small multiples configuration on the left, giving a one-glance overview of the current state of all sensors.

Designers can bring a sensor's data into focus in the large central canvas by clicking on its preview thumbnail. Interaction with the filtered signal in the central canvas is analogous to a waveform editor of audio recording software.

Between the thumbnail view of sensor input and the central canvas, Exemplar interposes a filter stack. Filters transform sensor data in real-time and Filter parameters are unique for each sensor. These filtered values can be sent to third party applications directly - or they can be turned into discrete events.

To the right of the central canvas, Exemplar shows a list of event definitions for the currently active sensor(s) Each event is given a unique color in the central canvas- these colors show regions that were marked by the designer as examples and regions determined by the system to match the demonstration.

While Exemplar was developed and tested on PCs, the authoring environment has also been successfully installed on Mac OSX.

Publications
Media
Download
Exemplar is freely available as open source software under the BSD license. The latest version is: edu.stanford.hci.exemplar_0.4.2.jar (2007-05-31). This jar file contains both binaries and source files. Read the installation instructions.

Arduino firmware to send ADC data to Exemplar: arduino-firmware.zip (.pde source code)
Wiring firmware for Exemplar: wiring-firmware.hex (binary, not written in Wiring environment)

Documentation
Installation Instructions and troubleshooting information is available on our wiki: http://protolab.pbwiki.com
People
Björn Hartman, Leith Abdulla, Scott Klemmer (Stanford HCI)
Manas Mittal (MIT Media Lab)
Contact

Questions about the website? Contact: hci-webmaster at lists.stanford.edu