Pebbles Aircraft Handler

Created by Brad A. Myers, Carnegie Mellon University
as part of the Pebbles Project with funding from DARPA


Overview

Pebbles Aircraft Handler is a demonstration of the use of hand-held PDAs, such as the 3Com Palm Pilot, at the same time as a PC. This was developed as part of the Pebbles Project, with sponsorship from DARPA. See http://www.cs.cmu.edu/~pebbles for more information on Pebbles.

The goal is to show how hand-held PDAs might be used to augment a PC-based information system. Unfortunately, we were unable to get much information about how such an application might look or be used, so many of the details are invented and probably wrong. Also, the application is intentionally "informal" and sketchy, due to the limited time and budget allocated for this project. It would be easy to adjust the details to be more accurate and complete if desired. We hope that this demonstration will, however, provide a feel for how such a multi-computer application might work. It would also be trivial to replace the general circles and rectangles with the appropriate icons.

The general idea is that a main site will have a large graphical display running on a PC on which a graphical image of the aircraft carrier is displayed. In the field (on the deck of the aircraft carrier), crewmen will have hand-held computers, such as Palm Pilots, on which they will enter information about the various aircraft, such as where they are and in what condition. All the information from all hand-helds and the main PC will be accurately reflected on all of the displays.

The PC side has a conventional user interface, so the aircraft can be created, dragged (moved), and edited in the usual direct manipulation manner. There are two types of aircraft: helicopters, represented as circles, and planes represented by rectangles. The aircraft carrier image has specific "hot-spots" for the different types of aircraft, and aircraft snap to these spots when dragged close to them. When a new aircraft is created, it can be given a name, but afterwards names are not editable. The locations of aircraft can be changed by dragging, and aircraft can be deleted. The status of an aircraft can also be set.

There are also one or more connected Palm Pilots which will also show and edit the aircraft. Since the screen of the Palm Pilot is small and low-resolution, a map is not displayed, and instead there is a list of the aircraft showing the type, name, location and status. These properties can be edited from the Palm Pilot and any edits are propagated to the PC and all other PalmPilots. Also, edits on the PC are reflected on all connected Palm Pilots.

Installation and Set Up

All of the files necessary should be included in the pebblesaircrafthandler.zip file. Unzip all the files and put them in the same directory. The aircrafthandler.prc file should be installed into the Palm Pilot in the usual way (using Hotsync). To run the aircraft handler application, it is important to start the PC applications in the following order:

  1. First, start PebblesPC. This will ask you for the COM port (serial port) to use. For most PCs and laptops, the right number is 1. Many desktop PCs also have a second serial port numbered 2. Be sure that Hotsync is NOT running before you start PebblesPC. See the other instructions about Pebbles PC on the main Pebbles web page: http://www.cs.cmu.edu/~pebbles/software.html#pebblespc
  2. Second, start the pebblesaircraftcarrier.exe program by double-clicking on its icon. This should bring up a console window and then the main aircraft carrier window. The console window is for debugging, and you can iconify it, but be sure not to close it, or the program will exit (use the underline icon, not the "X").

Now, you can start the AircrftHndlr application on the PalmPilot by clicking on its icon on the PalmPilot. If everything is connected properly, the Current Users screen that pops up with you double-click on the PebblesPC icon on the PC should show "PebblesSocket" for the port that the PalmPilot is connected to.

User Interface on PC

The pebblesaircraftcarrier.exe has a fairly standard, direct manipulation user interface for creating and modifying the aircraft. Drag a circle (for a helicopter) or a rectangle (for a plane) from the palette on the left to any location on the main window. If you just click on button, then the new aircraft will just appear near the palette at the edge of the window, so it is better to drag them off and place them somewhere. After creating an aircraft, you must enter the name by typing it and then hitting Enter or clicking outside of the aircraft. The name cannot be empty, and it must be less than 6 characters. The intention was that it would be the tail number of the aircraft, but there are no restrictions on which characters are used. Note that the name cannot be changed later, so if you type the name wrong, the aircraft should be deleted and replaced with a new one with the right name.

When moving an aircraft, either when it is just created or afterwards, moving it to a special location marked on the aircraft carrier causes a blue outline to appear, and the feedback will snap to the location. These locations are named with numbers. If a different aircraft is already at a location, then the current aircraft being dragged will not snap to the location--move the other aircraft out of the way first.

To edit an aircraft after it is created, clicking on the aircraft causes it to be selected. The handles appear around the aircraft, but its size cannot be edited, so clicking on a handle causes a beep. Pressing in the center of the aircraft and dragging with the left mouse button held down causes the aircraft to move.

While an aircraft is selected, it can be deleted or its status changed. A shortcut for this is to use the right mouse button on an object, which pops up a menu. The main menu bar also has various editing commands, including bringing selected aircraft to the top and deleting all the aircraft. All operations are undoable from the main menu.

For the status, the choices include "???" to mean unknown, and "up", "medium", and "down". The color of the aircraft depends on its status.

User Interface on PalmPilot

To run the AircrftHndlr application on the PalmPilot, just click on its icon. The main screen shows a list of aircraft. When aircraft are updated on the PC, they will appear on the PalmPilot. If the aircraft is snapped to one of the numbered locations on the PC, then the name of that location is displayed on the PDA. Otherwise, the location field is blank.

The buttons on the main screen allow a new aircraft to be created, or the selected aircraft to be edited or deleted.

Tap on an aircraft line to select it. Only one aircraft can be selected at a time. If no aircraft is selected, then the edit and delete buttons will just beep.

If there are more aircraft than will fit in one screen, a scroll bar will appear on the right margin, and the center physical "up-down" buttons (between the four round application buttons) can also be used to scroll up and down by pages.

When creating or editing a button, the "Edit Aircraft" form appears. It has fields to specify the name, type, location and status of the aircraft. When editing, the name field is not changeable, but the other fields can be changed. (Note: it is a bad idea to change the type of an aircraft.) The name and location fields can accept any string up to 5 characters, although the intention is to use names that consist of only digits. If the location matches one of the place numbers on the PC, then the aircraft will move to that location on the PC display when you hit OK on the PalmPilot. If the name does not match, the location will become blank. Aircraft are animated on the PC so users will notice the changes. If a new aircraft is not given a location, it appears at the upper left of the PC window (at 0,0).

If an aircraft is specified to be at a location where another aircraft already is, the other aircraft is moved slightly out of the way on the PC. It is assumed that the PalmPilot user knows better where aircraft are than the PC user so if the PalmPilot user says an aircraft is at a location, it should go there, and someone else is assumed to be responsible for finding out where the other aircraft really is.

If an aircraft is deleted from the PalmPilot (or the PC) it disappears from everyone's list. It can easily be re-created later if necessary. There is currently no undo on the PalmPilot.

If multiple people are editing the same aircraft, or if the PC user changes an aircraft's properties while the edit form is displayed on a PalmPilot, then an error message immediately appears on the PalmPilot notifying of the conflict and the edits that were in progress on this PalmPilot are discarded. This insures that all the devices stay synchronized.

The aircraft on the PalmPilot are remembered if the PalmPilot is turned off, and if it is disconnected from the PC. Therefore, it is perfectly fine for the PalmPilot user to survey a set of aircraft while disconnected, and then connect to the PC. When connecting, the PC will copy over all the data from the PalmPilot, and then send back any aircraft that are not on the PalmPilot. The information on the PalmPilot overrides any data on the PC, because the PalmPilot data is assumed to be more accurate. If the PalmPilot user wants to start with a clean slate, the menu command "Clear All and Refresh" can be used while disconnected, which will leave the PalmPilot's list empty. Note: when connecting the the PalmPilot, it should not be running the AircrftHndlr application until after it is connected. Therefore, if you are running the AircrftHndlr application disconnected, the right sequence of events is:

  1. switch back to the main application screen
  2. connect the PalmPilot to the PC
  3. start the AircrftHndlr application

If the PC does not seem to be listening to the PalmPilot, it is a good idea to try switching back to the main application screen and then back into the AircrftHndlr application.

The menu commands in the AircrftHndlr application are:

Implementation

The Aircraft Handler application on the PalmPilot was developed using the Pebbles library, which facilitates creating applications that use the PalmPilot at the same time as the PC. We used the Metrowerks environment to develop the software for the PalmPilot in C. The PebblesPC part of the PC-side is also part of the Pebbles package, and was developed in C++ using Microsoft Visual C++ on the PC. The Pebbles project is supported in part by a grant from DARPA under the CPOF program, and is also supported by Microsoft, IBM, and 3Com. For more information on the Pebbles project, see http://www.cs.cmu.edu/~pebbles.

The Aircraft Handler application on the PC was developed specifically for this demonstration using the Amulet user interface development environment. Amulet makes it especially easy to build direct manipulation user interfaces, and has built-in support for undo and animation, which are used in this demonstration. Amulet was funded by many grants, including one from DARPA. For more information on the Amulet project, see http://www.cs.cmu.edu/~amulet.

The Amulet Aircraft Handler application is connected to the PebblesPC part using sockets. This makes it easy for the separately running applications to communicate. It would also make it possible for there to be multiple instances of the Aircraft Handler application running on different PCs all communicating and keeping synchronized.