Académique Documents
Professionnel Documents
Culture Documents
The purpose of this paper is to present an ongoing effort to develop a helicopter flight
dynamics model (called Helix) that has sufficient detail to model helicopters with semi-
rigid or articulated rotors in any configuration, while still being fast enough so that it
can run in real-time on a single desktop computer. The flight dynamics model is based
on a previous in-house model, but this is modified to such an extend that it allows us to
simulate all helicopter configurations. A blade element approach is utilized for the blade
aerodynamics and for the rotor inflow model, both Pitt-Peters and Peters-He dynamic
inflow models are available. For real-time and off-line simulations, DUECAa and Simulink
are utilized. Due to the extensive use of both in-house and open-source software, it is a
cost effective and flexible solution for visualization, feedback control design, flight dynamics
model development and handling qualities research in an academic environment.
Nomenclature
∗ Ph.D. Student, Design, Integration and Operations of Aircraft and Rotorcraft, Faculty of Aerospace Engineering.
† Assistant Professor, Design, Integration and Operations of Aircraft and Rotorcraft, Faculty of Aerospace Engineering.
a Delft University Environment for Control and Activation
1 of 18
American
Copyright © 2007 by Van Hoydonck & Pavel. Published by the American Institute of Aeronautics
Institute of Aeronautics and Astronautics
and Astronautics, Inc., with permission.
I. Introduction
At the Delft University of Technology, the SIMONA simulator1 became operational five years ago. It
was designed as a general purpose research simulator suitable for different types and categories of fixed wing
aircraft and helicopters. In the early stages of its planning and development, an effort was underway at the
chair of Dynamics and Control of Aerospace Vehicles to develop a high fidelity helicopter flight dynamics
model for real-time simulation purposes.2 More recently, the incentive behind helicopter flight dynamics
simulation has changed towards using (unmanned) helicopters as a subject to explore and develop new control
theories and concepts.3 Due to its widely varying stability characteristics throughout the flight envelope,
helicopters are an ideal subject for that purpose. In contrast, the chair of Design, Integration and Operations
of Aircraft and Rotorcraft has focused more on fundamental research into helicopter aerodynamics4 and flight
dynamics.5 Over the years, this has resulted in several flight dynamics models of varying fidelity, mainly
aimed at off-line simulations.
An area of research where all of these topics play an equilly important role are helicopter handling
qualities investigations. For this, it is of utmost importance to utilize a flight dynamics model that on the
one hand has a sufficient level of detail and on the other hand, runs fast enough to allow for real-time
execution. For articulated helicopters, the rotor dynamics are well separated from the fuselage dynamics,
and handling qualities investigations can be done with realtively simple flight dynamics models. However,
for hingless and bearingless rotor designs, there are significant differences in responses and handling qualities
characteristics when a model is upgraded to include body-rotor couplings.6
Over the years, a number of comprehensive helicopter flight dynamics codes have been developed capable
of predicting the helicopter behaviour in different situations (see Kunz7 for a good overview). However, little
attention has been paid to creating a flexible solution needed for real-time simulation. The core requirements
for the helicopter flight dynamics model that is presented in this paper are listed below:
• ability to simulate different helicopters configurations without the need to change the code;
• stand-alone offline execution for trim and stability analyses;
• interface with DUECA for real-time simulation;
• interface with Simulink for controller design;
• low cost and ability to run on commodity hardware.
There are multiple ways to add flexibility to a flight dynamics model. One way to achieve flexibility is to
divide a mathematical model in modules that are linked together throught data-flows. This concept allows
easy restructuring of the simulation so that various modules can be interchanged, thus altering for instance
the detail of part of the simulation.8 A disadvantage of this particular approach is that a graphical tool like
Simulink is required to compose the flight dynamics model from its various modules.
Another way to add flexibility to a flight dynamics model is the path taken by the open-source flight
dynamics model JSBSim.9 Here, a generic, completely data-driven flight dynamics model framework is used
that allows aircraft configurations to be specified in data files. This way, no new program code is needed to
model an arbitrary configuration. This approach is used in the helicopter flight dynamics model described
in this paper.
In the following sections, some background will be given on the architecture of Helix, where the main
focus will be on data storage. Then, the simulation environment will be discussed, after which the analysis
and visualization capabilities in Helix are highlighted.
II. Architecture
In this section, an overview is given of the architecture of the flight dynamics model. Since the key
concept is data storage, first the file format that was chosen to store the helicopter configurations will be
discussed. The program is written in Fortran 90/95, some programming concepts introduced in this language
are highlighted.
2 of 18
There is however a fundamental difference in the purpose of DAVE-ML’s use of XML and Helix’ use of
XML. The main use of DAVE-ML is to facilitate the exchange of flight dynamics models between simulation
facilities, where the actual code to run the model is generated from the XML-file (e.g. DAVEtools16 ). Helix
on the other hand, directly uses the XML file as input, without an intermediate step that converts the
3 of 18
<hfdm_config>
<fileHeader>
...
</fileHeader
<mass_balance>
...
</mass_balance>
<metrics>
...
</metrics>
<ground_reactions>
...
</ground_reactions>
<propulsion>
...
</propulsion>
<aero_surfaces>
...
</aero_surfaces>
</hfdm_config>
mass balance The <mass_balance>-element contains data about the mass and inertia distribution of
the complete aircraft defined by an intertia matrix and a mass value. In addition, it is possible to add
pointmasses by means of a <location>- and a <mass>-element to model extra cargo or pilots/passengers.
There is one difference with JSBSim regarding the <location>-element that is worth mentioning. In JSBSim,
the location elements are all defined in the same axis system. This is not the case in Helix, where more
flexibility is needed.
metrics In JSBSim, the metrics section contains data about the positions, areas and arms of the different
aerodynamic surfaces, such as the wing chord, wing span and wing area. Furthermore it contains the
coordinates of the pilot eyepoint location. In Helix, the metics section contains the eyepoint location and the
expected ranges of the four pilot control input values. At the moment, these range limits are only enforced
during real-time simulation.
ground reactions The ground reactions element contains a contact element for every landing gear strut.
It is similar to the contact element in JSBSim, with the exception that the data related to the strut is kept
separate from the tire data. At the time of writing, ground reactions have not been modeled.
4 of 18
aero surfaces At the moment, the aero surfaces element contains definitions about the geometry and
aerodynamic properties of the stabilizers and fuselages. The main difference with the definitions in the
propulsion elements is that the stabilizers and fuselage are stateless. There is no difference between a
horizontal or vertical stabilizer, they are defined by a translation that fixes the root chord with respect
to the body-fixed frame of reference. Then, a rotation around the X-axis defines its orientation, after
which another translation to its centre of pressure defines the point where the local forces and moments are
calculatedb .
II.C.1. Units
Every element in the configuration file that models a quantity (such as a mass or a length) is represented by
a value and a unit. An example is given below,
<mass unit="kg"> 10.0 </mass>
Similar quantities that belong together (e.g. the individual coordinates in a location element) are grouped
together inside a parent element, inheriting the unit from that parent element.
The base units for length, mass, time, electric current and thermodynamic temperature are respectively
metre, kilogram, second, ampere and kelvin. The derived quantity plane angle is added to this set of base
quantities and it has the radian as unit. Input values that have degrees as unit are converted to radiansc . This
is less confusing that strictly following the SI-convention, since output quantities such as angular velocities
will have values expressed in rad/s instead of 1/s.
Values in the input file can be given standard SI units or custom US units, taking the error-prone task
of converting values from the one to the other system off the shoulders of the user. Internally, all data is
converted to SI units, and all output has SI-values.
5 of 18
coll
θ0 1.6 0.0 0.0 −5.54 7.0
lat
θ1c = 0.0 0.0 0.0 0.0 · + 0.0 (2)
long
θ1s T R 0.0 0.0 0.0 0.0 G 0.0 B
pedal pilot
In the XML-input file, every rotor has a <control_mixing> section that defines the gain matrix and bias
vector in the above linear transformation (see also Appendix A),
<control_mixing>
<!-- order : collective, lat. cyclic, long. cyclic, pedal -->
<gain_matrix unit="deg">
<theta_0> 25.0 0.0 0.0 0.0 </theta_0>
<theta_1c> 0.0 7.0 0.0 0.0 </theta_1c>
<theta_1s> 0.0 0.0 15.0 0.0 </theta_1s>
</gain_matrix>
<bias_vector unit="deg">
<theta_0> 0.0 </theta_0>
<theta_1c> 0.0 </theta_1c>
<theta_1s> 0.0 </theta_1s>
</bias_vector>
</control_mixing>
II.D.1. Modules
Fortran 90 introduced the module program unit. It contains specifications and definitions that can be made
accessible to other program units by a USE statement referencing the name of the target module. In addition,
accessibility can be limited to specific parts. By encapsulating subroutines and functions in modules, the
6 of 18
7 of 18
Figure 2: Desktop Real-time Simulation Environment showing: an OpenGL window with a basic heads-up
display, DUSIME control panel and kst showing an overhead view of the flight path.
The first author of this paper participated in this course (to get acquainted with DUECA). The idea
behind the controller was to stabilize the helicopter at every flight speed when the controls were not touched
by the pilot, which enables the ”pilot” to fly hands free. This was achieved by approximating the trim curves
of the controls and attitudes with third- and fourth-order polynomials as a function of forward speed. On
top of this, two additional autopilot functions were created. Other members of the group constructed the
outside visuals, a navigation display (to see the other team’s helicopters) and aural feedback. Figure 2 shows
the desktop real-time simulation environment: in the upper-left corner an OpenGL window with a heads-up
display, in the upper right corner kst (see Section IV.C.1) showing a top-down view of the flown path and
in the lower-right corner, the DUSIME control panel.
8 of 18
X = mg sin Θ + m (w q − v r) (3)
Y = −mg cos Θ sin Φ + m (u r − w p) (4)
Z = −mg cos Θ cos Φ + m (v p − u q) (5)
L = −Ixz p q − (Iy − Iz ) q r (6)
M = −Ixz (r2 − p2 ) − (Iz − Ix ) r p (7)
N = Ixz q r − (Ix − Iy ) p q (8)
It follows that only the angular velocity Ψ̇ may have a nonzero value. Then, the resultant angular velocity
of the airplane is around an earth-fixed vertical axis. The kinematic relations for the body-fixed angular
velocities22 reduce to
The complete angular velocity Ω then equates to Ψ̇h . In terms of the Euler angles defining the air path
axis,22 we get
Ω = Ẋ and γ̇ = µ̇ = 0 (12)
Therefore, the flight path angle γ and the aerodynamic angle of roll µ are also independent of time. Another
observation that follows from the above is that Ẋ has the same magnitude as Ψ̇, namely
Ψ̇ = Ẋ = Ω (13)
So, in trimmed flight, the difference between Ψ̇ and Ẋ is zero and the difference between Ψ and X is a
(nonzero) constant. This difference, named χ, is used as an extra parameter defining the track angle. In
Fig. 3, a graphical representation of the relationship between the angles Θ, Φ, α, β, γ, χ, X and Ψ in
trimmed flight is given, with all angles drawn on a sphere with radius V . Xe and Ze are two of the three
axes of the moving Earth axis system or local horizon system. Xcg is the X-axis of the centre of gravity
frame of reference of the helicopter.
By transforming the air speed vector to the body axis, the velocity components follow as,
9 of 18
β Φ
Θ
Xe
V
γ Xa X Ψ
Ze
XΨ
χ
h
Ze
IV.A.3. Implementation
The trim procedure used is a first order, modular Newton iteration. Three routines are available to trim
different parts of a helicopter. The top level trim routine drives the rigid body accelerations to zero. The
two other routines ensure that the main rotor and tail rotor derivatives are driven to zero. This division
ensures that (in theory) it is possible to easily trim any viable helicopter configurationi.
Fuselage trim The trim variable vector v̄heli for the top level (fuselage) trim routine consists of the four
controls and the fuselage pitch and roll angles,
10 of 18
Rotor trim For a rotor, a trim routine drives all rotor state derivatives to zero. As an example, for a
rotor that has second order flap dynamics and three state inflow dynamics, the trim variable vector would
be
v̄rotor = (λ0 λ1s λ1c β0 β1s β1c β̇0 β̇1s β̇1c )T (18)
The solution criterion vector z̄rotor consists of the derivatives of the states in v̄rotor ,
z̄rotor = (λ̇0 λ̇1s λ̇1c β̇0 β̇1s β̇1c β̈0 β̈1s β̈1c )T (19)
and just like for the fuselage, these derivatives should be zero.
Tail rotor trim The dynamics of the tail rotor inflow is modeled using quasi-dynamic inflow, where a
time constant τ is used to represent the apparent mass effect of the air surrounding it. The trim variable
vector v̄tr is
v̄tr = v̄tr = λ0T R (20)
The solution variable z̄tr is the time derivative of the uniform inflow, which must be zero.
The division between fuselage and rotors is done because of the fact that the blade equations are implicit,
i.e., they contain, next to the helicopter linear and angular velocities, also the derivatives of these states, or
But since one of the goals of the trim routine is to find a state where ẋheli is (near) zero, these terms are
removed from the rotor state equations during trim, which in essence reduces Eq. 21 to
This simplification greatly increases the stability (and speed) by which the trim routine is able to find a
solutionj .
ẋ − Ax = Bu (23)
The one that is found by the trim algorithm depends upon the initial value of the fuselage roll angle, zero or 180 degrees.
11 of 18
Trim Σ
Trimmed States Disturbed
& Tail Rotor Forces
Disturbances &
Moments
FUS–VF–HS
Nondimensionalisation
Stability Derivatives &
Trim Corrections
Figure 5: Flow diagram of the linearisation routine, with steady-state rotor emulation
Figure 6: Sample graphical output from Plplot with Gnome Canvas Widget driver (actual plot area in
inverted colours)
At the moment, three categories of output are available. One of these (fuselage trim results for the
SA-330 Puma) is shown in Fig. 6. Root-locus plots (coupled and uncoupled) of the linear model eigenvalues
can be shown as a function of one of the trim variables. All these results can also be saved directly to M-files,
12 of 18
Figure 7: Pilot control output during a real-time desktop simulation session with a bare (no SCAS) SA-330
Puma model as visualized with kst
V. Conclusions
In this paper, an overview is given of a modular, generic flight dynamics model that is in development
at Delft University of Technology. To achieve the intended flexibility, XML is used for data storage. The
programming language chosen for the core of the flight dynamics model is Fortran 90/95. The object-
oriented capabilities that are available through modules and derived types are sufficient for most engineering
and scientific programming tasks.
On a fidelity scale, the present model includes 6 Degrees Of Freedom (DOF) body motion, 3-DOF flap
dynamics, 6-DOF rotor inflow dynamics and 1-DOF tail rotor inflow dynamics. It is planned to use this model
together with the high-fidelity COTS software package FLIGHTLAB25 and with special-purpose analytical
models developed to gain fundamental understanding of helicopter dynamics.
Off-line analysis capabilities include trim and reduced-order model extraction and for the simulation
environment, DUECA and Simulink are utilized. Due to the extensive use of both in-house and open-source
software, it is a cost effective and flexible solution for visualization, feedback control design, flight dynamics
model development and handling qualities research in an academic environment.
13 of 18
References
1 Advani, S. K., van Zuylen, E., and Bettendorf, S., “SIMONA - A Reconfigurable and Versatile Research Facility,” Tech.
Improved Correction for Sweep Effects,” Advances in Rotorcraft Technology, CP – 592 , AGARD Conference Proceedings,
AGARD, Neuilly sur Seine, 1997.
5 Pavel, M. D., On the Necessary Degrees of Freedom for Helicopter and Wind Turbine Low-Frequency Mode Modeling,
AIAA-2005-6206, 2005.
7 Kunz, D. L., “Comprehensive Rotorcraft Analysis: Past, Present and Future,” Tech. Rep. AIAA-2005-2244, 2005.
8 Voorsluijs, G. M., A Modular Generic Helicopter Model, M.Sc. Thesis, Delft University of Technology, May 2003.
9 “JSBSim, Open Source Flight Dynamics Model in C++,” http://jsbsim.sourceforge.net/, July 2007.
10 “XML Extensible Markup Language,” http://www.w3.org/XML/, July 2007.
11 “xml-fortran,” http://xml-fortran.sourceforge.net/, July 2007.
12 “XML,” http://nn-online.org/code/xml/, July 2007.
13 “xmlf90,” http://lcdx00.wm.lc.ehu.es/ag/xml/, July 2007.
14 “FoX,” http://www.uszla.me.uk/FoX/, July 2007.
15 Anon., “Dynamic Aerospace Vehicle Exchange Markup Language (DAVE-ML) Reference, Version 1.9b3,” Tech. Rep.
2007.
17 Jensen, P. T. and Curtiss Jr., H. C., “An Analytically Linearized Helicopter Model with Improved Modeling Accuracy
- Interim Report, August 1, 1990 – August 1, 1991,” Tech. Rep. NASA-CR-188715, Princeton University, Department of
Mechanical and Aerospace Engineering, Princeton, Aug. 1991.
18 “LAPACK, Linear Algebra PACKage,” http://www.netlib.org/lapack/, July 2007.
19 “Intel Math Kernel Library,” http://www.intel.com/cd/software/products/asmo-na/eng/perflib/219769.htm, July
2007.
20 van Paassen, M. M., Stroosma, O., and Delatour, J., “DUECA – Data-Driven Activation in Distributed Real-Time
14 of 18
15 of 18
16 of 18
17 of 18
18 of 18