Merge branch 'main' of https://gitlab.rconnorjohnstone.com/school/thesis
This commit is contained in:
@@ -1,11 +1,10 @@
|
|||||||
\chapter{Algorithm Overview} \label{algorithm}
|
\chapter{Algorithm Overview} \label{algorithm}
|
||||||
|
|
||||||
This thesis will attempt to develop an algorithm for the preliminary analysis of feasibility in
|
This thesis focuses on designing a low-thrust interplanetary mission to an outer planet by
|
||||||
designing a low-thrust interplanetary mission to an outer planet by leveraging a monotonic basin
|
leveraging a monotonic basin hopping algorithm. This section will review the actual execution of
|
||||||
hopping algorithm. In this section, we will review the actual execution of the algorithm
|
the algorithm developed. As an overview, the routine is designed to enable the determination of
|
||||||
developed. As an overview, the routine was designed to enable the determination of an optimized
|
an optimal spacecraft trajectory that minimizes propellant usage and $C_3$ from the selection of
|
||||||
spacecraft trajectory from the selection of some very basic mission parameters. Those parameters
|
some very basic parameters. Those parameters include:
|
||||||
include:
|
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\setlength\itemsep{-0.5em}
|
\setlength\itemsep{-0.5em}
|
||||||
@@ -25,7 +24,7 @@
|
|||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Which allows for an automated approach to optimization of the trajectory, while still providing
|
Which allows for an automated approach to optimization of the trajectory, while still providing
|
||||||
the mission designer with the flexibility to choose the particular flyby planets to investigate.
|
the designer with the flexibility to choose the particular flyby planets to investigate.
|
||||||
|
|
||||||
This is achieved via an optimal control problem in which the ``inner loop'' involves solving a
|
This is achieved via an optimal control problem in which the ``inner loop'' involves solving a
|
||||||
TPBVP to find the optimal solution given a suitable initial guess. Then an ``outer loop''
|
TPBVP to find the optimal solution given a suitable initial guess. Then an ``outer loop''
|
||||||
@@ -115,7 +114,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{flowcharts/nlp}
|
\includegraphics[width=\textwidth]{LaTeX/flowcharts/nlp}
|
||||||
\caption{A flowchart of the TPBVP Solution Approach}
|
\caption{A flowchart of the TPBVP Solution Approach}
|
||||||
\label{nlp}
|
\label{nlp}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@@ -133,12 +132,11 @@
|
|||||||
The following pseudo-code outlines the approach taken for the elliptical case. The
|
The following pseudo-code outlines the approach taken for the elliptical case. The
|
||||||
approach is quite similar when $a<0$:
|
approach is quite similar when $a<0$:
|
||||||
|
|
||||||
% TODO: Some symbols here aren't recognized by the font
|
|
||||||
\begin{singlespacing}
|
\begin{singlespacing}
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
i = 0
|
i = 0
|
||||||
# First declare some useful variables from the state
|
# First declare some useful variables from the state
|
||||||
sig0 = (position ⋅ velocity) / √(mu)
|
sig0 = dot(position, velocity) / √(mu)
|
||||||
a = 1 / ( 2/norm(position) - norm(velocity)^2/mu )
|
a = 1 / ( 2/norm(position) - norm(velocity)^2/mu )
|
||||||
coeff = 1 - norm(position)/a
|
coeff = 1 - norm(position)/a
|
||||||
|
|
||||||
@@ -178,13 +176,13 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/laguerre_plot}
|
\includegraphics[width=\textwidth]{LaTeX/fig/laguerre_plot}
|
||||||
\caption{Example of a natural trajectory propagated via the Laguerre-Conway
|
\caption{Example of a natural trajectory propagated via the Laguerre-Conway
|
||||||
approach to solving Kepler's Problem}
|
approach to solving Kepler's Problem}
|
||||||
\label{laguerre_plot}
|
\label{laguerre_plot}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Sims-Flanagan Propagator}
|
\subsection{Propagating with Sims-Flanagan Transcription}
|
||||||
|
|
||||||
Until this point, we've not yet discussed how best to model the low-thrust
|
Until this point, we've not yet discussed how best to model the low-thrust
|
||||||
trajectory arcs themselves. The Laguerre-Conway algorithm efficiently determines
|
trajectory arcs themselves. The Laguerre-Conway algorithm efficiently determines
|
||||||
@@ -204,7 +202,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/spiral_plot}
|
\includegraphics[width=\textwidth]{LaTeX/fig/spiral_plot}
|
||||||
\caption{An example trajectory showing that classic continuous-thrust orbit
|
\caption{An example trajectory showing that classic continuous-thrust orbit
|
||||||
shapes, such as this orbit spiral, are easily achievable using a Sims-Flanagan
|
shapes, such as this orbit spiral, are easily achievable using a Sims-Flanagan
|
||||||
model}
|
model}
|
||||||
@@ -228,11 +226,9 @@
|
|||||||
and the mass flow rate (a function of the duty cycle percentage ($d$), thrust ($f$),
|
and the mass flow rate (a function of the duty cycle percentage ($d$), thrust ($f$),
|
||||||
and the specific impulse of the thruster ($I_{sp}$), commonly used to measure
|
and the specific impulse of the thruster ($I_{sp}$), commonly used to measure
|
||||||
efficiency)\cite{sutton2016rocket}:
|
efficiency)\cite{sutton2016rocket}:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\Delta m = \Delta t \frac{f d}{I_{sp} g_0}
|
\Delta m = \Delta t \frac{f d}{I_{sp} g_0}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Where $\Delta m$ is the fuel used in the sub-trajectory, $\Delta t$ is the time of
|
Where $\Delta m$ is the fuel used in the sub-trajectory, $\Delta t$ is the time of
|
||||||
flight of the sub-trajectory, and $g_0$ is the standard gravity at the surface of
|
flight of the sub-trajectory, and $g_0$ is the standard gravity at the surface of
|
||||||
Earth. From knowledge of the mass flow rate, we can then decrement the mass
|
Earth. From knowledge of the mass flow rate, we can then decrement the mass
|
||||||
@@ -264,7 +260,7 @@
|
|||||||
\item The $v_{\infty,in}$ vector representing excess velocity at the
|
\item The $v_{\infty,in}$ vector representing excess velocity at the
|
||||||
planetary flyby (or completion of mission) at the end of the phase
|
planetary flyby (or completion of mission) at the end of the phase
|
||||||
\item The time of flight for the phase
|
\item The time of flight for the phase
|
||||||
\item The unit-thrust profile in a sun-fixed frame represented by a
|
\item The unit-thrust profile in a sun-centered frame represented by a
|
||||||
series of vectors with each element ranging from 0 to 1.
|
series of vectors with each element ranging from 0 to 1.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
@@ -272,10 +268,9 @@
|
|||||||
|
|
||||||
From this information, as can be seen in Figure~\ref{nlp}, we can formulate the mission
|
From this information, as can be seen in Figure~\ref{nlp}, we can formulate the mission
|
||||||
in terms of a non-linear programming problem. Specifically, the variables describing the
|
in terms of a non-linear programming problem. Specifically, the variables describing the
|
||||||
trajectory contained within the Guess object can be represented as an input vector,
|
trajectory from the free variable, $\vec{x}$, the cost function produced by an entire
|
||||||
$\vec{x}$, the cost function produced by an entire trajectory propagation as $F$, and
|
trajectory propagation, $F$, and the constraints that the trajectory must satisfy as
|
||||||
the constraints that the trajectory must satisfy as another function $\vec{G}$ such that
|
another function $\vec{G}$ such that $\vec{G}(\vec{x}) = \vec{0}$.
|
||||||
$\vec{G}(\vec{x}) = \vec{0}$.
|
|
||||||
|
|
||||||
This is a format that we can apply directly to the IPOPT solver, which Julia (the
|
This is a format that we can apply directly to the IPOPT solver, which Julia (the
|
||||||
programming language used) can utilize via bindings supplied by the SNOW.jl
|
programming language used) can utilize via bindings supplied by the SNOW.jl
|
||||||
@@ -325,7 +320,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{flowcharts/mbh}
|
\includegraphics[width=\textwidth]{LaTeX/flowcharts/mbh}
|
||||||
\caption{A flowchart visualizing the steps in the monotonic basin hopping
|
\caption{A flowchart visualizing the steps in the monotonic basin hopping
|
||||||
algorithm}
|
algorithm}
|
||||||
\label{mbh_flow}
|
\label{mbh_flow}
|
||||||
@@ -333,12 +328,12 @@
|
|||||||
|
|
||||||
\subsection{Random Trajectory Generation}\label{random_gen_section}
|
\subsection{Random Trajectory Generation}\label{random_gen_section}
|
||||||
|
|
||||||
At a basic level, the algorithm needs to produce a guess (represented by all of the
|
At a basic level, the algorithm needs to produce a guess for the free variable vector
|
||||||
values described in Section~\ref{inner_loop_section}) that contains random values within
|
(represented by all of the values described in Section~\ref{inner_loop_section}) that
|
||||||
reasonable bounds in the space. However, that still leaves the determination of which
|
contains random values within reasonable bounds in the space. However, that still leaves
|
||||||
distribution function to use for the random values over each of those variables, which
|
the determination of which distribution function to use for the random values over each
|
||||||
bounds to use, as well as the possibilities for any improvements to a purely random
|
of those variables, which bounds to use, as well as the possibilities for any
|
||||||
search.
|
improvements to a purely random search.
|
||||||
|
|
||||||
Currently, the first value set for the mission guess is that of $n$, which is the
|
Currently, the first value set for the mission guess is that of $n$, which is the
|
||||||
number of sub-trajectories that each arc will be broken into for the Sims-Flanagan
|
number of sub-trajectories that each arc will be broken into for the Sims-Flanagan
|
||||||
@@ -372,18 +367,18 @@
|
|||||||
missions with more flybys.
|
missions with more flybys.
|
||||||
|
|
||||||
Then, the internal components for each phase are generated. It is at this step, that
|
Then, the internal components for each phase are generated. It is at this step, that
|
||||||
the mission guess generator splits the outputs into two separate outputs. The first
|
the trajectory guess generator splits the outputs into two separate outputs. The first
|
||||||
is meant to be truly random, as is generally used as input for a monotonic basin
|
is meant to be truly random, as is generally used as input for a monotonic basin
|
||||||
hopping algorithm. The second utilizes a Lambert's solver to determine the
|
hopping algorithm. The second utilizes a Lambert's solver to determine the
|
||||||
appropriate hyperbolic velocities (both in and out) at each flyby to generate a
|
appropriate hyperbolic velocities (both in and out) at each flyby to generate a
|
||||||
natural trajectory arc. For this Lambert's case, the mission guess is simply seeded
|
natural trajectory arc. For this Lambert's case, the trajectory guess is simply seeded
|
||||||
with zero thrust controls and outputted to the monotonic basin hopper. The intention
|
with zero thrust controls and outputted to the monotonic basin hopper. The intention
|
||||||
here is that if the time of flights are randomly chosen so as to produce a
|
here is that if the time of flights are randomly chosen so as to produce a
|
||||||
trajectory that is possible with a control in the vicinity of a natural trajectory,
|
trajectory that is possible with a control in the vicinity of a natural trajectory,
|
||||||
we want to be sure to find that trajectory. More detail on how this is handled is
|
we want to be sure to find that trajectory. More detail on how this is handled is
|
||||||
available in Section~\ref{mbh_subsection}.
|
available in Section~\ref{mbh_subsection}.
|
||||||
|
|
||||||
However, for the truly random mission guess, there are still the $v_\infty$ values
|
However, for the truly random trajectory guess, there are still the $v_\infty$ values
|
||||||
and the initial thrust guesses to generate. For each of the phases, the incoming
|
and the initial thrust guesses to generate. For each of the phases, the incoming
|
||||||
excess hyperbolic velocity is calculated in much the same way that the launch
|
excess hyperbolic velocity is calculated in much the same way that the launch
|
||||||
velocity was calculated. However, instead of multiplying the randomly generate unit
|
velocity was calculated. However, instead of multiplying the randomly generate unit
|
||||||
@@ -397,18 +392,12 @@
|
|||||||
non-powered flyby.
|
non-powered flyby.
|
||||||
|
|
||||||
From these two velocity vectors the turning angle, and thus the periapsis of the flyby,
|
From these two velocity vectors the turning angle, and thus the periapsis of the flyby,
|
||||||
can then be calculated by Equation~\ref{turning_angle_eq} and the following equation:
|
can then be calculated by Equation~\ref{turning_angle_eq} and
|
||||||
|
Equation~\ref{periapsis_eq}. If this radius of periapse is then found to be less than
|
||||||
\begin{equation}
|
the minimum safe radius (currently set to the radius of the planet plus 100 kilometers),
|
||||||
r_p = \frac{\mu}{\vec{v}_{\infty,in} \cdot \vec{v}_{\infty,out}} \cdot \left(
|
then the process is repeated with new random flyby velocities until a valid seed flyby
|
||||||
\frac{1}{\sin(\delta/2)} - 1 \right)
|
is found. These checks are also performed each time a mission is perturbed or generated
|
||||||
\end{equation}
|
by the NLP solver.
|
||||||
|
|
||||||
If this radius of periapse is then found to be less than the minimum safe radius
|
|
||||||
(currently set to the radius of the planet plus 100 kilometers), then the process is
|
|
||||||
repeated with new random flyby velocities until a valid seed flyby is found. These
|
|
||||||
checks are also performed each time a mission is perturbed or generated by the NLP
|
|
||||||
solver.
|
|
||||||
|
|
||||||
The final requirement then, is the thrust controls, which are actually quite simple.
|
The final requirement then, is the thrust controls, which are actually quite simple.
|
||||||
Since the thrust is defined as a 3-vector of values between -1 and 1 representing some
|
Since the thrust is defined as a 3-vector of values between -1 and 1 representing some
|
||||||
@@ -477,14 +466,11 @@
|
|||||||
Because of this, the perturbation used in this implementation follows a
|
Because of this, the perturbation used in this implementation follows a
|
||||||
bi-directional, long-tailed Pareto distribution generated by the following
|
bi-directional, long-tailed Pareto distribution generated by the following
|
||||||
probability density function\cite{englander2014tuning}:
|
probability density function\cite{englander2014tuning}:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
1 +
|
1 +
|
||||||
\left[ \frac{s}{\epsilon} \right] \cdot
|
\left[ \frac{s}{\epsilon} \right] \cdot
|
||||||
\left[ \frac{\alpha - 1}{\frac{\epsilon}{\epsilon + r}^{-\alpha}} \right]
|
\left[ \frac{\alpha - 1}{\frac{\epsilon}{\epsilon + r}^{-\alpha}} \right]
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Where $s$ is a random array of signs (either plus one or minus one) with dimension
|
Where $s$ is a random array of signs (either plus one or minus one) with dimension
|
||||||
equal to the perturbed variable and bounds of -1 and 1, $r$ is a uniformly
|
equal to the perturbed variable and bounds of -1 and 1, $r$ is a uniformly
|
||||||
distributed random array with dimension equal to the perturbed variable and bounds
|
distributed random array with dimension equal to the perturbed variable and bounds
|
||||||
|
|||||||
@@ -10,11 +10,8 @@
|
|||||||
In performing this examination, two results were selected for further analysis. These
|
In performing this examination, two results were selected for further analysis. These
|
||||||
results are outlined in Table~\ref{results_table}. As can be seen in the table, both
|
results are outlined in Table~\ref{results_table}. As can be seen in the table, both
|
||||||
resulting trajectories have trade-offs in mission length, launch energy, fuel usage, and
|
resulting trajectories have trade-offs in mission length, launch energy, fuel usage, and
|
||||||
more. However, both results show very interesting trajectories that could indicate some
|
more. Each of these trajectories appear to be within the capabilities of existing launch
|
||||||
favorable possibilities for such a mission profile. Each of these trajectories should be
|
vehicles in terms of $C_3$.
|
||||||
within the capabilities of existing launch vehicles in terms of $C_3$.
|
|
||||||
|
|
||||||
\section{Recommendations for Future Work}\label{improvement_section}
|
|
||||||
|
|
||||||
In the course of producing this algorithm, a large number of improvement possibilities were
|
In the course of producing this algorithm, a large number of improvement possibilities were
|
||||||
noted. This work was based, in large part, on the work of Jacob Englander in a number of
|
noted. This work was based, in large part, on the work of Jacob Englander in a number of
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 43 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 42 KiB |
@@ -1,16 +1,16 @@
|
|||||||
\chapter{Introduction}
|
\chapter{Introduction}
|
||||||
|
|
||||||
Continuous low-thrust engines utilizing technologies such as Ion propulsion, Hall thrusters, and
|
Continuous low-thrust engines utilizing technologies such as Ion propulsion, Hall thrusters, and
|
||||||
others can be a powerful system in the enabling of long-range interplanetary missions with fuel
|
others enable long-range interplanetary missions with fuel efficiencies unrivaled by those that
|
||||||
efficiencies unrivaled by those that employ only impulsive thrust systems. The challenge in
|
employ only impulsive thrust systems. The challenge in utilizing these systems, then, is the
|
||||||
utilizing these systems, then, is the design of trajectories that effectively utilize this
|
design of trajectories that effectively utilize this technology. Continuous thrust propulsive
|
||||||
technology. Continuous thrust propulsive systems tend to be particularly suited to missions
|
systems tend to be particularly suited to missions which require very high total change in
|
||||||
which require very high total change in velocity ($\Delta V$) values and take place over a
|
velocity ($\Delta V$) values and take place over a particularly long duration. Traditional
|
||||||
particularly long duration. Traditional impulsive thrusting techniques can achieve these changes
|
impulsive thrusting techniques can achieve these changes in velocity, but typically have a far
|
||||||
in velocity, but typically have a far lower specific impulse and, as such, are much less fuel
|
lower specific impulse and, as such, are much less fuel efficient, costing the mission valuable
|
||||||
efficient, costing the mission valuable financial resources that could instead be used for
|
financial resources that could instead be used for science. Because of their inherently high
|
||||||
science. Because of their inherently high specific impulse (and thus efficiency), low-thrust
|
specific impulse (and thus efficiency), low-thrust propulsion systems are well-suited to
|
||||||
propagation systems are well-suited to interplanetary missions.
|
interplanetary missions.
|
||||||
|
|
||||||
The first attempt by NASA to use an electric ion-thruster for an interplanetary mission was the
|
The first attempt by NASA to use an electric ion-thruster for an interplanetary mission was the
|
||||||
Deep Space 1 mission\cite{brophy2002}. This mission was designed to test the ``new'' technology,
|
Deep Space 1 mission\cite{brophy2002}. This mission was designed to test the ``new'' technology,
|
||||||
@@ -29,16 +29,15 @@
|
|||||||
in October 2018 and is projected to perform a flyby of Earth, two of Venus, and six of
|
in October 2018 and is projected to perform a flyby of Earth, two of Venus, and six of
|
||||||
Mercury before inserting into an orbit around that planet.
|
Mercury before inserting into an orbit around that planet.
|
||||||
|
|
||||||
A common theme in mission design is that there always exists a trade-off between efficiency
|
A common theme in mission design is that there is a trade-off between efficiency (particularly
|
||||||
(particularly in terms of fuel use) and the time required to achieve the mission objective. Low
|
in terms of fuel use) and the time required to achieve the mission objective. Low thrust systems
|
||||||
thrust systems in particular tend to produce mission profiles that sacrifice the rate of
|
in particular tend to produce mission profiles that sacrifice the rate of convergence on the
|
||||||
convergence on the target state in order to achieve large increases in fuel efficiency. Often a
|
target state in order to achieve large increases in fuel efficiency. Often a low-thrust transfer
|
||||||
low-thrust mission profile in Earth orbit will require multiple orbital periods to achieve the
|
in Earth orbit will require multiple orbital periods to achieve the desired change in spacecraft
|
||||||
desired change in spacecraft state. Interplanetary missions, though, provide a particularly
|
state. Interplanetary missions, though, provide a particularly useful case for continuous thrust
|
||||||
useful case for continuous thrust technology. The trajectory arcs in interplanetary space are
|
technology. The trajectory arcs in interplanetary space are generally much, much longer than
|
||||||
generally much, much longer than orbital missions around the Earth. Because of this increase,
|
orbital missions around the Earth. Because of this increase, even a small continuous thrust is
|
||||||
even a small continuous thrust is capable of producing large $\Delta V$ values over the course
|
capable of producing large $\Delta V$ values over the course of a single trajectory arc.
|
||||||
of a single trajectory arc.
|
|
||||||
|
|
||||||
Another technique often leveraged by interplanetary trajectory designers is the gravity assist.
|
Another technique often leveraged by interplanetary trajectory designers is the gravity assist.
|
||||||
Gravity assists utilize the inertia of a large planetary body to ``slingshot'' a spacecraft,
|
Gravity assists utilize the inertia of a large planetary body to ``slingshot'' a spacecraft,
|
||||||
@@ -58,24 +57,22 @@
|
|||||||
routine for producing unconstrained, globally optimal trajectories for realistic interplanetary
|
routine for producing unconstrained, globally optimal trajectories for realistic interplanetary
|
||||||
mission development that utilizes both planetary flybys and efficient low-thrust electric
|
mission development that utilizes both planetary flybys and efficient low-thrust electric
|
||||||
propulsion techniques. Similar studies have also been performed by a number of researchers
|
propulsion techniques. Similar studies have also been performed by a number of researchers
|
||||||
including a team from JPL\cite{sims2006} as well as a Spanish team\cite{morante}, among several
|
including a team from JPL\cite{sims2006}, among several others\cite{morante}.
|
||||||
others.
|
|
||||||
|
|
||||||
This thesis will attempt to develop an algorithm for the optimization of low-thrust enabled
|
This thesis focuses on optimization of low-thrust enabled trajectories that use gravity assists.
|
||||||
trajectories for initial feasibility analysis in mission design. The algorithm will utilize
|
The approach uses a non-linear programming solver to directly optimize a set of control thrusts
|
||||||
a non-linear programming solver to directly optimize a set of control thrusts for the
|
for the user-provided flyby planets, for any provided cost function. A monotonic basin hopping
|
||||||
user-provided flyby planets, for any provided cost function. A monotonic basin hopping algorithm
|
algorithm (MBH) is then employed to traverse the search space in an effort to find additional
|
||||||
(MBH) will then be employed to traverse the search space in an effort to find additional local
|
local optima. This approach differs from the work produced earlier by Englander and the other
|
||||||
optima. This approach differs from the work produced earlier by Englander and the other teams,
|
teams, but is largely meant to explore the feasibility of such techniques and propose a few
|
||||||
but is largely meant to explore the feasibility of such techniques and propose a few
|
enhancements. The approach defined in this thesis is then used to design low thrust trajectories
|
||||||
enhancements. The approach defined in this thesis will then be used to investigate an example
|
with gravity assits from the Earth to Saturn.
|
||||||
mission to Saturn.
|
|
||||||
|
|
||||||
This thesis will explore these concepts in a number of different sections. Section
|
This thesis is organized as follows: Section \ref{traj_dyn} will explore the basic dynamical
|
||||||
\ref{traj_dyn} will explore the basic dynamical principles of trajectory design, beginning the
|
principles of trajectory design, beginning the with fundamental system dynamics, then exploring
|
||||||
with fundamental system dynamics, then exploring interplanetary system dynamics and gravity
|
interplanetary system dynamics and gravity flybys, and finally the dynamics that are specific to
|
||||||
flybys, and finally the dynamics that are specific to low-thrust enabled trajectories. Section
|
low-thrust enabled trajectories. Section \ref{traj_optimization} will then discuss process of
|
||||||
\ref{traj_optimization} will then discuss process of optimizing spacecraft trajectories in
|
optimizing spacecraft trajectories in general and the tool available for that. Section
|
||||||
general and the tool available for that. Section \ref{algorithm} will cover the implementation
|
\ref{algorithm} will cover the implementation details of the optimization algorithm developed
|
||||||
details of the optimization algorithm developed for this paper. Finally, section \ref{results}
|
for this paper. Finally, section \ref{results} will explore the results of some hypothetical
|
||||||
will explore the results of some hypothetical missions to Saturn.
|
missions to Saturn.
|
||||||
|
|||||||
50
LaTeX/presentation.tex
Normal file
50
LaTeX/presentation.tex
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
\documentclass{beamer}
|
||||||
|
\usetheme{Luebeck}
|
||||||
|
|
||||||
|
\definecolor{color1}{HTML}{3A4040}
|
||||||
|
\definecolor{color2}{HTML}{F5F2F8}
|
||||||
|
\definecolor{color3}{HTML}{B65D4E}
|
||||||
|
\definecolor{color4}{HTML}{B6AD96}
|
||||||
|
\definecolor{color5}{HTML}{A96041}
|
||||||
|
|
||||||
|
\setbeamercolor*{structure}{bg=color3,fg=color3}
|
||||||
|
\setbeamercolor*{palette primary}{fg=color1,bg=color4}
|
||||||
|
\setbeamercolor*{palette secondary}{fg=color1,bg=color2}
|
||||||
|
\setbeamercolor*{palette tertiary}{fg=color1,bg=color2}
|
||||||
|
\setbeamercolor*{palette quaternary}{fg=color1,bg=color3}
|
||||||
|
\setbeamercolor{alerted text}{fg=color1,bg=color3}
|
||||||
|
\setbeamercolor{titlelike}{bg=color2,fg=color1}
|
||||||
|
\setbeamercolor*{titlelike}{bg=color2,fg=color1}
|
||||||
|
\setbeamercolor{frametitle}{bg=color1,fg=color2}
|
||||||
|
\setbeamercolor{background canvas}{bg=color2,fg=color2}
|
||||||
|
|
||||||
|
\title{Designing Optimal Low-Thrust Interplanetary Trajectories}
|
||||||
|
\subtitle{Utilizing Monotonic Basin Hopping}
|
||||||
|
\author{Richard Connor Johnstone}
|
||||||
|
\institute{University of Colorado -- Boulder}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\titlepage
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
|
||||||
|
\begin{frame} \frametitle{First Frame}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Item 1
|
||||||
|
\item Item 2
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
@@ -1,31 +1,29 @@
|
|||||||
\chapter{Sample Saturn Trajectory Analysis} \label{results}
|
\chapter{Application: Designing a Trajectory To Saturn} \label{results}
|
||||||
|
|
||||||
The algorithm described in this thesis is quite flexible in its design and could be used as
|
To consider a relatively simple but representative mission design objective, a sample mission to
|
||||||
a tool for a mission designer on a variety of different mission types. However, to consider
|
Saturn was investigated.
|
||||||
a relatively simple but representative mission design objective, a sample mission to Saturn
|
|
||||||
was investigated.
|
|
||||||
|
|
||||||
\section{Mission Constraints}
|
\section{Mission Scenario}
|
||||||
|
|
||||||
The sample mission was defined to represent a general case for a near-future low-thrust
|
The sample mission is defined to represent a general case for a near-future low-thrust
|
||||||
trajectory to Saturn. No constraints were placed on the flyby planets, but a number of
|
trajectory to Saturn. No constraints are placed on the flyby planets, but a number of
|
||||||
constraints were placed on the algorithm to represent a realistic mission scenario.
|
constraints were placed on the algorithm to represent a realistic mission scenario.
|
||||||
|
|
||||||
The first choice required by the application is one not necessarily designable to the
|
The first choice required by the application is one not necessarily designable to the
|
||||||
initial mission designer (though not necessarily fixed in the design either) and is that
|
initial mission designer (though not necessarily fixed in the design either) and is that of
|
||||||
of the spacecraft parameters. The application accepts as input a spacecraft object
|
the spacecraft parameters. The application accepts as input a spacecraft object containing:
|
||||||
containing: the dry mass of the craft, the fuel mass at launch, the number of onboard
|
the dry mass of the spacecraft, the fuel mass at launch, the number of onboard thrusters,
|
||||||
thrusters, and the specific impulse, maximum thrust and duty cycle of each thruster.
|
and the specific impulse, maximum thrust and duty cycle of each thruster.
|
||||||
|
|
||||||
For this mission, the spacecraft was chosen to have a dry mass of only 200 kilograms for
|
For this mission, the spacecraft was chosen to have a dry mass of only 200 kilograms for a
|
||||||
a fuel mass of 3300 kilograms. This was chosen in order to have an overall mass roughly
|
fuel mass of 3300 kilograms. This was chosen in order to have an overall mass roughly in the
|
||||||
in the same zone as that of the Cassini spacecraft, which launched with 5712 kilograms
|
same zone as that of the Cassini spacecraft, which launched with 5712 kilograms of total
|
||||||
of total mass, with the fuel accounting for 2978 of those kilograms\cite{cassini}. The
|
mass, with the fuel accounting for 2978 of those kilograms\cite{cassini}. The dry mass of
|
||||||
dry mass of the craft was chosen to be extremely low in order to allow for a variety of
|
the spacecraft was chosen to be extremely low in order to allow for a variety of
|
||||||
''successful`` missions in which the craft didn't run out of fuel. That way, the
|
''successful`` missions in which the spacecraft didn't run out of fuel. That way, the
|
||||||
delivered dry mass to Saturn could be thought of as a metric of success, without
|
delivered dry mass to Saturn could be thought of as a metric of success, without discounting
|
||||||
discounting mission that may have delivered just under whatever more realistic dry mass
|
mission that may have delivered just under whatever more realistic dry mass one might set,
|
||||||
one might set, in case those missions are in the vicinity of actually valid missions.
|
in case those missions are in the vicinity of actually valid missions.
|
||||||
|
|
||||||
The thruster was chosen to have a specific impulse of 3200 seconds, a maximum thrust of
|
The thruster was chosen to have a specific impulse of 3200 seconds, a maximum thrust of
|
||||||
250 millinewtons, and a 100\% duty cycle. This puts the thruster roughly in line with
|
250 millinewtons, and a 100\% duty cycle. This puts the thruster roughly in line with
|
||||||
@@ -121,7 +119,7 @@
|
|||||||
|
|
||||||
The mission begins in late June of 2024 and proceeds first to an initial gravity assist with
|
The mission begins in late June of 2024 and proceeds first to an initial gravity assist with
|
||||||
Mars after three and one half years to rendezvous in mid-December 2027. Unfortunately, the
|
Mars after three and one half years to rendezvous in mid-December 2027. Unfortunately, the
|
||||||
launch energy required to effectively used the gravity assist with Mars at this time is
|
launch energy required to effectively use the gravity assist with Mars at this time is
|
||||||
quite high. The $C_3$ value was found to be $60.4102 \frac{\text{km}^2}{\text{s}^2}$. However,
|
quite high. The $C_3$ value was found to be $60.4102 \frac{\text{km}^2}{\text{s}^2}$. However,
|
||||||
for this phase, the thrust magnitudes are quite low, raising slowly only as the spacecraft
|
for this phase, the thrust magnitudes are quite low, raising slowly only as the spacecraft
|
||||||
approaches Mars, allowing for a nearly-natural trajectory to Mars rendezvous. Note also that
|
approaches Mars, allowing for a nearly-natural trajectory to Mars rendezvous. Note also that
|
||||||
@@ -130,7 +128,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMS_plot}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMS_plot}
|
||||||
\caption{Depictions of the faster Earth-Mars-Saturn trajectory found by the
|
\caption{Depictions of the faster Earth-Mars-Saturn trajectory found by the
|
||||||
algorithm to be most efficient; planetary ephemeris arcs are shown during the phase
|
algorithm to be most efficient; planetary ephemeris arcs are shown during the phase
|
||||||
in which the spacecraft approached them}
|
in which the spacecraft approached them}
|
||||||
@@ -139,7 +137,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMS_plot_noplanets}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMS_plot_noplanets}
|
||||||
\caption{Another depiction of the EMS trajectory, without the planetary ephemeris
|
\caption{Another depiction of the EMS trajectory, without the planetary ephemeris
|
||||||
arcs}
|
arcs}
|
||||||
\label{ems_nop}
|
\label{ems_nop}
|
||||||
@@ -158,14 +156,14 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMS_thrust_mag}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMS_thrust_mag}
|
||||||
\caption{The magnitude of the unit thrust vector over time for the EMS trajectory}
|
\caption{The magnitude of the unit thrust vector over time for the EMS trajectory}
|
||||||
\label{ems_mag}
|
\label{ems_mag}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMS_thrust_components}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMS_thrust_components}
|
||||||
\caption{The inertial x, y, and z components of the unit thrust vector over time for
|
\caption{The inertial x, y, and z components of the unit thrust vector over time for
|
||||||
the EMS trajectory}
|
the EMS trajectory}
|
||||||
\label{ems_components}
|
\label{ems_components}
|
||||||
@@ -214,7 +212,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMJS_plot}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMJS_plot}
|
||||||
\caption{Depictions of the slower Earth-Mars-Jupiter-Saturn trajectory found by the
|
\caption{Depictions of the slower Earth-Mars-Jupiter-Saturn trajectory found by the
|
||||||
algorithm to be the second most efficient; planetary ephemeris arcs are shown during
|
algorithm to be the second most efficient; planetary ephemeris arcs are shown during
|
||||||
the phase in which the spacecraft approached them}
|
the phase in which the spacecraft approached them}
|
||||||
@@ -223,7 +221,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMJS_plot_noplanets}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMJS_plot_noplanets}
|
||||||
\caption{Another depiction of the EMJS trajectory, without the planetary ephemeris
|
\caption{Another depiction of the EMJS trajectory, without the planetary ephemeris
|
||||||
arcs}
|
arcs}
|
||||||
\label{emjs_nop}
|
\label{emjs_nop}
|
||||||
@@ -238,14 +236,14 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMJS_thrust_mag}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMJS_thrust_mag}
|
||||||
\caption{The magnitude of the unit thrust vector over time for the EMJS trajectory}
|
\caption{The magnitude of the unit thrust vector over time for the EMJS trajectory}
|
||||||
\label{emjs_mag}
|
\label{emjs_mag}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.9\textwidth]{fig/EMJS_thrust_components}
|
\includegraphics[width=0.9\textwidth]{LaTeX/fig/EMJS_thrust_components}
|
||||||
\caption{The inertial x, y, and z components of the unit thrust vector over time for
|
\caption{The inertial x, y, and z components of the unit thrust vector over time for
|
||||||
the EMJS trajectory}
|
the EMJS trajectory}
|
||||||
\label{emjs_components}
|
\label{emjs_components}
|
||||||
@@ -306,8 +304,8 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/c3}
|
\includegraphics[width=\textwidth]{LaTeX/fig/c3}
|
||||||
\caption{Plot of Delta IV and Atlas V launch vehicle capabilities as they relate to
|
\caption{Plot of Delta IV and Atlas V launch vehicle capabilities as they relate to
|
||||||
payload mass \cite{c3capabilities} from a source from 2007}
|
payload mass \cite{c3capabilities} from Vardaxis, et al, 2007 }
|
||||||
\label{c3}
|
\label{c3}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
\documentclass[defaultstyle,11pt]{thesis}
|
\documentclass[defaultstyle,11pt]{LaTeX/thesis}
|
||||||
|
|
||||||
\usepackage{graphicx}
|
\usepackage{graphicx}
|
||||||
\usepackage{amssymb}
|
\usepackage{amssymb}
|
||||||
@@ -22,14 +22,15 @@
|
|||||||
|
|
||||||
Much work has been performed recently to utilize the increasingly viable technology of
|
Much work has been performed recently to utilize the increasingly viable technology of
|
||||||
low-thrust electric propulsion systems on missions of interplanetary scope. This thesis analyzes
|
low-thrust electric propulsion systems on missions of interplanetary scope. This thesis analyzes
|
||||||
a technique for the initial analysis of feasibility of utilizing a combination of low-thrust
|
a technique for designing trajectories for spacecraft with a low-thrust propulsion system that
|
||||||
propulsion systems and natural gravity flybys for missions to the outer planets. First, a method
|
also use natural gravity flybys for missions to the outer planets. Often, the goal is to find
|
||||||
for finding local optima by utilizing an interior-point linesearch algorithm to directly
|
feasible solutions that also minimize propellant mass requirements. First, locally optimal
|
||||||
optimize the entire trajectory as a Non-Linear Programming problem is presented. Then, a
|
solutions are constructed by using an interior-point linesearch algorithm, along with multiple
|
||||||
Monotonic Basin Hopping algorithm is utilized to traverse the search space, improve the local
|
shooting techniques for optimization. Then, Monotonic Basin Hopping is utilized to traverse the
|
||||||
optima determined by the internal optimizer, and determine the global optima. This allows for a
|
search space, improve the local optima determined by the internal optimizer, and determine the
|
||||||
medium-fidelity, fully automated global optimization of the low thrust controls and flyby
|
global optima. This approach allows for a medium-fidelity, fully automated global optimization
|
||||||
parameters for a given mission objective.
|
of the low thrust controls and flyby parameters for a given target destination. As an
|
||||||
|
application of this method, two sample trajectories to Saturn are analyzed.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@
|
|||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\input macros.tex
|
\input LaTeX/macros.tex
|
||||||
|
|
||||||
\input LaTeX/introduction.tex
|
\input LaTeX/introduction.tex
|
||||||
|
|
||||||
@@ -76,8 +77,6 @@
|
|||||||
|
|
||||||
\bibliographystyle{plain}
|
\bibliographystyle{plain}
|
||||||
\nocite{*}
|
\nocite{*}
|
||||||
\bibliography{thesis}
|
\bibliography{LaTeX/thesis}
|
||||||
|
|
||||||
\appendix
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
@@ -16,28 +16,28 @@
|
|||||||
very high-fidelity force models that account for aerodynamic pressure, solar radiation
|
very high-fidelity force models that account for aerodynamic pressure, solar radiation
|
||||||
pressure, multi-body effects, and other forces may be too time intensive for a
|
pressure, multi-body effects, and other forces may be too time intensive for a
|
||||||
particular application. Initial surveys of the solution space often don't require such
|
particular application. Initial surveys of the solution space often don't require such
|
||||||
complex models in order to gain valuable insight.
|
complex models in order to gain valuable preliminary insight.
|
||||||
|
|
||||||
Therefore, a common approach (and the one utilized in this implementation) is to first
|
A common approach (and the one utilized in this implementation) is to first use a
|
||||||
use a lower-fidelity dynamical model that captures only the gravitational force due to
|
lower-fidelity dynamical model that captures only the gravitational force due to the
|
||||||
the primary body around which the spacecraft is orbiting. This approach can provide an
|
primary body around which the spacecraft is orbiting. This approach can provide an
|
||||||
excellent low-to-medium fidelity model that is useful as an underlying model in an
|
excellent low-to-medium fidelity model that is useful as an underlying model in an
|
||||||
algorithm for quickly categorizing a search space for initial mission feasibility
|
algorithm for quickly categorizing a search space for initial mission feasibility
|
||||||
explorations.
|
explorations.
|
||||||
|
|
||||||
In order to explore the Two Body Problem, we must first examine the full set of
|
In order to explore the Two Body Problem, we must first examine the full set of
|
||||||
assumptions associated with the force model\cite{vallado2001fundamentals}. Firstly, we
|
assumptions associated with the force model\cite{vallado2001fundamentals}. Firstly, we
|
||||||
are only concerned with the nominative two bodies: the spacecraft and the planetary body
|
are only concerned with the gravitational influence between the nominative two bodies:
|
||||||
around which it is orbiting. Secondly, both of these bodies are modeled as point masses
|
the spacecraft and the planetary body around which it is orbiting. Secondly, both of
|
||||||
with constant mass. This removes the need to account for non-uniform densities and
|
these bodies are modeled as point masses with constant mass. This removes the need to
|
||||||
asymmetry. Finally, for convenience in notation at the end, we'll also assume that the
|
account for non-uniform densities and asymmetry. Finally, for convenience in notation at
|
||||||
mass of the spacecraft ($m_2$) is much much smaller than the mass of the planetary body
|
the end, we'll also assume that the mass of the spacecraft ($m_2$) is much much smaller
|
||||||
($m_1$) and enough so as to be considered negligible. The only force acting on this
|
than the mass of the planetary body ($m_1$) and enough so as to be considered
|
||||||
system is then the force of gravity that the primary body enacts upon the secondary.
|
negligible.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.65\textwidth]{fig/2bp}
|
\includegraphics[width=0.65\textwidth]{LaTeX/fig/2bp}
|
||||||
\caption{Figure representing the positions of the bodies relative to each other and
|
\caption{Figure representing the positions of the bodies relative to each other and
|
||||||
the center of mass in the two body problem}
|
the center of mass in the two body problem}
|
||||||
\label{2bp_fig}
|
\label{2bp_fig}
|
||||||
@@ -45,7 +45,6 @@
|
|||||||
|
|
||||||
Under these assumptions, the force acting on the body due to the law of universal
|
Under these assumptions, the force acting on the body due to the law of universal
|
||||||
gravitation is:
|
gravitation is:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
F_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
F_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
||||||
F_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
F_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
||||||
@@ -53,7 +52,6 @@
|
|||||||
|
|
||||||
And by Newton's second law (force is the product of mass and acceleration), we can
|
And by Newton's second law (force is the product of mass and acceleration), we can
|
||||||
derive the following differential equations for $r_1$ and $r_2$:
|
derive the following differential equations for $r_1$ and $r_2$:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
m_2 \ddot{\vec{r}}_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
m_2 \ddot{\vec{r}}_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
||||||
m_1 \ddot{\vec{r}}_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
m_1 \ddot{\vec{r}}_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
||||||
@@ -65,7 +63,6 @@
|
|||||||
inertial frame. $G$ is the universal gravitational parameter, $m_1$ is the mass of the
|
inertial frame. $G$ is the universal gravitational parameter, $m_1$ is the mass of the
|
||||||
planetary body, and $m_2$ is the mass of the spacecraft. From these equations, we can
|
planetary body, and $m_2$ is the mass of the spacecraft. From these equations, we can
|
||||||
then determine the acceleration of the spacecraft relative to the planet:
|
then determine the acceleration of the spacecraft relative to the planet:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\ddot{\vec{r}} = \ddot{\vec{r}}_2 - \ddot{\vec{r}}_1 =
|
\ddot{\vec{r}} = \ddot{\vec{r}}_2 - \ddot{\vec{r}}_1 =
|
||||||
- \frac{G \left( m_1 + m_2 \right)}{r^2} \frac{\vec{r}}{\left| r \right|}
|
- \frac{G \left( m_1 + m_2 \right)}{r^2} \frac{\vec{r}}{\left| r \right|}
|
||||||
@@ -76,27 +73,19 @@
|
|||||||
negligible $m_2$ term. We can also introduce, for convenience, a gravitational parameter
|
negligible $m_2$ term. We can also introduce, for convenience, a gravitational parameter
|
||||||
$\mu$ which represents the gravity constant for the system about the center of motion
|
$\mu$ which represents the gravity constant for the system about the center of motion
|
||||||
($\mu = G (m_1 + m_2) \approx G m_1$). Doing so and simplifying produces:
|
($\mu = G (m_1 + m_2) \approx G m_1$). Doing so and simplifying produces:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\ddot{\vec{r}} = - \frac{\mu}{r^2} \hat{r}
|
\ddot{\vec{r}} = - \frac{\mu}{r^2} \hat{r}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
We may also wish to utilize the total orbital energy for a spacecraft within this model.
|
|
||||||
Since the spacecraft is acting only under the gravitational influence of the planet and
|
Since the spacecraft is acting only under the gravitational influence of the planet and
|
||||||
no other forces, we can define the total specific mechanical energy as:
|
no other forces, we can define the total specific mechanical energy as
|
||||||
|
|
||||||
\cite{vallado2001fundamentals}:
|
\cite{vallado2001fundamentals}:
|
||||||
|
|
||||||
\begin{equation} \label{energy}
|
\begin{equation} \label{energy}
|
||||||
\xi = \frac{v^2}{2} - \frac{\mu}{r}
|
\xi = \frac{v^2}{2} - \frac{\mu}{r}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Where the first term represents the kinetic energy of the spacecraft and the second term
|
Where the first term represents the kinetic energy of the spacecraft and the second term
|
||||||
represents the gravitational potential energy.
|
represents the gravitational potential energy.
|
||||||
|
|
||||||
\subsection{Kepler's Laws}
|
|
||||||
|
|
||||||
Now that we've fully qualified the forces acting within the Two Body Problem, we can concern
|
Now that we've fully qualified the forces acting within the Two Body Problem, we can concern
|
||||||
ourselves with more practical applications of it as a force model. It should be noted,
|
ourselves with more practical applications of it as a force model. It should be noted,
|
||||||
firstly, that the spacecraft's position and velocity (given an initial position and velocity
|
firstly, that the spacecraft's position and velocity (given an initial position and velocity
|
||||||
@@ -105,6 +94,8 @@
|
|||||||
one-dimensional equations (one for each component of the three-dimensional space) and
|
one-dimensional equations (one for each component of the three-dimensional space) and
|
||||||
three unknowns (the three components of the second derivative of the position).
|
three unknowns (the three components of the second derivative of the position).
|
||||||
|
|
||||||
|
\subsection{Kepler's Laws}
|
||||||
|
|
||||||
In the early 1600s, Johannes Kepler produced just such a solution, by taking advantages of
|
In the early 1600s, Johannes Kepler produced just such a solution, by taking advantages of
|
||||||
what is also known as ``Kepler's Laws'' which are\cite{murray1999solar}:
|
what is also known as ``Kepler's Laws'' which are\cite{murray1999solar}:
|
||||||
|
|
||||||
@@ -113,68 +104,61 @@
|
|||||||
expanded to any orbit by re-wording as ``all orbital paths follow a conic section
|
expanded to any orbit by re-wording as ``all orbital paths follow a conic section
|
||||||
(circle, ellipse, parabola, or hyperbola) with a primary mass at one of the foci''.
|
(circle, ellipse, parabola, or hyperbola) with a primary mass at one of the foci''.
|
||||||
|
|
||||||
Specifically the path of the orbit follows the trajectory equation:
|
The conic trajectory equation explains this observation and offers a description
|
||||||
|
of the path as:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
r = \frac{\sfrac{h^2}{\mu}}{1 + e \cos(\theta)}
|
r = \frac{\sfrac{h^2}{\mu}}{1 + e \cos(\theta)}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
where $h$ is the angular momentum of the satellite, $e$ is the
|
||||||
Where $h$ is the angular momentum of the satellite, $e$ is the
|
|
||||||
eccentricity of the orbit, and $\theta$ is the true anomaly, or simply
|
eccentricity of the orbit, and $\theta$ is the true anomaly, or simply
|
||||||
the angular distance the satellite has traversed along the orbit path.
|
the angular distance the satellite has traversed along the orbit path from
|
||||||
|
periapsis.
|
||||||
|
|
||||||
\item The area swept out by the imaginary line connecting the primary and secondary
|
\item The area swept out by the imaginary line connecting the primary and secondary
|
||||||
bodies increases linearly with respect to time. This implies that the magnitude of the
|
bodies increases linearly with respect to time. This implies that the magnitude of the
|
||||||
orbital speed is not constant. For the moment, we'll just take this
|
orbital speed is not constant. For the moment, we'll just take this
|
||||||
value to be a constant:
|
value to be a constant:
|
||||||
|
|
||||||
\begin{equation}\label{swept}
|
\begin{equation}\label{swept}
|
||||||
\frac{\Delta t}{T} = \frac{k}{\pi a b}
|
\frac{\Delta t}{T} = \frac{k}{\pi a b}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
where $k$ is the constant value, $a$ and $b$ are the semi-major and
|
||||||
Where $k$ is the constant value, $a$ and $b$ are the semi-major and
|
|
||||||
semi-minor axis of the conic section, and $T$ is the period. In the
|
semi-minor axis of the conic section, and $T$ is the period. In the
|
||||||
following section, we'll derive the value for $k$.
|
following section, we'll derive the value for $k$.
|
||||||
|
|
||||||
\item The square of the orbital period is proportional to the cube of the semi-major
|
\item The square of the orbital period is proportional to the cube of the semi-major
|
||||||
axis of the orbit, regardless of eccentricity. Specifically, the relationship is:
|
axis of the orbit, regardless of eccentricity. For an elliptical orbit this
|
||||||
|
observation connects to the following known expression for the orbit period:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
T = 2 \pi \sqrt{\frac{a^3}{\mu}}
|
T = 2 \pi \sqrt{\frac{a^3}{\mu}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
where $T$ is the period and $a$ is the semi-major axis.
|
||||||
Where $T$ is the period and $a$ is the semi-major axis.
|
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
\subsection{Kepler's Equation}
|
\subsection{Kepler's Equation}
|
||||||
|
|
||||||
Kepler was able to produce an equation to represent the angular displacement of an
|
Kepler was able to produce an equation to represent the angular displacement of an
|
||||||
orbiting body around a primary body as a function of time, which we'll derive now for
|
orbiting body around a primary body as a function of time, which we'll derive now for
|
||||||
the elliptical case\cite{vallado2001fundamentals}. Since the total area of an ellipse is
|
the elliptical case\cite{vallado2001fundamentals}. Because the total area of an ellipse
|
||||||
the product of $\pi$, the semi-major axis, and the semi-minor axis ($\pi a b$), we can
|
is the product of $\pi$, the semi-major axis, and the semi-minor axis ($\pi a b$), we
|
||||||
relate (by Kepler's second law) the area swept out by an orbit as a function of time, as
|
can relate (by Kepler's second law) the area swept out by an orbit as a function of
|
||||||
we did in Equation~\ref{swept}. This leaves just one unknown variable $k$, which we can
|
time, as we did in Equation~\ref{swept}. This leaves just one unknown variable $k$,
|
||||||
determine through use of the geometric auxiliary circle, which is a circle with radius
|
which we can determine through use of the geometric auxiliary circle, which is a circle
|
||||||
equal to the ellipse's semi-major axis and center directly between the two foci, as in
|
with radius equal to the ellipse's semi-major axis and center directly between the two
|
||||||
Figure~\ref{aux_circ}.
|
foci, as in Figure~\ref{aux_circ}.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.8\textwidth]{fig/kepler}
|
\includegraphics[width=0.8\textwidth]{LaTeX/fig/kepler}
|
||||||
\caption{Geometric Representation of Auxiliary Circle}\label{aux_circ}
|
\caption{Geometric representation of auxiliary circle}\label{aux_circ}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
In order to find the area swept by the spacecraft\cite{vallado2001fundamentals}, $k$, we
|
In order to find the area swept by the spacecraft\cite{vallado2001fundamentals}, $k$, we
|
||||||
can take advantage of the fact that that area is the triangle $k_1$ subtracted from the
|
can take advantage of the fact that that area is the triangle $k_1$ subtracted from the
|
||||||
elliptical segment $PCB$:
|
elliptical segment $PCB$:
|
||||||
|
|
||||||
\begin{equation}\label{areas_eq}
|
\begin{equation}\label{areas_eq}
|
||||||
k = area(seg_{PCB}) - area(k_1)
|
k = area(seg_{PCB}) - area(k_1)
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Where the area of the triangle $k_1$ can be found easily using geometric formulae:
|
Where the area of the triangle $k_1$ can be found easily using geometric formulae:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
area(k_1) &= \frac{1}{2} \left( ae - a \cos E \right) \left( \frac{b}{a} a \sin E \right) \\
|
area(k_1) &= \frac{1}{2} \left( ae - a \cos E \right) \left( \frac{b}{a} a \sin E \right) \\
|
||||||
&= \frac{ab}{2} \left(e \sin E - \cos E \sin E \right)
|
&= \frac{ab}{2} \left(e \sin E - \cos E \sin E \right)
|
||||||
@@ -186,7 +170,6 @@
|
|||||||
can find the area for the elliptical segment $PCB$ by first finding the circular segment
|
can find the area for the elliptical segment $PCB$ by first finding the circular segment
|
||||||
$POB'$, subtracting the triangle $COB'$, then applying the fact that an ellipse is
|
$POB'$, subtracting the triangle $COB'$, then applying the fact that an ellipse is
|
||||||
merely a vertical scaling of a circle by the amount $\frac{b}{a}$.
|
merely a vertical scaling of a circle by the amount $\frac{b}{a}$.
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
area(PCB) &= \frac{b}{a} \left( area(POB') - area(COB') \right) \\
|
area(PCB) &= \frac{b}{a} \left( area(POB') - area(COB') \right) \\
|
||||||
&= \frac{b}{a} \left( \frac{a^2 E}{2} - \frac{1}{2} \left( a \cos E \right)
|
&= \frac{b}{a} \left( \frac{a^2 E}{2} - \frac{1}{2} \left( a \cos E \right)
|
||||||
@@ -197,26 +180,20 @@
|
|||||||
|
|
||||||
By substituting the two areas back into Equation~\ref{areas_eq} we can get the $k$ area
|
By substituting the two areas back into Equation~\ref{areas_eq} we can get the $k$ area
|
||||||
swept out by the spacecraft:
|
swept out by the spacecraft:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
k = \frac{ab}{2} \left( E - e \sin E \right)
|
k = \frac{ab}{2} \left( E - e \sin E \right)
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Which we can then substitute back into the equation for the swept area as a function of
|
Which we can then substitute back into the equation for the swept area as a function of
|
||||||
time (Equation~\ref{swept}) for period of time since the spacecraft left periapsis:
|
time (Equation~\ref{swept}) for period of time since the spacecraft left periapsis:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\frac{\Delta t}{T} = \frac{t_2 - t_{peri}}{T} = \frac{E - e \sin E}{2 \pi}
|
\frac{\Delta t}{T} = \frac{t_2 - t_{peri}}{T} = \frac{E - e \sin E}{2 \pi}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Which is, effectively, Kepler's equation. It is commonly known by a different form:
|
Which is, effectively, Kepler's equation. It is commonly known by a different form:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
M = \sqrt{\frac{\mu}{a^3}} \Delta t = E - e \sin E
|
M = \sqrt{\frac{\mu}{a^3}} \Delta t = E - e \sin E
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
where we've defined the mean anomaly as $M$ and used the fact that $T =
|
||||||
Where we've defined the mean anomaly as $M$ and used the fact that $T =
|
\sqrt{\frac{a^3}{\mu}}$. This provides us a useful relationship between eccentric anomaly
|
||||||
\sqrt{\frac{a^3}{\mu}}$. This provides us a useful relationship between Eccentric Anomaly
|
|
||||||
($E$) which can be related to spacecraft position, and time, but we still need a useful
|
($E$) which can be related to spacecraft position, and time, but we still need a useful
|
||||||
algorithm for solving this equation in order to use this equation to propagate a
|
algorithm for solving this equation in order to use this equation to propagate a
|
||||||
spacecraft.
|
spacecraft.
|
||||||
@@ -224,34 +201,25 @@
|
|||||||
\subsection{LaGuerre-Conway Algorithm}\label{laguerre}
|
\subsection{LaGuerre-Conway Algorithm}\label{laguerre}
|
||||||
|
|
||||||
For this thesis, the algorithm used to solve Kepler's equation was the general numeric
|
For this thesis, the algorithm used to solve Kepler's equation was the general numeric
|
||||||
root-finding scheme first developed by LaGuerre in the 1800s and first applied to
|
root-finding scheme first developed by LaGuerre in the 1800s and first applied to Kepler's
|
||||||
Kepler's equation by Bruce Conway in 1985\cite{laguerre_conway}. In his paper, Conway
|
equation by Bruce Conway in 1985\cite{laguerre_conway}. In his paper, Conway makes a
|
||||||
makes a compelling argument for utilizing the less common LaGuerre method over higher
|
compelling argument for utilizing the less common LaGuerre method over higher order Newton
|
||||||
order Newton or Newton-Raphson methods.
|
or Newton-Raphson methods. The Newton-Raphson methods, while found to generally have quite
|
||||||
|
impressive convergence rates (generally successfully solving Kepler's equation correctly
|
||||||
The Newton-Raphson methods, while found to generally have quite impressive convergence
|
within 5 iterations), were prone to failures in convergence given certain specific initial
|
||||||
rates (generally successfully solving Kepler's equation correctly within 5 iterations),
|
conditions. Therefore LaGuerre's algorithm is proposed as an alternative.
|
||||||
were prone to failures in convergence given certain specific initial conditions.
|
|
||||||
Therefore LaGuerre's algorithm is proposed as an alternative.
|
|
||||||
|
|
||||||
The algorithm can be relatively easily derived by examining the polynomial equation with
|
|
||||||
$m$ roots:
|
|
||||||
|
|
||||||
|
The algorithm can be derived by examining the polynomial equation with $m$ roots:
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
g(x) = (x - x_1) (x - x_2) ... ( x - x_m)
|
g(x) = (x - x_1) (x - x_2) ... ( x - x_m)
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
We can then generate some useful convenience functions as:
|
We can then generate some useful convenience functions as:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\ln|g(x)| &= \ln|(x - x_1)| + \ln|(x - x_2)| + ... + \ln|( x - x_m)| \\
|
\ln|g(x)| &= \ln|(x - x_1)| + \ln|(x - x_2)| + ... + \ln|( x - x_m)| \\
|
||||||
\frac{d\ln|g(x)|}{dx} &= \frac{1}{x - x_1} + \frac{1}{x - x_2} + ... + \frac{1}{x -
|
\frac{d\ln|g(x)|}{dx} &= \frac{1}{x - x_1} + \frac{1}{x - x_2} + ... + \frac{1}{x -
|
||||||
x_m} = G_1(x)
|
x_m} = G_1(x)
|
||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
and
|
and
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\frac{-d^2\ln|g(x)|}{dx^2} &= \frac{1}{(x - x_1)^2} + \frac{1}{(x - x_2)^2} + ... +
|
\frac{-d^2\ln|g(x)|}{dx^2} &= \frac{1}{(x - x_1)^2} + \frac{1}{(x - x_2)^2} + ... +
|
||||||
\frac{1}{(x - x_m)^2} = G_2(x)
|
\frac{1}{(x - x_m)^2} = G_2(x)
|
||||||
@@ -259,42 +227,32 @@
|
|||||||
|
|
||||||
Now we define the targeted root as $x_1$ and make the approximation that all of the
|
Now we define the targeted root as $x_1$ and make the approximation that all of the
|
||||||
other roots are equidistant from the targeted root, which means:
|
other roots are equidistant from the targeted root, which means:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
x - x_i = b, i=2,3,...,m
|
x - x_i = b, i=2,3,...,m
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
We can then rewrite $G_1$ and $G_2$ as:
|
We can then rewrite $G_1$ and $G_2$ as:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
G_1 &= \frac{1}{a} + \frac{n-1}{b} \\
|
G_1 &= \frac{1}{a} + \frac{n-1}{b} \\
|
||||||
G_2 &= \frac{1}{a^2} + \frac{n-1}{b^2}
|
G_2 &= \frac{1}{a^2} + \frac{n-1}{b^2}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Which may be solved for $a$ in terms of $G_1$, $G_2$:
|
Which may be solved for $a$ in terms of $G_1$, $G_2$:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
a = \frac{n}{G_1 \pm \sqrt{(n-1)(nG_2 - G_1^2)}}
|
a = \frac{n}{G_1 \pm \sqrt{(n-1)(nG_2 - G_1^2)}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
With corresponding iteration function:
|
With corresponding iteration function:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
x_{i+1} = x_i - \frac{n g(x_i)}{g'(x_i) \pm \sqrt{(n-1)^2 f'(x_i)^2 - n (n-1) f(x_i)
|
x_{i+1} = x_i - \frac{n g(x_i)}{g'(x_i) \pm \sqrt{(n-1)^2 f'(x_i)^2 - n (n-1) f(x_i)
|
||||||
f''(x_i)}}
|
f''(x_i)}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
This iteration scheme can be shown to be globally convergent, regardless of the initial
|
This iteration scheme can be shown to be globally convergent, regardless of the initial
|
||||||
guess. More relevantly, Conway also showed that the application of this method to
|
guess. Conway also showed that the application of this method to Kepler's equation was shown
|
||||||
Kepler's equation was shown to converge with similar speed to many of the best common
|
to converge with similar speed to many of the best common higher order Newton-Raphson
|
||||||
higher order Newton-Raphson solvers. However, LaGuerre's method was also found to be
|
solvers. However, LaGuerre's method was also found to be incredibly robust, converging to
|
||||||
incredibly robust, converging to the correct value for every one of Conway's 500,000
|
the correct value for every one of Conway's 500,000 tests. Because of this robustness, it is
|
||||||
tests. Because of this robustness, it is very useful for propagating spacecraft states.
|
useful for solving Kepler's equation.
|
||||||
|
|
||||||
\section{Interplanetary Considerations}\label{interplanetary}
|
\section{Interplanetary Trajectories}\label{interplanetary}
|
||||||
|
|
||||||
In interplanetary travel, the primary body most responsible for gravitational forces might
|
In interplanetary travel, the primary body most responsible for gravitational forces might
|
||||||
be a number of different bodies, dependent on the phase of the mission. In fact, at some
|
be a number of different bodies, dependent on the phase of the mission. In fact, at some
|
||||||
@@ -339,21 +297,22 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.8\textwidth]{fig/patched_conics}
|
\includegraphics[width=0.8\textwidth]{LaTeX/fig/patched_conics}
|
||||||
\caption{Patched Conics Example Figure}
|
\caption{Patched Conics Example Figure}
|
||||||
\label{patched_conics_fig}
|
\label{patched_conics_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
This effectively breaks the trajectory into a series of arcs each governed by a distinct
|
This effectively breaks the trajectory into a series of arcs each governed by a distinct
|
||||||
Two-Body problem patched together by distinct transition points. These transition points
|
Two-Body problem patched together by distinct transition points. These transition points
|
||||||
occur along the spheres of influence of the planets nearest to the spacecraft.
|
occur along the spheres of influence of the planets nearest to the spacecraft. A
|
||||||
|
conceptual example of this process, labeled the method of patched conics, appears in
|
||||||
|
Figure~\ref{patched_conics_fig}.
|
||||||
|
|
||||||
Therefore, we must understand how to convert our spacecraft's state from the Sun frame
|
Therefore, we must understand how to convert our spacecraft's state from the Sun frame
|
||||||
to the planetary frame as it crosses this boundary. An elliptical orbit about the sun
|
to the planetary frame as it crosses this boundary. An elliptical orbit about the sun
|
||||||
will have enough orbital energy to represent a hyperbolic orbit around the planet. So we
|
will have enough orbital energy to represent a hyperbolic orbit around the planet. So we
|
||||||
first need to determine the velocity of the spacecraft relative to the planet as it
|
first need to determine the velocity of the spacecraft relative to the planet as it
|
||||||
crosses the SOI, which we can determine by subtraction \cite{vallado2001fundamentals}:
|
crosses the SOI, which we can determine by subtraction \cite{vallado2001fundamentals}:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\vec{v}_{sc/p} = \vec{v}_{sc/sun} - \vec{v}_{planet/sun}
|
\vec{v}_{sc/p} = \vec{v}_{sc/sun} - \vec{v}_{planet/sun}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@@ -361,24 +320,22 @@
|
|||||||
Since the orbit around the planet is hyperbolic, in order to characterize the hyperbola
|
Since the orbit around the planet is hyperbolic, in order to characterize the hyperbola
|
||||||
we must determine the velocity of the spacecraft when it has infinite distance relative
|
we must determine the velocity of the spacecraft when it has infinite distance relative
|
||||||
to the planet. Since this never occurs, a further approximation is made that the
|
to the planet. Since this never occurs, a further approximation is made that the
|
||||||
velocity that the spacecraft has (relative to the planet) as it crosses the SOI can be
|
velocity of the spacecraft (relative to the planet) as it crosses the SOI can be modeled
|
||||||
modeled as the $\vec{v}_\infty$ of that hyperbolic arc.
|
as the $\vec{v}_\infty$ of that hyperbolic arc.
|
||||||
|
|
||||||
As an example, we may wish to determine the velocity relative to the planet that the
|
As an example, we may wish to determine the velocity relative to the planet that the
|
||||||
spacecraft has at the periapsis of its hyperbolic trajectory during the flyby. This
|
spacecraft has at the periapsis of its hyperbolic trajectory during the flyby. This
|
||||||
could be useful, perhaps, for sizing the $\Delta V<$ required during the insertion stage
|
could be useful, perhaps, for sizing the $\Delta V$ required during the insertion stage
|
||||||
of the mission if the spacecraft is intended to be captured into an elliptical orbit
|
of the mission if the spacecraft is intended to be captured into an elliptical orbit
|
||||||
around its target planet. For a given incoming hyperbolic $\vec{v}_\infty$, we can first
|
around its target planet. For a given incoming hyperbolic $\vec{v}_\infty$, we can first
|
||||||
determine the specific mechanical energy of the hyperbola at infinite distance by using
|
determine the specific mechanical energy of the hyperbola at infinite distance by using
|
||||||
Equation~\ref{energy}:
|
Equation~\ref{energy}:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\xi = \frac{v^2}{2} - \frac{\mu}{r} = \frac{v_\infty^2}{2}
|
\xi = \frac{v^2}{2} - \frac{\mu}{r} = \frac{v_\infty^2}{2}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
We can then leverage the conservation of energy to determine the velocity at a
|
We can then leverage the conservation of energy to determine the velocity at a
|
||||||
particular point, $r_{ins}$:
|
particular point, $r_{ins}$:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\xi_{ins} &= \frac{v_{ins}^2}{2} - \frac{\mu}{r_{ins}} \\
|
\xi_{ins} &= \frac{v_{ins}^2}{2} - \frac{\mu}{r_{ins}} \\
|
||||||
\xi_{ins} &= \xi_\infty = \frac{v_\infty^2}{2} \\
|
\xi_{ins} &= \xi_\infty = \frac{v_\infty^2}{2} \\
|
||||||
@@ -387,31 +344,29 @@
|
|||||||
|
|
||||||
\subsection{Launch Considerations}
|
\subsection{Launch Considerations}
|
||||||
|
|
||||||
Generally speaking, an interplanetary mission begins with launch. For a satellite of
|
For a satellite of given size, a certain amount of orbital energy can be imparted to the
|
||||||
given size, a certain amount of orbital energy can be imparted to the satellite by the
|
satellite by the launch vehicle. In practice, this value, for a particular mission, is
|
||||||
launch vehicle. In practice, this value, for a particular mission, is actually
|
actually determined as a parameter of the mission trajectory to be optimized. The excess
|
||||||
determined as a parameter of the mission trajectory to be optimized. The excess velocity
|
velocity at infinity of the hyperbolic orbit of the spacecraft that leaves the Earth can
|
||||||
at infinity of the hyperbolic orbit of the spacecraft that leaves the Earth can be used
|
be used to derive the launch energy. This is usually qualified as the quantity $C_3$,
|
||||||
to derive the launch energy. This is usually qualified as the quantity $C_3$, which is
|
which is actually double the kinetic orbital energy with respect to the Sun, or simply
|
||||||
actually double the kinetic orbital energy with respect to the Sun, or simply the square
|
the square of the excess hyperbolic velocity at infinity\cite{wie1998space}.
|
||||||
of the excess hyperbolic velocity at infinity\cite{wie1998space}.
|
|
||||||
|
|
||||||
This algorithm will assume that the initial trajectory at the beginning of the mission
|
This algorithm will assume that the initial trajectory at the beginning of the mission
|
||||||
will be some hyperbolic orbit with velocity enough to leave the Earth. That initial
|
will be some hyperbolic orbit with velocity enough to leave the Earth. That initial
|
||||||
$v_\infty$ will be used as a tunable parameter in the NLP solver. This allows the
|
$v_\infty$ will be used as a tunable parameter in the optimization routine. This allows
|
||||||
mission designer to include the launch $C_3$ in the cost function and, hopefully,
|
the mission designer to include the launch $C_3$ in the cost function and, hopefully,
|
||||||
determine the mission trajectory that includes the least initial launch energy. This can
|
determine the mission trajectory that includes the least initial launch energy. This can
|
||||||
then be fed back into a mass-$C_3$ curve for prospective launch providers to determine
|
then be fed back into a mass-$C_3$ curve for prospective launch providers to determine
|
||||||
what the maximum mass any launch provider is capable of imparting that specific $C_3$
|
what the maximum mass any launch provider is capable of imparting that specific $C_3$
|
||||||
to.
|
to.
|
||||||
|
|
||||||
A similar approach is taken at the end of the mission. This algorithm doesn't attempt to
|
A similar approach is taken at the end of the trajectory. This algorithm doesn't attempt
|
||||||
exactly match the velocity of the planet at the end of the mission. Instead, the excess
|
to exactly match the velocity of the planet. Instead, the excess hyperbolic velocity is
|
||||||
hyperbolic velocity is also treated as a parameter that can be minimized by the cost
|
also treated as a parameter that can be minimized by the cost function. If a trajectory
|
||||||
function. If a mission is to then end in insertion, a portion of the mass budget can
|
is to then end in insertion, a portion of the mass budget can then be used for an
|
||||||
then be used for an impulsive thrust engine, which can provide a final insertion burn at
|
impulsive thrust engine, which can provide a final insertion burn. This approach also
|
||||||
the end of the mission. This approach also allows flexibility for missions that might
|
allows flexibility for missions that might end in a flyby rather than insertion.
|
||||||
end in a flyby rather than insertion.
|
|
||||||
|
|
||||||
\subsection{Gravity Assist Maneuvers}
|
\subsection{Gravity Assist Maneuvers}
|
||||||
|
|
||||||
@@ -441,8 +396,8 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.8\textwidth]{fig/flyby}
|
\includegraphics[width=0.8\textwidth]{LaTeX/fig/flyby}
|
||||||
\caption{Visualization of velocity changes during a gravity assist}
|
\caption{Velocity changes during a gravity assist}
|
||||||
\label{grav_assist_fig}
|
\label{grav_assist_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
@@ -452,7 +407,7 @@
|
|||||||
turning angle of this bend. In doing so, one can effectively achieve a (restricted) free
|
turning angle of this bend. In doing so, one can effectively achieve a (restricted) free
|
||||||
impulsive thrust event.
|
impulsive thrust event.
|
||||||
|
|
||||||
\subsection{Flyby Periapsis}
|
\subsection{Flyby Periapsis Altitude}
|
||||||
|
|
||||||
Now that we understand gravity assists, the natural question is then how to leverage
|
Now that we understand gravity assists, the natural question is then how to leverage
|
||||||
them for achieving certain velocity changes\cite{cho2017b}. But first, we must consider
|
them for achieving certain velocity changes\cite{cho2017b}. But first, we must consider
|
||||||
@@ -461,7 +416,6 @@
|
|||||||
mentioned in the previous section, given an excess hyperbolic velocity entering the
|
mentioned in the previous section, given an excess hyperbolic velocity entering the
|
||||||
planet's sphere of influence ($\vec{v}_{\infty, in}$) and a target excess hyperbolic
|
planet's sphere of influence ($\vec{v}_{\infty, in}$) and a target excess hyperbolic
|
||||||
velocity as the spacecraft leaves the sphere of influence ($\vec{v}_{\infty, out}$):
|
velocity as the spacecraft leaves the sphere of influence ($\vec{v}_{\infty, out}$):
|
||||||
|
|
||||||
\begin{equation}\label{turning_angle_eq}
|
\begin{equation}\label{turning_angle_eq}
|
||||||
\delta = \arccos \left( \frac{\vec{v}_{\infty,in} \cdot
|
\delta = \arccos \left( \frac{\vec{v}_{\infty,in} \cdot
|
||||||
\vec{v}_{\infty,out}}{|\vec{v}_{\infty,in}| |\vec{v}_{\infty,out}|} \right)
|
\vec{v}_{\infty,out}}{|\vec{v}_{\infty,in}| |\vec{v}_{\infty,out}|} \right)
|
||||||
@@ -471,12 +425,10 @@
|
|||||||
that we must target in order to achieve the required turning angle. The periapsis of the
|
that we must target in order to achieve the required turning angle. The periapsis of the
|
||||||
flyby, however, can provide a useful check on what turning angles are possible for a
|
flyby, however, can provide a useful check on what turning angles are possible for a
|
||||||
given flyby, since the periapsis:
|
given flyby, since the periapsis:
|
||||||
|
\begin{equation}\label{periapsis_eq}
|
||||||
\begin{equation}
|
|
||||||
r_p = \frac{\mu}{v_\infty^2} \left[ \frac{1}{\sin\left(\frac{\delta}{2}\right)} - 1 \right]
|
r_p = \frac{\mu}{v_\infty^2} \left[ \frac{1}{\sin\left(\frac{\delta}{2}\right)} - 1 \right]
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
cannot be lower than some safe value that accounts for the radius of the planet and
|
||||||
Cannot be lower than some safe value that accounts for the radius of the planet and
|
|
||||||
perhaps its atmosphere if applicable.
|
perhaps its atmosphere if applicable.
|
||||||
|
|
||||||
\subsection{Multiple Gravity Assist Techniques}
|
\subsection{Multiple Gravity Assist Techniques}
|
||||||
@@ -504,19 +456,21 @@
|
|||||||
here for its robustness given any initial guess \cite{battin1984elegant}.
|
here for its robustness given any initial guess \cite{battin1984elegant}.
|
||||||
|
|
||||||
Firstly, some geometric considerations must be accounted for. For any initial
|
Firstly, some geometric considerations must be accounted for. For any initial
|
||||||
position, $\vec{r}_0$, and final position, $\vec{r}_f$, and time of flight $\Delta
|
position, $\vec{r}_1$, and final position, $\vec{r}_2$, and time of flight $\Delta
|
||||||
t$, there are actually two separate transfer orbits that can connect the two points
|
t$, there are actually two separate transfer orbits that can connect the two points
|
||||||
with paths that traverse less than one full orbit. For each of these, there are
|
with paths that traverse less than one full orbit. Therefore, there are
|
||||||
actually then two trajectories that can connect the points
|
actually then two trajectories that can connect the points
|
||||||
\cite{vallado2001fundamentals}. The first of the two will have a $\Delta \theta$ of
|
\cite{vallado2001fundamentals}. The first of the two will have a $\Delta \theta$ of
|
||||||
less than 180 degrees, which we classify as a Type I trajectory, and the second will
|
less than 180 degrees, which we classify as a Type I trajectory, and the second will
|
||||||
have a $\Delta \theta$ of greater than 180 degrees, which we call a Type II
|
have a $\Delta \theta$ of greater than 180 degrees, which we call a Type II
|
||||||
trajectory. They will also differ in their direction of motion (clockwise or
|
trajectory. They will also differ in their direction of motion (clockwise or
|
||||||
counter-clockwise about the focus). This can be seen in Figure~\ref{type1type2}.
|
counter-clockwise about the focus). This can be seen in Figure~\ref{type1type2},
|
||||||
|
where both of the Lambert's solutions are presented for sample points in an orbit
|
||||||
|
around the Sun.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.8\textwidth]{fig/lamberts}
|
\includegraphics[width=0.8\textwidth]{LaTeX/fig/lamberts}
|
||||||
\caption{Visualization of the possible solutions to Lambert's Problem}
|
\caption{Visualization of the possible solutions to Lambert's Problem}
|
||||||
\label{type1type2}
|
\label{type1type2}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@@ -524,7 +478,6 @@
|
|||||||
The iteration used in this thesis will start by first calculating the change in true
|
The iteration used in this thesis will start by first calculating the change in true
|
||||||
anomaly, $\Delta \theta$, as well as the cosine of this value, which can be found
|
anomaly, $\Delta \theta$, as well as the cosine of this value, which can be found
|
||||||
by:
|
by:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\cos (\Delta \theta) &= \frac{\vec{r}_1 \cdot \vec{r}_2}{|\vec{r}_1| |\vec{r}_2|} \\
|
\cos (\Delta \theta) &= \frac{\vec{r}_1 \cdot \vec{r}_2}{|\vec{r}_1| |\vec{r}_2|} \\
|
||||||
\Delta \theta &= \arctan(y_2/x_2) - \arctan(y_1/x_1)
|
\Delta \theta &= \arctan(y_2/x_2) - \arctan(y_1/x_1)
|
||||||
@@ -533,7 +486,6 @@
|
|||||||
The direction of motion is then chosen such that counter-clockwise orbits are
|
The direction of motion is then chosen such that counter-clockwise orbits are
|
||||||
considered, as travelling in the same direction as the planets is generally more
|
considered, as travelling in the same direction as the planets is generally more
|
||||||
efficient. Next, the variable $A$ is defined:
|
efficient. Next, the variable $A$ is defined:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
A = DM \sqrt{|r_1| |r_2| (1 - \cos(\Delta \theta))}
|
A = DM \sqrt{|r_1| |r_2| (1 - \cos(\Delta \theta))}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@@ -548,7 +500,6 @@
|
|||||||
time of flight matches the expected value to within a provided tolerance. In order
|
time of flight matches the expected value to within a provided tolerance. In order
|
||||||
to calculate the time of flight at each step, we must first calculate some useful
|
to calculate the time of flight at each step, we must first calculate some useful
|
||||||
coefficients:
|
coefficients:
|
||||||
|
|
||||||
\begin{equation}\label{loop_start}
|
\begin{equation}\label{loop_start}
|
||||||
c_2 = \begin{cases}
|
c_2 = \begin{cases}
|
||||||
\frac{1-\cos(\sqrt{\psi})}{\psi} \quad &\text{if} \, \psi > 10^{-6} \\
|
\frac{1-\cos(\sqrt{\psi})}{\psi} \quad &\text{if} \, \psi > 10^{-6} \\
|
||||||
@@ -556,31 +507,25 @@
|
|||||||
1/2 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
|
1/2 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
|
||||||
\end{cases}
|
\end{cases}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
c_3 = \begin{cases}
|
c_3 = \begin{cases}
|
||||||
\frac{\sqrt{\psi} - \sin sqrt{\psi}}{\psi^{3/2}} \quad &\text{if} \, \psi > 10^{-6} \\
|
\frac{\sqrt{\psi} - \sin \sqrt{\psi}}{\psi^{3/2}} \quad &\text{if} \, \psi > 10^{-6} \\
|
||||||
\frac{\sinh\sqrt{-\psi} - \sqrt{-\psi}}{(-\psi)^{3/2}} \quad &\text{if} \, \psi < -10^{-6} \\
|
\frac{\sinh\sqrt{-\psi} - \sqrt{-\psi}}{(-\psi)^{3/2}} \quad &\text{if} \, \psi < -10^{-6} \\
|
||||||
1/6 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
|
1/6 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
|
||||||
\end{cases}
|
\end{cases}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Where the conditions of this piecewise function represent the elliptical,
|
Where the conditions of this piecewise function represent the elliptical,
|
||||||
hyperbolic, and parabolic cases, respectively. Once we have these, we can calculate
|
hyperbolic, and parabolic cases, respectively. Once we have these, we can calculate
|
||||||
another variable, $y$:
|
another variable, $y$:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
y = |r_1| + |r_2| + \frac{A (c_3 \psi - 1)}{\sqrt{c_2}}
|
y = |r_1| + |r_2| + \frac{A (c_3 \psi - 1)}{\sqrt{c_2}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
We can then finally calculate the variable $\chi$, and from that, the time of
|
We can then finally calculate the variable $\chi$, and from that, the time of
|
||||||
flight:
|
flight:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\chi = sqrt{\frac{y}{c_2}}
|
\chi = \sqrt{\frac{y}{c_2}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\Delta t = \frac{c_3 \chi^3 + A \sqrt{y}}{\sqrt{c_2}}
|
\Delta t = \frac{c_3 \chi^3 + A \sqrt{y}}{\sqrt{c_2}}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@@ -593,22 +538,17 @@
|
|||||||
|
|
||||||
The resulting $f$ and $g$ functions (and the derivative of $g$, $\dot{g}$) can then
|
The resulting $f$ and $g$ functions (and the derivative of $g$, $\dot{g}$) can then
|
||||||
be calculated:
|
be calculated:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
f &= 1 - \frac{y}{|r_1|} \\
|
f &= 1 - \frac{y}{|r_1|} \\
|
||||||
g &= A \sqrt{\frac{y}{\mu}} \\
|
g &= A \sqrt{\frac{y}{\mu}} \\
|
||||||
\dot{g} &= 1 - \frac{y}{|r_2|}
|
\dot{g} &= 1 - \frac{y}{|r_2|}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
And from these, we can calculate the velocities of the transfer points as:
|
And from these, we can calculate the velocities of the transfer points as:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\vec{v}_1 &= \frac{\vec{r}_1 - f \vec{r}_2}{g} \\
|
\vec{v}_1 &= \frac{\vec{r}_1 - f \vec{r}_2}{g} \\
|
||||||
\vec{v}_2 &= \frac{\dot{g} \vec{r}_2 - \vec{r}_1}{g}
|
\vec{v}_2 &= \frac{\dot{g} \vec{r}_2 - \vec{r}_1}{g}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
Fully describing the connecting path with the specified flight time.
|
||||||
\noindent
|
|
||||||
Fully constraining the connecting orbit.
|
|
||||||
|
|
||||||
\subsubsection{Planetary Ephemeris}
|
\subsubsection{Planetary Ephemeris}
|
||||||
|
|
||||||
@@ -621,8 +561,8 @@
|
|||||||
|
|
||||||
The primary use of SPICE in this thesis, however, was to determine the planetary
|
The primary use of SPICE in this thesis, however, was to determine the planetary
|
||||||
ephemeris at a known epoch. Using the NAIF0012 and DE430 kernels, ephemeris in the
|
ephemeris at a known epoch. Using the NAIF0012 and DE430 kernels, ephemeris in the
|
||||||
ecliptic plane J2000 frame (ICRF) could be easily determined for a given epoch, provided as
|
International Celestial Reference Frame could be easily determined for a given
|
||||||
a decimal Julian Day since the J2000 epoch.
|
epoch, provided as a decimal Julian Day since the J2000 epoch.
|
||||||
|
|
||||||
\subsubsection{Porkchop Plots}
|
\subsubsection{Porkchop Plots}
|
||||||
|
|
||||||
@@ -642,24 +582,17 @@
|
|||||||
Using porkchop plots such as the one in Figure~\ref{porkchop}, mission designers can
|
Using porkchop plots such as the one in Figure~\ref{porkchop}, mission designers can
|
||||||
quickly visualize which natural trajectories are possible between planets. Using the
|
quickly visualize which natural trajectories are possible between planets. Using the
|
||||||
fact that incoming and outgoing $v_\infty$ magnitudes must be the same for a flyby,
|
fact that incoming and outgoing $v_\infty$ magnitudes must be the same for a flyby,
|
||||||
a savvy mission designer can even begin to work out what combinations of flybys
|
a mission designer can even begin to work out what combinations of flybys might be
|
||||||
might be possible for a given timeline, spacecraft state, and planet selection.
|
possible for a given timeline, spacecraft state, and planet selection.
|
||||||
|
|
||||||
%TODO: Create my own porkchop plot
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/porkchop}
|
\includegraphics[width=\textwidth]{LaTeX/fig/porkchop}
|
||||||
\caption{A sample porkchop plot of an Earth-Mars transfer}
|
\caption{A sample porkchop plot of an Earth-Mars transfer}
|
||||||
\label{porkchop}
|
\label{porkchop}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
However, this is an impulsive thrust-centered approach. The solution to Lambert's
|
\section{Modeling Low Thrust Control} \label{low_thrust}
|
||||||
problem assumes a natural trajectory. A natural trajectory is unnecessary when the
|
|
||||||
trajectory can be modified by a continuous thrust profile along the arc. Therefore,
|
|
||||||
for the hybrid problem of optimizing both flyby selection and thrust profiles,
|
|
||||||
porkchop plots are less helpful, and an algorithmic approach is preferred.
|
|
||||||
|
|
||||||
\section{Low Thrust Considerations} \label{low_thrust}
|
|
||||||
|
|
||||||
In this section, we'll discuss the intricacies of continuous low-thrust trajectories in
|
In this section, we'll discuss the intricacies of continuous low-thrust trajectories in
|
||||||
particular. There are many methods for optimizing such profiles and we'll briefly discuss
|
particular. There are many methods for optimizing such profiles and we'll briefly discuss
|
||||||
@@ -667,7 +600,7 @@
|
|||||||
as introduce the concept of a control law and the notation used in this thesis for modelling
|
as introduce the concept of a control law and the notation used in this thesis for modelling
|
||||||
low-thrust trajectories more simply.
|
low-thrust trajectories more simply.
|
||||||
|
|
||||||
\subsection{Specific Impulse}
|
\subsection{Engine Model}
|
||||||
|
|
||||||
The primary advantage of continuous thrust methods over their impulsive counterparts is
|
The primary advantage of continuous thrust methods over their impulsive counterparts is
|
||||||
in their fuel-efficiency in generating changes in velocity. Put specifically, all
|
in their fuel-efficiency in generating changes in velocity. Put specifically, all
|
||||||
@@ -679,45 +612,34 @@
|
|||||||
This efficiency is often captured in a single variable called specific impulse, often
|
This efficiency is often captured in a single variable called specific impulse, often
|
||||||
denoted as $I_{sp}$. We can derive the specific impulse by starting with the rocket
|
denoted as $I_{sp}$. We can derive the specific impulse by starting with the rocket
|
||||||
thrust equation\cite{sutton2016rocket}:
|
thrust equation\cite{sutton2016rocket}:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
F = \dot{m} v_e + \Delta p A_e
|
F = \dot{m} v_e + \Delta p A_e
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Where $F$ is the thrust imparted, $\dot{m}$ is the fuel mass rate, $v_e$ is the exhaust
|
Where $F$ is the thrust imparted, $\dot{m}$ is the fuel mass rate, $v_e$ is the exhaust
|
||||||
velocity of the fuel, $\Delta p$ is the change in pressure across the exhaust opening,
|
velocity of the fuel, $\Delta p$ is the change in pressure across the exhaust opening,
|
||||||
and $A_e$ is the area of the exhaust opening. We can then define a new variable
|
and $A_e$ is the area of the exhaust opening. We can then define a new variable
|
||||||
$v_{eq}$, such that the thrust equation becomes:
|
$v_{eq}$, such that the thrust equation becomes:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
v_{eq} &= v_e - \frac{\Delta p A_e}{\dot{m}} \\
|
v_{eq} &= v_e + \frac{\Delta p A_e}{\dot{m}} \\
|
||||||
F &= \dot{m} v_{eq} \label{isp_1}
|
F &= \dot{m} v_{eq} \label{isp_1}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
\noindent
|
|
||||||
And we can then take the integral of this value with respect to time to find the total
|
And we can then take the integral of this value with respect to time to find the total
|
||||||
impulse, dividing by the weight of the fuel to derive the specific impulse:
|
impulse, dividing by the weight of the fuel to derive the specific impulse:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
I &= \int F dt = \int \dot{m} v_{eq} dt = m_e v_{eq} \\
|
I &= \int F dt = \int \dot{m} v_{eq} dt = m_e v_{eq} \\
|
||||||
I_{sp} &= \frac{I}{m_e g_0} = \frac{m_e v_{eq}}{m_e g_0} = \frac{v_{eq}}{g_0}
|
I_{sp} &= \frac{I}{m_e g_0} = \frac{m_e v_{eq}}{m_e g_0} = \frac{v_{eq}}{g_0}
|
||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
Plugging Equation~\ref{isp_1} into the previous equation we can derive the following
|
Plugging Equation~\ref{isp_1} into the previous equation we can derive the following
|
||||||
formula for $I_{sp}$:
|
formula for $I_{sp}$:
|
||||||
|
|
||||||
\begin{equation} \label{isp_real}
|
\begin{equation} \label{isp_real}
|
||||||
I_{sp} = \frac{F}{\dot{m} g_0}
|
I_{sp} = \frac{F}{\dot{m} g_0}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
Which is generally taken to be a value with units of seconds and effectively represents
|
Which is generally taken to be a value with units of seconds and effectively represents
|
||||||
the efficiency with which a thruster converts mass to thrust.
|
the efficiency with which a thruster converts mass to thrust.
|
||||||
|
|
||||||
\subsection{Sims-Flanagan Transcription}
|
\subsection{Sims-Flanagan Transcription}
|
||||||
|
|
||||||
this thesis chose to use a model well suited for modeling low-thrust paths: the
|
In this thesis the following approach is used for modeling low-thrust paths: the
|
||||||
Sims-Flanagan transcription (SFT)\cite{sims1999preliminary}. The SFT allows for
|
Sims-Flanagan transcription (SFT)\cite{sims1999preliminary}. The SFT allows for
|
||||||
flexibility in the trade-off between fidelity and performance, which makes it very
|
flexibility in the trade-off between fidelity and performance, which makes it very
|
||||||
useful for this sort of preliminary analysis.
|
useful for this sort of preliminary analysis.
|
||||||
@@ -730,7 +652,7 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.6\textwidth]{fig/sft}
|
\includegraphics[width=0.6\textwidth]{LaTeX/fig/sft}
|
||||||
\caption{Example of an orbit raising using the Sims-Flanagan Transcription with 7
|
\caption{Example of an orbit raising using the Sims-Flanagan Transcription with 7
|
||||||
Sub-Trajectories}
|
Sub-Trajectories}
|
||||||
\label{sft_fig}
|
\label{sft_fig}
|
||||||
@@ -753,7 +675,7 @@
|
|||||||
continuous low-thrust trajectory within the Two-Body Problem, with only
|
continuous low-thrust trajectory within the Two-Body Problem, with only
|
||||||
linearly-increasing computation time\cite{sims1999preliminary}.
|
linearly-increasing computation time\cite{sims1999preliminary}.
|
||||||
|
|
||||||
\subsection{Low-Thrust Control Laws}
|
\subsection{Low-Thrust Control Vector Description}
|
||||||
|
|
||||||
In determining a low-thrust arc, a number of variables must be accounted for and,
|
In determining a low-thrust arc, a number of variables must be accounted for and,
|
||||||
ideally, optimized. Generally speaking, this means that a control law must be determined
|
ideally, optimized. Generally speaking, this means that a control law must be determined
|
||||||
@@ -766,24 +688,23 @@
|
|||||||
The methods for determining this direction varies greatly depending on the particular
|
The methods for determining this direction varies greatly depending on the particular
|
||||||
control law chosen for that mission. Often, this process involves first determining a
|
control law chosen for that mission. Often, this process involves first determining a
|
||||||
useful frame to think about the kinematics of the spacecraft. In this case, we'll use a
|
useful frame to think about the kinematics of the spacecraft. In this case, we'll use a
|
||||||
frame often used in these low-thrust control laws: the spacecraft $\hat{R} \hat{\theta}
|
frame often used in these low-thrust control laws: the spacecraft-centered $\hat{R}
|
||||||
\hat{H}$ frame. In this frame, the $\hat{R}$ direction is the radial direction from the
|
\hat{\theta} \hat{H}$ frame. In this frame, the $\hat{R}$ direction is the radial
|
||||||
center of the primary to the center of the spacecraft. The $\hat{H}$ hat is
|
direction from the center of the primary to the center of the spacecraft. The $\hat{H}$
|
||||||
perpendicular to this, in the direction of orbital momentum (out-of-plane) and the
|
hat is perpendicular to this, in the direction of orbital momentum (out-of-plane) and
|
||||||
$\hat{\theta}$ direction completes the right-handed orthonormal frame.
|
the $\hat{\theta}$ direction completes the right-handed orthonormal triad.
|
||||||
|
|
||||||
This frame is useful because, for a given orbit, especially a nearly circular one, the
|
This frame is useful because, for a given orbit, especially a nearly circular one, the
|
||||||
$\hat{\theta}$ direction is nearly aligned with the velocity direction for that orbit at
|
$\hat{\theta}$ direction is nearly aligned with the velocity direction for that orbit at
|
||||||
that moment. This allows us to define a set of two angles, which we'll call $\alpha$ and
|
that moment. This allows us to define a set of two angles, which we'll call $\alpha$ and
|
||||||
$\beta$, to represent the in and out of plane pointing direction of the thrusters. This
|
$\beta$, to represent the in and out of plane pointing direction of the thrusters. This
|
||||||
convention is useful because a $(0,0)$ set represents a thrust force more or less
|
convention is useful because, in a near-circular path, a $(0,0)$ set represents a thrust
|
||||||
directly in line with the direction of the velocity, a commonly useful thrusting
|
force more or less directly in line with the direction of the velocity, a commonly
|
||||||
direction for most effectively increasing (or decreasing if negative) the angular
|
useful thrusting direction for most effectively increasing (or decreasing if negative)
|
||||||
momentum and orbital energy of the trajectory.
|
the angular momentum and orbital energy of the trajectory.
|
||||||
|
|
||||||
Using these conventions, we can then redefine our thrust vector in terms of the $\alpha$
|
Using these conventions, we can then redefine our thrust vector in terms of the $\alpha$
|
||||||
and $\beta$ angles in the chosen frame:
|
and $\beta$ angles in the chosen frame:
|
||||||
|
|
||||||
\begin{align}
|
\begin{align}
|
||||||
F_r &= F \cos(\beta) \sin (\alpha) \\
|
F_r &= F \cos(\beta) \sin (\alpha) \\
|
||||||
F_\theta &= F \cos(\beta) \cos (\alpha) \\
|
F_\theta &= F \cos(\beta) \cos (\alpha) \\
|
||||||
@@ -792,12 +713,12 @@
|
|||||||
|
|
||||||
\subsubsection{Thrust Magnitude}
|
\subsubsection{Thrust Magnitude}
|
||||||
|
|
||||||
However, there is actually another variable that can be varied by the majority of
|
There is another variable that can be varied by the majority of electric thrusters.
|
||||||
electric thrusters. Either by controlling the input power of the thruster or the duty
|
Either by controlling the input power of the thruster or the duty cycle, the thrust
|
||||||
cycle, the thrust magnitude can also be varied, limited by the maximum thrust available
|
magnitude can also be varied, limited by the maximum thrust available to the thruster.
|
||||||
to the thruster. Not all control laws allow for this fine-tuned control of the thruster.
|
Not all control laws allow for this fine-tuned control of the thruster.
|
||||||
|
|
||||||
The algorithm used in this thesis does vary the magnitude of the thrust control. In
|
The approach used in this thesis does vary the magnitude of the thrust control. In
|
||||||
certain cases it actually can be useful to have some fine-tuned control over the
|
certain cases it actually can be useful to have some fine-tuned control over the
|
||||||
magnitude of the thrust. Since the optimization in this algorithm is automatic, it is
|
magnitude of the thrust. Since the optimization in this algorithm is automatic, it is
|
||||||
relatively straightforward to consider the control thrust as a 3-dimensional vector in
|
relatively straightforward to consider the control thrust as a 3-dimensional vector in
|
||||||
@@ -818,21 +739,14 @@
|
|||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/low_efficiency}
|
\includegraphics[width=\textwidth]{LaTeX/fig/low_efficiency}
|
||||||
\caption{Graphic of an orbit-raising with a low efficiency cutoff}
|
\caption{Graphic of an orbit-raising with a low efficiency cutoff}
|
||||||
\label{low_efficiency_fig}
|
\label{low_efficiency_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/high_efficiency}
|
\includegraphics[width=\textwidth]{LaTeX/fig/high_efficiency}
|
||||||
\caption{Graphic of an orbit-raising with a high efficiency cutoff}
|
\caption{Graphic of an orbit-raising with a high efficiency cutoff}
|
||||||
\label{high_efficiency_fig}
|
\label{high_efficiency_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
All of this is, of course, also true for impulsive trajectories. However, since the
|
|
||||||
thrust presence for those trajectories are generally taken to be impulse functions, the
|
|
||||||
control laws can afford to be much less complicated for a given mission goal, by simply
|
|
||||||
thrusting only at the moment on the orbit when the transition will be most efficient.
|
|
||||||
For a low-thrust mission, however, the control law must be continuous rather than
|
|
||||||
discrete and therefore the control law inherently gains a lot of complexity.
|
|
||||||
|
|||||||
@@ -6,10 +6,11 @@
|
|||||||
highly non-linear, unpredictable systems such as this. The field that developed to
|
highly non-linear, unpredictable systems such as this. The field that developed to
|
||||||
approach this problem is known as Non-Linear Programming (NLP) Optimization.
|
approach this problem is known as Non-Linear Programming (NLP) Optimization.
|
||||||
|
|
||||||
A Non-Linear Programming Problem is defined by an attempt to optimize a function
|
A Non-Linear Programming Problem involves finding a solution that optimizes a function
|
||||||
$f(\vec{x})$, subject to constraints $\vec{g}(\vec{x}) \le 0$ and $\vec{h}(\vec{x}) = 0$
|
$f(\vec{x})$, subject to constraints $\vec{g}(\vec{x}) \le 0$ and $\vec{h}(\vec{x}) = 0$
|
||||||
where $n$ is a positive integer, $x$ is any subset of $R^n$, $g$ and $h$ can be vector
|
where $n$ is a positive integer, $x$ is any subset of $R^n$, $g$ and $h$ can be vector
|
||||||
valued functions of any size, and at least one of $f$, $g$, and $h$ must be non-linear.
|
valued functions of any size, and at least one of $f$, $\vec{g}$, and $\vec{h}$ must be
|
||||||
|
non-linear.
|
||||||
|
|
||||||
There are, however, two categories of approaches to solving an NLP. The first category,
|
There are, however, two categories of approaches to solving an NLP. The first category,
|
||||||
indirect methods, involve declaring a set of necessary and/or sufficient conditions for
|
indirect methods, involve declaring a set of necessary and/or sufficient conditions for
|
||||||
@@ -20,10 +21,10 @@
|
|||||||
|
|
||||||
The other category is the direct methods. In a direct optimization problem, the cost
|
The other category is the direct methods. In a direct optimization problem, the cost
|
||||||
function itself provides a value that an iterative numerical optimizer can measure
|
function itself provides a value that an iterative numerical optimizer can measure
|
||||||
itself against. The optimal solution is then found by varying the inputs $x$ until the
|
itself against. The optimal solution is then found by varying the inputs $\vec{x}$ until
|
||||||
cost function is reduced to a minimum value, often determined by its derivative
|
the cost function is reduced to a minimum value, often determined by its derivative
|
||||||
jacobian. A number of tools have been developed to optimize NLPs via this direct method
|
jacobian. A number of tools have been developed to formulate NLPs for optimization via
|
||||||
in the general case.
|
this direct method in the general case.
|
||||||
|
|
||||||
Both of these methods have been applied to the problem of low-thrust interplanetary
|
Both of these methods have been applied to the problem of low-thrust interplanetary
|
||||||
trajectory optimization \cite{Casalino2007IndirectOM} to find local optima over
|
trajectory optimization \cite{Casalino2007IndirectOM} to find local optima over
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
Therefore, a direct optimization method was leveraged by transcribing the problem into
|
Therefore, a direct optimization method was leveraged by transcribing the problem into
|
||||||
an NLP and using IPOPT to find the local minima.
|
an NLP and using IPOPT to find the local minima.
|
||||||
|
|
||||||
\subsubsection{Non-Linear Solvers}
|
\subsection{Non-Linear Solvers}
|
||||||
|
|
||||||
One of the most common packages for the optimization of NLP problems is
|
One of the most common packages for the optimization of NLP problems is
|
||||||
SNOPT\cite{gill2005snopt}, which is a proprietary package written primarily using a
|
SNOPT\cite{gill2005snopt}, which is a proprietary package written primarily using a
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
University. It uses a sparse sequential quadratic programming algorithm as its
|
University. It uses a sparse sequential quadratic programming algorithm as its
|
||||||
back-end optimization scheme.
|
back-end optimization scheme.
|
||||||
|
|
||||||
Another common NLP optimization packages (and the one used in this implementation)
|
Another common NLP optimization package (and the one used in this implementation)
|
||||||
is the Interior Point Optimizer or IPOPT\cite{wachter2006implementation}. It uses
|
is the Interior Point Optimizer or IPOPT\cite{wachter2006implementation}. It uses
|
||||||
an Interior Point Linesearch Filter Method and was developed as an open-source
|
an Interior Point Linesearch Filter Method and was developed as an open-source
|
||||||
project by the organization COIN-OR under the Eclipse Public License.
|
project by the organization COIN-OR under the Eclipse Public License.
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
libraries that port these are quite modular in the sense that multiple algorithms can be
|
libraries that port these are quite modular in the sense that multiple algorithms can be
|
||||||
tested without changing much source code.
|
tested without changing much source code.
|
||||||
|
|
||||||
\subsubsection{Interior Point Linesearch Method}
|
\subsection{Interior Point Linesearch Method}
|
||||||
|
|
||||||
As mentioned above, this project utilized IPOPT which leveraged an Interior Point
|
As mentioned above, this project utilized IPOPT which leveraged an Interior Point
|
||||||
Linesearch method. A linesearch algorithm is one which attempts to find the optimum
|
Linesearch method. A linesearch algorithm is one which attempts to find the optimum
|
||||||
@@ -74,12 +75,7 @@
|
|||||||
step the initial guess, now labeled $x_{k+1}$ after the addition of the ``step''
|
step the initial guess, now labeled $x_{k+1}$ after the addition of the ``step''
|
||||||
vector and iterates this process until predefined termination conditions are met.
|
vector and iterates this process until predefined termination conditions are met.
|
||||||
|
|
||||||
In this case, the IPOPT algorithm was used, not as an optimizer, but as a solver. For
|
\subsection{Shooting Schemes for Solving a Two-Point Boundary Value Problem}
|
||||||
reasons that will be explained in the algorithm description in Section~\ref{algorithm} it
|
|
||||||
was sufficient merely that the non-linear constraints were met, therefore optimization (in
|
|
||||||
the particular step in which IPOPT was used) was unnecessary.
|
|
||||||
|
|
||||||
\subsubsection{Shooting Schemes for Solving a Two-Point Boundary Value Problem}
|
|
||||||
|
|
||||||
One straightforward approach to trajectory corrections is a single shooting
|
One straightforward approach to trajectory corrections is a single shooting
|
||||||
algorithm, which propagates a state, given some control variables forward in time to
|
algorithm, which propagates a state, given some control variables forward in time to
|
||||||
@@ -87,39 +83,30 @@
|
|||||||
iterative process, using the correction scheme, until the target state and the
|
iterative process, using the correction scheme, until the target state and the
|
||||||
propagated state matches.
|
propagated state matches.
|
||||||
|
|
||||||
As an example, we can consider the Two-Point Boundary Value Problem (TPBVP) defined
|
As an example, we can consider the one-dimensional Two-Point Boundary Value Problem
|
||||||
by:
|
(TPBVP) defined by:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
y''(t) = f(t, y(t), y'(t)), y(t_0) = y_0, y(t_f) = y_f
|
y''(t) = f(t, y(t), y'(t)), y(t_0) = y_0, y(t_f) = y_f
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
We can then redefine the problem as an initial-value problem:
|
We can then redefine the problem as an initial-value problem:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
y''(t) = f(t, y(t), y'(t)), y(t_0) = y_0, y'(t_0) = x
|
y''(t) = f(t, y(t), y'(t)), y(t_0) = y_0, y'(t_0) = \dot{y}_0
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
With $y(t,x)$ as a solution to that problem. Furthermore, if $y(t_f, x) = y_f$, then
|
With $y(t,x)$ as a solution to that problem. Furthermore, if $y(t_f, x) = y_f$, then
|
||||||
the solution to the initial-value problem is also the solution to the TPBVP as well.
|
the solution to the initial-value problem is also the solution to the TPBVP as well.
|
||||||
Therefore, we can use a root-finding algorithm, such as the bisection method,
|
Therefore, we can use a root-finding algorithm, such as the bisection method,
|
||||||
Newton's Method, or even Laguerre's method, to find the roots of:
|
Newton's Method, or even Laguerre's method, to find the roots of:
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
F(x) = y(t_f, x) - y_f
|
F(x) = y(t_f, x) - y_f
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
\noindent
|
|
||||||
To find the solution to the IVP at $x_0$, $y(t_f, x_0)$ which also provides a
|
To find the solution to the IVP at $x_0$, $y(t_f, x_0)$ which also provides a
|
||||||
solution to the TPBVP. This technique for solving a Two-Point Boundary Value
|
solution to the TPBVP. This technique for solving a Two-Point Boundary Value
|
||||||
Problem can be visualized in Figure~\ref{single_shoot_fig}.
|
Problem can be visualized in Figure~\ref{single_shoot_fig}.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/single_shoot}
|
\includegraphics[width=\textwidth]{LaTeX/fig/single_shoot}
|
||||||
\caption{Visualization of a single shooting technique over a trajectory arc}
|
\caption{Single shooting over a trajectory arc}
|
||||||
\label{single_shoot_fig}
|
\label{single_shoot_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
@@ -138,24 +125,23 @@
|
|||||||
each of these points we can then define a separate control, which may include the
|
each of these points we can then define a separate control, which may include the
|
||||||
states themselves. The end state of each arc and the beginning state of the next
|
states themselves. The end state of each arc and the beginning state of the next
|
||||||
must then be equal for a valid arc (with the exception of velocity discontinuities
|
must then be equal for a valid arc (with the exception of velocity discontinuities
|
||||||
if allowed for maneuvers at that point), as well as the final state matching the
|
if allowed for maneuvers or gravity assists at that point), as well as the final
|
||||||
target final state.
|
state matching the target final state.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=\textwidth]{fig/multiple_shoot}
|
\includegraphics[width=\textwidth]{LaTeX/fig/multiple_shoot}
|
||||||
\caption{Visualization of a multiple shooting technique over a trajectory arc}
|
\caption{Visualization of a multiple shooting technique over a trajectory arc}
|
||||||
\label{multiple_shoot_fig}
|
\label{multiple_shoot_fig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
In this example, it can be seen that there are now more constraints (places where
|
In this example, it can be seen that there are now more constraints (places where
|
||||||
the states need to match up, creating an $x_{error}$ term) as well as control
|
the states need to match up, creating an $\vec{x}_{error}$ term) as well as control
|
||||||
variables (the $\Delta V$ terms in the figure). This technique actually lends itself
|
variables (the $\Delta V$ terms in the figure). This technique actually lends itself
|
||||||
very well to low-thrust arcs and, in fact, Sims-Flanagan Transcribed low-thrust arcs
|
very well to low-thrust arcs and, in fact, Sims-Flanagan Transcribed low-thrust arcs
|
||||||
in particular, because there actually are control thrusts to be optimized at a
|
in particular, because there actually are control thrusts to be optimized at a
|
||||||
variety of different points along the orbit. This is, however, not an exhaustive
|
variety of different points along the orbit. This is, however, not an exhaustive
|
||||||
description of ways that multiple shooting can be used to optimize a trajectory,
|
description of ways that multiple shooting can be used to optimize a trajectory.
|
||||||
simply the most convenient for low-thrust arcs.
|
|
||||||
|
|
||||||
\section{Monotonic Basin Hopping Algorithms}
|
\section{Monotonic Basin Hopping Algorithms}
|
||||||
|
|
||||||
|
|||||||
85
Makefile
85
Makefile
@@ -1,68 +1,39 @@
|
|||||||
OPTIONS = markdown+yaml_metadata_block+smart
|
SRC_DIR = LaTeX/
|
||||||
|
THESIS_SRC_NAMES = thesis.tex thesis.bib approach.tex conclusion.tex introduction.tex \
|
||||||
NOTES = $(wildcard prelim_notes/*.md)
|
results.tex trajectory_design.tex trajectory_optimization.tex
|
||||||
NOTES_PDFS = $(patsubst %.md,%.pdf,$(NOTES))
|
THESIS_SRC = $(addprefix $(SRC_DIR)/,$(THESIS_SRC_NAMES))
|
||||||
|
THESIS_PRES_SRC_NAMES = presentation.tex
|
||||||
THESIS = LaTeX/thesis.tex
|
THESIS_PRES_SRC = $(addprefix $(SRC_DIR)/,$(THESIS_PRES_SRC_NAMES))
|
||||||
|
THESIS_PRES = presentation.pdf
|
||||||
THESIS_PDF = thesis.pdf
|
THESIS_PDF = thesis.pdf
|
||||||
|
BUILD_DIR = temp/
|
||||||
|
|
||||||
all: $(THESIS_PDF) $(NOTES_PDFS)
|
all: $(THESIS_PDF) $(THESIS_PRES)
|
||||||
|
|
||||||
$(NOTES_PDFS): $(NOTES)
|
$(BUILD_DIR):
|
||||||
pandoc \
|
mkdir -p $(BUILD_DIR)
|
||||||
--variable mainfont="Roboto" \
|
|
||||||
--variable monofont="Fira Code" \
|
|
||||||
--variable fontsize=11pt \
|
|
||||||
--variable geometry:"top=1in, bottom=1in, left=1in, right=1in" \
|
|
||||||
--variable geometry:letterpaper \
|
|
||||||
-f markdown $< \
|
|
||||||
-o $@
|
|
||||||
|
|
||||||
thesis_pdf/:
|
$(BUILD_DIR)/$(THESIS_PDF): $(BUILD_DIR) $(THESIS_SRC)
|
||||||
mkdir $@
|
xelatex --output-directory $(BUILD_DIR) $(SRC_DIR)/thesis
|
||||||
|
bibtex $(BUILD_DIR)/thesis
|
||||||
|
xelatex --output-directory $(BUILD_DIR) $(SRC_DIR)/thesis
|
||||||
|
xelatex --output-directory $(BUILD_DIR) $(SRC_DIR)/thesis
|
||||||
|
|
||||||
$(THESIS_PDF): $(THESIS) LaTeX/thesis.bib
|
$(BUILD_DIR)/$(THESIS_PRES): $(BUILD_DIR) $(THESIS_PRES_SRC)
|
||||||
mkdir -p temp
|
xelatex --output-directory $(BUILD_DIR) $(SRC_DIR)/presentation
|
||||||
cp -r LaTeX/fig .
|
|
||||||
cp -r LaTeX/flowcharts .
|
$(THESIS_PDF): $(BUILD_DIR)/$(THESIS_PDF)
|
||||||
cp -r LaTeX/thesis.tex .
|
cp $(BUILD_DIR)/thesis.pdf .
|
||||||
cp -r LaTeX/macros.tex .
|
|
||||||
cp -r LaTeX/thesis.bib .
|
$(THESIS_PRES): $(BUILD_DIR)/$(THESIS_PRES)
|
||||||
cp -r LaTeX/thesis.cls .
|
cp $(BUILD_DIR)/presentation.pdf .
|
||||||
xelatex thesis
|
|
||||||
bibtex thesis
|
|
||||||
xelatex thesis
|
|
||||||
xelatex thesis
|
|
||||||
rm -rf fig
|
|
||||||
rm -rf flowcharts
|
|
||||||
cp thesis.pdf temp/.
|
|
||||||
rm -rf macros.tex
|
|
||||||
rm -rf thesis.*
|
|
||||||
cp temp/thesis.pdf .
|
|
||||||
rm -rf temp
|
|
||||||
|
|
||||||
.PHONY: clean revise
|
.PHONY: clean revise
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(THESIS_PDF)
|
rm -rf $(THESIS_PDF)
|
||||||
rm -rf $(NOTES_PDFS)
|
rm -rf $(THESIS_PRES)
|
||||||
rm -rf thesis_pdf
|
rm -rf $(BUILD_DIR)
|
||||||
|
|
||||||
revise: $(THESIS) LaTeX/thesis.bib
|
final: $(THESIS_PDF) $(THESIS_PRES)
|
||||||
mkdir -p temp
|
rm -rf $(BUILD_DIR)
|
||||||
cp -r LaTeX/fig .
|
|
||||||
cp -r LaTeX/flowcharts .
|
|
||||||
cp -r LaTeX/thesis.tex .
|
|
||||||
cp -r LaTeX/macros.tex .
|
|
||||||
cp -r LaTeX/thesis.bib .
|
|
||||||
cp -r LaTeX/thesis.cls .
|
|
||||||
xelatex thesis
|
|
||||||
bibtex thesis
|
|
||||||
xelatex thesis
|
|
||||||
xelatex thesis
|
|
||||||
rm -rf fig
|
|
||||||
rm -rf flowcharts
|
|
||||||
cp thesis.pdf temp/.
|
|
||||||
rm -rf macros.tex
|
|
||||||
rm -rf thesis.*
|
|
||||||
cp temp/thesis.pdf .
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
./archive/EMMJS_2021-12-03T17:38:37.546/mission
|
|
||||||
./archive/EMS_2021-12-12T16:01:04.514/mission
|
|
||||||
./archive/EVMS_2021-12-14T16:31:21.927/mission
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Dr. Scheeres,
|
|
||||||
|
|
||||||
I'm currently working on finishing up my Master's Thesis. The topic will be a routine for optimizing
|
|
||||||
Interplanetary Low-Thrust Trajectories, combining approaches for flyby optimization and low-thrust
|
|
||||||
trajectory arc optimization. I think that your research interests would make you an ideal fit for a
|
|
||||||
place on my committee, so I would like to ask if you have any availability to be on my committee
|
|
||||||
this semester? Currently, I am targeting finish up sometime around March 12th, so it would probably
|
|
||||||
be a defense in late March or early April, but I have a little room for flexibility if that doesn't
|
|
||||||
work.
|
|
||||||
|
|
||||||
If you think you may be able to sit on my committee then just let me know and I can begin the
|
|
||||||
process of determining everyone's availabilities and finding the most appropriate defense date.
|
|
||||||
|
|
||||||
Thanks!
|
|
||||||
Connor Johnstone
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
# Notes on Research Papers
|
|
||||||
|
|
||||||
## Neural Networks in Time-Optimal Low-Thrust Interplanetary Transfers
|
|
||||||
|
|
||||||
- For the most part this paper isn't *that* relevant.
|
|
||||||
- It seems to be a low-fidelity method, or at least, it's fidelity is kind of hard to pin down,
|
|
||||||
since it uses a neural net.
|
|
||||||
- However, the neural net is an interesting concept.
|
|
||||||
- And in fact, this paper advocates for a concept of using the neural net as a predictor. So, say,
|
|
||||||
given a leg of a particular journey, as in the Englander paper, could I use this technique rather
|
|
||||||
than Sims-Flanagan transcription in the outer loop?
|
|
||||||
- Something to consider as an alternative to the method proposed in Englander
|
|
||||||
- Could also be used to generate initial guesses for the single-shooting methods that I'll have to
|
|
||||||
use if I use an indirect optimization method.
|
|
||||||
|
|
||||||
## Design and optimization of interplanetary low-thrust trajectory with planetary aerogravity-assist maneuver
|
|
||||||
|
|
||||||
- I didn't realize that this paper is specifically talking about *aero*gravity assists. I don't
|
|
||||||
think that level of complication is necessary for this paper. I'm going to stick with gravity
|
|
||||||
assists that don't get into atmospheric effects.
|
|
||||||
|
|
||||||
## Orbital and Angular Motion Construction for Low Thrust Interplanetary Flight
|
|
||||||
|
|
||||||
- This one actually isn't even about optimization. Not relevant
|
|
||||||
- To be honest, I don't actually understand it very well anyway
|
|
||||||
|
|
||||||
## A Rapid Estimation for Interplanetary Low-Thrust Trajectories Using Support Vector Regression
|
|
||||||
|
|
||||||
- This is another machine-learning approach
|
|
||||||
- It uses a different approach that I'm not that familiar with (Support Vector Regression)
|
|
||||||
- It looks like this is a form of regression similar to linear regression, I suppose being used
|
|
||||||
by the machine learning algorithm for predicting optimal trajectories
|
|
||||||
- However, it seems like everything that applies in the neural net paper probably apply here as well
|
|
||||||
- This could be an alternative for predicting optimal trajectories over certain legs of the journey
|
|
||||||
|
|
||||||
## Automated Solution of the Low-Thrust Interplanetary Trajectory Problem
|
|
||||||
|
|
||||||
- This is the Englander paper I mentioned earlier. It seems highly relevant as they're essentially
|
|
||||||
doing what I'd like to do: producing an automated method for high-level interplanetary low-thrust
|
|
||||||
mission design including the flybys.
|
|
||||||
- I need to look up MALTO and GALLOP (established tools that do this)
|
|
||||||
- This paper also open sources it's code: available [here](https://opensource.gsfc.nasa.gov/projects/emtg/index.php)
|
|
||||||
- This paper formulates the problem as a *Hybrid Optimal Control Problem*. This requires some
|
|
||||||
further research by me, but from the paper it seems to be a way of optimizing two seperables
|
|
||||||
subproblems where one of the subproblems exists as a sub-loop of the other problem (for instance
|
|
||||||
optimizing flybys in a high-level loop and particular planet-to-planet trajectories as a sub-loop of
|
|
||||||
that problem). This apparently works because the "outer-loop" uses discrete variables while the
|
|
||||||
"inner-loop" uses continuous variables.
|
|
||||||
- The outer loop is based on the "null-gene" transciption from another Englander paper and uses a
|
|
||||||
genetic algorithm.
|
|
||||||
- I'm not going to go too deep here into the details of the GA. But there's an entire paper on
|
|
||||||
it
|
|
||||||
- The paper does mention that it lends itself well to parallelization, which is true. Kubernetes
|
|
||||||
cluster?
|
|
||||||
- The inner loop uses Sim-Flanagan transcription combined with Monotonic Basin Hopping, a method for
|
|
||||||
single-shooting without initial guesses
|
|
||||||
- Sims-Flanagan transcription is where you discretize the flight arc into many smaller time
|
|
||||||
steps and the thrust applied is approximated as an impulsive thrust in the middle of each time
|
|
||||||
step.
|
|
||||||
- SFT is considered to be a "medium-fidelity" approach
|
|
||||||
- For this solver, the trajectory betweens these points is produced as a solution to Kepler's
|
|
||||||
problem, which is basically just the analytical solution to the 2BP, so that no derivatives or
|
|
||||||
orbit-propagation is needed, for speed.
|
|
||||||
- One thing I noted about this approach is that it doesn't seem to include a possibility for
|
|
||||||
"coasting arcs" or throttling anything less than 100% (though the modeling of what 100% means is
|
|
||||||
quite thorough), so perhaps we're missing some fidelity there?
|
|
||||||
- I think SNOPT is used to optimize these "inner-loops". This should be pretty fast since it
|
|
||||||
just uses Kepler's eq
|
|
||||||
- The MBH method eliminates the need to solve Lambert's problem for initial guesses. This allows
|
|
||||||
for a more robust analysis of the search base (if there are global optima further from the local
|
|
||||||
optima near lambert's solution) but might be slower? I'm not sure.
|
|
||||||
- The technique is kind of weird, but I suppose it works.
|
|
||||||
- This paper uses a hierarchy of events starting with the overall *mission*, which separates into
|
|
||||||
*journies*, which, in the example I'm pursuing will be Earth -> Neptune and Neptune -> Earth (if
|
|
||||||
applicable, but probably just the first one). Then these journies are further divided into
|
|
||||||
*phases*, which include each planet -> planet leg. The number of phases and the identities of the
|
|
||||||
planets are chosen by the algorithm.
|
|
||||||
- The paper goes into some length to determine what the launch C3, propulsion, power, and ephemeris
|
|
||||||
modeling are. This is all very useful, but as far as I can tell it's pretty typical, so I won't note
|
|
||||||
too much about it.
|
|
||||||
- However, it does mention that SPICE presented some challenges for using a preferable method of
|
|
||||||
parallelization. As an alternative, the paper mentions that FIRE could be used instead for
|
|
||||||
ephemeris. Which might be worth looking into.
|
|
||||||
- The paper also include pseudocode, which is nice
|
|
||||||
|
|
||||||
## Automated Mission Planning via Evolutionary Algorithms
|
|
||||||
|
|
||||||
- This is another Englander paper that gives more details on the outer-loop GA. Useful for details.
|
|
||||||
|
|
||||||
## Multi-Objective Low-Thrust Interplanetary Trajectory Optimization Based on Generalized Logarithmic Spirals
|
|
||||||
|
|
||||||
- This is the first paper I looked at. It's actually quite similar to the Englander paper, but I
|
|
||||||
think not quite as good
|
|
||||||
- Again, it formulates the problem as an HOCP.
|
|
||||||
- However, the "inner-loop" for this problem is an optimization of generalized logarithmic spirals.
|
|
||||||
I don't think this is a very high fidelity method.
|
|
||||||
- The outer step uses collocation and an NLP optimizer (looks like it actually might just feed the
|
|
||||||
guesses into GALLOP, which I assume uses SNOPT, though, to be honest, I can't find much on it from
|
|
||||||
a quick search)
|
|
||||||
- I'm leaning toward Englander's approach over this one, perhaps with an alternative being to use
|
|
||||||
one of the machine-learning approaches from above for the inner loop instead
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
# Plan After Literature Review
|
|
||||||
|
|
||||||
After reading the papers in the Google Drive (see `paper_notes.md`) I've come up with the following
|
|
||||||
plan:
|
|
||||||
|
|
||||||
I think that I'd like to follow an approach similar to what I saw in Englander and Morante. However,
|
|
||||||
I think it makes more sense to follow the Englander approach for the specific optimizers being used
|
|
||||||
in the inner and outer loops. Specifically this means:
|
|
||||||
|
|
||||||
- Set up the problem as a Hybrid Optimal Control Problem (HOCP) with an inner and an outer loop
|
|
||||||
- The outer loop will determine the number and identities of the flybys and optimize using a Binary
|
|
||||||
Genetic Algorithm described by Englander
|
|
||||||
- The inner loop in Englander uses Sims-Flanagan Transcription optimized using monotonic basin
|
|
||||||
hopping. This seems like a good approach. I'd like to use this approach, but also consider using,
|
|
||||||
as an alternative method for comparison, one of the machine-learning algorithms from the other
|
|
||||||
papers.
|
|
||||||
- There are a number of other details including modeling launch C3, power, thrust, and ephemeris.
|
|
||||||
For all of these I'll use either the exact approach from Englander or a similar approach. There
|
|
||||||
exists an option to use alternatives to SPICE for ephemeris, but I think the parallelization
|
|
||||||
problems that SPICE poses can be solved in other ways.
|
|
||||||
- Specifically, I'd like to build this program using a micro-service architecture. This could
|
|
||||||
allow for deployment using Kubernetes clusters. This will handle the parallelization (by
|
|
||||||
running multiple inner loop micro-services at once) and allow for simpler use in production
|
|
||||||
environments if that's ever needed, as kubernetes has a robust integration with most
|
|
||||||
web-hosting services. This also allows for flexible scalability if improved speed is ever
|
|
||||||
needed.
|
|
||||||
|
|
||||||
## Open Questions
|
|
||||||
|
|
||||||
- Are there other inner and outer loop optimization approaches I should consider?
|
|
||||||
- I didn't see a ton of information regarding the specific parameters of the orbital flybys outside
|
|
||||||
of the number and the identities of the planets. I need to figure out whether Englander approaches
|
|
||||||
that optimization in the inner or the outer loop
|
|
||||||
- I would like to use a fast language for this, and ideally one that I could benefit from learning
|
|
||||||
about (by this I mean, preferably not C++, as I've used that before -- though it does integrate
|
|
||||||
well with tools like SPICE, so it is a good option). Preferably Rust, as it has the fastest server
|
|
||||||
libraries, which I don't expect to have a huge overhead, but is something to consider.
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
# Technical Plan
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- Each of these steps will be completed first in Julia, as I can use that to get
|
|
||||||
to a working point really quickly. Then, I'll redo the efforts in Rust inside
|
|
||||||
of docker containers, providing increased robustness and speed. I'll provide
|
|
||||||
expected time for completion after each item in the form (x/y) where x is the
|
|
||||||
number of hours I expect to take to write the Julia code and y is the number
|
|
||||||
of hours I expect to take to write the Rust code.
|
|
||||||
|
|
||||||
## Stages of Development
|
|
||||||
|
|
||||||
1. First I need to set up the inner loop. The inner loop is a Sims-Flanagan transcription
|
|
||||||
single-shooting algorithm, optimized using monotonic basin-hopping.
|
|
||||||
a. I've constructed single-shooting algorithms before, and the Sims-Flanagan
|
|
||||||
transcription is just a really simple notation for approximating low-thrust
|
|
||||||
arcs. So first I'll need to set up a very simple Sims-Flanagan single
|
|
||||||
shooter. I don't expect this to take long. I will write a simple
|
|
||||||
single-shooting algorithm that takes in a start and end state (for now... in
|
|
||||||
stage 2b below I'll update this to only need the J200 time (for ephemeris
|
|
||||||
lookup) and the velocity) and solves Kepler's equation to satisfy the
|
|
||||||
continuity condition. For the rust code, this will require some considerable
|
|
||||||
initial setup of the docker containers and such, though. (6/20)
|
|
||||||
b. Next I'll need to set up the monotonic basin-hopping algorithm. I've
|
|
||||||
written similar optimization algorithms in my spacecraft trajectory
|
|
||||||
optimization course, but none that use basin-hopping. However, it's more
|
|
||||||
or less just a genetic algorithm, so it should be simple to set up in a
|
|
||||||
very general way. The function I'm optimizing can be seen as a system of
|
|
||||||
inputs (initial and final states) and outputs (mass used, or some other
|
|
||||||
more complicated measure of optimality), so I can follow many very
|
|
||||||
descriptive accounts online of this type of genetic algorithm. (12/18)
|
|
||||||
2. Then I'll need to set up the outer loop. This will require optimizing over
|
|
||||||
inputs (selection of flybys) by calling the inner loop to optimize each leg
|
|
||||||
and summing these by way of some cost function. These flyby selections will
|
|
||||||
be optimized using the genetic algorithm described in the first Englander
|
|
||||||
paper.
|
|
||||||
a. First I'll set up a very simple version of the outer loop, that
|
|
||||||
doesn't optimize anything. It will take in a selection of flybys and
|
|
||||||
simply call the inner loop for each of the flybys, outputting some cost
|
|
||||||
function. This shouldn't take long, but at this point I'm adding time
|
|
||||||
because the inner loop may take some time to call (8/12).
|
|
||||||
b. There are also some other inputs to this algorithm, that won't change from
|
|
||||||
problem to problem, but will take some effort to calculate. These include
|
|
||||||
initial launch C3, ephemeris, problem constraints, etc. SPICE and basic
|
|
||||||
modeling can be used for most of this, but I should include some time for
|
|
||||||
incorporating SPICE via C-bindings, which should be relatively easy in
|
|
||||||
both Julia and Rust (in fact, a wrapper exists at least in Julia
|
|
||||||
already). As a less high fidelity backup, I've also modeled ephemeris by
|
|
||||||
polynomials before, so I can do that again, if I find incorporating SPICE
|
|
||||||
is taking too long (16/16)
|
|
||||||
c. Next, I'll write the genetic algorithm in a very general way, as before.
|
|
||||||
This is a different GA (a Binary Genetic Algorithm, suited for discrete
|
|
||||||
problems), but the algorithm is described in-depth in the first Englander
|
|
||||||
paper and I also can refer to the source code from the second Englander
|
|
||||||
paper. In the first paper, he mentions that he used Matlab's
|
|
||||||
implementation. It seems Julia also has an implementation, so this should
|
|
||||||
be simple in Julia, but I will include significant extra time in Rust, in
|
|
||||||
case that is more difficult (6/32)
|
|
||||||
d. From there, calling my outer-loop implementation from the GA should be
|
|
||||||
simple. However, I will include extra time for the rust implementation,
|
|
||||||
because I will also have to consider spinning up extra kubernetes
|
|
||||||
instances for each inner and outer loop. (6/32)
|
|
||||||
3. From here, the work is more or less done. There will be some finalizing to
|
|
||||||
do, including setting up the Kubernetes cluster for the Rust implementation.
|
|
||||||
I've not set up a Kubernetes cluster before, but I have set up docker-compose
|
|
||||||
setups for Rust code, so I would anticipate an extra 10 hours being needed
|
|
||||||
for transitioning that. I will also have to provide a sort of wrapper
|
|
||||||
function that parses the inputs and spins up/calls each lower loop of this
|
|
||||||
optimizer. That should be really simple, but I'm including some slop time in
|
|
||||||
this category to account for administrative issues, particularly in setting
|
|
||||||
up the deployment of the cluster (12/32)
|
|
||||||
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
So, in total, that comes out to 66 hours of coding for the initial Julia implementation and then another 162 hours for the re-implementation in Rust using docker + kubernetes and the deployment of the cluster. At a rate of 20 hours/week, which seems reasonable, as I will have my job to account for, but I am finished with classes, that comes out to roughly 3.5 weeks to finish the first implementation and then 8 weeks to finalize. I think, if anything, that's very conservative, particularly on the Rust side, as I've got a decent amount of experience in web-based deployment, so I shouldn't have as much trouble with Kubernetes and Docker as I've outlined. But it's also worth noting that the Julia implementation is probably perfectly proficient for a Master's Thesis. If the Rust work is too much, then I can write the thesis on the Julia implementation.
|
|
||||||
17
readme.md
17
readme.md
@@ -2,10 +2,7 @@
|
|||||||
|
|
||||||
This will be a repository for my code while I work on my thesis. The general idea is to generate a
|
This will be a repository for my code while I work on my thesis. The general idea is to generate a
|
||||||
method for automatically producing optimal low-thrust trajectories (including optimizations of the
|
method for automatically producing optimal low-thrust trajectories (including optimizations of the
|
||||||
planetary flybys) for a sample mission to Neptune.
|
planetary flybys) for a sample mission to Saturn.
|
||||||
|
|
||||||
For now, it will just be a location for storing my notes as I come up with a plan. I will update
|
|
||||||
this readme as I flush out the plan a little better and then as I begin producing code.
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
@@ -34,8 +31,14 @@ Pkg.build()
|
|||||||
|
|
||||||
To produce the pdfs, simply run:
|
To produce the pdfs, simply run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
### Julia Code
|
|
||||||
|
|
||||||
|
They will go in the build directory
|
||||||
|
|
||||||
|
To produce final pdfs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make final
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user