Building and Programming a Synthetic Vision Information System

Table of Contents


Part I System Overview

  • 1.1 Similarities to a Flight Simulator
  • 1.2 A Primitive Electronic Flight Instrument System
  • 1.3 Operational Example
  • 1.4 Adding Terrain
  • 1.5 Looking Ahead

Part II Pilot Visual Interface with an Introduction to QBasic

  • 2.1 Introduction to QBASIC
    • 2.1.1 Installing QBASIC
    • 2.1.2 A “Hello World!” Program
  • 2.2 Drawing a Line
  • 2.3 Drawing a “Wings Level” Attitude Indicator
  • 2.4 Color Palette
  • 2.5 GOSUB Procedures
  • 2.6 Attitude Indicator with Pitch Marks
  • 2.7 Attitude Indicator with Roll and Pitch Marks
    • 2.7.1 Very Brief Review of Trigonometry
    • 2.7.2 Rotating Points about a Center
    • 2.7.3 Using the Trigonometric Relations
  • 2.8 Interactive Attitude Indicator
  • 2.9 Drawing Text
  • 2.10 Altitude, Airspeed, and Heading
  • 2.11 Drawing Map Features in 3D
  • 2.12 Runway Visualization

Part III Building and Configuring the Hardware System

  • 3.1 Requirements
  • 3.2 The AeroSpectra FlitePC
  • 3.3 Selection Criteria for a Single Board Computer
  • 3.4 Configuring the Operating and Development System
    • 3.4.1 The BIOS
    • 3.4.2 The Operating System
    • 3.4.3 The Application Programs
  • 3.5 Notes on Installing Fedora Core 3
  • 3.6 An SVIS Block Diagram

Part IV Programming an Operational EFIS

  • 4.1 Introduction
  • 4.2 The Development System
  • 4.3 Getting Started
  • 4.4 Basic Linux Commands
  • 4.5 A “Hello World” Program
  • 4.6 A Test for the OpenGL/Mesa Graphics Libraries
  • 4.7 A Very Basic Graphics Program Using OpenGL/Mesa
  • 4.8 Backing Up Files
  • 4.9 Compiling and Running the Basic Graphics Program
  • 4.10 Adding a Green Square
  • 4.11 Going Beyond the Green Square
    • 4.11.1 Rotating Objects
    • 4.11.2 Display Lis
    • 4.11.3 Z Buffering
    • 4.11.4 Rotating the View
  • 4.12 EFIS Programming: A Top-Down View
    • 4.12.1 The WindowDisplay() Function and a Simple Horizon
    • 4.12.2 Fixed Marks and an Airplane Symbol
    • 4.12.3 Roll Angle Marks
    • 4.12.4 Pitch Angle Marks
    • 4.12.5 Airspeed, Altitude, and Compass Scrolls
  • 4.13 Adding 3D Terrain Features
    • 4.13.1 Flat Terrain Implementation
    • 4.13.2 Faux 3D Terrain
  • 4.14 Real Terrain
  • 4.16 Rendering Only the Visible Portion of the Scene

Part V Interfacing to Hardware Data Sources

  • 5.1 Adding Serial Port IO
  • 5.2 Parsing the Received Data
    • 5.2.1 Parsing GPS Data
    • 5.2.2 Parsing AD-AHRS Data
  • 5.3 Navigation Function
  • 5.4 Filtering AD-AHRS Altitude
    • 5.4.1 Introduction to Least Squares Estimation
    • 5.4.2 The Boxcar Filter
  • 5.5 Putting the Final SVIS Program Together with the Serial Data
    • 5.5.1 Adding AD-AHRS Information
    • 5.5.2 Adding GPS Information
  • 5.6 Finishing Up

Part VI Air Data, Attitude, and Heading Reference System

  • 6.1 Overview
  • 6.2 General Theory of Operation
    • 6.2.1 Air Data
    • 6.2.2 Attitude
    • 6.2.3 Heading
  • 6.3 The AD-AHRS Sensors
    • 6.3.1 Outside Air Temperature
    • 6.3.2 Ambient Air Pressure
    • 6.3.3 Dynamic Air Pressure
    • 6.3.4 Accelerations
    • 6.3.5 Angular Rate Sensing
    • 6.3.6 Magnetic Field Sensors
  • 6.4 Attitude Determination in the AD_AHRS
    • 6.4.1 General Discussion
    • 6.4.2 Calculating Attitude Directly from the Angular Rate Sensors
    • 6.4.3 Calculating Attitude from Kinematic Relationships
    • 6.4.4 Slaving the Free Gyro to the Kinematic Gyro
    • 6.4.5 Correcting for ARS Bias Errors
  • 6.5 Calibration of the Sensors
    • 6.5.1 Thermistor Sensor as an Example
    • 6.5.2 Least Squares Estimation
    • 6.5.3 Using LSE to Calibrate a Thermistor Probe
    • 6.5.4 Using MathCad for LSE
    • 6.5.5 Temperature Calibration of Silicon Based Sensors
    • 6.5.6 Calibrating the Motion Sensors for Temperature Bias Errors
    • 6.5.7 Calibrating the Pressure Transducers
      • Static Pressure
      • Pitot Pressure
    • 6.5 8 Calibrating the Accelerometers
    • 6.5.9 Calibrating the Magnetic Field Sensor
      • Installation Errors
      • 6.5.10 Calibrating the Angular Rate Sensors
  • 6.6 Summary


  • A. The Wind Triangle
  • B. A Comparison of QBasic and the C Programming Language
  • C. A Brief Review of Vector Arithmetic
  • D. Matrix Algebra and Matrix Transformations
  • E. Alternate derivation of the Euler-Rodrigues’ Formula
  • F. Gravity Vector Details and Body Rotations by Prof. John Hauser

More About the Book

A Synthetic Vision Information System (SVIS) is a glass cockpit display that presents 3D terrain imagery that has been synthesized from digital elevation maps. From the point of view of the pilot, it is equivalent to a window through the clouds, providing the visual queues associated with flight in Visual Meteorological Conditions (VFR).

Most SVIS systems to date have been based on proprietary hardware and software solutions. This book describes an open source system, both in hardware and software.

The hardware is a single board computer (SBC) capable of running a PC operating system. The SBC includes high end graphics capabilities developed for PC games.

The software is based on Linux and OpenGL/Mesa. The reader is led through the software development by means of a series of programs with increasing capability. The presentation begins with a simple “Hello World!” program in QBasic and ends with a program template in the C language for an operational SVIS.

An accompanying CD-ROM includes the source code for all the programs in the book.

The final chapter discusses the design considerations for an Air Data, Attitude and Heading Reference System (AD-AHRS). Without an AD-AHRS, the utility of an SVIS is limited to a wings level display with manually entered heading and altitude. An AD-AHRS is truly the heart of a full performance SVIS.

The Author

Dr. James Hauser is a graduate of the USAF Academy and a former USAF pilot. He received his Ph.D. in Aerospace Engineering from the University of Colorado. He taught Avionics Systems Engineering at the Naval Postgraduate School for several years. He holds a commercial pilot license with instrument, single and multi-engine, and glider ratings. He is a former FAA DER with many years' experience in the engineering analysis for aircraft STC’s and TC’s. He holds an FCC Commercial General Class Radiotelephone License and an FAA Airframe Mechanics License. He is a registered Professional Engineer in the State of Colorado and is the President of AeroSpectra Inc., a consultant engineering firm.

For relaxation, Jim likes to do maintenance and improvements on the company aircraft, a PA23-160 Apache, dubbed the Millennium Pumpkin by his wife Kathleen.

Front Cover

A Synthetic Vision view looking west towards Eldorado Canyon, just south of Boulder, Colorado.

Return to Designing EFIS System