Getting pretty close on the final review
This commit is contained in:
@@ -81,6 +81,59 @@
|
||||
\ddot{\vec{r}} = - \frac{\mu}{r^2} \hat{r}
|
||||
\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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
no other forces, we can define the total specific mechanical energy as:
|
||||
|
||||
|
||||
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
|
||||
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}
|
||||
|
||||
\noindent
|
||||
Where the first term represents the kinetic energy of the spacecraft and the second term
|
||||
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
|
||||
@@ -282,13 +335,10 @@
|
||||
|
||||
\section{Interplanetary Considerations}\label{interplanetary}
|
||||
|
||||
The question of interplanetary travel opens up a host of additional new complexities. While
|
||||
optimizations for simple single-body trajectories are far from simple, it can at least be
|
||||
said that the assumptions of the Two Body Problem remain fairly valid. 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 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.
|
||||
@@ -296,7 +346,7 @@
|
||||
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 orbit strategies. The
|
||||
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.
|
||||
|
||||
@@ -306,45 +356,13 @@
|
||||
search space, but some of these tools can also be leveraged by the automated optimization
|
||||
algorithm.
|
||||
|
||||
\subsection{Launch Considerations}
|
||||
|
||||
Before considering the dynamics and techniques that interplanetary travel imposes upon
|
||||
the trajectory optimization problem we must first concern ourself with getting to
|
||||
interplanetary space. Generally speaking, interplanetary trajectories require a lot of
|
||||
orbital energy and the simplest and quickest way to impart orbital energy to a satellite
|
||||
is by using the entirety of the launch energy that a launch vehicle can provide.
|
||||
|
||||
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 and many others will take, essentially for granted, that the initial
|
||||
orbit 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
|
||||
NLP solver. 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 mission. This algorithm, and many others,
|
||||
doesn't attempt to exactly match the velocity of the planet at the end of the mission.
|
||||
Instead, the excess hyperbolic velocity is also treated as a parameter that can be
|
||||
minimized by the cost function. If a mission 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 at the end of the mission. This approach also allows flexibility
|
||||
for missions that might end in a flyby rather than insertion.
|
||||
|
||||
\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
|
||||
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.
|
||||
|
||||
@@ -356,8 +374,7 @@
|
||||
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. These are considered LaGrange points\cite{euler1767motu}, but are
|
||||
beyond the scope of this initial analysis of interplanetary mission feasibility.
|
||||
influence of the Sun.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
@@ -366,12 +383,74 @@
|
||||
\label{patched_conics_fig}
|
||||
\end{figure}
|
||||
|
||||
This effectively breaks the trajectory into a series of orbits defined by the Two-Body
|
||||
problem (conics), patched together by distinct transition points. These transition
|
||||
points occur along the spheres of influence of the planets nearest to the spacecraft.
|
||||
Generally speaking, for the orbits handled by this algorithm, the speeds involved are
|
||||
enough that the orbits are always elliptical around the Sun and hyperbolic around the
|
||||
planets.
|
||||
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.
|
||||
|
||||
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 that the spacecraft has (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}
|
||||
|
||||
Generally speaking, an interplanetary mission begins with launch. 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 NLP solver. 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 mission. This algorithm doesn't attempt to
|
||||
exactly match the velocity of the planet at the end of the mission. Instead, the excess
|
||||
hyperbolic velocity is also treated as a parameter that can be minimized by the cost
|
||||
function. If a mission 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 at
|
||||
the end of the mission. This approach also allows flexibility for missions that might
|
||||
end in a flyby rather than insertion.
|
||||
|
||||
\subsection{Gravity Assist Maneuvers}
|
||||
|
||||
@@ -392,6 +471,20 @@
|
||||
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]{fig/flyby}
|
||||
\caption{Visualization of 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
|
||||
@@ -401,25 +494,22 @@
|
||||
\subsection{Flyby Periapsis}
|
||||
|
||||
Now that we understand gravity assists, the natural question is then how to leverage
|
||||
them for achieving certain velocity changes. This can be achieved via a technique called
|
||||
``B-Plane Targeting''\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 ($v_{\infty, in}$) and a target excess hyperbolic velocity as the spacecraft
|
||||
leaves the sphere of influence ($v_{\infty, out}$):
|
||||
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}
|
||||
\delta = \arccos \left( \frac{v_{\infty,in} \cdot v_{\infty,out}}{|v_{\infty,in}|
|
||||
|v_{\infty,out}|} \right)
|
||||
\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 actual location
|
||||
of the flyby point can also be determined by B-Plane Targeting, but this technique was
|
||||
not necessary in this implementation as a preliminary feasibility tool, and so is beyond
|
||||
the scope of this thesis. The periapsis of the flyby, however, can provide a useful
|
||||
check on what turning angles are possible for a given flyby, since the periapsis:
|
||||
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}
|
||||
r_p = \frac{\mu}{v_\infty^2} \left[ \frac{1}{\sin\left(\frac{\delta}{2}\right)} - 1 \right]
|
||||
@@ -443,9 +533,121 @@
|
||||
a time of flight between the two positions, what velocity was necessary to connect
|
||||
the two states.
|
||||
|
||||
The actual numerical solution to this boundary value problem is not important to
|
||||
include here, but there have been a large number of algorithms written to solve
|
||||
Lambert's problem quickly and robustly for given inputs\cite{jordan1964application}.
|
||||
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}_0$, and final position, $\vec{r}_f$, 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. For each of these, 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}.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.8\textwidth]{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}
|
||||
|
||||
\noindent
|
||||
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}
|
||||
|
||||
\noindent
|
||||
Fully constraining the connecting orbit.
|
||||
|
||||
\subsubsection{Planetary Ephemeris}
|
||||
|
||||
@@ -454,13 +656,12 @@
|
||||
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.
|
||||
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
|
||||
ecliptic plane J2000 frame could be easily determined. A method for quickly
|
||||
determining the ephemeris using a polynomial fit was also employed as an option for
|
||||
faster ephemeris-finding, but ultimately not used.
|
||||
ecliptic plane J2000 frame could be easily determined for a given epoch, provided as
|
||||
a decimal Julian Day since the J2000 epoch.
|
||||
|
||||
\subsubsection{Porkchop Plots}
|
||||
|
||||
@@ -492,42 +693,123 @@
|
||||
\end{figure}
|
||||
|
||||
However, this is an impulsive thrust-centered approach. The solution to Lambert's
|
||||
problem assumes a natural trajectory. However, to the low-thrust designer, this is
|
||||
needlessly limiting. 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.
|
||||
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}
|
||||
|
||||
Thus far, the techniques that have been discussed can be equally useful for both impulsive and
|
||||
continuous thrust mission profiles. 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.
|
||||
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{Specific Impulse}
|
||||
|
||||
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}
|
||||
|
||||
\noindent
|
||||
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}
|
||||
|
||||
\noindent
|
||||
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}
|
||||
|
||||
\noindent
|
||||
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}
|
||||
|
||||
this thesis chose to use a model well suited 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]{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 Laws}
|
||||
|
||||
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 control law functions in exactly the same way that an impulsive thrust
|
||||
control law might function. However, instead of determining the proper moments at which
|
||||
to thrust, a low-thrust control law must determine the appropriate direction, magnitude,
|
||||
and presence of a thrust at each point along its continuous orbit.
|
||||
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 most important quality of the low-thrust control law, 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 $\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 frame.
|
||||
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 $\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 frame.
|
||||
|
||||
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
|
||||
@@ -538,34 +820,28 @@
|
||||
direction for most effectively increasing (or decreasing if negative) the angular
|
||||
momentum and orbital energy of the trajectory.
|
||||
|
||||
Therefore, at each point, the first controls of a control-law, whichever frame or
|
||||
convention is used to define them, need to represent a direction in 3-dimensional space
|
||||
that the force of the thrusters will be applied.
|
||||
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}
|
||||
|
||||
However, there is actually 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 in the direction of thrust, limited by
|
||||
the maximum thrust available to the thruster. Not all control laws allow for this
|
||||
fine-tuned control of the thruster. Generally speaking, it's most efficient either to
|
||||
thrust or not to thrust. Therefore, controlling the thrust magnitude may provide too
|
||||
much complexity at too little benefit.
|
||||
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 algorithm used in this thesis, however, does allow the magnitude of the thrust
|
||||
control to be varied. 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.
|
||||
|
||||
\subsubsection{Thrust Presence}
|
||||
|
||||
The alternative to this approach of modifying the thrust magnitude, is simply to modify
|
||||
the presence or absence of thrust. At certain points along an arc, the efficiency of
|
||||
thrusting, even in the most advantageous direction, may be such that a thrust is
|
||||
undesirable (in that it will lower the overall efficiency of the mission too much) or,
|
||||
in fact, be actively harmful.
|
||||
The algorithm 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
|
||||
@@ -599,61 +875,3 @@
|
||||
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.
|
||||
|
||||
\subsection{Direct vs Indirect Optimization}
|
||||
|
||||
As previously mentioned, there are two different approaches to optimizing non-linear
|
||||
problems such as trajectory optimizations in interplanetary space. These methods are the
|
||||
direct method, in which a cost function is developed and used by numerical root-finding
|
||||
schemes to drive cost to the nearest local minimum, and the indirect method, in which a
|
||||
set of sufficient and necessary conditions are developed that constrain the optimal
|
||||
solution and used to solve a boundary-value problem to find the optimal solution.
|
||||
|
||||
Both of these methods have been applied to the problem of low-thrust interplanetary
|
||||
trajectory optimization \cite{Casalino2007IndirectOM}. The common opinion of the
|
||||
difference between these two methods is that the indirect methods are more difficult to
|
||||
converge and require a better initial guess than the direct methods. However, they also
|
||||
require less parameters to describe the trajectory, since the solution of a boundary
|
||||
value problem doesn't require discretization of the control states.
|
||||
|
||||
In this implementation, robustness is incredibly valuable, as the Monotonic Basin
|
||||
Hopping algorithm is leveraged to attempt to find all minima basins in the solution
|
||||
space by ``hopping'' around with different initial guesses. Since these initial guesses
|
||||
are not guaranteed to be close to any particular valid trajectory, it is important that
|
||||
the optimization routine be robust to poor initial guesses. Therefore, a direct
|
||||
optimization method was leveraged by transcribing the problem into an NLP and using
|
||||
IPOPT to find the local minima.
|
||||
|
||||
\subsection{Sims-Flanagan Transcription}
|
||||
|
||||
The major problem with optimizing low thrust paths is that the control law must necessarily be
|
||||
continuous. Also, since indirect optimization approaches are, in the context of
|
||||
interplanetary trajectories including flybys, quite difficult the problem must
|
||||
necessarily be reformulated as a discrete one in order to apply a direct approach. Therefore,
|
||||
this thesis chose to use a model well suited for discretizing low-thrust paths: the
|
||||
Sims-Flanagan transcription (SFT)\cite{sims1999preliminary}.
|
||||
|
||||
The SFT is actually quite a simple method for discretizing low-thrust arcs. First the
|
||||
continuous arc is subdivided into a number ($N$) of individual consistent timesteps of length
|
||||
$\frac{tof}{N}$. The control thrust is then applied 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]{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 numeric integration algorithms, by simply solving Kepler's equation
|
||||
(using the LaGuerre-Conway algorithm introduced in Section~\ref{laguerre}) $N$ times. 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.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user