Ubiquitous Computing Toolkits Tara Matthews Advance User Interface Software Fall 2004 Goals of Ubicomp Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Ubicomp Infrastructure Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity CSCW (not covered) Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Physical UIs / Mobile (other lectures) Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Context-Aware Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Peripheral Displays Toolkits for Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Interruptibility (not covered) Toolkits for Goals Scalable interfaces Natural interaction getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness multiple devices inter-device communication multiple users more info w/o overwhelming users aware of user’s interruptiblity Goals accomplished? Evaluation Toolkit Categories Ubicomp infrastructure Context-aware Peripheral displays Evaluation Not covering: CSCW (separate field) Interruptibility (no toolkits yet) Physical UIs (covered in Jack’s lecture) Mobile Devices (covered in an unclaimed lecture) Ubicomp Infrastructure iROS Stanford Interactive Room Operating System iStuff Physical application toolkit build on iROS Aura CMU “Distraction-Free Ubiquitous Computing” project Distributed services infrastructure Gaia University Of Illinois at Urbana-Champaign Infrastructure for Active Spaces iROS Interactive Room (iRoom) Operating System Definition: A ubiquitous computing environment where groups come together to collaborate on solving problems (not a toolkit) Contains: Embedded devices: large display screens, tabletop display, & other output devices Mobile devices: mobile devices brought into space can be used with embedded facilities iROS Goals Facilitate common Interactive Workspace usages observed in iRoom prototype workspace: Move data between devices Control devices & apps from other devices Coordinate apps, including ones not written to work together Additional goals: Provide for heterogeneity of devices in workspace, & new devices being added over time Allow easy integration of legacy devices Robust to transient failures Portable across installations Actions appear instantaneous to users iROS 3 sub-systems: Event Heap: stores and forwards events Data Heap: facilitates data movement in an interactive workspace iCrafter: provides a system for service advertisement and invocation, along with a user interface generator for services. Event Heap Tuple space model Associated memory: content is addressable using a pattern Distributed systems based on blackboard model are easily created in tuple space Decouples apps in space & time Added semantics: Apps not designed to work together, so need Apps can snoop or interpose Tuple sequencing Data shared & can build up Self-describing tuples, Flexible typing, Typed tuples Tuple expiration Benefits Anonymous coordination Interposability Snooping Event Heap Figure: Example operation showing placed events, and using template events for matching Data Heap Provides type & location independent storage Machine independent: Don’t need explicit location of data Type independent: If a set of type converters are available, system automatically transforms the data Figure: Shows automatic retrieval of a Word document in PostScript form iCrafter Universal control system: control anything from anywhere Services advertise how they can be controlled System returns appropriate interface per device Interfaces can range from fully custom to dynamically generated iCrafter Appliance Description Environment Database Service Description Remote Invocation 1 User Active Interface UI Renderer 2 4 Appliance 3 Generator Selector Generator Processor Interface Manager Discovery Generator Database 1. USER REQUEST The user requests an interface for a service. The appliance sends this request to the Interface Manager, along with appliance description information. Service iCrafter Appliance Description Environment Database Service Description Remote Invocation 1 User Active Interface UI Renderer 2 4 Appliance 3 Generator Selector Generator Processor Interface Manager Discovery Generator Database 2. GENERATOR SELECTION Upon receiving the request, the Generator Selector selects an appropriate generator based on the service(s) selected and the appliance description. Service iCrafter Appliance Description Environment Database Service Description Remote Invocation 1 User Active Interface UI Renderer 2 4 Appliance 3 Generator Selector Generator Processor Interface Manager Discovery Generator Database 3. GENERATOR PROCESSING The Generator Processor runs the selected generator with access to all context (appliance, service, environment), which outputs a UI description. Service iCrafter Appliance Description Environment Database Service Description Remote Invocation 1 User Active Interface UI Renderer 2 4 Appliance 3 Generator Selector Generator Processor Interface Manager Discovery Generator Database 4. USER INTERFACE RENDERING The UI description is sent to the UI Renderer on the appliance, which renders the interface and handles user interactions, including service invocations over the EH. Service iStuff Toolkit to prototype physical UIs Flexible, lightweight components Protocol independence Platform independence with cross-platform capabilities Ease of integration with existing applications Support for multiple simultaneous users Built on iROS iStuff wireless devices (e.g., iButton, iSlider, iLight) send/receive events to/from Event Heap via a proxy PatchPanel translates events (e.g., iButton: light on | light off) Apps get events from devices via PatchPanel + Event Heap iStuff Device Wireless connection Transceiver Application PatchPanel Proxy TCP/IP connection Event Heap iStuff component iStuff Architecture iStuff Devices iButtons iSlider iStylus iMike X10 RF Input iDog Anoto Pen iMouse iBuzzer Output iSpeaker iLight Aura CMU “Distraction-Free Ubiquitous Computing” theme: Mobility: allow users to move computational tasks from one place to another Maximize use of available resources Minimize user distraction & drains on attention Personal information aura: spans wearable, handheld, desktop, & infrastructure devices Requires new system design: hardware, network, OS, middleware, & UI support Aura Research Framework Research Examples Users UI / Agents / Speech Task-driven computing Rapid service configuration Tasks Services OS / Network Physical Devices Energy-aware adaptation Multi-fidelity computation Nomadic data access Intelligent networking Power-aware devices Wearable computers Aura Example Scenario Fred prepares presentation & is late Fred gets PDA & Aura transfers slides to it Finishes slides on PDA walking to meeting Aura finds location of meeting from calendar & uploads slides to projection machine Aura recognizes unfamiliar meeting attendees faces & skips budget slides Aura Architecture User tasks are represented as set of distributed services Database query interface to access distributed services Easily search mixed environments for needed services A key service is People Location Service Environments self-monitor & re-negotiate task support given runtime variation of capabilities & resources Can detect when task requirements (e.g., min response time) aren’t met, & search & deploy alternative configurations to support task Uses software architecture models (graph of components & connectors) for runtime adaptability Aura Architecture Task Manager: tracks user context, environment, & task changes Context Observer: provides info on physical context & reports relevant events Task & Environment Managers Environment Manager: handles access to distributed services Suppliers: provide services for tasks (text editing, video playing,...) Privacy in Aura Aura services depend on user location info Location policies: define who gets location info, where, when, and at what granularity Introduces privacy concerns e.g., “Bob is allowed to know Alice’s location when she is in NSH” Similar to Bell Labs’ Houdini system’s “rules” Not based on how user’s actually disclose location GAIA Infrastructure for Active Spaces, UIUC Like Aura: Distributed services architecture accessed via structured queries Main difference: Focus on user customization of apps based on resources in current space Toolkit Categories Ubicomp infrastructure Context-aware Peripheral displays Evaluation Context Context is key to ubicomp environment that reacts correctly to user’s current situation Definition: Info used to characterize the situation of a person, place or object relevant to the interaction between a human & a computational service Primary context types: Identity (who), Location (where), Time (when), Activity (what) Secondary context types: e.g., for identity: email address, phone number, birthdate, etc Context-Aware Applications Definition: Uses context to provide relevant info and/or services to the user, where relevancy depends on the user’s task 3 categories: Present information & services to users Automatically execute services e.g., nearby wireless networks, directions e.g., phone vibrates when in meeting Tag info with context for later retrieval e.g., class lectures and notes Toolkits for Context 3 main approaches: 1. 2. 3. Widget model Context Toolkit Dey, Abowd, & Salber, 2001 Based on architecture of GUIs Distributed services model Context Fabric Hong & Landay, 2001 Based on client-server dialog Blackboard model iRoom Winograd, 2001 Based on artificial intelligence apps (Engelmore, 1988) Widget Model: Context Toolkit Operating system view Abstraction to hardware (sensors); data is secondary Similar to GUI input handling: uses widget abstractions for handling context input Uses 3 abstractions: widgets, interpreters & aggregators Benefits Separates semantics from low-level input sensor handling Apps can focus on context, not sensors or analysis of sensor input Allows re-use of context widgets, interpreters & aggregators Drawbacks Tight coupling – less robust to component failure Single-manager (Discoverer) control – less flexible Context Toolkit Architecture Widgets Encapsulate info about a single piece of context (e.g., location or activity) Hide details of underlying sensors from apps Provide customizable & reusable building blocks of context sensing Provide historical context info Widgets Include optional services, or actuation of output in environment Like Interactors: responsible for input & output e.g., light widget could sense light level & adjust lights accordingly Get context by subscription or polling Callback methods used to notify subscribers Aggregators Widgets + ability to aggregate context info Collect sensory info about an entity (person, place, thing, etc.) from multiple sources into one widget Hide more complexity about context-sensing mechanisms by combining multiple sensors Enable maintainability and efficiency Interpreters Abstract sensor info Use lower level sensory information to deduce higher level info e.g., identity + location + sound sensors “is there a meeting?” Putting an App Together Discoverer enables apps to locate and subscribe to context components Distributed infrastructure uses p2p comm. Distributed Services Model Database view (vs. OS view of CTK) Middleware technologies that can be accessed through a network Data is primary, hardware is secondary Focus on how data is modeled, distributed, protected, & used Example: infrastructure=Internet; service=DNS Any kind of device or application can use context gathering & processing services by adhering to predefined data formats & network protocols Benefits Interoperable: independent of hardware platform, OS, & programming language Decoupling: Sensors, services, & apps can be changed w/o affecting each other Simpler devices: sensors, processing power, data, & services w/in infrastructure shared Drawbacks Applications must poll for data (proactively) Servers are specialized per sensor Context Fabric Includes 3 pieces 1. Distributed data model of people, places, things 2. Context Specification Language (like SQL) 3. each device has a space: private data goes to local space multiple views of context (mine, yours, theirs) apps specify what context info they need in uniform way e.g., "What are the nearby movie theaters?” Context service as API (per device) interpret CSL queries and provide context info Privacy in Context Fabric Decentralized architecture allows it to capture, store, process, & share in privacysensitive manner Capture, store, & process data on user’s device Provides mechanisms for end-user control of sharing Plausible deniability built-in e.g., if request for context info denied, system can reply “unknown” Aura Also follows distributed services model Uses SQL-like interface to access a set of distributed contextual services Handles privacy through user-set policies Blackboard Model Communication goes through a centralized server Components post messages shared blackboard subscribe to get posted messages matching specified pattern Route by matching message content to subscriber's pattern Pattern matching uses AI (often apply sophisticated inference procedures to logical representations) Direct communication between components simulated by including an identifier for path endpoints as a field in message Announce-listen style Components that provide services periodically post events Component that uses the data listens to these events, & if one does not appear within the expected time can initiate restart operations Benefits Ease of configuration Robustness to component failure When component fails, only communication link broken is from it to blackboard Dependent components can detect failure and call for restart Simplicity provided by a uniform communications path (to the blackboard) No complex protocol for finding ports or resources, establishing connections Drawbacks Communication less efficient Each communication requires 2 hops General message structure not optimized for particular data or interaction protocol iRoom & iStuff Event Heap: the blackboard & central communication server Review of Context Approaches Widget Model – CTK Distributed Infrastructure Model – ConFab, Aura, Gaia Widget architecture where Discoverer acts as a manager of context widgets Client-server architecture where client apps communicate directly w/ services using structured language Blackboard Model – iRoom, iStuff Central server architecture where apps communicate only w/ server & events are routed using subscriber pattern matching Toolkit Categories Ubicomp infrastructure Context-aware Peripheral displays Evaluation Peripheral Displays Provide awareness with min attention Separate from primary task Important to ubicomp vision of many devices to 1 user Non-focal display not used unless providing peripheral info Enable you to monitor many info sources while maintaining a calm environment But, only calm if designed to manage attention they attract Why is creating PDs hard? Need to abstract info to be glance-able Need mechanisms for dynamically managing attention PDs attract: Deciding attention levels to attract (notification levels) Displaying info appropriately (transitions) Peripheral Display Toolkit (PTK) Supports these 3 key issues in PD creation Example PTK Applications Remote Activity Social Guitar Audio Monitor Motion Monitor Remote Awareness Display Bus Displays Bus Mobile Bus LED Instant Messenger Status Social Guitar IM Picture Frame Orb showing remote activity Bus LED BusMobile PTK Architecture 1. Support for managing impact on human attention using abstraction, notification levels, and transitions 2. Simplified code design and code re-use 3. Library of common PD components Input Abstractor Output Notification Map Transition Architecture Diagram Input-Side Input 1 Abs. 1 Discovery Server Output-Side Peripheral Display 1 (Abstractors) (Notification Maps) Abs. 1 N.M. 1 . . . Abs. 2 N.M. 2 Out 2 … Input N Abs. N N.M. N Out N Abs. N Input 2 PTK Discovery Server (Output Widgets w/ optional Transition) Trans Out 1 Peripheral Display 2 Abs. 1 N.M. 1 Abs. 2 N.M. 2 Abs. N N.M. N Out 1 Trans Out 2 … Out N Library Components Input audio, camera, Phidgets, Context Toolkit, online calendars, news, stocks, weather, Web page parser, serial port Library Components Input audio, camera, Phidgets, Context Toolkit, online calendars, news, stocks, weather, Web page parser, serial port Output ticker text, Ambient Orb, Phidgets Library Components Input Output audio, camera, Phidgets, Context Toolkit, online calendars, news, stocks, weather, Web page parser, serial port ticker text, Ambient Orb, Phidgets Abstractors motion, people counting, voices, phone ringing Library Components Input Output ticker text, Ambient Orb, Phidgets Abstractors audio, camera, Phidgets, Context Toolkit, online calendars, news, stocks, weather, Web page parser, serial port motion, people counting, voices, phone ringing Notification exact match, threshold, contains, degree of change info urgency user attention Toolkit Categories Ubicomp infrastructure Context-aware Peripheral displays Evaluation Evaluation 3 tools for evaluating people in natural settings from Intille et al.: 1. Context-aware experience sampling based on GPS or other sensors 2. Ubiquitous sensing system that detects environmental changes 3. e.g., ask questions when user goes to store e.g., tape-on touch, proximity, & light sensors Image-based experience sampling system i.e., take a picture & ask user about it later Summary: Ubicomp Goals Scalable interfaces Natural interaction multiple devices inter-device communication multiple users getting away from the desktop augmenting surrounding environment provide context-appropriate services Calmness more info w/o overwhelming users aware of user’s interruptiblity Summary: Ubicomp Toolkits Ubicomp infrastructure Context-aware Context Toolkit, Context Fabric, iRoom Peripheral displays iROS, iStuff, Aura, Gaia Peripheral Display Toolkit Evaluation Intille’s toolkit Thanks! CSCW Groupware Architectures Phillips, W.G., 1999. Architectures for Synchronous Groupware, Tech. Rep.. http://phillips.rmc.ca/greg/pub/ Greenberg, S. and Roseman, M., 1999. Groupware Toolkits for Synchronous Work. In: Beaudouin-Lafon, M. (Ed.), Trends In CSCW'99, No. 7 in Trends in Software, John Wiley & Sons, New York, NY, USA, ch. 6, pp. 135– 168. Roseman, M. and Greenberg, S., 1992. GROUPKIT: a groupware toolkit for building real-time conferencing applications. In: Proceedings of the conference on Computer-supported cooperative work, ACM Press, pp. 43–50. http://doi.acm.org/10.1145/143457.143460