Over the years, I've written seven flight simulations. Looking back on them, I can see that each was written for a specific purpose. I love numerical modeling. Applying math and physics to a problem and working through a derivation to create a final model puts me in my natural habitat. Then I enjoy embodying that model in code and exercising it to get answers. For me, that's what Engineering is all about. The rigid body equations of motion, which all flight simulations are based on, are just such a system. When I first started writing flight simulations, I didn't fully understand them. In all of the texts I could find, the derivation of the equations was incomplete, with skipped steps and lots of confusing hand waving. In recent years, I've gone back, collecting as much as I could from disparate sources, and I now have the only complete derivation of the equations of motion that I've ever seen. It's liberating to finally understand them from front to back.
Naval Air Engineering Center:
The first flight simulation I wrote was in my first real engineering job, in the Advanced Systems Group at the Naval Air Engineering Center. We did a lot of Operations Research work in that branch, studying complex systems, creating techniques for analyzing them, and then improving or optimizing them. The paper at the right, written by our Branch Head and his Deputy, is a good example of that work. (Click on any image on this page to see a larger version.) As one of our analysis tools in the branch, I created a 3 degree-of-freedom flight simulation that predicted only the longitudinal motion of an aircraft. The dynamic model included catapult tow forces as well as constrained motion along a curved surface. Using it, we could analyze the requirements that different aircraft placed on the sizing and use of a catapult. We could also see the effect that a curved, ski-jump shaped, flight deck would have on the launch of any aircraft, and how its use could affect the size of the flight deck and the length of the catapult. Applying the program to foreign aircraft carriers, we could predict the size of the largest aircraft they could launch. I took the simulation with me to my next assignment, in the Research and Development Department. There, with some modifications, we used it to evaluate possible future aircraft/ship combinations, to determine whether aircraft carrier sizes could be reduced or mission effectiveness increased. I was very pleased to find the program still in use by the department a few years later. In its last incarnation--that I know of--I used the same simulation as the basis for a Visual Landing Aid design and analysis system. Combined with a pilot model and a random number generator, we could use the system to analyze aircraft carrier visual landing aids, generating touchdown point distributions along the arresting portion of the flight deck. That's a good amount of mileage from one simulation.
Naval Air Development Center
Later, I transferred to the Navy's Flight Dynamics Branch at the Naval Air Development Center. There, they used flight simulations for their most basic purpose--evaluating and improving aircraft flight dynamics, flying qualities and control harmony. They gave me the assignment to create a new simulation for the group. The simulation embodied a decoupled, 6 degree-of-freedom (3 DOF longitudinal, 3 DOF lateral/directional), linearized model. They already had a coupled, 6 degree-of-freedom, non-linear simulation in the group, and they wanted this new model for comparison purposes. I wrote the report at the left on the new simulation, comparing its predictions with those of the non-linear model. The results were interesting. The linear model would match the non-linear model during a control deflection. But then, as one would expect, with increasing simulated time, the linear response would slowly diverge from the non-linear response. At the time that I wrote this simulation, the group was doing a lot of work with the McDonnel-Douglas T-45 Goshawk. The figure to the right shows one plot from the report: the T-45's response to a rudder doublet, as predicted by both models. Note the small differences in the responses and the increasing difference between the curves as time marches on.
My next flight simulation was for a very focused purpose. I joined a group that was creating the world's first fully autonomous UAV control system. For our work, we needed a hardware-in-the-loop (HIL) simulation. That kind of simulation is used to make a system think that it is connected to a real device. In our case, we wanted our airborne control system to think that it was flying in a real airplane. With the HIL simulation, we could develop and test the airborne control system in the lab, on the workbench. I created a 6 degree-of-freedom, non-linear flight simulation of the UAV, and added to it realistic dynamic models of a gimbal and camera. Written carefully, I found that the simulation could run many times faster than real-time on our 20 MHz PC. We eventually increased the realism of the simulation even more by adding models, generating realistic errors and noise, of the sensors and actuators on the aircraft. Even with those added, it still ran faster than real-time. Here is a paper that I wrote on the simulation for a computer programming conference and a video of the simulation in action:
Analytical Methods, Inc.
I recently wrote another hardware-in-the-loop simulation at Analytical Methods, Inc. That simulation was created for the laboratory development of their collapsible-wing, man-portable UAV. We had a full set of aerodynamic data for the aircraft, assembled from wind tunnel and CFD analyses. I wrote the simulation to sample that data at runtime, providing a fully nonlinear simulation that could reproduce the aircraft dynamics over the full range of airspeeds and attitudes, including departures from flight in the post-stall and spin regimes. Having never had a full aerodynamic data set to work with before, I was stunned by the realism of the simulation's responses.
I'm currently creating a new flight simulation for my own use. I've included all of the lessons I've learned from developing past simulations and I can say that this is the best I've ever developed. The simulation is intended for many different uses, from open-loop, bare-airframe flight dynamics analyses to hardware-in-the-loop simulation. It assumes a round, rather than flat, Earth model and will correctly model a vehicle's dynamics from the surface up through orbit, so it can be used on aircraft or rockets. I've written the system so that new dynamic models, of gimbals, servos, engines, sensors, etc., can be added with very little effort. The program can communicate and be controlled by any other program, because its interface is the UDP stack. It will have a selection of "cabs" that can be used to operate the simulation, from the keyboard and joystick, from input files, from an A/D--D/A interface (for harware-in-the-loop work) or any others that prove useful. It will also have hooks to connect to FlightGear and X-Plane, for use as visualization systems. On my 2.13 GHz Pentium laptop, it currently runs about 2,000 times real-time. So it's perfect for use in developing intelligent systems, where full missions need to be flown or where many instances of the simulation (many aircraft, that is) need to be simulated at one time. The figure to the right is the output from a run controlled with the open-loop cab. Here, I'm simulating a Cessna 150 trimmed at an approach speed of 70 kts. A doublet input is applied to the rudder and then the aircraft is allowed to respond. In the "Body-Axis Velocities" plot, you can see the rudder input and the initial response of the aircraft, as the lateral velocity (v) oscillates and damps-out quickly. In the "Body-Axis Rotational Rates" and "Lateral/Directional Displacements" plots, you can see the "dutch roll" response of the aircraft, as motion around the vertical axis is linked to the motion about the roll axis. Aircraft "heading" angle is labeled "Psi", bank angle is labeled "Phi" and sideslip angle is labeled "Beta". The dutch roll damps-out quickly, which is a positive attribute for an aircraft, especially a trainer. After the dutch roll damps out, the aircraft enters into a spiral mode, as it rolls from the upright, accelerates and begins descending. This mode would be dangerous if the airplane were allowed to fly without any control input. But with a pilot at the controls it's not an issue. The spiral mode diverges so slowly that the pilot will correct for it without even knowing that it's happening.
I'll be using this simulation to create new UAV control systems. If you'd like to use it for your work, I intend to offer copies of the simulation for sale after it's complete. Stay tuned.