Mixed Object Prototyping (M.O.P.) library, a toolkit for rapid prototyping physical-digital objects.

Introduction

Mixed Objects Library intends to provide developers with a framework for rapid prototyping of interactive physical-digital objects for mixed systems. The library extends Qt, a cross-platform application framework with integrated tools for GUI development. More on Qt can be found at http://trolltech.com/products/qt/ . This toolkit extends Qt for developping mixed objects, like those users interact with in tangible user interfaces, augmented reality, etc., more generally in mixed systems. This documentation is intented to be used by users for prototyping mixed objects, as well as by developers for extending the toolkit.

Prototyping mixed objects (user documentation)

Installation

For getting ready to use the toolkit, users should first install Qt and then install M.O.P.

Install Qt 4.2.3

Current version of the toolkit works with Qt 4.2.3. . Download Qt 4.2.3. from ftp://ftp.trolltech.no/qt/source/qt-mac-opensource-src-4.2.3.tar.gz and follow instructions for installing Qt for Open Source C++ development on your platform.

Install M.O.P. library

M.O.P. library is not public yet (waiting for publication).

Depending on the supported hardware and libraries you want to use (Phidget, Interface-Z, ARToolKit, etc.), you need to install what they require.

Simple example of use

The toolkit is based on a conceptual description of interactive mixed objects. Here is a simple example of a decription of mixed object and its corresponding code :

OBJECT.pdf

Description of a simple mixed object that has a Interface-Z Bend Sensor and a mini screen embedded in it.

 MIDIDevice BendSensor("BendSensor", LinkingComponent::IN, 0, true, 7);
 ThresholdInputLanguage Threshold("Threshold", 50, false);
 DigitalProperty MyProperty("MyProperty", QVariant::Bool);
 ShortDisplayOutputLanguage TextMessage("TextMessage", 1000, QVariant::String);
 
 QObject::connect(&BendSensor, SIGNAL(updated(int, QTime)), &Threshold, SLOT(update(int, QTime)));
 QObject::connect(&Threshold, SIGNAL(updated(QVariant, QTime)), &MyProperty, SLOT(updateProperty(QVariant)));
 QObject::connect(&MyProperty, SIGNAL(PropertyUpdated(QVariant)), &TextMessage, SLOT(Show(QVariant)));

Note that you don't need a screen component. In general in the case of common GUI devices that are also used in physical-digital objects, like screen or loudspeakers, they are already handled.

Tools for debugging and simulation

The Graphical Developer Interface can be used for debugging and simulating the behaviour of a component. Here is the example of the graphical interface for the previous object.

OBJECTGUI.tiff

Graphical Developer Interface of a simple mixed object that has a Interface-Z Bend Sensor and a mini screen embedded in it.

For building this interface, you need to write:

Tools for evaluation of a prototype

For evaluating a prototype, the toolkit currently propose a Logging component. Here is the example of building the Log components for the previous example:

Extending the toolkit (developer documentation)

Coding Convention

For developping new components for MOP toolkit, we present here the convention of this project (unsorted and ongoing listing).

Commenting & Documentation Convention

For each of these elements to be commented, here is what is done so far:

TODOs

Troubleshooting

...
Generated on Tue Mar 10 11:18:16 2009 for Mixed Objects by  doxygen 1.5.2