Applied Flight Test Engineering Course Series

Online Courses to Enhance Your Flight Test Engineering Education

Flight Courtesy: James Sparaga

Two taxiways diverged in a wood, and I—
I took the one less traveled by,
And that has made all the difference.

Adapted from Robert Frost,
The Road Not Taken

Overview

Our Applied Flight Test Engineering Course Series focuses on teaching practical aspects of flight testing with lots of coding in Python and simulated test flights. It is intended for flight test engineers and test pilots alike. In fact, due to its high demands in both programming and flight test execution, you may consider taking this course series as a flight test engineer and test pilot course work sharing pair. You will develop flight test data analysis codes and write an Automatic Flight Control System (AFCS), which you will then evaluate in flight test in a flight simulator, as well as use it to assist you in conducting non-AFCS flight tests.

Course Content Roadmap

Part 1: Flight Test Engineering Code Development in Python

In Part 1, you will first hone your general Python programming skills and broaden your horizons by applying Python to a variety of flight test engineering related topics.

Then you will write codes which will implement some of the underlying flight test engineering methods and concepts, for instance, code which reproduces the plot on the right.

This set of codes will form the basis for codes you will develop afterwards to perform flight test data analysis, data reduction after flight test and data expansion for aircraft flight manuals.

The time ratio method is used to infer the damping ratio from recorded time domain data in cases of two or fewer oscillations.
Bode plot with control.matlab submodule
The Bode plot of a system depicts magnitude (gain) and phase of the system output versus angular frequency. It shows a system’s frequency response, i.e. its response to a sinusoidal input of a given frequency.

Part 2: Interactive Flight Simulator Interface and Real Time Telemetry Display

The next major topic to tackle in this applied flight test engineering course series will be to prepare you to work with flight simulations in real time.

You will learn how to establish real-time two-way communications between your Python codes and the commercial flight simulator software X-Plane, using the X-Plane Connect (XPC) Toolbox developed by NASA. And you’ll get your Python codes to accept inputs from a joystick attached to your computer.

In addition, you will develop the ability to display data numerically and graphically in real time with your Python codes, by writing your very own IADS-like flight test data display software (unless you want to purchase a commercially available one).

Developing this ability is crucial for you to be able to conduct realistic simulated flight tests in X-Plane and control the aircraft with your own codes as well as with a joystick.

Part 3: Applications of Control Theory

The modern flight control systems lectures at your test pilot school may have primarily consisted of control theory development and conceptual understanding, such as illustrated in the Bode plot above. In our applied flight test engineering course series you will learn hands-on how to implement basic control algorithms such as the proportional-integral-derivative (PID) controller illustrated on the right, practice tuning them, and run them to control simple model physical systems. At your own discretion, you may take this further, dive into nonlinear dynamic inversion (NDI) (external link to a document by an unknown author) and even implement model predictive control (MPC). In the end, you will have assembled all the pieces together to write your own basic Automatic Flight Control System (AFCS) for an aircraft (no attempt will be made to make any software DO-178C compliant).

The AFCS will also need to be supplied with sensor data from different sensors, which is an inherently noisy affair. Therefore, you will learn how to use different versions of Kalman filters and sensor fusion to average out the noise and combine the measurements into an attitude and position estimate.

PID control broken into components, with commanded steady state being at \(z_t=-5\) for a no-friction, no-spring second-order linear time-invariant physical system \(z(t)=u(t)\). P (yellow), PD with steady state at zero control input (red), PD with steady state at non-zero control input (green), and PID (blue) controller.

Part 4: Automatic Flight Control System (AFCS) and Flight Test Conduct

Armed with the above developed knowledge and skills, in the final part of our Applied Flight Test Engineering Course Series you will proceed to write your own AFCS code for either a fixed wing or a rotary wing aircraft, and flight test it formally in X-Plane. To this end, you will write flight test plans, perform flight test techniques (autonomously and handflown), collect flight test data, analyze the data, and generate flight test reports.

The AFCS will serve two primary objectives: a) to collect flight test data autonomously, in a cleaner fashion than a test pilot would manually, b) to improve the closed loop handling qualities (CLHQ) of the simulated aircraft with the pilot in the loop.

The flight test data collection assistance function is a standard feature present in many modern fly-by-wire systems. The AFCS is programmed to execute the flight test techniques autonomously and thus more repeatably, and the actual flight test data is then collected with the AFCS on or off, as desired.

The handling qualities study will prompt you to write the AFCS in a way that it makes the aircraft easier to fly for a pilot. This will expose you to subjective handling qualities assessments by the test pilot, which is a very important part of flight test, going beyond mere quantitative data collection and analysis to satisfy regulatory requirements. (Note that you will also have to define a mission for your aircraft, against which the CLHQ assessments are to be made—preferably one that you are intimately familiar with, if you are also the test pilot.)

Simulation of a Robinson R22 in the commercial flight simulator software X-Plane 10. The helicopter is autonomously hovering at 3 feet AGL over the runway numbers without any pilot control inputs. The helicopter is controlled by an Automatic Flight Control System (AFCS) written in Python, which interfaces with the X-Plane simulation software and with a joystick attached to the computer. In hover mode, this 4-channel AFCS implements transient rate command position hold (TRC/PH) with yaw rate command heading hold (RCHH) and altitude hold: with no pilot inputs on the joystick, the helicopter hovers in place. Longitudinal and lateral control inputs on the joystick by the pilot command forward and lateral horizontal velocities. Torque pedals command yaw rate, unless the pedals are not used, in which case the aircraft heading is held. The telemetry display software showcased on the right is our own; with our assistance and some starter code, you will learn to write similar software, which you can adapt for your own purposes.

Courses

We package the above ambitious roadmap into three separate flight test courses, which are intended to be taken consecutively.

Python Contour Plot
Contour plot created with Matplotlib, a Python module providing MATLAB-style plotting capability.

Data Science and Computer Programming in Python for Pilots and Flight Test Engineers

This introductory course covers the first half of Part 1 of the above roadmap and forms the foundation of your Python programming skills for data analysis purposes. It is the computer programming equivalent of a Pre-TPS course, developing your Python coding skills.

Scale Altitude Correction Chart used for pitot-static system calibration

Flight Test Engineering in Python

This Python flight test engineering course covers the second half of Part 1, as well as Parts 2 and 3 of the above roadmap. You will implement flight test engineering calculations and data analysis codes in Python, connect Python to X-Plane and to a joystick, write your own flight test telemetry display software, and learn the basics of how to code a simple AFCS.

Capstone Project

This course covers Part 4 of the above roadmap. During your capstone project, you will apply the programming skills and flight test engineering and control theory knowledge you developed in the previous two courses to write an AFCS in Python for an aircraft of your choice (fixed wing or rotary wing), plan a series of flight tests, conduct the flight tests in X-Plane, collect flight test data and analyze them, and write flight test reports.