An open-source, stochastic, six-degrees-of

An open-source, stochastic, six-degrees-of-freedom
rocket flight simulator, with a probabilistic trajectory
analysis approach
Willem J. Eerland ∗, Simon Box †, Hans Fangohr ‡ , and András Sóbester
§
University of Southampton, Southampton, England SO17 1BJ, United Kingdom
Predicting the flight-path of an unguided rocket can help overcome unnecessary risks.
Avoiding residential areas or a car-park can improve the safety of launching a rocket significantly. Furthermore, an accurate landing site prediction facilitates recovery. This paper
introduces a six-degrees-of-freedom flight simulator for large unguided model rockets that
can fly to altitudes of up to 13 km and then return to earth by parachute. The open-source
software package assists the user with the design of rockets, and its simulation core models
both the rocket flight and the parachute descent in stochastic wind conditions. Furthermore, the uncertainty in the input variables propagates through the model via a Monte
Carlo wrapper, simulating a range of possible flight conditions. The resulting trajectories
are captured as a Gaussian process, which assists in the statistical assessment of the flight
conditions in the face of uncertainties, such as changes in wind conditions, failure to deploy
the parachute, and variations in thrust. This approach also facilitates concise presentation
of such uncertainties via visualisation of trajectory ensembles.
Nomenclature
E
k
M
m
µ
N
Σ
σ
τ
τ
u
v
v̂
x
x
y
y
z
z
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
expectation
covariance kernel
number of data-points
mean function
mean vector
Gaussian function
covariance matrix
standard deviation
normalised time [-]
normalised time vector [-]
vector holding a three-dimensional coordinate [m]
column vector holding three-dimensional coordinates [m]
estimated column vector holding three-dimensional coordinates [m]
easting [m]
easting vector [m]
northing [m]
northing vector [m]
altitude [m]
altitude vector [m]
∗ Ph.D.
Candidate, Aeronautics, Astronautics, and Computational Engineering. Member AIAA, [email protected]
Research Fellow, Transportation Research Group. Member AIAA
‡ Professor, Aeronautics, Astronautics, and Computational Engineering
§ Associate Professor, Aeronautics, Astronautics, and Computational Engineering. Member AIAA
† Visiting
1 of 15
American Institute of Aeronautics and Astronautics
I.
Introduction
arge, unguided model rockets are flown extensively by hobbyists1,2 and in academia3 . Safety regulation
for such events demands a probabilistic assessment of flight trajectories in the context of the forecast
conditions and the uncertainty over various aspects of such flights4 . At the same time, such models may
facilitate the assessment of security threats posed by certain improvised rocket-propelled devices.
There are various software packages available on the market that assist the user in designing a rocket,
and predict the corresponding flight path; these include commercial solutions such as RockSim5 , and opensource solutions such as OpenRocket6 . However, all these packages simulate the performance of a rocket
under nominal conditions, returning only the expected performance to the user. RockSim Pro5 does displays
confidence bounds around the predicted landing location to the user, but is only available to US citizens.
The Cambridge Rocketry Simulator7 assists the user to design a concept rocket in a Graphical User
Interface (GUI), fly the rocket in a range of possible flight conditions, and obtain confidence bounds on the
expected flightpath and landing location by analysing the output trajectory data. The specific contributions
of the third version compared to the previous versions are: the improved GUI, which is based on the OpenRocket6 code, a modification to the simulator core from Box, Bishop and Hunt8 to incorporate additional
stochastic variables, and the expansion of user input to set the of degree uncertainty for the stochastic variables. This puts the Cambridge Rocketry Simulator on a par with RockSim Pro. On top of that, the entire
software package is open-source and available online.
Finally, the trajectory analysis approach from Eerland, Box and Sóbester9 , available as an open-source
Python toolbox10 , is applied to rocket trajectories. This approach models the trajectory data as a Gaussian
process, capturing the general trend and dispersion. The direct application here is the ability to visualise
the behaviour of a large dataset without cluttering the screen. Besides being helpful in visualising, it also
allows quantifying the difference between the simulated scenarios. It visualises two- and three-dimensional
data using the Python libraries Matplotlib11 and Mayavi12 respectively. The calculations are done using the
libraries SciPy and Numpy13 , and all the data handling is done via Pandas14 . The results seen in this paper
are produced in Jupyter Notebooks15 , which are available online as supplemental material.
The remainder of the paper is organised as follows. In section II, the architecture of the program is
described, elaborating on the purpose of each part and explaining the theory applied. Furthermore, it
includes an overview of the various rocket components and describes the stochastic elements available in the
simulator. Finally, it describes the method of using time-cues to model the rocket trajectories as a Gaussian
process. Section III analyses the trajectory data generated in four different scenarios, namely, changes in
wind conditions, failure to deploy the parachute, and variations in thrust. This section show-cases the
usability of the trajectory analysis applied to rocket trajectories. Finally, in section IV, the conclusions are
presented.
L
II.
Methodology
This section starts of with an overview of the software architecture. As there is a clear divide between
functionality and programming languages, this simultaneously provides an overview of functionality. Subsection B introduces the module that assists the user with the rocket design. Subsection C is an overview
of the stochastic input variables. Finally, subsection D elaborates on how the rocket trajectories are modelled as a Gaussian process, useful for visualising the behaviour of numerous trajectories, and quantifying
the difference between varying the launch- and atmosphere conditions. Furthermore, it also explains how
abrupt changes in the trajectories are dealt with, such as the activation of the second stage, or a parachute
deployment.
A.
Overview of the architecture
The architecture of the Cambridge Rocketry Simulator features three programming languages. The GUI
is written in Java, providing a method for the user to control the input parameters. It also assists with
the design of the rocket. The simulator core is written in C++ , allowing rapid execution of numerous
rocket launches – a requirement for effectively applying the Monte Carlo method to obtain a probabilistic
interpretation. A more in-depth review of the software is available online7 , and includes a description of
2 of 15
American Institute of Aeronautics and Astronautics
the support and testing framework. Finally, the visualisation is written in Python. An overview of the
architecture is available in Figure 1.
The information between the three components is transferred via Extensible Mark-up Language (XML)
documents. Where the input data of the simulator consists of the physics related to the rocket (e.g. moment
of inertia as a function of time), and the output data consists of flight-path trajectories (i.e. northing,
easting, and altitude). Furthermore, there is an XML file containing parameters related to the degree of
uncertainty of the stochastic variables (to be discussed in subsection C). Additional functionality allows the
XML output to be exported as a Comma Separated Values (CSV) file. An overview of the headers belonging
to this CSV file is available in Table 2.
XML
uncertain
GUI
(Java)
user
plots
(Python)
Teetool
(Python)
XML
input
simulator
(C++ )
XML
output
CSV
Figure 1: Schematic representation of the components and the corresponding programming languages. The
dashed lines represent a path specific to the third version.
Table 2: Description of CSV file headers
Label
INDEX
ID STR
ID STAGE STR
TIME SECONDS DOUBLE
EASTINGS METERS DOUBLE
NORTHINGS METERS DOUBLE
ALTITUDE METERS DOUBLE
DISTANCE METERS DOUBLE
EVENT INT
B.
Type
Integer
String
String
Double
Double
Double
Double
Double
Integer
Description
unique index per trajectory id
trajectory identifier
stage identifier (e.g. SingleStage)
time in seconds
easting in metres
northing in metres
altitude in metres
absolute distance in metres
event identifier (e.g. apogee reached)
Designing a rocket
Other than providing an interface to the user and executing both the C++ and Python code-base, the Java
module is capable of giving a physical interpretation of the rocket design. To construct the rocket, the
components seen in Table 3 are available. When components are added, they are visible in the complete
rocket, as seen in Figure 2. There are two main categories; the external components, that influence the
aerodynamics and the inertia, and internal components, that only influence the latter. Mass objects are
a subset of the internal components, however, these are only modelled as a point-mass. Furthermore, it
is possible to include a single or multiple parachutes, where each parachute holds unique properties, such
as the activation altitude, drag coefficient, size, and mass. A complete overview of the components and
3 of 15
American Institute of Aeronautics and Astronautics
parameters is included in the user-guide, available in the software repository7 . These parameters can be
modified directly in the XML input file.
Table 3: Available design components
External components
Nose cone
Body tube
Transition
Trapezoidal fins
Internal components
Inner tube
Coupler
Centring ring
Bulkhead
Mass objects
Parachute
Mass component
Figure 2: The rocket design tab of the user interface
C.
Stochastic elements in the simulation
This subsection describes the process of capturing the uncertainty of an input variable (e.g. drag coefficient)
in the output (e.g. landing location), as this is not straightforward in a system with coupled input variables.
In simulating systems that have many coupled input variables such as this one, Monte Carlo methods are
useful to obtain a probabilistic interpretation. In a nutshell, Monte Carlo methods work by sampling over
the probability distribution of the input space, and reflect that uncertainty in the output of the simulation.
While this provides a method of obtaining a probabilistic interpretation of the output, here we focus on the
probability distribution of the input space.
An overview of the input variables, their probability distribution, the default values, and how they are
applied can be seen in Table 4. Not all variables are directly available in the GUI (seen in Figure 3),
however, those not visible can be modified in the uncertainty XML file. The probability distribution of all
input variables is assumed to be normally distributed, however, the mean value, and the manner in which
4 of 15
American Institute of Aeronautics and Astronautics
the uncertainty (represented as the standard deviation σ) is applied differs. For both angles, declination
and azimuth, the random variables is applied as an addition, with a mean equal to 0. The reasoning here
is that the positioning uncertainty is typically independent of the variable value. For the other variables
the uncertainty is applied as a multiplication, and the mean is equal to 1. The result is an uncertainty as a
percentage, causing large values of the variable to have a larger variation than smaller values.
As the thrust curve consists of multiple points as a function of time, the uncertainty is modelled by
drawing a sample from the normal distribution, then all thrust values are multiplied with this sample value,
causing the entire curve to shift up or down accordingly. It should be noted that there is a ceiling of 250 as
a maximum thrust-to-weight ratio set within the simulation. This is to prevent a scenario of unreasonable
thrust that would produce numerical errors in the simulator.
Figure 3: Launch- and atmospheric conditions tab of the user interface
Table 4: Overview of stochastic variables and their implementation
Variable
Drag coefficient
Centre of pressure
Normal coefficient
Parachute drag
coefficient
Thrust curve
Declination
launch angle
Azimuth
launch angle
D.
Probability
distribution
N (1, σ 2 ), σ = 0.2
N (1, σ 2 ), σ = 0.1
N (1, σ 2 ), σ = 0.1
Multiplication
Multiplication
Multiplication
N (1, σ 2 ), σ = 0.1
Multiplication
N (1, σ 2 ), σ = 0.01
Multiplication
N (0, σ 2 ), σ = 1
Addition
N (0, σ 2 ), σ = 1
Addition
How applied
Modelling the rocket trajectories as a Gaussian process
The previous subsection describes the process of capturing the uncertainty of an input variable in the output
via the Monte Carlo method. However, as the input variables are sampled independently from a normal
5 of 15
American Institute of Aeronautics and Astronautics
distribution, it’s possible to end up with launch- and atmospheric conditions that correspond with a low
probability (i.e. multiple input variables are far away from their nominal value). As the Monte Carlo
method simulates more and more conditions, eventually one of these instances will result in an unstable
rocket flight, but this one outlier might be a bad representation of the whole. To capture these effects, a
trajectory analysis method is implemented to model the spatial distribution of the rocket trajectories as
produced by the simulator. This allows for an unrestricted sampling space as the input, which is useful
because there is an unknown influence of the variables on the output, while obtaining the spatial statistics
based on the unfiltered output from the simulator. The task at hand is to translate the trajectory data
into a mean trajectory and capture the dispersion from the mean trajectory. This subsection describes a
simplified version of the original method as published in Eerland, Box and Sóbester9 , specifically suited
to three-dimensional rocket trajectory data as output by the simulator, which has no missing data, nor
any measurement noise. Furthermore, the time-warping approach described here is modified to handle the
abrupt changes seen in the rocket trajectories (e.g. the start of the second stage, and the deployment of the
parachutes).
Given the trajectory data:
 
x
 
(1)
v = y
z
where v is a column vector and x, y, and z are vectors containing the coordinates easting, northing, and
altitude respectively. Therefore, when a trajectory has M coordinates, v is a (3 · M ) × 1 vector. As the
data are produced by the simulator, information about position, time, and the particular stage of flight is
available. By definition, all trajectories start at the normalised time τ = 0, and end at τ = 1. There are
time-warping methods available to align the behaviour of the trajectories16 , however, such a method is not
required here as the moments that these events occur are well known. These are the moments where there is
a change from one stage of flight to the next, for example when the rocket reaches apogee. By synchronizing
these moments in the normalised time vector τ , the time-warping is complete. For this reason the label
EVENT INT is included in the CSV file (seen in Table 2), as it refers to a particular stage of the flight.
Hence, the normalised time vector τ to accompany the coordinate vector v is equal to:
h
i|
1
τ = 0 M
(2)
... M
M
where the points in time when the trajectory changes from one stage of flight to the next are aligned. The
values of these points in time are set by the nominal flight. For example, if the nominal flight reaches apogee
at τ = 0.3, all trajectories reach apogee at τ = 0.3.
Now, with the additional assumption that the rocket travels linearly between data-points, the coordinate
vector u can be expressed as a function of the normalised time τ :
u(τ ) = [x y z]|
(3)
where x, y, and z are the coordinates from x, y, and z, linearly interpolated as a function of τ . All trajectories
can now be resampled to a uniform size to the column vector v̂. The structure is identical to v, seen in
Equation (1), however, the size is identical between all trajectories. In this paper 100 steps are taken, thus
v̂ is a 300 × 1 vector, for all N trajectories found in the data. The mean vector µ, and the covariance matrix
Σ are calculated following:
N
1 X
µ=
{E[v̂n ]}
(4)
N n=1
Σ=
N
1 X
{v̂n v̂n| − 2v̂n| µ + µµ| }
N n=1
(5)
where
p(u(τ )) ∼ N (u(τ ) |µ, Σ)
(6)
This solution fits into a Gaussian Process (GP) framework, where a function is defined as a Gaussian
process by a mean function m(τ ) and a covariance kernel k(τ, τ 0 ):
p(u(τ )) ∼ GP(m(τ ), k(τ, τ 0 ))
6 of 15
American Institute of Aeronautics and Astronautics
(7)
where
m(τ ) = E[u] = µ
(8)
k(τ, τ 0 ) = E[(u(τ ) − m(τ ))(u(τ 0 ) − m(τ 0 ))] = Σ
(9)
A more intuitive representation of the mean function m(τ ), given by Equation (8), is a point that moves
along a three-dimensional trajectory as a function of τ . In turn, the covariance kernel k(τ, τ 0 ), given by
Equation (9), can be represented as a three-dimensional ellipsoid at a constant probability. The reference to
the GP framework is made, as it provides the mathematical tools necessary to handle noise measurements
and missing data, to be applied when either is a problem.
There are several advantages to this approach. Firstly, it is shown how a probabilistic model can capture
the general trend and dispersion seen in the trajectory data. The direct application here is the ability to
visualise the behaviour of a large dataset without cluttering the screen. Besides helpful in visualising, it
also allows quantifying the difference between the scenarios. The latter is done by evaluating the number of
grid-points found within the one standard deviation (σ = 1) region for multiple scenarios. Changes in these
points reflect changes in the trend modelled from the trajectory data.
III.
Results
This section demonstrates the effects of the stochastic input variables to the output trajectory data. For
each of the four scenarios seen in this section, 500 trajectories are generated via the Monte Carlo method
as described in subsection C. It shows the results of modelling the output data as a Gaussian process, using
the additional information on the events as discussed in subsection D. All 500 trajectories produced by the
rocket flight simulator are used to learn the corresponding probabilistic model, however, to prevent visual
clutter only 50 of the 500 trajectories are shown in the figures.
The flight-path trajectories seen in Figure 4 are generated using the settings seen in Figure 3. In this
simulation the wind conditions represent a light northerly wind (no more than 2.2 ms−1 ), and the parachute
deploys at an altitude of 750 metres. Specific launch conditions are a declination angle of 10 degrees, and an
azimuth angle of 0 degrees (i.e. launched towards the North). The volume identifying the trend corresponds
with the one standard deviation region (σ = 1).
The first alternate scenario changes the wind-conditions to a strong southerly wind (with an average
wind speed up to 13.5 ms−1 ). An overview of both the northerly and southerly wind-conditions is available
in Figure 5. Northerly and southerly are merely labels, and these wind-conditions represent real data
measured by a weather balloon. The x-wind and y-wind components correspond with the easting and
northing directions respectively, where both vary as a function of altitude. Both wind-conditions have a
0 ms−1 vertical wind component. The results are visible in Figure 6, where again 50 trajectories and the
one standard deviation region (σ = 1) are shown. The comparison plot with the standard launch is seen in
Figure 7. The blocks used to construct this volume have a volume of 20m×20m×20m, and the blocks relating
to the addition, removal, and lack of change in the standard launch versus the southerly wind scenario are
coloured green, red, and blue respectively. While the declination angle of the launch tower is 10 degrees in
both cases, the southerly wind has a steeper trajectory. This is due to an effect called weathercocking, which
was a key part of the validation of the rocket simulator8 .
The second alternate scenario introduces a failure to deploy the parachute, resulting in a fully ballistic
flight trajectory. The resulting flight trajectories are visible in Figure 8. The comparison with the standard
launch is visible in Figures 9 and 10, whereas expected, the final part of the trajectory shows the difference
between the parachute- and ballistic landing. The failure to deploy the parachute is only visible in the
final 750m of the descent, as this is where the parachute deploys. Figure 11 shows a two-dimensional slice
of the one standard deviation region at a constant altitude for both 750m and 300m. It also includes a
two-dimensional projection of the mean trajectory belonging to both scenarios, represented by a dashed line.
The dispersion seen until the 750m is almost (it is an approximation via a Monte-Carlo method) identical.
The models diverge after this point, which is visible in Figure 11b.
Finally, the third alternate scenario introduced a 5% variation in the thrust curve, according to the method
discussed in subsection C. This method increases/decreases the thrust curve over the entire duration, where
the percentage is sampled from a normal distribution. Similar to the other plots, the 50 trajectories and the
one standard deviation region are visible in Figure 12. The comparison plot is seen in Figure 13, indicating
that the thrust has a strong correlation with the steepness of the launch trajectory, an effect that can be
7 of 15
American Institute of Aeronautics and Astronautics
Figure 4: Trajectories produced by standard launch conditions, and the one standard deviation region
Figure 5: Wind conditions north(erly) wind versus south(erly) wind
8 of 15
American Institute of Aeronautics and Astronautics
Figure 6: Trajectories produced by southerly wind conditions, and the one standard deviation region
Figure 7: Comparison of the one standard deviation region in the standard launch conditions versus the
southerly wind conditions
9 of 15
American Institute of Aeronautics and Astronautics
Figure 8: Trajectories produced with the parachute failure condition, and the one standard deviation region
Figure 9: Comparison of the one standard deviation region in the standard launch conditions versus the
parachute failure condition
10 of 15
American Institute of Aeronautics and Astronautics
Figure 10: Comparison of the one standard deviation region in the standard launch conditions versus the
parachute failure condition, alternate view-point
(a) 750 m
(b) 300 m
Figure 11: One standard deviation region at a constant altitude, comparing the standard launch conditions
versus the parachute failure condition
11 of 15
American Institute of Aeronautics and Astronautics
attributed to weathercocking. The two-dimension projection of the one standard deviation region is visible
in Figure 14. At a constant altitude of 2100m (Figure 14a) the effect of the thrust variation on the dispersion
in the launch phase is pronounced, however, closer to the ground, at 500m (Figure 14b) the differences in
divergence between the two scenarios have reduced.
Figure 12: Trajectories produced with the variable thrust curve condition, and the one standard deviation
region
The numerical results that quantify the changes seen between the scenarios are visible in Table 5. To
demonstrate the sensitivity of the block size, the percentages have been calculated at varying sizes of 100m,
50m, and 20m in all three dimension (easting, northing, altitude). The percentages are related to the total
number of blocks identified to be inside the one standard deviation region for the standard conditions, i.e.
the region as seen in Figure 4, hence the percentage removed and unchanged adds up to 100%. The difference
in the percentage added and removed relates to the uncertainty region expanding or shrinking with respect
to the standard conditions. Based on the percentage unchanged, the variable thrust curve shows the least
change, followed by the parachute failure conditions, and the changed wind condition shows most change.
IV.
Conclusion
This paper demonstrates the functionality of the Cambridge Rocketry Simulator. The open-source software assists the user in designing a concept rocket, and flying it in a spectrum of flight conditions based on
stochastic input variables. The rocket trajectory data available as output from the simulator are modelled
using a trajectory analysis approach, which is both capable at visualising trends, and quantifying the change
found in different launch- and atmospheric conditions.
The modification to the time-warping in the original trajectory analysis approach, expanding the functionality to accept time-cues from the simulator output, removes undesired artefacts previously present
when modelling rocket trajectories as a Gaussian process. The time-cues here will be those moments where
discrete changes occur (e.g. initialisation of the second stage, parachute deployment).
Finally, while the method is capable of modelling the rocket trajectory data as output by the simulator, the
trajectories should not always be modelled as a Gaussian process. Such a situation arises when the rocket
concept design is close to being dynamically unstable, resulting in a discrete path change for numerous
12 of 15
American Institute of Aeronautics and Astronautics
Figure 13: Comparison of the one standard deviation region in the standard launch conditions versus the
variable thrust curve condition
(a) 2100 m
(b) 500 m
Figure 14: One standard deviation region at a constant altitude, comparing the standard launch conditions
versus the variable thrust curve condition
13 of 15
American Institute of Aeronautics and Astronautics
Table 5: Comparing against the standard conditions
Block volume [m3 ] Added Removed Unchanged
versus southerly wind conditions
100 × 100 × 100
79.7%
78.1%
21.9%
50 × 50 × 50
76.1%
78.5%
21.5%
20 × 20 × 20
75.4%
78.3%
21.7%
versus the parachute failure condition
100 × 100 × 100
22.4%
15.7%
84.3%
50 × 50 × 50
20.3%
17.5%
82.5%
20 × 20 × 20
20.7%
18.1%
81.9%
versus the variable thrust curve condition
100 × 100 × 100
21.1%
8.1%
91.9%
50 × 50 × 50
18.2%
8.6%
91.4%
20 × 20 × 20
17.6%
8.6%
91.4%
trajectories as the uncertainty analysis varies the centre of pressure. The trajectory analysis method as
presented in this paper assumes the trajectories only deviate slightly from the nominal flight-path, therefore
when discrete path changes are present in the data, a clustering algorithm should be applied. The trajectory
data can also be analysed via other methods, as the output data from the simulator are openly available in
both XML and CSV file format.
Acknowledgements
The authors gratefully acknowledge the funding provided under research grant EP/L505067/1 from the
Engineering and Physical Sciences Research Council, and the industry sponsor Cunning Running Software
Ltd. Supplemental material supporting this study are openly available from the University of Southampton
repository at https://doi.org/10.5258/SOTON/403364.
References
[1]
UKRA. United Kingdom Rocketry Association. 2016. url: http://www.ukra.org.uk/events (visited
on 02/11/2016).
[2]
BBC. Rocket launch for Bolton students on Mull of Galloway. 2011. url: http://bbc.co.uk/news/ukengland-manchester-14760906 (visited on 02/11/2016).
[3]
TU Delft. DARE: Delft Aerospace Rocket Engineering. 2016. url: http://dare.tudelft.nl (visited
on 02/11/2016).
[4]
Commercial Space Transportation. Supplemental Application Guidance for Unguided Suborbital Launch
Vehicles (USLVs). Tech. rep. Federal Aviation Administration (FAA), 2007. url: https://www.faa.
gov/.
[5]
Apogee. RockSim. Version 9. 2008. url: http://www.apogeerockets.com (visited on 02/11/2016).
[6]
S. Niskanen. OpenRocket. Version 15. 2015. url: http://openrocket.sourceforge.net (visited on
02/11/2016).
[7]
S. Box and W. J. Eerland. Cambridge Rocketry Simulator. Version 3.1. 2016. url: http : / / www .
sourceforge.net/p/camrocsim (visited on 02/11/2016).
[8]
S. Box, C. Bishop and H. Hunt. ‘Stochastic six-degree-of-freedom flight simulator for passively controlled high-power rockets’. In: Journal of Aerospace Engineering 24.1 (2010), pp. 31–45. doi: 10 .
1061/(ASCE)AS.1943-5525.0000051. eprint: http://eprints.soton.ac.uk/73938/.
14 of 15
American Institute of Aeronautics and Astronautics
[9]
W. J. Eerland, S. Box and A. Sóbester. ‘Modeling the Dispersion of Aircraft Trajectories Using Gaussian Processes’. In: Journal of Guidance, Control, and Dynamics 39.12 (28th Nov. 2016), pp. 2661–
2672. doi: 10.2514/1.G000537. eprint: http://eprints.soton.ac.uk/399818/.
[10]
W. J. Eerland. Teetool - a trajectory analysis tool. 2016. url: http://github.com/WillemEerland/
teetool (visited on 02/11/2016).
[11]
J. D. Hunter. ‘Matplotlib: A 2D graphics environment’. In: Computing In Science & Engineering 9.3
(2007), pp. 90–95. doi: 10.1109/MCSE.2007.55.
[12]
P. Ramachandran and G. Varoquaux. ‘Mayavi: 3D Visualization of Scientific Data’. In: Computing in
Science & Engineering 13.2 (2011), pp. 40–51. issn: 1521-9615. doi: 10.1109/MCSE.2011.35.
[13]
S. v. d. Walt, S. C. Colbert and G. Varoquaux. ‘The NumPy Array: A Structure for Efficient Numerical
Computation’. In: Computing in Science & Engineering 13.2 (2011), pp. 22–30. doi: 10.1109/MCSE.
2011.37.
[14]
W. McKinney. ‘Data Structures for Statistical Computing in Python’. In: Proceedings of the 9th Python
in Science Conference. Ed. by S. van der Walt and J. Millman. 2010, pp. 51–56.
[15]
T. Kluyver et al. ‘Jupyter Notebooksa publishing format for reproducible computational workflows’. In:
Positioning and Power in Academic Publishing: Players, Agents and Agendas: Proceedings of the 20th
International Conference on Electronic Publishing. IOS Press. 2016, pp. 87–90. doi: 10.3233/978-161499-649-1-87.
[16]
M. Müller. ‘Information Retrieval for Music and Motion’. In: Berlin, Heidelberg: Springer Berlin Heidelberg, 2007. Chap. Dynamic Time Warping, pp. 69–84. isbn: 978-3-540-74048-3. doi: 10.1007/978-3540-74048-3_4.
15 of 15
American Institute of Aeronautics and Astronautics