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.
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...
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.
Video: Exemplar in Action | Photo Gallery
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)
Manas Mittal (MIT Media Lab)

