The GCS consists of an application for piloting the JAviator and displaying its status, which we call the Control Terminal, and a separate logging system that collects trace data (time-stamped values of program variables) received from the onboard computer system.

JAviator Control Terminal

The Control Terminal, presented in the figure below, displays the sensor data received from the FCS graphically and provides a means for piloting the connected Plant, either the real JAviator or the MockJAviator. The main functionality lies in monitoring and modifying the Plant's attitude and altitude. This is accomplished with four meters that indicate the 'current' and 'desired' roll, pitch, yaw, and altitude values through red and green needles, respectively. In case of the altitude meter, it is also possible to display and set the thrust directly without involving an altitude controller. Except for the yaw meter, each meter contains a safety option that allows to set a limit for the green needle. Accordingly, the user controls the connected Plant by changing the green needles, either by using the keyboard or, preferably, via a 4-axis joystick. Because the red needles refer to the Plant, they cannot be influenced by the user.


The Control Terminal also displays the following controller information:

Further functionalities provided by the Control Terminal include a test mode for dynamically activating a specific controller module. This helps to test controller code that is under development. Another feature of the Control Terminal is a means for dynamically adjusting the controllers. More precisely, each parameter of each controller can be changed arbitrarily during flight without the need for landing and re-programming. There is also an emergency shutdown button available for stopping the motors. In our effort to provide a more advanced visualization and interaction with the connected Plant, the Control Terminal has been extended with a 3D environment. This feature enables visual comparisons of the airborne JAviator against the computed flight behavior. There are also activatable helper planes that describe the desired attitude and altitude of the JAviator. These planes are activated in both figures below, depicting the settled and airborne JAviator, respectively.


The Control Terminal also supports recording and replaying of arbitrary flights, which allows for studying the behavior of the airborne JAviator. Any recorded flight can thus be visualized while replaying. Moreover, the 3D environment provides the opportunity to view a flight from different perspectives in the 3D scene, freely adjustable via the rotation, scaling, and translation settings. In this sense, the 3D representation extends the navigation environment by offering full 3D motion tracking and close-to-reality JAviator visualization effects.

Ground Logging System

In order to study and improve flight stability and system performance, we have extended the GCS with a logging system that enables real-time tracing during flights. This logging system makes use of IBM's TuningFork, an Eclipse-based performance analysis and visualization tool for real-time applications with support for Java, JVM, C++, and Linux. The figure below shows the TuningFork application displaying sensed roll, pitch, and altitude data in its visualization window.


TuningFork features a powerful data processing mechanism and user interface. It was designed originally for diagnosing IBM's real-time JVM and real-time Linux. Nonetheless, because of its scripting capabilities, it can also be used for tracing user-specified system data. Connectivity within the GCS environment is established via sockets. All logged data and events are saved in a trace file together with the current controller parameters. Due to the additional parameter saving, it is possible to restore the exact controller setup for any logged flight. We are interested in both the system-specific values, such as memory mutator utilization and garbage collection activity, as well as the sensor and actuator data transmitted from and to the JAviator. TuningFork's logging mechanism thus allows us to analyze and interpret various data streams in both real-time and hindsight.

Controller-Ground Interface

The Controller-Ground Interface defines the communication protocol between the FCS and the GCS. Again, only the FCS initiates communication. The FCS requests new navigation data by sending a packet containing current sensor data (received from the Plant) to the GCS. In response to this packet, the GCS generates a packet containing new navigation data and sends it back to the FCS. The sensor data packet sent by the FCS contains roll, pitch, yaw, and altitude values and their first derivatives as well as x- and y-position data and their second derivatives. Upon receiving a sensor data packet, the GCS responds with a navigation data packet containing new values for roll, pitch, yaw, and altitude, where both sensor and navigation data use the same packet format.