[http://jaugment.soureceforge.net | http://developer.jini.org:80/exchange/projects/jaugment/ | http://www.informatik.uni-rostock.de/~mawol/jaugment/]



jAugment

a software-infrastructure for wearable computers




Project Overview

So you build yourself a wearable or another type of computer with uncommon UI-modalities? (3d, aureal, 4x20-LCD, morse-code, ...)
But you already know that most software you use can either not be used effeciently with your I/O-modalities or can not cope with common situations like very sporadic network-avaliability. All these are problems this project aims at reducing.
Here we try do develop a set of applications to be used with different kinds of wearables that are taking advantage of the unique features of a wearable computer. Of cause things like text-editors, e-mail-clients and mp3-players are there too but a path-finder, a street-map and a sceduler knowing the time-tables of busses and shops are applications that make much more sense for and need to be used much easier on a mobile computer than on a desktop.

What is so special about it?

First:       IO-modalities are dynamic,
you can take out a display or come near a desktop-pc and your applications and services will be represented on it instantly in a way optimized for displays (usually using Swing/AWT).The rest of the time you could use everything perfectly well with audio-only. Maybe you have a LED-segment-display on a pager, or even a single micro-led in your glasses for morse-code that you want to control the computer with. Maybe you want to use a PDA as an interface to your Laptop (stowed away in a backpack) but are having problems with X-applications on such a tiny screen. Maybe you are experimenting with a 3D-augmented(/virtual)-reality-interface with haptic feedback but want to use conventional applications ...

Second:   Services and their representations are separated.
You can easily add/replace a representation without touching the service itself. Even at runtime. Services communicate with their representations via defined, public interfaces and the representations are just attributes that can be atached, removed, modified, ... at will. They are compactible with the ServiceUI-(draft-)standart that gives us interoperability with other JINI-services/browsers.

Third:   Services are dynamic and network-aware.
This is why we use JINI now. (Bindings for SOAP and CORBA exist) If you come into the range of a radio-LAN or near an IrDA-device your abilities will broaden up. Your speech-recognition could instantly switch to a server to save local battery-power, local time-tables, notes, address-books will synchronize themself and use the online-versions without your intervention or maybe even without you noticing it at all. Another advantage is that while still allowing legacy-applications to be used using Java enables us to use mobile code, meaning you can run across a software-only-service in a network and just "take it with you" as well as automatically update your software in the background. (Of cause we do not limit you to Java).

What software exactly is developed here?

We develop 3 kinds of software:
  • The infrastructure.
- All the interfaces, helper-classes, UI-Managers, central services needed for such a thing to work.
  • Everyday-application.
- Just about all the small things you expect every computer to do that just get a bit complicated in the case of wearables like e.g. an encrypting text-editor, e-mail, ssh,... .
  • Special-purpose-applications.
- Things your can only do (easily) if it's a computer attached to you all the time that make it not only a tool you work with but an extension of your abilities. E.g. imagine never forgetting a name again talking with people on the phone, in IRC and in front of you together as if it were the most normal thing to you (and in fact it might become so ;) ).