Archive for July, 2012

Interactive Spaces [making physical spaces interactive]

Sunday, July 22nd, 2012

Earlier this week Keith Hugues from Google released a new open source project called Interactive Spaces. This project provides a software platform for making physical spaces interactive. This software enables you to link multiple different inputs and outputs within a space so that they function in a choreographed manner.

This software is similar to the ECS project from the Lab @ Rockwell. One of the descriptions that has been used for ECS, and is also applicable to IS is that this software provides the backbone for a local Internet of Things.

Interactive Spaces in Action

Over the past several months we (at the Lab) have been working on a project for Google that uses this software (the picture above was one of the projects that we developed for this Google project – picture taken from the Google Code page for IS). After several months of working with initial alpha and beta versions of this project, a stable version was released about a month ago, and now it is about to become available for anyone to try out.  Here is a brief description of IS from the google code page:

Interactive Spaces works by having consumers of events, like the floor, connect to producers of events, like those cameras in the ceiling. Any number of producers and consumers can be connected to each other, making it possible to create quite complex behavior in the physical space.

This is an initial source release. As the final licenses are finished, there will be a binary release. Please see Downloads for a PDF file for documentation. This documentation is in progress.

I don’t know many details about the internal workings of Interactive Spaces. Here is a brief overview of what I do know (you can always explore the source code available on the IS code repo to learn more): it was developed in Java and uses the Open Services Gateway initiative framework. Out of the box it supports scripts written in other languages that can run on the Java platform (such as python/jython), and integration of native applications (though the process is somewhat confusing until you get used to it).