"Top Secret"

CyberGuide Design Document

Winter Quarter 1996
3/1/96

Document Author:

Jimmy Billiter

Project Sponsors:

Gregory Abowd
Dietmar Aust

CyberGuide Team:

Gregory Pauswinski (Manager)
Gregory Lim (Architect)
Kevin Levron (Programmer)
Jimmy Billiter (Technical Writer)


Project Description

Visual Basic Cyberguide

The Cyberguide Project was started in March 1995 by the Future Computing Environments (FCE) group and is headed by Gregory Abowd. The Cyberguide "vision" is to develop an intelligent handheld tour guide that has information about surrounding areas and your location. This vision was partially realized in the Summer of 1995, as a non "position-aware" version of the Cyberguide was developed on the Newton for the GVU Demo Days. The Cyberguide continued to evolve, however, with new projects adapting the tool for wider use and flexibility. Here is a look at the latest Cyberguide Project Page.

This project continues the developmental work done by those Cyberguide pioneers. The aim of this venture is to extend the tool's mode of communication by building a version of Cyberguide portable to a Windows platform.

Project Features

Architecture


Introduction

This portion of the design document describes an abstract view of an idealized version of the Cyberguide project. This team's purpose is to create a working Cyberguide on the Windows platform. The current code-base is in the process of being re-engineered to match these specifications, but this work is not yet complete. The primary goals of this re-engineering and re-architecting are:

  1. Extensibility & Flexibility: We would like the design that we are developing to be used for different 'versions' of Cyberguide, assuming that they are all based on the original Apple Newton. If an implementation of Cyberguide or a similar map-based information tool were to be constructed on a completely different platform, we hope that this abstract design can help guide the design of the new platform.

  2. Modularity: We would like to be able to keep the different subsystem components of Cyberguide from interacting with each other in any kind of specific low-level manner. All objects should communicate with one another through a defined set of API's consolidated in a single object.

  3. Maintainence: Due to the nature of the Real World Lab, the same people will rarely work on a project for more than a few quarters, meaning that code that is in use for a long period of time will eventually be 'forgotten' - everyone who was around when this code was written has long since moved on to bigger (and hopefully better) things. Since we hope that this code-base and overall design will last the Cyberguide project for a long time, we should expect it to be forgotten about until someone needs to make some low level changes, at which time they will need to be able to understand how the existing Cyberguide code works. This code and design were not created in a single quarter, they will probably not be able to be understood in a single afternoon. Keeping the code simple and readable and the coding standards consistent will be it's single greatest asset towards achieving longevity.


High Level Architecture

architecture picture here

Figure 1: Cyberguide Architecture

Overall, there will be six conceptual modules:

Design Specification

This section contains a list of modules, and their functions, inputs, and outputs. A discussion of the IR positioning system follows.

  1. MapView:
    Function: Accepts a position, displays a map.
    Inputs:
    the Map - the image used for the map itself.
    position of IT's - specified in a Latitude, Longitude format.
    position of user - specified in a Latitude, Longitude format.
    Map location - position of the map itself, specified in Latitude, Longitude.
    Outputs:
    Requests to launch the Info-Browser
    Requests to launch the Help system
    Requests to QUIT
    Requests to get a List of Projects/IT's
  2. Info-Browser:
    Function: Displays an IT's detailed info. Netscape is the browser used.
    Inputs:
    a URL - the location of the page containing the information.
    Outputs:
    None - This should feed nothing back to the system.

  3. Serial:
    Function: Reads serial data and converts it to Latitude, Longitude coordinates.
    Inputs:
    Comm Params - read from an INI file on startup
    read position - an event from control, causes Serial to find Cyberguide's location.
    Outputs:
    Lat,Long position - Location of the user, possibly mapped to discrete locations.
  4. Network:
    Function: (Future) Provides network connectivity. Stored data can can be kept on a network.
    Inputs:
    ?
    Outputs:
    ?
  5. Data Access:
    Function: Separates Cyberguide from the data it accesses.
    Inputs:
    network data - Anything to the future network. Outputs:
    operat. database - Currently, this is an on board collection of INI, map, help files,
    IT info files, etc.
  6. Help:
    Function: Provides the user with a legend and basic usage instructions.
    Inputs:
    The help file.
    Outputs:
    (none)
  7. Control:
    Note: Although this is included here, we will not be explicitly coding many of the actions here. This is the Visual Basic run-time system.
    Function: coordinates everything
    Inputs:
    Requests to launch the Info-Browser
    Requests to launch the Help system
    Requests to QUIT
    Requests to get a List of Projects/IT's
    PositionStrobe event Outputs:
    User events
    System events - Hardware, software failures.
    read position - gets a new position from serial any information gotten
    through Data Access

IR Positioning

The serial interface hardware generates a 3 character code when it detects a change in position. This code is composed of two numeric characters followed by a carriage return. This code is received through the MSCOMM control and is looked up in a table. If the code represents valid position data, it is converted to a (Latitude,Longitude) coordinate pair and a PositionStrobe "event" is generated. Converted serial data is then transferred as input to MapView.

Future plans for the positioning system include GPS. This can be implemented simply by sending the (Latitude,Longitude) pairs to MapView.


User Interface

Figure 2: Cyberguide User Interface

As Figure 2 illustrates, the user is denoted by the arrow icon. As he walks toward an Interesting Thing (denoted by a star icon), his movement will be reflected on the screen by Cyberguide's tracking device. If he clicks on the star icon, a description of the Interesting Thing will be displayed.

Additionally, the user may zoom in and out to display less or more of the screen. The "Center" icon re-alligns the screen in such a way that the user is centered on the screen.


Back To Project Notebook
Design Document Evaluation
Last Modified 2/08/96 -- Jimmy Billiter