by Simon Dobson, Steve Neely, Graeme Stevenson, Lorcan Coyle and Paddy Nixon
The vision of pervasive computing is that objects, buildings and environments may be endowed with software intelligence to improve human interactions both with the individual objects and with the system as a whole. Realising this dream is posing significant challenges for designers - allowing individual applications to co-exist in a common space without interfering, making the capabilities of new sensors and services available to other applications as they appear and providing the necessary decentralised control to obtain robust behaviour.
Any large-scale pervasive deployment will face a common core of issues. Decentralised control can be used to provide co-ordinated behaviour in the face of localised failures and a dynamic population of devices. In many cases a knowledge-based approach has proved to be successful. This is something that is especially important for sensor-driven systems, which are inherently noisy and incomplete and so must deal with substantial amounts of uncertain reasoning. The systems must be self-configuring, -managing and -optimising (the 'self-' properties of autonomic computing and communications) as well as being extensible, standards-based, and upgradable on-the-fly. Finally, systems must scale to hundreds or thousands of devices while offering predictable and robust levels of service.
Within University College Dublin's Systems Research Group we have been looking at middleware solutions to these issues, building both on our own experience with middleware and the other successful pervasive computing frameworks such as the Context Toolkit, Cooltown and Aura. The resulting system - Construct - provides a scalable and open platform on which to build pervasive and adaptive applications.
Construct is unusual in a number of ways. It is entirely data-driven, in that all data is treated as being sensed either by a traditional physical sensor, a "virtual" sensor accessing on-line information, or a reasoning strategy, making inferences from other data. All information is represented internally using the Resource Description Framework from the semantic web, allowing easy integration with other tools. Applications - both clients' and sensors' - are written to query and/or populate this model, which considerably simplifies the design and deployment of new components.
Noise and uncertainty are ubiquitous characteristics of any sensor-driven system, and Construct applies uncertain reasoning techniques to all its information. The system can maintain consensus estimates of items of interest, modifying its results and confidences over time. This means that the results from excessively noisy or inaccurate sensors, which would tend to disagree with the consensus, will be de-emphasised over time, leading to a self-stabilising infrastructure. The disadvantage of this approach is that all inferences are explicitly tagged with confidence values, which can complicate a programmer's task.
Pervasive systems suffer from frequent node failures, either from genuine faults or from devices being removed or deactivated. This causes problems for many infrastructures: where should data be stored so as to maximise availability? Construct answers this by having each node store a copy of the public state of the system, and gossiping this state randomly between nodes. Any information sensed at a node, for example, may be placed into the public store and will be gossiped to another node. If the source then fails, its observations will have already been transferred to other nodes and so need not be lost. Careful handling is required to ensure both the information is not lost and that the public store does not grow infinitely. Gossiping is extremely robust as it relies on very little knowledge of the network's topology, and makes very fair use of available communications resources without generating hot-spots at popular producers or consumers.
The goal of Construct is to provide a simple framework for the community of pervasive and adaptive systems developers. The platform addresses decentralisation, robustness, fusion and other problems at an infrastructural level, allowing the developer of an individual sensor or service to focus on their own novel contribution. We have developed a number of sensors, including interfaces to the PlaceLab and Ubisense location systems and virtual sensors for a number of web sites, services and standard formats such as iCal. We are actively soliciting the help of others to improve the platform, its services and algorithms.
Construct is being licensed under LGPL. Our hope is that it will serve as a community basis for rapid exploration and integration of new pervasive, adaptive and sensor-driven embedded intelligence.
This work is partially supported by Science Foundation Ireland under grant numbers 04/RPI/1544, "Secure and Predictable Pervasive Computing" and 05/RFP/CMS0062, "Towards a Semantics of Pervasive Computing".
Steve Neely, University College Dublin / IUA, Ireland