Chair for Applied Software Engineering Lehrstuhl für Angewandte Softwaretechnik

Home  |  Home  |  Changes  |  Index  |  Search Software Engineering  |  Search

Software Patterns for Augmented Reality Systems

Welcome to the AR Patterns Web!

On this site, we invite you to discuss software patterns for describing and building augmented reality systems. This web site was created after a discussion of Augmented Reality? (AR) software architecture at STARS 2003 - The International Workshop on Software Technology for Augmented Reality Systems. We wish to collect and relate software patterns that are relevant to AR and bring forward an open discussion in the developer community.

Note: this site is still being set up; please bear with us. An older catalog of AR patterns is available here?.

What are patterns?

Patterns are structured descriptions of successfully applied problem-solving knowledge: A software architectural pattern describes a specific design problem, which appears in a particular design context, and presents a generic solution scheme. The solution scheme specifies the involved components, their responsibilities, relationships and the way they cooperate (from Pattern-Oriented Software Architecture. A System of Patterns, by Frank Buschmann et al.).

We see design patterns as the right abstraction for the documentation of AR systems. A common language based on design patterns will allow the use of common, well-known terms among developers of AR systems. With a catalogue of patterns, developers of AR systems can more easily identify existing solutions to design problems.

Who are we?

People involved in this research effort include (feel free to add your name here):

  • Asa MacWilliams?, TU München, DWARF? project
  • Thomas Reicher?, TU München, DWARF? project

Patterns

These are the patterns we have collected so far. Feel free to edit a pattern by clicking on it.

Subsystem Pattern Goal Summary
ApplicationSubsystem CentralControl Stay in charge of the control flow. Write eintire application as one executable, specifying what happens when.
ApplicationSubsystem SceneGraphNode Embed application in world model. Model application as node in a scene graph.
ApplicationSubsystem TrackingRenderingLoop Minimize tracking-rendering lag; use existing libraries Hook into a rendering library's update loop and set viewpoint.
ApplicationSubsystem WebService Treat AR as one type of media among others. Put control flow on web server; use web client for presentation.
ApplicationSubsystem FooBarPattern Reduce tracking-rendering lag to zero Couple one foo and two bars in a tight loop
ApplicationSubsystem MultimediaFlowDescription Create new AR content quickly. Use markup for task description as sequence of AR scenes.
ApplicationSubsystem ScriptingPattern Quickly develop new applications. Control compiled components with a scripting language.
ContextSubsystem BlackboardPattern Centrally gather, store and aggregate context data. Components read data from blackboard, process it and write new data back.
ContextSubsystem RepositoryPattern Centrally gather and retrieve context data. Components read and write data to/from the repository.
ContextSubsystem ContextPull Connect components that need context information directly with source. An interested component directly queries the context producer component.
ContextSubsystem PublisherSubscriber Decouple context producers and consumers. Use messaging service and communicate via events.
InteractionSubsystem ModalityFusion Model multimodal interaction. Combine input modalities to single control events.
InteractionSubsystem UseBrowserInput Take advantage of 3D browser. Use 3D browser's input processing functions.
InteractionSubsystem HandleInApplication Simplest input handling mechanism. Include explicit input handling code in application code.
InteractionSubsystem DofAdaption Enable multimodal interaction. Map degrees of freedom from input modalities to application needs.
InteractionSubsystem OperatingSystemResources Access interaction devices directly. Access interaction devices directly thourch operating system.
InteractionSubsystem NetworkedInputDevices Flexibly combine input devices. Use abstraction layer and middleware to combine input devices.
PresentationSubsystem LowLevelGraphicsPrimitives Fast rendering. Render using low-level graphics constructs, e.g. in OpenGL.
PresentationSubsystem PresentationFilter Reduce complexity of the user interface. Suppress output requests of individual applications.
PresentationSubsystem ViewManager Coordinate output so as not to confuse the user. Use a manager component that filters output requests.
PresentationSubsystem MultipleViewers Combine different presentation types. Use abstraction layer for different media types.
PresentationSubsystem UserInterfaceInterpreter Author multiple media types. Use abstract language for UI specification; render with interpreter.
PresentationSubsystem VideoTransfer Off-load rendering and tracking from thin client. Track and render on a server; transmit video image to the client.
PresentationSubsystem ThreeDMarkup Use standard viewers and file formats. Use a 3D browser and a language like VRML; use API for external control.
PresentationSubsystem RemoteRendering Reduce computational load of mobile device. Use server for remote rendering of complex models.
PresentationSubsystem ProprietarySceneGraph Use optimized rendering component for complex and dynamic scenes. Write own scene graph library.
PresentationSubsystem AdaptionToErrorLevel Accomodate different tracking accuracies in rendering. Use different representations according to tracking accuracy.
PresentationSubsystem TwoDThreeDMapping Integrate legacy 2D applications. Rander 2D applications in spatially registered windows.
PresentationSubsystem SceneGraph Use rendering component that allows complex and dynamic scenes. Use scene graph library such as Open Inventor or OpenSG.
TrackingSubsystem TrackingManager Combine different tracking devices. Manager component coordinates different trackers, acting as a facade.
TrackingSubsystem DirectAccess Fast access to tracking data. Access tracking devices directly through operating system.
TrackingSubsystem TrackingServer Offload computation from mobile client. Let server in environment perform computation for client.
TrackingSubsystem InsideOutTracking Reduce required infrastructure in environment. Have user carry mobile tracking system.
TrackingSubsystem BlackBoxFusion Combine output of several trackers. Use a separate fusion component that fuses output from trackers.
TrackingSubsystem NetworkedTrackers Combine several distributed tracking devices. Wrap trackers as software components, couple with middleware.
TrackingSubsystem TrackerFilterPipeline Combine and postprocess output of several trackers. Use pipe-and-filter pattern for trackers and filters.
TrackingSubsystem OutsideInTracking Reduce hardware for the user to carry. Stationary tracking resources track a mobile user.
TrackingSubsystem InterdependentTrackers Tightly integrate several tracking devices. Trackers build on each other's output.
WorldModelSubsystem SceneGraphStream Model scene when using scene graph library. Save model in scene graph file format.
WorldModelSubsystem ExampleClass Model object for low-level rendering library. Encapsulate low-level rendering code in a class.
WorldModelSubsystem ObjectStream Save world model that is modified by user. Use run-time environment's serialization mechanisms.
WorldModelSubsystem DynamicModelLoading Integrate models from external systems Load models dynamically from external servers and databases.
WorldModelSubsystem MarkerFile Easily store descriptions of markers in the environment. Save marker descriptions in files.

An (experimental) graph shows relationships between these patterns.

Subsystems

These are the subsystems the patterns are grouped by. Feel free to edit a subsystem by clicking on it.

Subsystem Summary
ApplicationSubsystem Handles application-specific logic
ContextSubsystem Gathers, process and distributes context information to interested components
InteractionSubsystem Processes, interprets and combines and user input
PresentationSubsystem Presents information to the user, especially rendered 3D scenes
TrackingSubsystem Gathers and combines tracking data
WorldModelSubsystem Stores information about the world

How can I contribute?

  • First, register for an account if you do not have an account on our server yet. You will need this name and password to edit Wiki pages. Note: still under construction... if something doesn't work, send us an e-mail.
  • Improve an existing pattern, above. Click on a pattern and then on the "Edit" link at the bottom of the page.
  • Add a new pattern. Create a new pattern here; you will be shown another form to describe details of the pattern.
    New pattern name (use WikiWord syntax)
    Goal of pattern
    Summary

Publications

Note: Included topic /cgi-bin/pub/title/plpublications/includes/pub.reicher2003archstudy does not exist yet Note: Included topic /cgi-bin/pub/title/plpublications/includes/pub.reicher2003patterns does not exist yet

 

ARPatterns: WebHome .
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r13 < r12 < r11 < r10 < r9 | More topic actions
r13 - 15 Feb 2005 - 16:17:24 - Main.bauerma
Copyright © 1999-2008 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding the website? Send feedback