Files
thesis/LaTeX/trajectory_design.tex
2022-03-19 13:39:02 -06:00

753 lines
41 KiB
TeX

\chapter{Interplanetary Trajectory Design} \label{traj_dyn}
In order to optimize trajectories in interplanetary space, it is necessary to understand and
utilize the dynamical systems that will be acting on the spacecraft throughout the trajectory.
This section will explore the models available for understanding the natural motion of a
spacecraft in interplanetary space, beginning with the Two Body Problem and a method of patched
conics for combining the gravitational effects of multiple primary bodies.
\section{System Dynamics}
\subsection{The Two-Body Problem}
The motion of a spacecraft in space is governed by a complex dynamical environment.
However, in the process of designing a trajectory, we often have to compute the
path of the spacecraft many hundreds, thousands, or even millions of times. Utilizing
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
particular application. Initial surveys of the solution space often don't require such
complex models in order to gain valuable preliminary insight.
A common approach (and the one utilized in this implementation) is to first use a
lower-fidelity dynamical model that captures only the gravitational force due to the
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
algorithm for quickly categorizing a search space for initial mission feasibility
explorations.
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
are only concerned with the gravitational influence between the nominative two bodies:
the spacecraft and the planetary body around which it is orbiting. Secondly, both of
these bodies are modeled as point masses with constant mass. This removes the need to
account for non-uniform densities and asymmetry. Finally, for convenience in notation at
the end, we'll also assume that the mass of the spacecraft ($m_2$) is much much smaller
than the mass of the planetary body ($m_1$) and enough so as to be considered
negligible.
\begin{figure}[H]
\centering
\includegraphics[width=0.65\textwidth]{LaTeX/fig/2bp}
\caption{Figure representing the positions of the bodies relative to each other and
the center of mass in the two body problem}
\label{2bp_fig}
\end{figure}
Under these assumptions, the force acting on the body due to the law of universal
gravitation is:
\begin{align}
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|}
\end{align}
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$:
\begin{align}
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|}
\end{align}
Where $\vec{r}$ is the position of the spacecraft relative to the primary body,
$\vec{r}_1$ is the position of the primary body relative to the origin of the inertial
frame, and $\vec{r}_2$ is the position of the spacecraft relative to the center 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
then determine the acceleration of the spacecraft relative to the planet:
\begin{equation}
\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|}
\end{equation}
Further assuming that the mass of the spacecraft is significantly smaller than the mass
of the primary body ($m_1 >> m_2$) we can simplify the problem by removing the
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 = G (m_1 + m_2) \approx G m_1$). Doing so and simplifying produces:
\begin{equation}
\ddot{\vec{r}} = - \frac{\mu}{r^2} \hat{r}
\end{equation}
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
\cite{vallado2001fundamentals}:
\begin{equation} \label{energy}
\xi = \frac{v^2}{2} - \frac{\mu}{r}
\end{equation}
Where the first term represents the kinetic energy of the spacecraft and the second term
represents the gravitational potential energy.
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,
firstly, that the spacecraft's position and velocity (given an initial position and velocity
and of course the $\mu$ value of the primary body) is actually analytically solvable for all
future points in time. This can be easily observed by noting that there are three
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).
\subsection{Kepler's Laws}
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}:
\begin{enumerate}
\item Each planet's orbit is an ellipse with the Sun at one of the foci. This can be
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''.
The conic trajectory equation explains this observation and offers a description
of the path as:
\begin{equation}
r = \frac{\sfrac{h^2}{\mu}}{1 + e \cos(\theta)}
\end{equation}
where $h$ is the angular momentum of the satellite, $e$ is the
eccentricity of the orbit, and $\theta$ is the true anomaly, or simply
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
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
value to be a constant:
\begin{equation}\label{swept}
\frac{\Delta t}{T} = \frac{k}{\pi a b}
\end{equation}
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
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
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}
T = 2 \pi \sqrt{\frac{a^3}{\mu}}
\end{equation}
where $T$ is the period and $a$ is the semi-major axis.
\end{enumerate}
\subsection{Kepler's Equation}
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
the elliptical case\cite{vallado2001fundamentals}. Because the total area of an ellipse
is the product of $\pi$, the semi-major axis, and the semi-minor axis ($\pi a b$), we
can relate (by Kepler's second law) the area swept out by an orbit as a function of
time, as we did in Equation~\ref{swept}. This leaves just one unknown variable $k$,
which we can determine through use of the geometric auxiliary circle, which is a circle
with radius equal to the ellipse's semi-major axis and center directly between the two
foci, as in Figure~\ref{aux_circ}.
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{LaTeX/fig/kepler}
\caption{Geometric representation of auxiliary circle}\label{aux_circ}
\end{figure}
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
elliptical segment $PCB$:
\begin{equation}\label{areas_eq}
k = area(seg_{PCB}) - area(k_1)
\end{equation}
Where the area of the triangle $k_1$ can be found easily using geometric formulae:
\begin{align}
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)
\end{align}
\noindent
Where $E$, notably, is the eccentric anomaly, or the angular distance from the
periapsis to the vertical projection of the spacecraft on the auxiliary circle. Now we
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
merely a vertical scaling of a circle by the amount $\frac{b}{a}$.
\begin{align}
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)
\left( a \sin E \right) \right) \\
&= \frac{abE}{2} - \frac{ab}{2} \left( \cos E \sin E \right) \\
&= \frac{ab}{2} \left( E - \cos E \sin E \right)
\end{align}
By substituting the two areas back into Equation~\ref{areas_eq} we can get the $k$ area
swept out by the spacecraft:
\begin{equation}
k = \frac{ab}{2} \left( E - e \sin E \right)
\end{equation}
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:
\begin{equation}
\frac{\Delta t}{T} = \frac{t_2 - t_{peri}}{T} = \frac{E - e \sin E}{2 \pi}
\end{equation}
Which is, effectively, Kepler's equation. It is commonly known by a different form:
\begin{equation}
M = \sqrt{\frac{\mu}{a^3}} \Delta t = E - e \sin E
\end{equation}
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
($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
spacecraft.
\subsection{LaGuerre-Conway Algorithm}\label{laguerre}
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 Kepler's
equation by Bruce Conway in 1985\cite{laguerre_conway}. In his paper, Conway makes a
compelling argument for utilizing the less common LaGuerre method over higher order Newton
or Newton-Raphson methods. The Newton-Raphson methods, while found to generally have quite
impressive convergence rates (generally successfully solving Kepler's equation correctly
within 5 iterations), were prone to failures in convergence given certain specific initial
conditions. Therefore LaGuerre's algorithm is proposed as an alternative.
The algorithm can be derived by examining the polynomial equation with $m$ roots:
\begin{equation}
g(x) = (x - x_1) (x - x_2) ... ( x - x_m)
\end{equation}
We can then generate some useful convenience functions as:
\begin{align}
\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 -
x_m} = G_1(x)
\end{align}
and
\begin{align}
\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)
\end{align}
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:
\begin{equation}
x - x_i = b, i=2,3,...,m
\end{equation}
We can then rewrite $G_1$ and $G_2$ as:
\begin{align}
G_1 &= \frac{1}{a} + \frac{n-1}{b} \\
G_2 &= \frac{1}{a^2} + \frac{n-1}{b^2}
\end{align}
Which may be solved for $a$ in terms of $G_1$, $G_2$:
\begin{equation}
a = \frac{n}{G_1 \pm \sqrt{(n-1)(nG_2 - G_1^2)}}
\end{equation}
With corresponding iteration function:
\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)
f''(x_i)}}
\end{equation}
This iteration scheme can be shown to be globally convergent, regardless of the initial
guess. Conway also showed that the application of this method to Kepler's equation was shown
to converge with similar speed to many of the best common higher order Newton-Raphson
solvers. However, LaGuerre's method was also found to be incredibly robust, converging to
the correct value for every one of Conway's 500,000 tests. Because of this robustness, it is
useful for solving Kepler's equation.
\section{Interplanetary Trajectories}\label{interplanetary}
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
points along the trajectory, there may not be a ``primary'' body, but instead a number of
different forces of roughly equal magnitude vying for ``primary'' status.
In the ideal case, every relevant body would be considered as an ``n-body'' perturbation
during the entire trajectory. For some approaches, this method is sufficient and preferred.
However, for most uses, a more efficient model is necessary. The method of patched conics
can be applied in this case to simplify the model.
Interplanetary travel does not merely complicate trajectory optimization. The increased
complexity of the search space also opens up new opportunities for mission designers. The
primary strategy investigated by this thesis will be the gravity assist, a technique for
utilizing the gravitational energy of a planet to modify the direction of solar velocity.
Finally, the concept of multiple gravity assists and the techniques used to visualize the
space in which we might accomplish stringing together multiple flybys will be analyzed. A
number of tools have been developed to assist mission designers in manually visualizing the
search space, but some of these tools can also be leveraged by the automated optimization
algorithm.
\subsection{Patched Conics}
The first hurdle to deal with in interplanetary space is the problem of reconciling
Two-Body dynamics with the presence of multiple and varying planetary bodies. The most
common method for approaching this is the method of patched conics
\cite{bate2020fundamentals}. In this model, we break the interplanetary trajectory up
into a series of smaller sub-trajectories. During each of these sub-trajectories, a
single primary is considered to be responsible for the trajectory of the orbit, via the
Two-Body problem.
The transition point can be calculated a variety of ways. The most typical method is to
calculate the gravitational force due to the two bodies separately, via the Two-Body
models. Whichever primary is a larger influence on the motion of the spacecraft is
considered to be the primary at that moment. In other words, the spacecraft, at that
epoch, is within the Sphere of Influence of that primary. Generally for missions in this
Solar System, the spacecraft is either within the Sphere of Influence of a planetary
body or the Sun. However, there are points in the Solar System where the gravitational
influence of two planetary bodies are roughly equivalent to each other and to the
influence of the Sun.
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{LaTeX/fig/patched_conics}
\caption{Patched Conics Example Figure}
\label{patched_conics_fig}
\end{figure}
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
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
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
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}:
\begin{equation}
\vec{v}_{sc/p} = \vec{v}_{sc/sun} - \vec{v}_{planet/sun}
\end{equation}
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
to the planet. Since this never occurs, a further approximation is made that the
velocity of the spacecraft (relative to the planet) as it crosses the SOI can be modeled
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
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
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
determine the specific mechanical energy of the hyperbola at infinite distance by using
Equation~\ref{energy}:
\begin{equation}
\xi = \frac{v^2}{2} - \frac{\mu}{r} = \frac{v_\infty^2}{2}
\end{equation}
We can then leverage the conservation of energy to determine the velocity at a
particular point, $r_{ins}$:
\begin{align}
\xi_{ins} &= \frac{v_{ins}^2}{2} - \frac{\mu}{r_{ins}} \\
\xi_{ins} &= \xi_\infty = \frac{v_\infty^2}{2} \\
v_{ins} &= \sqrt{\frac{2\mu}{r_{ins}} + v_\infty^2}
\end{align}
\subsection{Launch Considerations}
For a satellite of given size, a certain amount of orbital energy can be imparted to the
satellite by the launch vehicle. In practice, this value, for a particular mission, is
actually determined as a parameter of the mission trajectory to be optimized. The excess
velocity at infinity of the hyperbolic orbit of the spacecraft that leaves the Earth can
be used to derive the launch energy. This is usually qualified as the quantity $C_3$,
which is actually double the kinetic orbital energy with respect to the Sun, or simply
the square of the excess hyperbolic velocity at infinity\cite{wie1998space}.
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
$v_\infty$ will be used as a tunable parameter in the optimization routine. This allows
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
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$
to.
A similar approach is taken at the end of the trajectory. This algorithm doesn't attempt
to exactly match the velocity of the planet. Instead, the excess hyperbolic velocity is
also treated as a parameter that can be minimized by the cost function. If a trajectory
is to then end in insertion, a portion of the mass budget can then be used for an
impulsive thrust engine, which can provide a final insertion burn. This approach also
allows flexibility for missions that might end in a flyby rather than insertion.
\subsection{Gravity Assist Maneuvers}
As previously mentioned, there are methods for utilizing the orbital energy of the other
planets in the Solar System. This is achieved via a technique known as a Gravity Assist,
or a Gravity Flyby. During a gravity assist, the spacecraft enters into the
gravitational sphere of influence of the planet and, because of its excess velocity,
proceeds to exit the sphere of influence. Relative to the planet, the speed of the
spacecraft increases as it approaches, then decreases as it departs. From the
perspective of the planet, the velocity of the spacecraft is unchanged. However, the
planet is also orbiting the Sun.
From the perspective of a Sun-centered frame, though, this is effectively an elastic
collision. The overall momentum remains the same, with the spacecraft either gaining or
losing some in the process (dependent on the directions of travel). The planet also
loses or gains momentum enough to maintain the overall system momentum, but this amount
is negligible compared to the total momentum of the planet. The overall effect is that
the spacecraft arrives at the planet from one direction and, because of the influence of
the planet, leaves in a different direction\cite{negri2020historical}.
This can be visualized in Figure~\ref{grav_assist_fig}, which shows the bend in the
spacecraft's velocity due to the hyperbolic arc as it passes the planet. This turns the
direction of the spacecraft's velocity relative to the planet, which has an overall
effect on kinetic energy that can be seen by adding the two vectors to the velocity of
the planet relative to the sun. By passing in front of the planet or behind it (relative
to its velocity), energy can be removed or added to the spacecraft by the maneuver.
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{LaTeX/fig/flyby}
\caption{Velocity changes during a gravity assist}
\label{grav_assist_fig}
\end{figure}
This effect can be used strategically. The ``bend'' due to the flyby is actually
tunable via the exact placement of the fly-by in the b-frame, or the frame centered at
the planet, from the perspective of the spacecraft at $v_\infty$. By modifying the
turning angle of this bend. In doing so, one can effectively achieve a (restricted) free
impulsive thrust event.
\subsection{Flyby Periapsis Altitude}
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
mathematically the effect that a gravity flyby can have on the velocity of a spacecraft
as it orbits the Sun. Specifically, we can determine the turning angle of the bend
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
velocity as the spacecraft leaves the sphere of influence ($\vec{v}_{\infty, out}$):
\begin{equation}\label{turning_angle_eq}
\delta = \arccos \left( \frac{\vec{v}_{\infty,in} \cdot
\vec{v}_{\infty,out}}{|\vec{v}_{\infty,in}| |\vec{v}_{\infty,out}|} \right)
\end{equation}
From this turning angle, we can also determine, importantly, the periapsis of the flyby
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
given flyby, since the periapsis:
\begin{equation}\label{periapsis_eq}
r_p = \frac{\mu}{v_\infty^2} \left[ \frac{1}{\sin\left(\frac{\delta}{2}\right)} - 1 \right]
\end{equation}
cannot be lower than some safe value that accounts for the radius of the planet and
perhaps its atmosphere if applicable.
\subsection{Multiple Gravity Assist Techniques}
Now that we can leverage gravity flybys for their change in velocity direction, the
final remaining question is that of stringing together flybys. How, for instance, do we
know which planets can provide feasible flyby opportunities given a known hyperbolic
energy leaving the previous planet?
\subsubsection{Lambert's Problem}
The answer comes from the application of the solution to the problem, posed by
Johann Lambert in the 18th century\cite{blanchard1969unified}, of how to determine,
given an initial position, a final position (the ephemeris of the two planets), and
a time of flight between the two positions, what velocity was necessary to connect
the two states.
There are many algorithms developed to solve Lambert's problem, but the universal
variable method is used here for its robustness in finding trajectories regardless
of geometry. This method is concerned with the determination of the variables $y$
and $A$ by a method of iterating $\psi$, which represent the square root of the
distance traveled between the two points. These variables can then be used to build
$f$ and $g$ functions, which can completely constrain the initial and final states.
This problem can be solved by any root-finding method, with bisection being used
here for its robustness given any initial guess \cite{battin1984elegant}.
Firstly, some geometric considerations must be accounted for. For any initial
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
with paths that traverse less than one full orbit. Therefore, there are
actually then two trajectories that can connect the points
\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
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
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]
\centering
\includegraphics[width=0.8\textwidth]{LaTeX/fig/lamberts}
\caption{Visualization of the possible solutions to Lambert's Problem}
\label{type1type2}
\end{figure}
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
by:
\begin{align}
\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)
\end{align}
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
efficient. Next, the variable $A$ is defined:
\begin{equation}
A = DM \sqrt{|r_1| |r_2| (1 - \cos(\Delta \theta))}
\end{equation}
A is independent of $\psi$, and therefore won't need updating as the iteration
proceeds. Then $\psi$ is initialized to any number within its bounds
($[-4\pi,4\pi^2]$), arbitrarily set to 0, representing a parabolic arc as a starting
point.
From here, the iteration loop can begin. Specifically, time of flight is calculated
at each step and compared to the expected value. The iteration proceeds until the
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
coefficients:
\begin{equation}\label{loop_start}
c_2 = \begin{cases}
\frac{1-\cos(\sqrt{\psi})}{\psi} \quad &\text{if} \, \psi > 10^{-6} \\
\frac{1-\cosh(\sqrt{-\psi})}{\psi} \quad &\text{if} \, \psi < -10^{-6} \\
1/2 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
\end{cases}
\end{equation}
\begin{equation}
c_3 = \begin{cases}
\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} \\
1/6 \quad &\text{if} \, 10^{-6} > \psi > -10^{-6}
\end{cases}
\end{equation}
Where the conditions of this piecewise function represent the elliptical,
hyperbolic, and parabolic cases, respectively. Once we have these, we can calculate
another variable, $y$:
\begin{equation}
y = |r_1| + |r_2| + \frac{A (c_3 \psi - 1)}{\sqrt{c_2}}
\end{equation}
We can then finally calculate the variable $\chi$, and from that, the time of
flight:
\begin{equation}
\chi = \sqrt{\frac{y}{c_2}}
\end{equation}
\begin{equation}
\Delta t = \frac{c_3 \chi^3 + A \sqrt{y}}{\sqrt{c_2}}
\end{equation}
Based on the value of this time of flight and how it compares to the expected value,
the bounds on $\psi$ are adjusted, a new $\psi$ is calculated at the midpoint
between the bounds, and the iteration begins again at Equation~\ref{loop_start}. If
the time of flight is sufficiently close to the expected value, the algorithm is
allowed to complete.
The resulting $f$ and $g$ functions (and the derivative of $g$, $\dot{g}$) can then
be calculated:
\begin{align}
f &= 1 - \frac{y}{|r_1|} \\
g &= A \sqrt{\frac{y}{\mu}} \\
\dot{g} &= 1 - \frac{y}{|r_2|}
\end{align}
And from these, we can calculate the velocities of the transfer points as:
\begin{align}
\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}
\end{align}
Fully describing the connecting path with the specified flight time.
\subsubsection{Planetary Ephemeris}
Applying Lambert's problem to interplanetary travel requires knowing the positions
of the planets in the inertial reference frame at a specific epoch. Fortunately,
many packages have been developed for this purpose. The most commonly used for this
is the SPICE package, developed by NASA in the 1980's. This software package, which
has ports that are widely available in a number of languages, including Julia,
contains many useful functions for astrodynamics.
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
International Celestial Reference Frame could be easily determined for a given
epoch, provided as a decimal Julian Day since the J2000 epoch.
\subsubsection{Porkchop Plots}
Armed with a routine for quickly determining the outgoing velocity necessary to
reach a planet at a given time, as well as the ephemeris of the planets in question
at any given time, one can produce a grid of departure and arrival times between two
planetary encounters. Within this grid, one can then plot a variety of useful
values.
The solution to Lambert's equation provides both the velocity vectors at departure
and the velocity vectors at arrival. Often, these will be overlayed on the gridded
time plots, as normalized values, or sometimes converted to characteristic energy
$C_3$. This ``porkchop plot'' allows for a quick and concise view of what orbital
energies are required to reach a planet at a given time from a given location, as
well as an idea of what outgoing velocities one can expect.
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
fact that incoming and outgoing $v_\infty$ magnitudes must be the same for a flyby,
a mission designer can even begin to work out what combinations of flybys might be
possible for a given timeline, spacecraft state, and planet selection.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{LaTeX/fig/porkchop}
\caption{A sample porkchop plot of an Earth-Mars transfer}
\label{porkchop}
\end{figure}
\section{Modeling Low Thrust Control} \label{low_thrust}
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
the difference between a direct and indirect optimization of a low-thrust trajectory as well
as introduce the concept of a control law and the notation used in this thesis for modelling
low-thrust trajectories more simply.
\subsection{Engine Model}
The primary advantage of continuous thrust methods over their impulsive counterparts is
in their fuel-efficiency in generating changes in velocity. Put specifically, all
thrusters are capable of translating a mass flow (the rate of mass ejection from the
thruster during operation) to a thrust imparted to the craft. Low thrust techniques
suffer from limitations in the amount of thrust they can produce, but benefit from high
efficiency by means of achieving that thrust by means of very low mass ejection rates.
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
thrust equation\cite{sutton2016rocket}:
\begin{equation}
F = \dot{m} v_e + \Delta p A_e
\end{equation}
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,
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:
\begin{align}
v_{eq} &= v_e + \frac{\Delta p A_e}{\dot{m}} \\
F &= \dot{m} v_{eq} \label{isp_1}
\end{align}
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:
\begin{align}
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}
\end{align}
Plugging Equation~\ref{isp_1} into the previous equation we can derive the following
formula for $I_{sp}$:
\begin{equation} \label{isp_real}
I_{sp} = \frac{F}{\dot{m} g_0}
\end{equation}
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.
\subsection{Sims-Flanagan Transcription}
In this thesis the following approach is used for modeling low-thrust paths: the
Sims-Flanagan transcription (SFT)\cite{sims1999preliminary}. The SFT allows for
flexibility in the trade-off between fidelity and performance, which makes it very
useful for this sort of preliminary analysis.
First the continuous arc is subdivided into a number ($N$) of individual consistent
timesteps of length $\frac{tof}{N}$ where the $tof$ represents the total length of time
for that particular mission phase. The control thrust is then applied as an impulsive
maneuver at the center of each of these time steps. This approach can be seen visualized
in Figure~\ref{sft_fig}.
\begin{figure}[H]
\centering
\includegraphics[width=0.6\textwidth]{LaTeX/fig/sft}
\caption{Example of an orbit raising using the Sims-Flanagan Transcription with 7
Sub-Trajectories}
\label{sft_fig}
\end{figure}
Using the SFT, it is relatively straightforward to propagate a state (in the context of
the Two-Body Problem) that utilizes a continuous low-thrust control, without the need
for computationally expensive numerical integration algorithms, by simply solving
Kepler's equation (using the LaGuerre-Conway algorithm introduced in
Section~\ref{laguerre}) $N+1$ times. First, the state is propagated to the middle of the
first arc. Then a discontinuity is allowed in the velocity at that point and the state
is propagated again to the middle of the next arc. That process is repeated $N-1$ times,
and then finally, the last half-arc is propagated after applying the final velocity
change.
This greatly reduces the computation complexity, which is particularly useful for cases
in which low-thrust trajectories need to be calculated many millions of times, as is the
case in this thesis. The fidelity of the model can also be easily fine-tuned. By simply
increasing the number of sub-arcs, one can rapidly approach a fidelity equal to a
continuous low-thrust trajectory within the Two-Body Problem, with only
linearly-increasing computation time\cite{sims1999preliminary}.
\subsection{Low-Thrust Control Vector Description}
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
for the thruster. This involves determining the appropriate direction, magnitude, and
presence of a thrust at each point along its continuous orbit.
\subsubsection{Angle of Thrust}
Firstly, we can examine the direction at which to point the thrusters while they are on.
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
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-centered $\hat{R}
\hat{\theta} \hat{H}$ frame. In this frame, the $\hat{R}$ direction is the radial
direction from the center of the primary to the center of the spacecraft. The $\hat{H}$
hat is perpendicular to this, in the direction of orbital momentum (out-of-plane) and
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
$\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
$\beta$, to represent the in and out of plane pointing direction of the thrusters. This
convention is useful because, in a near-circular path, a $(0,0)$ set represents a thrust
force more or less directly in line with the direction of the velocity, a commonly
useful thrusting direction for most effectively increasing (or decreasing if negative)
the angular momentum and orbital energy of the trajectory.
Using these conventions, we can then redefine our thrust vector in terms of the $\alpha$
and $\beta$ angles in the chosen frame:
\begin{align}
F_r &= F \cos(\beta) \sin (\alpha) \\
F_\theta &= F \cos(\beta) \cos (\alpha) \\
F_h &= F \sin(\beta)
\end{align}
\subsubsection{Thrust Magnitude}
There is another variable that can be varied by the majority of electric thrusters.
Either by controlling the input power of the thruster or the duty cycle, the thrust
magnitude can also be varied, limited by the maximum thrust available to the thruster.
Not all control laws allow for this fine-tuned control of the thruster.
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
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
space limited in magnitude by the maximum thrust, which allows for that increased
flexibility.
For instance, we can consider the case of a simple orbit raising. Given an initial orbit
with some eccentricity and some semi-major axis, we can define a new orbit that we'd
like to achieve that simply has a higher semi-major axis value, regardless of the
eccentricity of the new orbit. It is well known by analysis of the famous Hohmann
Transfer\cite{hohmann1960attainability}, that thrusting for orbit raising is most
effective near the periapsis of an orbit, where changes in velocity will have a higher
impact on total orbital energy. Therefore, for a given low-thrust control law that
allows for the presence or absence of thrusting at different efficiency cutoffs, we can
easily come up with two different orbits, each of which achieve the same semi-major
axis, but in two different ways at two different rates, both in time and fuel use, as
can be seen in Figures~\ref{low_efficiency_fig} and \ref{high_efficiency_fig}.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{LaTeX/fig/low_efficiency}
\caption{Graphic of an orbit-raising with a low efficiency cutoff}
\label{low_efficiency_fig}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{LaTeX/fig/high_efficiency}
\caption{Graphic of an orbit-raising with a high efficiency cutoff}
\label{high_efficiency_fig}
\end{figure}