diff --git a/LaTeX/fig/2bp.png b/LaTeX/fig/2bp.png
new file mode 100644
index 0000000..b28bdcb
Binary files /dev/null and b/LaTeX/fig/2bp.png differ
diff --git a/LaTeX/fig/2bp.svg b/LaTeX/fig/2bp.svg
new file mode 100644
index 0000000..601b84e
--- /dev/null
+++ b/LaTeX/fig/2bp.svg
@@ -0,0 +1,270 @@
+
+
+
+
diff --git a/LaTeX/fig/high_efficiency.png b/LaTeX/fig/high_efficiency.png
new file mode 100644
index 0000000..f39a021
Binary files /dev/null and b/LaTeX/fig/high_efficiency.png differ
diff --git a/LaTeX/fig/kepler.png b/LaTeX/fig/kepler.png
index b2ef62a..0da3b93 100644
Binary files a/LaTeX/fig/kepler.png and b/LaTeX/fig/kepler.png differ
diff --git a/LaTeX/fig/laguerre_plot.png b/LaTeX/fig/laguerre_plot.png
index 96961e0..7ab3fc9 100644
Binary files a/LaTeX/fig/laguerre_plot.png and b/LaTeX/fig/laguerre_plot.png differ
diff --git a/LaTeX/fig/low_efficiency.png b/LaTeX/fig/low_efficiency.png
new file mode 100644
index 0000000..e9f7832
Binary files /dev/null and b/LaTeX/fig/low_efficiency.png differ
diff --git a/LaTeX/fig/multiple_shoot.png b/LaTeX/fig/multiple_shoot.png
new file mode 100644
index 0000000..7d5d229
Binary files /dev/null and b/LaTeX/fig/multiple_shoot.png differ
diff --git a/LaTeX/fig/multiple_shoot.svg b/LaTeX/fig/multiple_shoot.svg
new file mode 100644
index 0000000..269b0ad
--- /dev/null
+++ b/LaTeX/fig/multiple_shoot.svg
@@ -0,0 +1,409 @@
+
+
+
+
diff --git a/LaTeX/fig/patched_conics.png b/LaTeX/fig/patched_conics.png
new file mode 100644
index 0000000..8f03e96
Binary files /dev/null and b/LaTeX/fig/patched_conics.png differ
diff --git a/LaTeX/fig/patched_conics.svg b/LaTeX/fig/patched_conics.svg
new file mode 100644
index 0000000..8d8af65
--- /dev/null
+++ b/LaTeX/fig/patched_conics.svg
@@ -0,0 +1,175 @@
+
+
+
+
diff --git a/LaTeX/fig/sft.png b/LaTeX/fig/sft.png
new file mode 100644
index 0000000..635706f
Binary files /dev/null and b/LaTeX/fig/sft.png differ
diff --git a/LaTeX/fig/sft.svg b/LaTeX/fig/sft.svg
new file mode 100644
index 0000000..730d9a7
--- /dev/null
+++ b/LaTeX/fig/sft.svg
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/LaTeX/fig/single_shoot.png b/LaTeX/fig/single_shoot.png
new file mode 100644
index 0000000..4935b33
Binary files /dev/null and b/LaTeX/fig/single_shoot.png differ
diff --git a/LaTeX/fig/single_shoot.svg b/LaTeX/fig/single_shoot.svg
new file mode 100644
index 0000000..6466bd9
--- /dev/null
+++ b/LaTeX/fig/single_shoot.svg
@@ -0,0 +1,208 @@
+
+
+
+
diff --git a/LaTeX/fig/spiral_plot.png b/LaTeX/fig/spiral_plot.png
index 8671cfb..4ff2e16 100644
Binary files a/LaTeX/fig/spiral_plot.png and b/LaTeX/fig/spiral_plot.png differ
diff --git a/LaTeX/flowcharts/kepler.svg b/LaTeX/flowcharts/kepler.svg
index 8c56f70..0ed6dec 100644
--- a/LaTeX/flowcharts/kepler.svg
+++ b/LaTeX/flowcharts/kepler.svg
@@ -34,12 +34,12 @@
inkscape:snap-grids="false"
inkscape:snap-object-midpoints="false"
inkscape:zoom="1.4361764"
- inkscape:cx="566.78273"
- inkscape:cy="346.40591"
- inkscape:window-width="1912"
- inkscape:window-height="1040"
- inkscape:window-x="1920"
- inkscape:window-y="32"
+ inkscape:cx="589.76042"
+ inkscape:cy="333.17634"
+ inkscape:window-width="747"
+ inkscape:window-height="1024"
+ inkscape:window-x="1157"
+ inkscape:window-y="40"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
+ transform="scale(0.26458333)"
+ inkscape:export-filename="/home/connor/projects/thesis/LaTeX/fig/kepler.png"
+ inkscape:export-xdpi="300"
+ inkscape:export-ydpi="300" />
+ style="stroke-width:0.264583" />
υ
+ y="86.180817">ϴ
rcos(υ)
+ y="98.320885">rcosϴ
rsin(υ)
+ y="171.40031">rsinϴ
kk2
+ id="tspan105747">1
> m_2$) we can reduce that formulation to simply:
+ Due to our assumption 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 number $\mu$ which
+ represents, for a given planet, the universal gravitational parameter multiplied by the
+ mass of the planet. Doing so and simplifying produces:
\begin{equation}
\ddot{\vec{r}} = - \frac{\mu}{r^2} \hat{r}
@@ -143,48 +201,69 @@
\subsection{Kepler's Laws and Equations}
- % TODO: Can I segue better from 2BP to Keplerian geometry?
-
Now that we've fully qualified the forces acting within the Two Body Problem, we can concern
- ourselves with more practical applications of this 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
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 position) 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).
- 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:
+ 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 body 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:
+
+ \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.
+
\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.
+ 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. Specifically, the relationship is: $T = 2
- \pi \sqrt{\frac{a^3}{\mu}}$ where $T$ is the period and $a$ is the semi-major axis.
+ axis of the orbit, regardless of eccentricity. Specifically, the relationship is:
+
+ \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}
\section{Analytical Solutions to Kepler's Equations}
- 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. Since 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:
-
- \begin{equation}\label{swept}
- \frac{\Delta t}{T} = \frac{k}{\pi a b}
- \end{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}. Since 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}
+ \begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{fig/kepler}
\caption{Geometric Representation of Auxiliary Circle}\label{aux_circ}
@@ -205,11 +284,12 @@
\end{align}
Now we can find the area for the elliptical segment $PCB$ by first finding the circular
- segment $POB'$, subtracting the triangle $OB'C$, then applying the fact that an ellipse is
+ 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( \frac{a^2 E}{2} - \frac{1}{2} \left( a \cos E \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)
\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)
@@ -231,10 +311,9 @@
Which is, effectively, Kepler's equation. It is commonly known by a different form:
- \begin{align}
- M &= E - e \sin E \\
- &= \sqrt{\frac{\mu}{a^3}} \Delta t
- \end{align}
+ \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
@@ -242,13 +321,15 @@
algorithm for solving this equation.
\subsection{LaGuerre-Conway Algorithm}\label{laguerre}
- For this application, I used an algorithm known as the LaGuerre-Conway algorithm, which was
- presented in 1986 as a faster algorithm for directly solving Kepler's equation and has been
- in use in many applications since. This algorithm is known for its convergence robustness
- and also its speed of convergence when compared to higher order Newton methods.
- This thesis will omit a step-through of the algorithm itself, but the code will be present
- in the Appendix.
+ For this application, I used an algorithm known as the LaGuerre-Conway
+ algorithm\cite{laguerre_conway}, which was presented in 1986 as a faster and more
+ robust algorithm for directly solving Kepler's equation and has been in use in many
+ applications since. This algorithm is known for its convergence robustness and also
+ its speed of convergence when compared to higher order Newton methods.
+
+ This thesis will omit a step-through of the algorithm itself, but psuedo-code for
+ the algorithm will be discussed briefly in Section~\ref{conway_pseudocode}.
\section{Non-Linear Problem Optimization}
@@ -270,18 +351,19 @@
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 declaring
- the problem optimal. These conditions then allow the non-linear problem (generally) to be
+ the solution optimal. These conditions then allow the non-linear problem (generally) to be
reformulated as a two point boundary value problem. Solving this boundary value problem can
provide a control law for the optimal path. Indirect approaches for spacecraft trajectory
- optimization have given us the Primer Vector Theory.
+ optimization have given us the Primer Vector Theory\cite{jezewski1975primer}.
- The other category is the direct methods. In a direct optimization problem, the cost function
- itself is calculated to provide the optimal solution. The problem is usually thought of as a
- collection of dynamics and controls. Then these controls can be modified to minimize the cost
- function. A number of tools have been developed to optimize NLPs via this direct method in the
- general case. For this particular problem, direct approaches were used as the low-thrust
- system dynamics adds too much complexity to quickly optimize indirectly and the individual
- optimization routines needed to proceed as quickly as possible.
+ The other category is the direct methods. In a direct optimization problem, the cost
+ function itself is calculated to provide the optimal solution. The problem is usually
+ thought of as a collection of dynamics and controls. Then these controls can be modified
+ to minimize the cost function. A number of tools have been developed to optimize NLPs
+ via this direct method in the general case. For this particular problem, direct
+ approaches were used as the low-thrust interplanetary system dynamics adds too much
+ complexity to quickly optimize indirectly and the individual optimization routines
+ needed to proceed as quickly as possible.
\subsection{Non-Linear Solvers}
For these types of non-linear, constrained problems, a number of tools have been developed
@@ -289,14 +371,16 @@
simple testing of many different algorithms to find what works best for the nuances of the
problem in question.
- One of the most common of these NLP optimizers is SNOPT, which is a proprietary package
- written primarily using a number of Fortran libraries by the Systems Optimization Laboratory
- at Stanford University. It uses a sparse sequential quadratic programming approach.
+ One of the most common of these NLP optimizers is SNOPT\cite{gill2005snopt}, which
+ is a proprietary package written primarily using a number of Fortran libraries by
+ the Systems Optimization Laboratory at Stanford University. It uses a sparse
+ sequential quadratic programming approach.
- Another common NLP optimization packages (and the one used in this implementation) is the
- Interior Point Optimizer or IPOPT. It can be used in much the same way as SNOPT and uses an
- Interior Point Linesearch Filter Method and was developed as an open-source project by the
- organization COIN-OR under the Eclipse Public License.
+ Another common NLP optimization packages (and the one used in this implementation)
+ is the Interior Point Optimizer or IPOPT\cite{wachter2006implementation}. It can be
+ used in much the same way as SNOPT and uses an Interior Point Linesearch Filter
+ Method and was developed as an open-source project by the organization COIN-OR under
+ the Eclipse Public License.
Both of these methods utilize similar approaches to solve general constrained non-linear
problems iteratively. Both of them can make heavy use of derivative Jacobians and Hessians
@@ -309,19 +393,72 @@
tested without changing much source code.
\subsection{Linesearch Method}
- 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 of a non-linear
- problem by first taking an initial guess $x_k$. The algorithm then determines a step
- direction (in this case through the use of automatic differentiation to calculate the
- derivatives of the non-linear problem) and a step length. The linesearch algorithm then
- continues to 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.
+
+ 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
+ of a non-linear problem by first taking an initial guess $x_k$. The algorithm then
+ determines a step direction (in this case through the use of either automatic
+ differentiation or finite differencing to calculate the derivatives of the
+ non-linear problem) and a step length. The linesearch algorithm then continues to
+ 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.
In this case, the IPOPT algorithm was used, not as an optimizer, but as a solver. For
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.
+ \subsection{Multiple-Shooting Algorithms}
+
+ Now that we have software defined to optimize non-linear problems, what remains is
+ determining the most effective way to define the problem itself. The most simple
+ form of a trajectory optimization might employ a single shooting algorithm, which
+ propagates a state, given some control variables forward in time to the epoch of
+ interest. The controls over this time period are then modified in an iterative
+ process, using the NLP optimizer, until the target state and the propagated state
+ matches. This technique can be visualized in Figure~\ref{single_shoot_fig}.
+
+ \begin{figure}[H]
+ \centering
+ \includegraphics[width=\textwidth]{fig/single_shoot}
+ \caption{Visualization of a single shooting technique over a trajectory arc}
+ \label{single_shoot_fig}
+ \end{figure}
+
+ In this example, the initial trajectory is the green arc, which contains a certain
+ control thrust $\Delta V_{init}$ and is propagated for a certain amount of time and
+ results in the end state $x_{init}$. The target state $x_{final}$ can be achieved by
+ varying the control and propagating forward in time until this final state is
+ achieved. This type of shooting algorithm can be quite useful for simple cases such
+ as this one.
+
+ However, some problems require the use of a more flexible algorithm. In these cases,
+ sometimes a multiple-shooting algorithm can provide that flexibility and allow the
+ NLP solver to find the optimal control faster. In a multiple shooting algorithm,
+ rather than having a single target point at which the propagated state is compared,
+ the target orbit is broken down into multiple arcs, then end of each of which can be
+ seen as a separate target. At each of these points we can then define a separate
+ control. The end state of each arc and the beginning state of the next must then be
+ equal for a valid arc, as well as the final state matching the target final state.
+ This changes the problem to have far more constraints, but also increased freedom
+ due to having more control variables.
+
+ \begin{figure}[H]
+ \centering
+ \includegraphics[width=\textwidth]{fig/multiple_shoot}
+ \caption{Visualization of a multiple shooting technique over a trajectory arc}
+ \label{multiple_shoot_fig}
+ \end{figure}
+
+ 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
+ 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
+ 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
+ description of ways that multiple shooting can be used to optimize a trajectory,
+ simply the most convenient for low-thrust arcs.
+
\chapter{Low-Thrust Considerations} \label{low_thrust}
Thus far, the techniques that have been discussed can be equally useful for both impulsive and
@@ -334,39 +471,141 @@
\section{Low-Thrust Control Laws}
In determining a low-thrust arc, a number of variables must be accounted for and, ideally,
- optimized.
+ 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.
- Firstly, we must determine the presence or absence of thrust. Often, this is a question of
- preference in the arsenal of the mission designer. Generally speaking, there are points along
- an orbit at which thrusting in order to achieve the final orbit are more or less efficient.
- For instance, in a classic orbit raising, if increasing the semi-major axis is the only goal,
- then thrusting nearer to the periapsis is far more efficient than thrusting near the apoapsis.
- For this reason, a mission designer may choose to reduce the thrust or turn it off altogether
- during certain segments of the trajectory.
+ \subsection{Angle of Thrust}
- Secondly, the direction of thrust must also be determined. The methods for determining this
- direction varies greatly depending on the particular control law chosen for that mission.
- Generally speaking, a control law determines these two parameters: thrust presence and thrust
- direction, at each point along the arc.
+ 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.
- 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.
+ 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 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.
+
+ 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.
+
+ \subsection{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.
+
+ 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.
+
+ \subsection{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.
+
+ 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]{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]{fig/high_efficiency}
+ \caption{Graphic of an orbit-raising with a high efficiency cutoff}
+ \label{high_efficiency_fig}
+ \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.
+
+ \section{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.
\section{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 quite difficult, the problem must
+ 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).
+ 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.
+ $\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
@@ -384,33 +623,92 @@
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 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 other uses, a more
- efficient model is necessary. The method of patched conics can be applied in this case to
- simplify the model.
+ 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.
- Interplanetary travel does not simply negatively impact trajectory optimization. The
- increased complexity of the search space also opens up new opportunities for orbit
- strategies. 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.
+ 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 orbit strategies. 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.
+
+ \section{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.
\section{Patched Conics}
- The first hurdle to deal with is the problem of reconciling the Two-Body problem with
- the presence of multiple and varying planetary bodies. The most common method for
- approaching this is the method of patched conics. 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 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. This effectively breaks the trajectory into
- a series of orbits defined by the Two-Body problem (conics), patched together by
- distinct transition points.
+ 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. These are considered LaGrange points\cite{euler1767motu}, but are
+ beyond the scope of this initial analysis of interplanetary mission feasibility.
+
+ \begin{figure}[H]
+ \centering
+ \includegraphics[width=0.8\textwidth]{fig/patched_conics}
+ \caption{Patched Conics Example Figure}
+ \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.
\section{Gravity Assist Maneuvers}
@@ -429,7 +727,7 @@
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.
+ the planet, leaves in a different direction\cite{negri2020historical}.
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
@@ -437,74 +735,105 @@
turning angle of this bend. In doing so, one can effectively achieve a (restricted) free
impulsive thrust event.
- \section{Multiple Gravity Assist Techniques}
+ \section{Flyby Periapsis}
- Naturally, therefore, one would want to utilize these gravity flybys to reduce the fuel
- cost to arrive at their destination target state. However, these flyby maneuvers are
- quite restricted. The incoming hyperbolic velocity must be equal in magnitude to the
- outgoing hyperbolic velocity. Also, the turning angle $\delta$, in the following
- equation, correlates with the radius of periapsis of the hyperbolic trajectory crossing
- the planet:
+ 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}$):
+
+ \begin{equation}
+ \delta = \arccos \left( \frac{v_{\infty,in} \cdot v_{\infty,out}}{|v_{\infty,in}|
+ |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:
\begin{equation}
r_p = \frac{\mu}{v_\infty^2} \left[ \frac{1}{\sin\left(\frac{\delta}{2}\right)} - 1 \right]
\end{equation}
- Where $v_\infty$ is the magnitude of hyperbolic velocity. Naturally, the radius of
- periapsis must not fall below some safe value, in order to avoid the risk of the
- spacecraft crashing into the planet or its atmosphere.
+ Cannot be lower than some safe value that accounts for the radius of the planet and
+ perhaps its atmosphere if applicable.
- In order to visualize which trajectories are possible within these constraints, porkchop
- plots are often employed, such as the plot in Figure~\ref{porkchop}. These plots outline
- various incoming and outgoing qualities of the trajectory arc between two planetary
- bodies. For instance, during an arc from launch at Earth to a flyby one might plot the
- launch C3 against the Mars arrival $v_\infty$ for a variety of launch and arrival dates.
+ \section{Multiple Gravity Assist Techniques}
- \begin{figure}
- \centering
- \includegraphics[width=\textwidth]{fig/porkchop}
- \caption{A sample porkchop plot of an Earth-Mars transfer}
- \label{porkchop}
- \end{figure}
+ 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?
- This is made possible by solving Lambert's problem for the planetary ephemeris at the
- epochs plotted. Lambert's problem is concerned with determining the orbit between two
- positions at two different times in space. There are a number of different Lambert's
- problem algorithms that allow a mission designer to determine the velocity needed (and
- thus the $\Delta V$) required to achieve a position at a later time. From this, the
- designer can algorithmically determine trajectory properties in the porkchop plot for
- easy visualization.
+ \subsection{Lambert's Problem}
- 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.
+ 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.
- % \chapter{Genetic Algorithms}
- % I will probably give only a brief overview of genetic algorithms here. I don't personally know
- % that much about them. Then in the following subsections I can discuss the parts that are
- % relevant to the specific algorithm that I'm using.
+ 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}.
- % \section{Decision Vectors}
- % Discuss what a decision vector is in the context of an optimization problem.
+ \subsection{Planetary Ephemeris}
- % \section{Selection and Fitness Evaluation}
- % Discuss the costing being used as well as the different types of fitness evaluation that are
- % common. Also discuss the concept of generations and ``survival''.
+ 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.
- % \subsection{Tournament Selection}
- % Dive deeper into the specific selection algorithm being used here.
+ 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.
- % \section{Crossover}
- % Discuss the concept of crossover and procreation in a genetic algorithm.
+ \subsection{Porkchop Plots}
- % \subsection{Binary Crossover}
- % Discuss specific crossover algorithm used here.
+ 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.
- % \subsection{Mutation}
- % Discuss both the necessity for mutation and the mutation algorithm being used.
+ 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 savvy mission designer can even begin to work out what combinations of flybys
+ might be possible for a given timeline, spacecraft state, and planet selection.
+
+ %TODO: Create my own porkchop plot
+ \begin{figure}[H]
+ \centering
+ \includegraphics[width=\textwidth]{fig/porkchop}
+ \caption{A sample porkchop plot of an Earth-Mars transfer}
+ \label{porkchop}
+ \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.
\chapter{Algorithm Overview} \label{algorithm}
@@ -597,7 +926,7 @@
\label{nlp}
\end{figure}
- \subsection{LaGuerre-Conway Kepler Solver}
+ \subsection{LaGuerre-Conway Kepler Solver}\label{conway_pseudocode}
The most basic building block of any trajectory is a physical model for simulating
natural trajectories from one point forward in time. The approach taken by this
@@ -615,27 +944,27 @@
\begin{verbatim}
i = 0
# First declare some useful variables from the state
- σ0 = (position ⋅ velocity) / √(μ)
- a = 1 / ( 2/norm(position) - norm(velocity)^2/μ )
+ sig0 = (position ⋅ velocity) / √(mu)
+ a = 1 / ( 2/norm(position) - norm(velocity)^2/mu )
coeff = 1 - norm(position)/a
# This loop is essentially a second-order Newton solver for ΔE
- ΔM = ΔE_new = √(μ/a^3) * time
+ ΔM = ΔE_new = √(mu/a^3) * time
ΔE = 1000
while abs(ΔE - ΔE_new) > 1e-10
ΔE = ΔE_new
- F = ΔE - ΔM + σ0 / √(a) * (1-cos(ΔE)) - coeff * sin(ΔE)
- dF = 1 + σ0 / √(a) * sin(ΔE) - coeff * cos(ΔE)
- d2F = σ0 / √(a) * cos(ΔE) + coeff * sin(ΔE)
+ F = ΔE - ΔM + sig0 / √(a) * (1-cos(ΔE)) - coeff * sin(ΔE)
+ dF = 1 + sig0 / √(a) * sin(ΔE) - coeff * cos(ΔE)
+ d2F = sig0 / √(a) * cos(ΔE) + coeff * sin(ΔE)
ΔE_new = ΔE - n*F / ( dF + sign(dF) * √(abs((n-1)^2*dF^2 - n*(n-1)*F*d2F )))
i += 1
end
# ΔE can then be used to determine the F/Ft and G/Gt coefficients
F = 1 - a/norm(position) * (1-cos(ΔE))
- G = a * σ0/ √(μ) * (1-cos(ΔE)) + norm(position) * √(a) / √(μ) * sin(ΔE)
- r = a + (norm(position) - a) * cos(ΔE) + σ0 * √(a) * sin(ΔE)
- Ft = -√(a)*√(μ) / (r*norm(position)) * sin(ΔE)
+ G = a * sig0/ √(mu) * (1-cos(ΔE)) + norm(position) * √(a) / √(μ) * sin(ΔE)
+ r = a + (norm(position) - a) * cos(ΔE) + sig0 * √(a) * sin(ΔE)
+ Ft = -√(a)*√(mu) / (r*norm(position)) * sin(ΔE)
Gt = 1 - a/r * (1-cos(ΔE))
# Which provide transformations from the original position and velocity to the
@@ -692,6 +1021,23 @@
model is capable of modeling nearly any low-thrust trajectory with a sufficiently
high number of $n$ samples.
+ Finally, it should be noted that, in any proper propagation scheme, mass should be
+ decremented proportionally to the thrust used. The Sims-Flanagan Transcription
+ assumes that the thrust for a given sub-trajectory is constant across the entirety
+ of that sub-trajectory. Therefore, the mass used by that particular thrusting event
+ can be determined by knowledge of the percentage of maximum thrust being provided
+ 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
+ efficiency)\cite{sutton2016rocket}:
+
+ \begin{equation}
+ \Delta m = \Delta t \frac{f d}{I_{sp} g_0}
+ \end{equation}
+
+ 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
+ Earth.
+
\subsection{Non-Linear Problem Solver}
Now that we have the basic building blocks of a continuous-thrust trajectory, we can
@@ -1011,6 +1357,31 @@
efficacy of the lower fidelity method. Orbits can be found quickly in the lower fidelity
model and easily refined later by re-running the NLP solver at a higher $n$ value.
+ Finally, the relevant values for the two selected missions are listed below for
+ reference:
+
+ \begin{table}[h!]
+ \begin{small}
+ \centering
+ \begin{tabular}{ | c c c c c c | }
+ \hline
+ \bfseries Flyby Selection &
+ \bfseries Launch Date &
+ \bfseries Mission Length &
+ \bfseries Launch $C_3$ &
+ \bfseries Arrival $V_\infty$ &
+ \bfseries Fuel Usage \\
+ & & (years) & $\left( \frac{km}{s} \right)^2$ & ($\frac{km}{s}$) & (kg) \\
+ \hline
+ EMS & 2024-06-27 & 7.9844 & 60.41025 & 5.816058 & 446.9227 \\
+ EMJS & 2023-11-08 & 14.1072 & 40.43862 & 3.477395 & 530.6683 \\
+ \hline
+ \end{tabular}
+ \end{small}
+ \caption{Comparison of the two most optimal trajectories}
+ \label{results_table}
+ \end{table}
+
\subsection{Cost Function}
Each mission optimization also allows for the definition of a cost function. This
@@ -1207,38 +1578,14 @@
window, and target.
In performing this examination, two results were selected for further analysis. These
- results are outlined in Table~\ref{results_table} below:
-
- \begin{table}[h!]
- \begin{small}
- \centering
- \begin{tabular}{ | c c c c c c | }
- \hline
- \bfseries Flyby Selection &
- \bfseries Launch Date &
- \bfseries Mission Length &
- \bfseries Launch $C_3$ &
- \bfseries Arrival $V_\infty$ &
- \bfseries Fuel Usage \\
- & & (years) & $\left( \frac{km}{s} \right)^2$ & ($\frac{km}{s}$) & (kg) \\
- \hline
- EMS & 2024-06-27 & 7.9844 & 60.41025 & 5.816058 & 446.9227 \\
- EMJS & 2023-11-08 & 14.1072 & 40.43862 & 3.477395 & 530.6683 \\
- \hline
- \end{tabular}
- \end{small}
- \caption{Comparison of the two most optimal trajectories}
- \label{results_table}
- \end{table}
-
- As can be seen in the table, both resulting trajectories have trade-offs in mission
- length, launch energy, fuel usage, and more. However, both results should be considered
- very useful low-thrust trajectories in comparison to other missions that have launched
- on similar interplanetary trajectories, using both impulsive and low-thrust arcs with
- planetary flybys. Each of these missions should be feasible or nearly feasible (feasible
- with some modifications) using existing launch vehicle and certainly even larger
- missions should be reasonable with advances in launch capabilities currently being
- explored.
+ 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
+ more. However, both results should be considered very useful low-thrust trajectories in
+ comparison to other missions that have launched on similar interplanetary trajectories,
+ using both impulsive and low-thrust arcs with planetary flybys. Each of these missions
+ should be feasible or nearly feasible (feasible with some modifications) using existing
+ launch vehicle and certainly even larger missions should be reasonable with advances in
+ launch capabilities currently being explored.
\section{Recommendations for Future Work}\label{improvement_section}
@@ -1281,574 +1628,4 @@
\appendix
- \chapter{Description of Analyzed EMS Mission}
-
- \begin{verbatim}
- Spacecraft: ingested
- dry_mass: 200.0 kg
- specific impulse: 3200.0 kg/s
- max_thrust: 0.00025 kN
- num_thrusters: 1
- duty_cycle: 1.0
- Launch Mass: 3500.0 kg
- Launch Date: 2024-06-27T19:18:02.199
- Launch V∞: [7.318672248992913, -1.529445415719206, -2.1232244559503632] km/s
- Phase 1:
- Planet: Mars
- V∞_in: [7.432780013001029, -6.019743530186103, -1.6225406279089392] km/s
- V∞_out: [8.396365726714938, -4.331889724433616, -2.2036070311537257] km/s
- time of flight: 1.0927270179201803e8 seconds
- arrival date: 2027-12-14T12:49:43.199
- thrust profile:
- [0.024235377030207825 0.00888170550219598 0.005275020106447728;
- 0.02399025570663619 0.009687152442138303 0.004849683247103559;
- 0.0237144984626321 0.010458650361418086 0.004447602441224652;
- 0.023365271668340265 0.011247241096547612 0.00410447324935814;
- 0.022940246865578544 0.011992030803744004 0.003821686419038526;
- -0.0019431547304985285 0.022688407700327172 0.022416659898786426;
- -0.0025131130230123333 0.023295814088309913 0.02221394673732401;
- -0.003088246519407214 0.023857826650815685 0.022054838661828224;
- -0.0037472235028326384 0.024343551156414713 0.021927933373391342;
- -0.0044375927787249055 0.02478918143527712 0.021844394088438177;
- -0.026105255729024664 0.038220540187214436 0.036279642377852375;
- -0.026780618554629817 0.03853252364509573 0.03626804427696657;
- -0.027455978112321453 0.038792575810529445 0.03625595201277916;
- -0.028141168092815964 0.03898902440339647 0.03629021876552949;
- -0.028809778187518193 0.03915971736492042 0.03633253932440753;
- -0.060178198449693604 0.045863248834624344 0.0437825750159069;
- -0.060832086109981906 0.04595200237956805 0.043845903840319694;
- -0.0614637322369173 0.04600218250765508 0.04392587747786364;
- -0.06208119542067157 0.046009361980197346 0.0440084727217644;
- -0.06270325274839472 0.04598208821563583 0.0441084524424021;
- -0.09349526192155118 0.04200434863352099 0.044382762987534824;
- -0.09405840998459714 0.04192551288186246 0.04450187342394806;
- -0.0946401085181183 0.04180206021631332 0.04461269535084477;
- -0.09517609258972438 0.0416750889768316 0.04474097351038166;
- -0.09569378105613152 0.041494386743123786 0.044851711195200004;
- -0.12403677347765954 0.031062806563607895 0.042227942339192845;
- -0.12452087322352202 0.030850448440375176 0.04235699321988777;
- -0.12498864069285591 0.030627282643177295 0.0425049647904722;
- -0.1254422057489061 0.03037782952573744 0.042636495744786264;
- -0.1258602731937137 0.0301269442123315 0.04277532634721488;
- -0.15685874809356395 0.015781803191410225 0.04125604163667304;
- -0.15724410737409986 0.01548663048123 0.04140397438274824;
- -0.15761543915061418 0.015174596469721642 0.041548585916012765;
- -0.15796668613822373 0.014825860053564717 0.04170193705279365;
- -0.15829074995512293 0.014483196359902813 0.04182661977219703;
- -0.18321198149177034 -0.006718420238249819 0.037981449142584056;
- -0.18350601725900687 -0.00708380754148209 0.0381377971297988;
- -0.18375962522349495 -0.007485844440849063 0.038266130099955505;
- -0.18401156514951283 -0.007868425114854648 0.03841853545942695;
- -0.18423751994903437 -0.0082750576401688 0.03856460443961429;
- -0.2024862754992264 -0.034848711542048265 0.03336400247905138;
- -0.2026707344937845 -0.035283049103160546 0.03350436335716191;
- -0.20284629279949265 -0.035719294394551654 0.03364110087797018;
- -0.2029945887354837 -0.036172019668414865 0.03379806025832671;
- -0.20311261765668395 -0.0366322645727282 0.0339245665278438;
- -0.21245470288929072 -0.06717661453328558 0.027283225271794283;
- -0.21254193080868825 -0.0676387475174252 0.02742259138543629;
- -0.2126099084522529 -0.0681289229181636 0.027561473450575184;
- -0.21265945852435034 -0.06860590656971097 0.02769054749028669;
- -0.21269589565868435 -0.06910164866049198 0.027835587629257585;
- -0.22095520431071133 -0.1034315240983098 0.02195619219040112;
- -0.22095363324455022 -0.1039363396014177 0.02208001814134371;
- -0.2209258519378579 -0.10444228817076168 0.02218803322309374;
- -0.22087725118828272 -0.10492891836947225 0.022330163267422397;
- -0.22080533929239932 -0.10544299107251072 0.022449713415175286;
- -0.19442709993064522 -0.14170202258034095 0.011558151934536999;
- -0.19431523610918064 -0.14220741730049713 0.011667367575730591;
- -0.19417317244980273 -0.14271188729460021 0.01178096590548684;
- -0.1939941491085289 -0.1432112391035578 0.011875683618928344;
- -0.19379659796210602 -0.1437113505886065 0.011971596929650875;
- -0.20839820924658076 -0.18973385738164752 0.009307451886292192;
- -0.20815817838894604 -0.19021671829427775 0.009393548264616419;
- -0.20788715281082848 -0.1907053323143535 0.009473574125552149;
- -0.20759267564754758 -0.19117297352465665 0.009563518034576692;
- -0.20725730932050385 -0.19164267398389476 0.00963504586160516;
- -0.1961075700059922 -0.24290142178750415 0.0038507129511980015;
- -0.19572169681551538 -0.24334914331638396 0.003899832796131259;
- -0.19530334973600788 -0.24379282734187754 0.003967473955005566;
- -0.19482592064607568 -0.2442236000134374 0.004013758357476628;
- -0.19435132556752394 -0.2446385052975962 0.004041938132303195;
- -0.16465195313849423 -0.3004276434505404 -0.0025477773747229144;
- -0.16406454228555667 -0.3008173014857693 -0.002534902557883806;
- -0.16344445045215752 -0.3011845231864255 -0.0025138987633786056;
- -0.1627790118528474 -0.30153330249237564 -0.0025126609092452866;
- -0.16205639079546422 -0.3018791849184296 -0.00252773549828917;
- -0.11454723260483883 -0.36146563395819015 -0.008724503528927063;
- -0.11374530519473426 -0.3617514022893357 -0.008763083025138563;
- -0.11286008364160728 -0.3620075243586088 -0.008811341523550892;
- -0.11192599887952116 -0.36222778056355126 -0.008862827469500274;
- -0.11094519109599958 -0.3624097362213787 -0.008962625818756769;
- -0.02391505591401128 -0.41864273911091776 -0.015187178892217643;
- -0.02279902972952809 -0.4187484864971973 -0.01532144436549937;
- -0.02162632152143365 -0.4187931725195911 -0.015456346700485964;
- -0.020391897110791923 -0.4187740995712499 -0.015610805544610595;
- -0.019101999843222355 -0.41868878897997275 -0.01579853500286071;
- 0.18376634235176048 -0.4320763402653023 -0.02817451009484391;
- 0.18514409741232546 -0.4318093470304242 -0.02842018614555766;
- 0.1865424521966812 -0.4314123035364245 -0.028679538560778695;
- 0.18794100981484788 -0.43087767476266803 -0.028977178116178365;
- 0.18932086049377508 -0.430176573615346 -0.02927532805815704;
- 0.4837483008894513 -0.30082715558431117 -0.05230879791806509;
- 0.4849770899365583 -0.29968442455901756 -0.052680313525351165;
- 0.48605025678632957 -0.29834697789345743 -0.05307023899553684;
- 0.48693403264870355 -0.296777549423668 -0.05347081616460879;
- 0.4875876938768627 -0.29502768045570976 -0.05387046513476967;
- 0.5997886548585618 -0.05017567151672444 -0.04220063350923577;
- 0.5999113857257048 -0.04825130664045737 -0.0425898328606256;
- 0.5997797857664303 -0.046377827441315855 -0.04295737068172849;
- 0.5994264737794556 -0.04459532310393294 -0.04329715637337397;
- 0.5988885340570684 -0.04294830975144203 -0.043619159341178826] %
- Phase 2:
- Planet: Saturn
- V∞_in: [5.118021911011515, 2.7626475209564307, 0.012833534427407025] km/s
- V∞_out: [0.04582457242616684, 0.2173338665561733, -0.5293480027886823] km/s
- time of flight: 1.425235096053827e8 seconds
- arrival date: 2032-06-20T02:41:32.199
- thrust profile:
- [0.6329930516298814 0.3754387300559965 -0.041278153465157376;
- 0.6316440411687961 0.3771539432333103 -0.04188668511010197;
- 0.6302151630695931 0.37830148957229065 -0.04241470095684055;
- 0.6288015612616553 0.3789983607933317 -0.04289870652729237;
- 0.6274575627177201 0.37938177126004463 -0.04331674239208846;
- 0.3444831378016049 0.4584427028939501 -0.01962983038346585;
- 0.343350313682236 0.45843215556913436 -0.019974532323669136;
- 0.3423488229049882 0.4583226246957569 -0.02026887281309082;
- 0.3414712037645477 0.45814459638568994 -0.020531801085877724;
- 0.34069847825976424 0.4579222760137032 -0.020769373866713528;
- 0.2309654960711884 0.3890497901392047 -0.032657315112688504;
- 0.23037656940414789 0.3887852800660396 -0.03283600644592424;
- 0.22986064892155578 0.3885136473355805 -0.03299996243030687;
- 0.2294073521107295 0.3882409934584674 -0.0331346252769696;
- 0.22900442123476075 0.3879741809050926 -0.033255534578159524;
- 0.1776968304910734 0.2857905066551956 -0.052473839368448266;
- 0.17738168095719187 0.28553616026198864 -0.05255798491622259;
- 0.17710100604422802 0.2852893588307732 -0.05263007802104745;
- 0.17684981431112315 0.285050899002354 -0.05269073773925025;
- 0.17661826565812588 0.2848216419041406 -0.052736460878895185;
- 0.16302803071535937 0.2288440324934438 -0.05295539189756392;
- 0.16284148405624235 0.22863476718195005 -0.052979024771766504;
- 0.16267376993666366 0.22843348716311554 -0.052992796276301664;
- 0.16252035790823205 0.22823748939942143 -0.0529990756032091;
- 0.16237974278262335 0.22805068690324026 -0.052998820166630004;
- 0.13417956270125225 0.18796600274090727 -0.05143256089624221;
- 0.1340623808993445 0.18779402300149806 -0.05141714589345775;
- 0.13395315890550555 0.18762968151984613 -0.051392473738747876;
- 0.1338523104178968 0.18747060727932557 -0.05136297638267751;
- 0.13375902683375174 0.18731665141801573 -0.05132801422329071;
- 0.12758214347585456 0.15340398397435048 -0.05168052476232358;
- 0.12749939620036213 0.15326098428950718 -0.051633621693863346;
- 0.12742364258649297 0.15312464804515485 -0.051582232628574747;
- 0.127351796100246 0.15299516000753102 -0.05152580226049547;
- 0.12728610095610415 0.15286771555716733 -0.05146438099691739;
- 0.10363864135617362 0.13303810609450925 -0.04523719298505366;
- 0.10357714058263788 0.13292093309625866 -0.04516603592319711;
- 0.10352044081060598 0.13280554812600356 -0.04509328051622902;
- 0.10346628293604881 0.1326945241515048 -0.04501460858407201;
- 0.10341668769647967 0.13258690813141388 -0.04493381158618556;
- 0.08849399118613269 0.11680369317500992 -0.039280465917766516;
- 0.08844465220057159 0.11670144773928037 -0.039190520117983456;
- 0.0883990105248394 0.11660286252447159 -0.03910152940381651;
- 0.08835588260324095 0.1165080598699651 -0.039008555813330265;
- 0.08831419794222022 0.11641486614981417 -0.03891218778502019;
- 0.07376177902859117 0.10394822833846208 -0.03269665688227769;
- 0.07372107116344209 0.10385982839740802 -0.03259505692154852;
- 0.07368351060048883 0.10377297305809725 -0.03249294989285947;
- 0.07364622913434896 0.10368999081313057 -0.03238728844927299;
- 0.07360970006720247 0.10360783127082533 -0.03227792310783393;
- 0.05680370570981956 0.10115866945703107 -0.02146434058106377;
- 0.05676906375450203 0.10108215492628116 -0.021352075436948753;
- 0.056736188710490354 0.10100483178367703 -0.021237396204120847;
- 0.0567011948020336 0.10092951637553615 -0.021121532106371934;
- 0.05666814786517165 0.10085693189940123 -0.021004878311086102;
- 0.0420923731810672 0.09492980078603513 -0.009680493755208174;
- 0.0420596575933162 0.09486013616427673 -0.009559253194484718;
- 0.04202961101166327 0.09478983646575409 -0.009437219858373647;
- 0.04199789569028146 0.09472227838497276 -0.009314186603688056;
- 0.041969188425221834 0.09465571700171967 -0.009188458157484392;
- 0.01719386670041908 0.09296262595556959 0.0089115031054126;
- 0.0171642684422979 0.09289882405769614 0.009039422189717244;
- 0.017135252657330843 0.09283621883835598 0.009169202649077841;
- 0.01710552610610665 0.0927741969279537 0.00929901662916952;
- 0.01707771370249971 0.09271327760075816 0.00943173754954676;
- -0.0016483799505183218 0.07938028069231376 0.024714217382829702;
- -0.0016754504265349072 0.07932176849316722 0.0248486613908432;
- -0.0017043398581652579 0.07926283876982425 0.02498319887196984;
- -0.001732622223154404 0.07920473576019973 0.02511898881854544;
- -0.0017608077747973984 0.07914815845852285 0.025255744358647744;
- -0.008092509276578796 0.05150236444831255 0.04578840784797782;
- -0.008120068587494467 0.051446574492129415 0.04592756157575969;
- -0.008148281565883169 0.05139115211486721 0.046067533608893256;
- -0.008176404453626634 0.05133685031323035 0.04620825230233717;
- -0.00820358892659607 0.051282994067783375 0.04634913408495792;
- 0.008342964282222377 0.03510896165031955 0.06135284102436636;
- 0.008314385245044785 0.035057877431210305 0.06149607013527497;
- 0.008286633745210943 0.03500387246553423 0.061638798026826;
- 0.008258897124154313 0.03495281419992153 0.06178278436294488;
- 0.008231407299296863 0.034900022178568836 0.0619271330435043;
- 0.049338794163242446 0.010218649631108702 0.03518291555481896;
- 0.04931153496147123 0.010167641433603034 0.03532738870918014;
- 0.0492836121523927 0.010116746246469603 0.035472649037170186;
- 0.0492556394568435 0.010066283003036306 0.035617726485773375;
- 0.049227886385957084 0.010015154199619465 0.03576338237025743;
- 0.028999848123421643 0.013076326444851995 -0.0020538061417818116;
- 0.02897144523491084 0.013025776906269888 -0.0019074186593764;
- 0.028943969210132623 0.01297546972092727 -0.0017610664493855983;
- 0.028916486144297066 0.012925951671522194 -0.0016148146309075833;
- 0.028888610914008794 0.012876314501514538 -0.0014679290423102944;
- -0.002388102613327097 0.0009451120845601065 -0.00560054558587805;
- -0.0024162568174164725 0.0008956034389303988 -0.005453162652982702;
- -0.002444446078784889 0.0008470308856443604 -0.0053049735651656636;
- -0.002472450721052887 0.0007975886693055877 -0.00515747636345846;
- -0.002500372523042182 0.0007481141860366865 -0.005009629534358225;
- -0.026190217031866518 -0.01783065662929325 -0.005889671840944686;
- -0.02621824113539601 -0.017879866529648538 -0.005741535261451314;
- -0.026246514731744483 -0.017928783707094893 -0.005593366094207994;
- -0.02627442891538959 -0.017977869804518255 -0.005444920908759916;
- -0.026302480351648998 -0.01802662879261315 -0.005296633832816068] %
- Mass Used: 446.92274637633045 kg
- Launch C3: 60.41024885818919 km²/s²
- ||V∞_in||: 5.816058313518406 km/s
- \end{verbatim}
-
- \chapter{Description of Analyzed EMJS Mission}
-
- \begin{verbatim}
- Spacecraft: ingested
- dry_mass: 200.0 kg
- specific impulse: 3200.0 kg/s
- max_thrust: 0.00025 kN
- num_thrusters: 1
- duty_cycle: 1.0
- Launch Mass: 3500.0 kg
- Launch Date: 2023-11-08T16:28:05.002
- Launch V∞: [-4.335012055084635, 4.544887484580865, 0.9951321890482566] km/s
- Phase 1:
- Planet: Mars
- V∞_in: [-7.121293324402133, 3.1557449977550442, 0.2574124611969375] km/s
- V∞_out: [-5.88728969114733, 5.091798086780573, 0.4318349867190985] km/s
- time of flight: 7.69225867524608e7 seconds
- arrival date: 2026-04-16T23:51:11.002
- thrust profile:
- [-0.03956033280289971 0.014502274153396886 0.013767483820172557;
- -0.041576479761307766 0.010774744221230172 0.015954618100526122;
- -0.04353519609600167 0.007026291842675089 0.018015518823847464;
- -0.04547258505717467 0.0030483408188381605 0.01993777253806961;
- -0.047309011488274606 -0.0012193548498561485 0.021657327331670945;
- -0.052415487659225525 -0.06416407139171071 0.01707388662648066;
- -0.053795860137490825 -0.06910602876361567 0.018377866968160055;
- -0.05478537648848572 -0.07435827994314907 0.01948872251679001;
- -0.05534637430302962 -0.07987969781686377 0.020391393740754694;
- -0.05542234511951779 -0.08557119998417642 0.02112165287536681;
- -0.04603653494469639 -0.11758339178872364 0.010478731803032337;
- -0.045131078072944794 -0.12330822437476184 0.010879231121188585;
- -0.04374974899764054 -0.12899509823771538 0.011155318621208977;
- -0.04192900589988677 -0.1345812372404263 0.011297583377631603;
- -0.039688700024628897 -0.1399961637348015 0.011314220390491788;
- -0.021847974947327285 -0.16435052102367306 0.002129770511850757;
- -0.0188961179478137 -0.16932814279205108 0.0019686779710134782;
- -0.015599029971580343 -0.17407912298359424 0.0017313208387575577;
- -0.012031227415560878 -0.17858564810418573 0.0013985317033249586;
- -0.008207263100371613 -0.18286189049060542 0.0010060475404519795;
- 0.014387339499824707 -0.19615027292721257 -0.00697183966316377;
- 0.018642044330809005 -0.19987677851880534 -0.007463937791430979;
- 0.023072513804048733 -0.20333133902195877 -0.00801459777552152;
- 0.027678111409082235 -0.2065512162021133 -0.008611471741542965;
- 0.032416273918375434 -0.20950234109176658 -0.009241460528211365;
- 0.05727065647767366 -0.2191433536041639 -0.014881165830189167;
- 0.062210812252887084 -0.22156351523857395 -0.015576788935959698;
- 0.06721613957517825 -0.22373619052124705 -0.016302796271852785;
- 0.07231447457452297 -0.2256683324065783 -0.01705477220837316;
- 0.07744821845226961 -0.22736856704804745 -0.017819357428142422;
- 0.10200350811113468 -0.2278163660730623 -0.021691173614823873;
- 0.10718625444262414 -0.22902365778493775 -0.022499165329662302;
- 0.11238587770647483 -0.23001847034344625 -0.023321075083325548;
- 0.1175907742151868 -0.23079464658829757 -0.024158451967652046;
- 0.12281268073016817 -0.2313256017139053 -0.025009765392792066;
- 0.14734148617688178 -0.23193110054122293 -0.026828068899809883;
- 0.15246062165647492 -0.2320289354192666 -0.027693691138489004;
- 0.15756013484944287 -0.23190919000372037 -0.0285724598987323;
- 0.16262957652479712 -0.23155961671710285 -0.029454306835995363;
- 0.16762616877319578 -0.2310186539384696 -0.030330493888002703;
- 0.19021986463225274 -0.2237256987767045 -0.030832740235886377;
- 0.19505197721608555 -0.22276253734494164 -0.0317116881014192;
- 0.19984023688892388 -0.22157614923229768 -0.03260448718125773;
- 0.204553599155851 -0.22018960071693844 -0.033482125661950926;
- 0.20920235719105212 -0.21858157069918113 -0.0343665518915779;
- 0.2279686631467231 -0.2074422688851766 -0.03356807904648546;
- 0.2323853660755647 -0.2054201599551011 -0.03444494413786678;
- 0.23671311464094724 -0.2032047355747267 -0.03531629778279262;
- 0.24094332815999528 -0.20077041104419038 -0.0361806846806879;
- 0.24508066397640577 -0.1981405377685498 -0.03702438323954723;
- 0.2620323690523707 -0.18676055455915724 -0.035321161962334015;
- 0.2658847553944062 -0.1837111520291871 -0.03616029682180003;
- 0.2696275418295141 -0.18045886191354016 -0.03698682357490637;
- 0.27327302946151294 -0.17699706837176704 -0.03780180073404257;
- 0.27678271265735493 -0.17334151560199165 -0.03859889067141412;
- 0.2909191888741266 -0.15618402096479228 -0.03611127095741274;
- 0.2941076934397531 -0.1520807594030151 -0.036885574493546645;
- 0.2971711407675296 -0.1477847558967073 -0.03765273809608395;
- 0.3000921225525933 -0.14327687220290794 -0.03840483203030062;
- 0.302873185822033 -0.13857943321564622 -0.039116765312786565;
- 0.3116655641933065 -0.11991931768047741 -0.0361834413012538;
- 0.31410598858453276 -0.11476986707549652 -0.03686954460237472;
- 0.3163852071623763 -0.10941364316275648 -0.03753204013869077;
- 0.31848712811881486 -0.10386237940041423 -0.03816423179059982;
- 0.3204262692565581 -0.0981154571983449 -0.03878521398590498;
- 0.3256678044130722 -0.07838444022075244 -0.03511972772107344;
- 0.32721151962628264 -0.07219320123535682 -0.035684990170265496;
- 0.3285634628040565 -0.0658097723763517 -0.03621630172719094;
- 0.3296774910670562 -0.059216512263922466 -0.03672269403520816;
- 0.3306037421484716 -0.052440905826970474 -0.03719693970630558;
- 0.33328388923267627 -0.030327534780048324 -0.033168979778165145;
- 0.33371746054004786 -0.023134888383537524 -0.033576710353787294;
- 0.33389175751698497 -0.01574903993297518 -0.03393973891492299;
- 0.33380633367079 -0.008182342781467823 -0.0342573724908797;
- 0.33342660729643503 -0.0004248833440292039 -0.03453996222672837;
- 0.3390725685662831 0.02756569570957198 -0.030334702196871285;
- 0.3380833432257479 0.03567047160764992 -0.030528989791387733;
- 0.33675065806255133 0.04393525489567044 -0.030663612383741653;
- 0.33506715162123424 0.05238261972835011 -0.030758858718819428;
- 0.3330117665436285 0.0609445328094011 -0.03079110300637972;
- 0.311092400758174 0.09346079037581413 -0.025420523227424406;
- 0.30810889360138993 0.10225487688815191 -0.025340625186851942;
- 0.3046520673782745 0.1111657055432318 -0.02519931087775893;
- 0.3006841235275496 0.12016917200239183 -0.024980281657263303;
- 0.2961738618627909 0.1292489694856472 -0.024701968974558373;
- 0.2735165965939293 0.1619979905410212 -0.01869630655188906;
- 0.2676587760768934 0.1710598613565007 -0.018258442297774177;
- 0.2611268574754945 0.18010472448692472 -0.017743059114779546;
- 0.2538542304726611 0.18910841101106657 -0.01712960149634353;
- 0.24581028537105218 0.19800484453654849 -0.016418319274889952;
- 0.20666869884086048 0.24449798918762772 -0.010479404541833484;
- 0.19661838861414238 0.25278629475126474 -0.009583933716756832;
- 0.185593310022131 0.26078424163575775 -0.008578297521869437;
- 0.1735491928214268 0.2684089062735019 -0.007463828245551458;
- 0.1604241654210947 0.2755419168542371 -0.006243673883006362;
- 0.11764420987192885 0.3026128805297053 -0.0027808955696240526;
- 0.1020256537979734 0.30819300429344426 -0.0013314690854612414;
- 0.08524068300499618 0.31284158307591525 0.0002381332205356246;
- 0.06730138419613374 0.3163648963620088 0.0019230866854307947;
- 0.04826513140941637 0.3185318511746061 0.003707513869349553] %
- Phase 2:
- Planet: Jupiter
- V∞_in: [-2.4700745323840945, 3.5992843576814684, -0.04897910356619292] km/s
- V∞_out: [2.3726396804033665, 3.660071493225041, -0.18342240674607424] km/s
- time of flight: 1.0365627669349752e8 seconds
- arrival date: 2029-07-29T17:15:47.002
- thrust profile:
- [-0.05988472231417988 0.5098718574120789 0.003380381450714991;
- -0.09985679108378966 0.5099970456619252 0.007680524392304216;
- -0.14083421951474379 0.5051230227055744 0.012059671089214113;
- -0.1806537704798288 0.49506022146586576 0.01638507392002354;
- -0.21707969492739523 0.48021220494730227 0.02057113683022605;
- -0.32471394771469786 0.4295719891811384 0.01872201874781426;
- -0.347149092726571 0.4026010250742786 0.022369089660714277;
- -0.3635390170080211 0.37415292304681513 0.025671314432171383;
- -0.3742393760147842 0.3457764845105525 0.02865266479348716;
- -0.3800621096770123 0.31860555955757813 0.031325752410159356;
- -0.39269541135392216 0.2188962027151091 0.03258569777778156;
- -0.39145308216679325 0.1937691388951771 0.03471143696114105;
- -0.3880119345885402 0.171349220288765 0.03661393416731571;
- -0.3830191997329326 0.15157634467357106 0.03831373113348574;
- -0.3769823877981445 0.13425557848329225 0.039836235108387456;
- -0.35514383707999975 0.0942343336397406 0.04952161544225744;
- -0.3477490228181278 0.08104440223464975 0.050723794597789085;
- -0.3401775362653594 0.06964193109114582 0.0517919222219017;
- -0.3325828482029597 0.05978311736608686 0.05273028845807096;
- -0.32506788814378285 0.05127786041217034 0.05356197088206576;
- -0.30127664757064254 0.03503792324857105 0.0678775597218983;
- -0.29389828176960936 0.028719164402623547 0.06849638363606865;
- -0.2867579056968465 0.02327696635356762 0.06903033183753615;
- -0.279878902965117 0.018597268896111088 0.06948001101246397;
- -0.2732639685923939 0.014579106100064064 0.06985564581182432;
- -0.25143317328935577 0.004822032764249745 0.08096437986103547;
- -0.24522909200643966 0.0018873197727133813 0.08119267602988196;
- -0.23928898621498146 -0.000608531122887676 0.08136448741577101;
- -0.23360561093639462 -0.0027289405875453327 0.0814753944747385;
- -0.22816865402914116 -0.004512956524485317 0.08153804920841505;
- -0.21234203920450526 -0.011413644583325671 0.0852674329374285;
- -0.20731416132016534 -0.012646855647744948 0.08522622899852404;
- -0.2025030171885313 -0.01365436394320526 0.08514312487442337;
- -0.19789976269436427 -0.014468226957282103 0.08501596072203135;
- -0.19348767693675864 -0.015105863083131995 0.08484912080149803;
- -0.18004901233725823 -0.02060449520344064 0.08340217879018821;
- -0.1759662862657398 -0.020951068437642564 0.08316118843675945;
- -0.17205156414511996 -0.021182166364363285 0.08288603181978693;
- -0.1682940386234932 -0.021310823181451173 0.08257708638661887;
- -0.16468683810346085 -0.021346310895505764 0.08223873732174773;
- -0.1543320368498933 -0.025660974285847696 0.07442424976309485;
- -0.15097888054040368 -0.025541687729640335 0.07402819847396758;
- -0.14775311478422373 -0.02536136401215251 0.0736086638129803;
- -0.14464992068219282 -0.02512728735566848 0.07316223230628852;
- -0.1416558613450808 -0.024845085523198057 0.07269211361342709;
- -0.1415623768665157 -0.028792559619746007 0.06345781418680149;
- -0.13878387444913906 -0.028431438277586155 0.06294422712493711;
- -0.13610076696164725 -0.028037829197217028 0.06241031547053575;
- -0.1335080193450605 -0.027616248159230982 0.061856689730120734;
- -0.1310011543407292 -0.027173070081896185 0.061282177796602645;
- -0.11649284418400539 -0.029718660679223928 0.05059493418875514;
- -0.11412747793329776 -0.029235169928036604 0.04998534694909494;
- -0.11183185659474973 -0.028739156807069538 0.049357459365379885;
- -0.10960785386698936 -0.028230136583549347 0.04871458263785479;
- -0.107449414764391 -0.027712732070757987 0.048054900238084765;
- -0.1010067742543605 -0.030035913148180264 0.03985652411759926;
- -0.0989658692805771 -0.029504447321812382 0.03916932532994344;
- -0.09698208078877331 -0.02896899150495436 0.038466386559246106;
- -0.09505063546052801 -0.028431606854815376 0.037751657245212324;
- -0.09317143312733227 -0.027892622486673277 0.03702228867717901;
- -0.08755719665655483 -0.029654460591863302 0.03165112419363048;
- -0.08576743409266635 -0.029114549477146912 0.03089813129635783;
- -0.08402030511855238 -0.028578111035422484 0.030133890557482588;
- -0.08231359723039965 -0.028044148889432248 0.029358424561623162;
- -0.08064580281614322 -0.027512635462536118 0.028571943924095334;
- -0.07562099754108047 -0.029225028527746767 0.026135747885363513;
- -0.07402205124189658 -0.02870096662135258 0.025329546723042964;
- -0.07245538189513678 -0.02818103553603966 0.024513810950172413;
- -0.07091914838573711 -0.027667562066487267 0.0236892820980254;
- -0.06941194567127179 -0.02715852307168577 0.022855649696120566;
- -0.06444725216331891 -0.028129807594017883 0.02241381197641579;
- -0.0629887732988159 -0.02763280189951615 0.021563370700178854;
- -0.06155686282996444 -0.027142510126807948 0.02070601768968898;
- -0.060147421316205596 -0.026656699587050477 0.019841340933161766;
- -0.05875974806303113 -0.026179197427987327 0.01896864012786145;
- -0.05474981164171225 -0.027817938578884576 0.020689703314815632;
- -0.05339834306170722 -0.02735214679579984 0.019804305041766553;
- -0.052064855674675614 -0.026893378665906336 0.0189127175609396;
- -0.05074918251335782 -0.02644100703367326 0.018015696025811878;
- -0.04944799401648106 -0.02599578821354754 0.01711307693411162;
- -0.04436520947052908 -0.02715696450606668 0.02003529214607189;
- -0.043089584107393296 -0.02672393174200551 0.01912180324645498;
- -0.04182530873924276 -0.026296220647751358 0.01820385010281347;
- -0.04057366905297342 -0.025876206610750012 0.01728182977712425;
- -0.039331241703650065 -0.02545942425212438 0.01635625450605495;
- -0.02725788215620618 -0.028444223181240496 0.02297009691214131;
- -0.026027590759992635 -0.02804148220354547 0.022036752187993003;
- -0.024805147240372426 -0.02764378253724356 0.02110101491862047;
- -0.023589347866205486 -0.02725091384718256 0.020161683409456097;
- -0.022379917120656196 -0.026863185354985736 0.019219647145726874;
- 0.0024611476896890623 -0.01530199690864104 0.0012834357703477152;
- 0.0036707313966874316 -0.014923349116622638 0.0003322506378020735;
- 0.0048766102964706085 -0.01454799372327185 -0.0006210748132951684;
- 0.0060798953671353006 -0.014175483649539933 -0.0015758044856345728;
- 0.007280016024428352 -0.013804886358427955 -0.0025320598985469427;
- 0.010063656512470718 -0.011858559656874148 -0.0006649670891605682;
- 0.0112610952310549 -0.01149290667393944 -0.0016238692554735288;
- 0.012457556187847591 -0.011129815323658804 -0.002582669900111043;
- 0.013653698635247962 -0.010768062445170068 -0.0035421759772075873;
- 0.014850558635080485 -0.010407794132715763 -0.004501417594322374] %
- Phase 3:
- Planet: Saturn
- V∞_in: [-1.288181310839508, 3.2263876606130104, -0.15259601195389053] km/s
- V∞_out: [0.48748673373831564, 0.4905484443382068, 0.477662291276709] km/s
- time of flight: 2.643066332108945e8 seconds
- arrival date: 2037-12-13T19:46:20.002
- thrust profile:
- [0.05787434800100662 0.06365972987059527 -0.004690937847485817;
- 0.058804962259307765 0.0631535995879651 -0.004740314009454671;
- 0.05983542454257423 0.06268609928169047 -0.004788047127416414;
- 0.060975433718026835 0.062268789932902475 -0.004835524503135446;
- 0.062225980024771796 0.06191324474149255 -0.004880865078012681;
- 0.06285801042135475 0.054884663480775316 -0.004819160140313061;
- 0.06433749312618502 0.054701052047457566 -0.004861768137879246;
- 0.06593351900262197 0.05462711861876099 -0.004903833691377991;
- 0.06764791684805822 0.05468390798107871 -0.004945075327582575;
- 0.06947857183941591 0.05489653022456621 -0.004980756541231241;
- 0.07158131197912566 0.05370903624290616 -0.004989096177551872;
- 0.07363165632802447 0.05431132268456726 -0.005020718083045292;
- 0.07577820988565821 0.05515538438056131 -0.005046798453303127;
- 0.0780073675020361 0.05627588650036708 -0.005067760214972139;
- 0.08029568923374143 0.05771722861801827 -0.005083195330091614;
- 0.08641404640859522 0.06540989432376075 -0.005159860038250109;
- 0.08872876215837687 0.06761198691109115 -0.005157363382001936;
- 0.09098645045139106 0.07027159619046919 -0.005144483070629835;
- 0.09311920513687692 0.07343855878826683 -0.005115355981375685;
- 0.0950435632074984 0.07715907512797704 -0.005070050038753845;
- 0.0908660761179946 0.08874696789878138 -0.004496676548803941;
- 0.09203697993375162 0.09364596073645495 -0.004406109321394195;
- 0.09260828024327085 0.09915333146965871 -0.004286107929658186;
- 0.09240637528208999 0.10523220896976805 -0.004130286277826924;
- 0.09123868316489085 0.11179453929787758 -0.003935854513014516;
- 0.07912465530851204 0.13596343038757475 -0.0028759951878351217;
- 0.07549824173301634 0.14287262484776403 -0.002591877765754475;
- 0.07044590636435358 0.1495962483655315 -0.002262681758105387;
- 0.06394805064460637 0.15579217045212151 -0.0018902947270343009;
- 0.056112548356250944 0.16109946342889161 -0.0014792330372583168;
- 0.01904757213758233 0.17335141612932936 0.0004365544649561594;
- 0.009384103454269783 0.17596362750956665 0.000882767166216666;
- -0.0006032423594752967 0.17701150517873598 0.0013263367626259854;
- -0.010480530421161873 0.17651567069549542 0.0017538590199095807;
- -0.019864131305118157 0.17461251767364694 0.0021520045503883646;
- -0.05544288687740597 0.16702351088257864 0.0039606324298478435;
- -0.06295277675747966 0.16300176340850153 0.004276097768694192;
- -0.06939936202391099 0.15831833114553567 0.004547844760238192;
- -0.07477991730883271 0.15321727880857572 0.004777783846248338;
- -0.07914692452014976 0.14790369716999832 0.004966416095723749;
- -0.09768056439601996 0.1315897001493129 0.0060927517267796195;
- -0.10025432283625794 0.12627019907626186 0.006210956306072848;
- -0.10211674495356184 0.12111183400400113 0.006300806993342294;
- -0.10337178322590118 0.11617115733330916 0.006365439420741851;
- -0.10411315654262526 0.11148534135157803 0.006408856802719585;
- -0.11145137599334029 0.09663646118392062 0.006968262186688305;
- -0.11139513964195542 0.0924950143823055 0.006977002971475946;
- -0.11104614609848756 0.08863309161697829 0.00697321899610817;
- -0.11045699644128014 0.08504405119167102 0.0069578095966956605;
- -0.10967309376541882 0.08171409692812766 0.006932896225461464;
- -0.11346215033922648 0.07153553263548147 0.007283062872687444;
- -0.11239133056124612 0.06868639268322956 0.007242651339214947;
- -0.11122068319797335 0.06605392786207011 0.007196147885643773;
- -0.10997182069294363 0.06362301141102655 0.007144906756191574;
- -0.10866203074565452 0.06137874243355965 0.007089031998008915;
- -0.10882247916215068 0.051286067449190516 0.007021353108173517;
- -0.1074314564672795 0.049376951298364384 0.006958826502473229;
- -0.10601734008274794 0.04761439023924965 0.006893783213155025;
- -0.10458839303537582 0.04598613649007138 0.006826025792342359;
- -0.10315143090380435 0.044482152407399424 0.006756833630724034;
- -0.10462193352254216 0.031820244798679787 0.006445645832376893;
- -0.10318382535379975 0.03054038003667393 0.006373182758224606;
- -0.10175112664140157 0.029356784730798346 0.006299584979370768;
- -0.10032722734085553 0.028260174799026126 0.006224819087912654;
- -0.09891385336534615 0.02724385790286855 0.006149345795101277;
- -0.093268498989721 0.00812297399147717 0.0052265797092424385;
- -0.09188304463066377 0.007256655005284251 0.005150213714500697;
- -0.09051260761340546 0.0064514301571631325 0.0050729858743302735;
- -0.08915836084794382 0.005702278227716097 0.004995363126314977;
- -0.08781997142598436 0.005004364824361484 0.004917333622293092;
- -0.06930476427073393 -0.011470924413190399 0.0037955243203862477;
- -0.06800277450362639 -0.012076207430019012 0.0037171110540640388;
- -0.06671770843946283 -0.012642113866850966 0.003638292302041609;
- -0.06544909624773501 -0.01317286805748239 0.003559164047728649;
- -0.06419717821147211 -0.013671059649300824 0.003479969719091455;
- -0.052308544348541604 -0.013794235723210233 0.003839052530209843;
- -0.05108670201612136 -0.014238447033006175 0.0037593114668918633;
- -0.04988039768593651 -0.014658240490643328 0.003679278438710183;
- -0.048688572914389106 -0.015056466003002617 0.003599331650257482;
- -0.047510999113210946 -0.015434518536486435 0.003519209787879629;
- -0.023101747816005425 -0.015798620815194387 0.01347655988233254;
- -0.021948370627499054 -0.016148031734147573 0.013396736522653932;
- -0.02080732325880399 -0.016482645463410973 0.013316856141104557;
- -0.019678039496320753 -0.016804022833411883 0.013236971265791304;
- -0.018560016398954694 -0.01711343885931475 0.013157167864616725;
- -0.027547965324032513 -0.0157650105890274 0.010572160103389905;
- -0.026450026136227312 -0.01605247950645985 0.010491180109355212;
- -0.025361034081685226 -0.01633189614286892 0.010410303278362336;
- -0.024279917610766172 -0.016604272353015467 0.010329402082475111;
- -0.02320596089521229 -0.016870405667174137 0.010248635610308603;
- -0.02493524974482041 -0.008758509250002357 -0.008449923618533303;
- -0.02387252199314902 -0.0090155341044443 -0.00852950239400513;
- -0.022814864964132365 -0.00926859385313271 -0.008609325377136852;
- -0.02176157874947707 -0.00951856095743065 -0.008689050009448928;
- -0.020712211472897882 -0.009766079471127388 -0.008768924102388106;
- -0.022316082420292004 -0.015432581100616084 -0.002713090916906717;
- -0.02127206654031124 -0.01567617264428185 -0.002793411190767065;
- -0.02022956859236421 -0.0159188548014709 -0.0028738271376681866;
- -0.01918789336871752 -0.016160901736099867 -0.002954272690873852;
- -0.018146303148503164 -0.016402883837149045 -0.003034785707982439] %
- Mass Used: 530.668253715296 kg
- Launch C3: 40.43861983890888 km²/s²
- ||V∞_in||: 3.4773947099827938 km/s
- \end{verbatim}
- % \input archive/best/long_mission
-
\end{document}
diff --git a/archive/EMMJS_2022-02-21T00:09:46.922/mission b/archive/EMMJS_2022-02-21T00:09:46.922/mission
new file mode 100644
index 0000000..9dd6322
--- /dev/null
+++ b/archive/EMMJS_2022-02-21T00:09:46.922/mission
@@ -0,0 +1,43 @@
+/home/connor/projects/thesis/archive/EMMJS_2022-02-21T00:09:46.922/mission---------------------------
+
+Spacecraft: mySat
+ dry_mass: 200.0 kg
+ specific impulse: 3200.0 kg/s
+ max_thrust: 0.00025 kN
+ num_thrusters: 1
+ duty_cycle: 1.0
+Launch Mass: 3500.0 kg
+Launch Date: 2024-12-30T12:47:20.643
+Launch V∞: [-0.8585858913059945, 5.43163312454597, -0.21719547468177308] km/s
+Phase 1:
+ Planet: Mars
+ V∞_in: [-2.5856773315583745, 2.4609561275200487, 0.7295849474445574] km/s
+ V∞_out: [0.6194643215165332, 3.2309327456082855, 1.5650004450735309] km/s
+ time of flight: 8.21340000011604e7 seconds
+ arrival date: 2027-08-08T03:47:20.643
+ thrust profile: [0.18708793577518806 0.5313802548498593 0.20444668942359182; -0.06350657961080429 0.7363728402067601 0.14591280353760663; -0.5915522558225289 0.7847434950188144 0.026651112465872404; -0.7542562554239148 0.7746896783865607 -0.1237392373650896; -0.7866125946706723 0.6465409532772359 -0.181921929015919; -0.6858815963696551 0.5510566480853467 -0.17868708799185337; -0.7594148821784542 0.7476306773551871 -0.11848928569756635; -0.8151098482182527 0.36136227575490387 -0.07980840799214974; -0.7401577445019838 -0.3095683994157624 0.03448173859798725; -0.6080245532967408 -0.0062406255431043806 0.06699727498541076; -0.43741470194423654 0.4730679368243737 0.0339770148854078; -0.18490322648998495 0.6426379090283426 -0.13028954478184662; 0.47254893347274096 0.7718760888207634 -0.1551009557943166; 0.5190900646391018 0.8753585966827419 -0.08611250544188818; -0.8855993838016015 0.8714238270161355 -0.08045710930215778; -0.8920483208731022 0.293979266137998 -0.1008142011864752; -0.8306385396979714 -0.8016800304530476 -0.043159471100223716; -0.6873350930031549 -0.7928126872627601 -0.02124194344649641; -0.07252547075225568 -0.7402808067151411 -0.037972567496587895; 0.6875211020649464 -0.5605655534502224 -0.13311603635138225] %
+Phase 2:
+ Planet: Mars
+ V∞_in: [1.1180674616624362, 4.566462924317003, 1.4292875212918483] km/s
+ V∞_out: [1.2322985249643665, 4.3433091442560645, 1.9398620619570397] km/s
+ time of flight: 6.237720000073707e7 seconds
+ arrival date: 2029-07-30T02:47:20.643
+ thrust profile: [0.5134182009488921 -0.31555188364900766 -0.055374803379038676; 0.5541643860557178 -0.10936971458523223 0.0007152948743699293; 0.5460385559170413 0.1530957100358743 0.05129389787053946; 0.46239205959354684 0.3541230771326737 0.0837352480895128; 0.2788761074398226 0.42401413505230207 0.09850448091487779; 0.0861711281015175 0.3771366798387737 0.08680527911942301; -0.0019793970085822893 0.2716311958716949 0.057899476045225384; -0.02438647027237024 0.1785456275302977 0.03356359507342958; -0.0460851975884734 0.13513224341732036 -0.0075472317756282775; -0.05051028634319777 0.13458427170959206 -0.056361751862420054; -0.059757482177925196 0.1155277298538939 -0.10695473795359935; -0.06308060055392012 0.08656293882186156 -0.14897716336334949; -0.060709990203287566 0.053581479830941116 -0.17880651728419109; -0.05399581102575967 0.019928172160662616 -0.19586000706017498; -0.04455159724330247 -0.012018413567160578 -0.20023332232742197; -0.03435074656279236 -0.04090428121904396 -0.19247441119311592; -0.02473533778237781 -0.06625905911693483 -0.17311082652131804; -0.017001426993727434 -0.08901248109333483 -0.14173368541223236; -0.01492966583523356 -0.11182046547456173 -0.09626664779027602; -0.02419545780950693 -0.1333838006203212 -0.04006325619060162] %
+Phase 3:
+ Planet: Jupiter
+ V∞_in: [1.0425933248043313, 9.761014809328087, -0.4217373616811835] km/s
+ V∞_out: [-9.345457932936196, -2.8317056643741645, 1.0859916102035037] km/s
+ time of flight: 2.6687520000038186e8 seconds
+ arrival date: 2038-01-12T22:47:20.643
+ thrust profile: [0.5628431836674769 0.47506205926522466 0.01494314598245946; 0.21922079590638668 0.04171051990989757 0.2601684761848701; 0.6837155305781677 0.5152279955386716 0.0013884449392686086; 0.11204795410174831 0.7194929944329855 -0.05582598783813832; -0.5437076444290293 -0.5507865585159418 0.05488176961971801; 0.3946907920290721 0.3553045067960959 -0.0009333191781478536; 0.6286527350564048 0.15811539062067848 0.0010593852696665147; 0.5244115910894975 0.5054313632357015 0.06734970951936782; 0.16947323257204125 -0.25342029906455155 0.041224265782725; 0.8184810643617919 0.6150207802837899 -0.0007312998992708492; -0.29400957489332924 0.5349618499607386 -0.0022793003860954167; -0.1813961648289101 0.39314833358368484 0.02463460931711496; -0.24079119813027802 0.22304978428092506 -0.0452896662834434; 0.0692938115099807 0.2174985639878364 -0.039548706790466105; -0.055133140610399506 -0.3023901220512069 -0.10050398589752965; 0.4405772740882254 -0.5714961854289461 0.010199886302938704; 0.5508873740881252 0.7290499177697591 -0.009434982976593908; -0.3394222681154409 0.47080066387267466 0.1182603751716305; -0.2838812749863273 -0.14939589284636337 0.05198509208395944; -0.08739787411558196 -0.48848414007930296 -0.019353445078579605] %
+Phase 4:
+ Planet: Saturn
+ V∞_in: [-0.12467502011680599, -0.21941891947700304, 1.1210048424481494] km/s
+ V∞_out: [-1.836549550435177, -1.0274249385233098, 0.15074571437514825] km/s
+ time of flight: 7.985519999979527e7 seconds
+ arrival date: 2040-07-25T04:47:19.643
+ thrust profile: [0.9015449791987612 -0.4135045547482888 -0.10493150953252237; 0.8281237041407337 -0.4199865377311189 -0.10871363555015406; 0.5865495210885522 -0.18888729221478687 -0.05376150916405686; 0.5536125796492021 -0.21710904361394967 -0.08288273835216246; 0.5226797275283863 -0.20596461753201076 -0.0816923569899679; 0.492356358914814 -0.1952282536684453 -0.07970598541671017; 0.4625023188662105 -0.18413996987155215 -0.07694322290334572; 0.4328711669558749 -0.17242291902938622 -0.07345517917885007; 0.4032239447511029 -0.16009204113840642 -0.06931306800923256; 0.3733858215361839 -0.14725361285778707 -0.06460897748518732; 0.3432505744179203 -0.13401143205085617 -0.05943463295918488; 0.3127627286749208 -0.12044462830785903 -0.053859778958435967; 0.2819001737662793 -0.10660684717642485 -0.04798048977198586; 0.2505956888019982 -0.09251745970413862 -0.04183914117857803; 0.21859841440967404 -0.07812693858807919 -0.03547943926291368; 0.18535858791227242 -0.06324296041863105 -0.02894834505985858; 0.15015303093566526 -0.047669454737263 -0.02232276989900783; 0.11229167669542692 -0.032210071289352 -0.015683269811579196; 0.07065162071067796 -0.01828153555341133 -0.0091544483837168; 0.02434581489906545 -0.005871680237325595 -0.002964910300780224] %
+
+Mass Used: 2233.4875953911933 kg
+Launch C3: 30.286982006636965 km²/s²
+||V∞_in||: 1.149060650991836 km/s
diff --git a/archive/EMMJS_2022-02-21T00:09:46.922/plot.html b/archive/EMMJS_2022-02-21T00:09:46.922/plot.html
new file mode 100644
index 0000000..7dd75a7
--- /dev/null
+++ b/archive/EMMJS_2022-02-21T00:09:46.922/plot.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/archive/EMMJS_2022-02-21T05:29:13.100/mission b/archive/EMMJS_2022-02-21T05:29:13.100/mission
new file mode 100644
index 0000000..3c9d103
--- /dev/null
+++ b/archive/EMMJS_2022-02-21T05:29:13.100/mission
@@ -0,0 +1,43 @@
+/home/connor/projects/thesis/archive/EMMJS_2022-02-21T05:29:13.100/mission---------------------------
+
+Spacecraft: mySat
+ dry_mass: 200.0 kg
+ specific impulse: 3200.0 kg/s
+ max_thrust: 0.00025 kN
+ num_thrusters: 1
+ duty_cycle: 1.0
+Launch Mass: 3500.0 kg
+Launch Date: 2024-08-13T21:37:18.613
+Launch V∞: [-1.6901867322791075, 5.280615079261146, -2.032003347094416] km/s
+Phase 1:
+ Planet: Mars
+ V∞_in: [-1.7461250307138758, 2.7488621400103193, 1.513513215864433] km/s
+ V∞_out: [1.2027265638973148, 3.3257187268143342, 0.6259917731579052] km/s
+ time of flight: 2.4051597753353596e7 seconds
+ arrival date: 2025-05-19T06:37:15.613
+ thrust profile: [-0.0017599460808520734 0.021939823461937586 -0.07860824048711292; 0.0038057476482388137 0.01317123732517402 -0.0925516242969978; -0.012111500711155023 0.009175602331176976 -0.10689934082194484; -0.0057786091800751385 0.004785500911625599 -0.11802387642642173; -0.014871641299940966 -0.005768817944699136 -0.12261622402101267; -0.004758948871952711 -0.0018517590809734616 -0.1312674708448622; 0.007589952947205352 -0.009441179217149816 -0.13265233200159024; 0.02957759948608535 0.012559088860055839 -0.1178470071574203; 0.029293581498403685 -0.0027693172907246807 -0.12277829992312493; 0.00043915486764571567 0.012598754358696054 -0.12458999384207707; 0.039545288569820244 0.03314430343814683 -0.10624529827972352; 0.03219377536903767 0.050819916158926205 -0.09961115577485845; 0.03399569316999455 0.04298795510617496 -0.09578630843591786; 0.030077287420831947 0.08313823965268496 -0.06933023697506474; 0.037127301703059834 0.09397497850832547 -0.052654905925240816; 0.022412917519582787 0.10765616559310794 -0.025717008847364307; 0.025327703848176397 0.11276690546887153 0.004843267678066204; 0.007650286567218721 0.11949746525926046 0.021216184066767087; -0.0038980974979574835 0.1248646921852295 0.028322916840977087; -0.019178665908750572 0.12278762564523467 0.04346269663142969] %
+Phase 2:
+ Planet: Mars
+ V∞_in: [2.043297951821988, 1.6820451775844232, 1.823788193968268] km/s
+ V∞_out: [0.4882307516881071, -1.2152266867358175, 2.9360573603089075] km/s
+ time of flight: 1.14134402513377e8 seconds
+ arrival date: 2028-12-30T06:37:17.613
+ thrust profile: [0.22291730975859356 0.5098248034605009 0.24720522565212524; -0.4469925923761469 -0.007661162151150529 -0.08117095118772306; -0.5525078400371499 -0.4741527168000471 -0.14631851618865835; 0.18040546081731915 -0.7460124551180657 -0.05214179589449932; 0.6953342845058121 -0.5331751797010302 0.16302204627027528; 0.6185646245916668 0.06025626130956423 0.30205781678787413; 0.44949631635524223 0.03858256309628191 0.34300503738181515; 0.32691770627377126 -0.3565152659582362 0.26806235880669743; 0.3909860773308049 -0.4856009661776308 -0.060179414964323774; 0.3979512624499183 -0.3974411990059185 -0.2619149915820402; 0.4866100975196277 -0.41623220426978347 -0.05594094246998931; 0.43622582167391594 -0.21713526052371673 0.29394158670200404; 0.20594952174764747 -0.4177558340479653 0.3892322018647292; 0.25453944143605217 -0.6261670137409058 0.3258204997833534; 0.5749031989207859 -0.6800207997886729 0.12429472580187996; 0.7530954315757951 -0.3098572647533813 -0.2144972990721993; 0.4851334634524593 0.64491549530751 -0.26752525551583867; -0.5764002596860117 0.3646707634147813 0.14796405075327934; -0.5901573878990791 -0.41314618778501866 0.3805666596159053; -0.42700527824297163 -0.6826390179287234 0.4045024615945392] %
+Phase 3:
+ Planet: Jupiter
+ V∞_in: [3.7114411433504815, -4.460792211249508, -1.1805018431500913] km/s
+ V∞_out: [1.7805895932237876, -4.309492902052931, 3.6498067710496795] km/s
+ time of flight: 1.6335000237429604e8 seconds
+ arrival date: 2034-03-04T21:37:19.613
+ thrust profile: [-0.5046672735197064 -0.7996955535271304 0.2112934255095142; 0.5077989036864389 -0.7649454581859021 0.20409797991337683; 0.5808566386587612 -0.6364303545112504 0.18542744111458456; 0.5006095090625132 -0.48372727317177533 0.13748541541649756; 0.36800706000490335 -0.4274801913323154 0.04508051614164652; 0.23616890612114982 -0.4106281022924214 -0.07422701918557366; -0.02614107297996989 -0.4044558701986192 -0.16223559260078177; -0.2964744410521455 -0.34839867086847304 -0.21078013212233546; -0.5176405945957604 -0.3288038834641507 -0.19405120809950877; -0.6330040108688543 -0.42206025464387953 -0.15342166355020417; -0.7099262633889031 -0.6237883136733828 -0.07027765831937338; -0.7822443063582115 -0.7257522470091892 0.046372365248012457; 0.15416780610066894 -0.8145688662272869 0.11743307333391405; 0.6452194124175534 -0.678910631324967 0.054691069558399794; 0.5771299498788154 -0.4641832360664856 0.018420229596808394; 0.4457565039423475 -0.3040316838235003 0.01783058099504133; 0.23801401595031418 -0.13216754190081506 0.010767856013003372; 0.2587404825219754 0.09782617488793967 0.003859597411132576; -0.08344625676841577 0.2827272664297725 -0.026493133998743063; -0.3933999656322405 0.24332107698735156 -0.027081715518899548] %
+Phase 4:
+ Planet: Saturn
+ V∞_in: [-0.0246480076721461, 0.06541562927953826, 0.07516568061471392] km/s
+ V∞_out: [-0.5848111974561183, 0.18686923783075082, -0.03206665093199944] km/s
+ time of flight: 2.1155400016049725e8 seconds
+ arrival date: 2040-11-16T10:37:19.613
+ thrust profile: [-0.1627110678115485 0.22700671143458248 0.029986080505317234; -0.16214080594693478 0.23967493565533463 0.08955363564847629; -0.1745196970984745 0.25483610546962543 0.12716395184957408; -0.1952524515982284 0.2505218299754148 0.17036723627980027; -0.21614749560569926 0.24089984374439646 0.19877853523817543; -0.22618695860284732 0.24715274229193332 0.2135402310441893; -0.33485154946340523 0.2613684298843818 0.23512617093629723; -0.3725246027720915 0.15599299255433202 0.25303578361261436; -0.36926821691311146 0.07153107899757735 0.26760363975946333; -0.35478356034012126 0.0018475578322651304 0.26116841888769105; -0.3312470217412482 -0.04985111461820565 0.25331488736816143; -0.30012674484829766 -0.07703821603688417 0.24136867711498777; -0.2634342927812894 -0.096191631413734 0.22794344262127944; -0.22575690873415977 -0.09889406062182618 0.199660205553818; -0.1887069515840364 -0.08881084245979123 0.17583719753517285; -0.14879690447972715 -0.07592681830346394 0.15115513011894557; -0.11724449357420508 -0.058526105092731553 0.11562822849360169; -0.08722592614665677 -0.03788553733718045 0.08344591269592441; -0.05347117156910084 -0.019641127134930575 0.052723601226170855; -0.024200395926615395 -0.005375747843091736 0.013406461289335841] %
+
+Mass Used: 2059.4133968003325 kg
+Launch C3: 34.87066440789543 km²/s²
+||V∞_in||: 0.10264798282731782 km/s
diff --git a/archive/EMMJS_2022-02-21T05:29:13.100/plot.html b/archive/EMMJS_2022-02-21T05:29:13.100/plot.html
new file mode 100644
index 0000000..8958a9f
--- /dev/null
+++ b/archive/EMMJS_2022-02-21T05:29:13.100/plot.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/julia/make_plots.jl b/julia/make_plots.jl
index 7bc4409..83f42eb 100644
--- a/julia/make_plots.jl
+++ b/julia/make_plots.jl
@@ -3,18 +3,20 @@ using PlotlyJS: savefig
a = ∛(Sun.μ * ( year/2π )^2 )
start = [ oe_to_xyz([ a, 0., 0., 0., 0., 0.5 ], Sun.μ); 10_000. ]
-path = Thesis.prop(zeros(100,3), start, bepi, year)[1]
+path = Thesis.prop(zeros(100,3), start, bepi, year)
p = Thesis.plot([path],
- colors=["#0FF"],
- title="Single LaGuerre-Conway-Propagated Orbit")
+ colors=["#F0F"],
+ title="Single LaGuerre-Conway-Propagated Orbit",
+ mode="light")
savefig(p, "LaTeX/fig/laguerre_plot.png")
t = 5year
spiral_sc = Sc("test", 1000., 2000., 0.0005, 50, 0.9)
start = [ oe_to_xyz([ 0.7a, 0.05, 0.1, 0., 0., 0.5 ], Sun.μ); 100_000. ]
spiral_thrust = spiral(0.2, 100_000, start, spiral_sc, t)
-spiral_path = Thesis.prop(spiral_thrust, start, spiral_sc, t)[1]
+spiral_path = Thesis.prop(spiral_thrust, start, spiral_sc, t)
p = Thesis.plot([spiral_path],
- colors=["#0FF"],
- title="Spiral Orbit")
+ colors=["#F0F"],
+ title="Spiral Orbit",
+ mode="light")
savefig(p, "LaTeX/fig/spiral_plot.png")
diff --git a/julia/src/utilities/conversions.jl b/julia/src/utilities/conversions.jl
index a545cb3..6e7a3a9 100644
--- a/julia/src/utilities/conversions.jl
+++ b/julia/src/utilities/conversions.jl
@@ -132,7 +132,7 @@ function conv_T(Tm::Vector{Float64},
si*sθ si*cθ ci ]
Tx, Ty, Tz = DCM*thrust_rθh
- state = prop_one([Tx, Ty, Tz], state, craft, time/n, primary)
+ state = prop([Tx Ty Tz], state, craft, time/n, primary=primary)[2,:]
push!(Txs, Tx)
push!(Tys, Ty)
push!(Tzs, Tz)
diff --git a/julia/src/utilities/plotting.jl b/julia/src/utilities/plotting.jl
index b26c935..d9b8cfd 100644
--- a/julia/src/utilities/plotting.jl
+++ b/julia/src/utilities/plotting.jl
@@ -286,7 +286,7 @@ function plot(paths::Vector{Matrix{Real}};
traces = [ trace... ]
for i = 2:length(paths)
color = colors === nothing ? random_color() : colors[i]
- trace, new_limit = gen_plot(paths[i],label=labels[i],color=color,markers=markers)
+ trace, new_limit = gen_plot(paths[i],label=labels[i],color=colors[i],markers=markers)
push!(traces, trace...)
limit = max(limit, new_limit)
end
diff --git a/julia/src/utilities/propagator.jl b/julia/src/utilities/propagator.jl
index feb3d7e..d2fa9fb 100644
--- a/julia/src/utilities/propagator.jl
+++ b/julia/src/utilities/propagator.jl
@@ -20,7 +20,7 @@ function prop(ΔVs::AbstractArray,
time::Real;
primary::Body=Sun)
- size(ΔVs)[2] == 3 || throw(ΔVsize_Error(size(ΔVs)))
+ size(ΔVs)[2] == 3 || throw(ΔVsize_Error(size(ΔVs)[1]))
n = size(ΔVs)[1]
output = Array{Real,2}(undef,n+1,7)
current = copy(state)
diff --git a/notes.md b/notes.md
index d32d9ec..36894cc 100644
--- a/notes.md
+++ b/notes.md
@@ -52,16 +52,17 @@ Todo:
- investigate different C3 launch capabilites vs. sc mass for comparison
## 2020-02-25
-- In the introduction, include some context for the existing literature. Compare to what people have
+- [x] In the introduction, include some context for the existing literature. Compare to what people have
done before and explain the goal in comparison to how it's based on someone else's, as well as
the places where I've done things differently than the source work.
-- Red/Green colorblindness problem in the plots
-- Move table 7.1 to the beginning of Section 6 when the trajectories are introduced.
-- Double check that the math is in the definitions of key points, for instance the cost function and
+- [ ] Red/Green colorblindness problem in the plots
+- [x] Move table 7.1 to the beginning of Section 6 when the trajectories are introduced.
+- [x] Double check that the math is in the definitions of key points, for instance the cost function and
the constraints to the NLP solver
-- Double check that SPICE is being mentioned
-- Include information about coordinate frames being used by SPICE
-- Include how mass is being decremented in the SFT propagator section
-- Think about how to include plots that show the MBH algorithm jumping through the space and looking
+- [x] Double check that SPICE is being mentioned
+- [x] Include information about coordinate frames being used by SPICE
+- [x] Include how mass is being decremented in the SFT propagator section
+- [ ] Think about how to include plots that show the MBH algorithm jumping through the space and looking
at various basins.
-- Submit thesis defense form
+- [ ] Include some plots of the thrust vectors rather than the raw data in the appendix
+- [ ] Submit thesis defense form