Circular Restricted 3 Body Problem

class otp.circularrestricted3body.CR3BPProblem

Bases: otp.Problem

The circular restricted three body problem, following the formulation presented in [Spr21].

The system represents the evolution of an object of negligent mass near two large-mass objects that orbit each other a constant distance apart. The ratio of the mass of the first object to the sum of the total mass of the system is represented by the non-dimensional constant \(\mu\). The reference frame of the system is fixed to the rotationg frame of the two objects, meaning that the objects have fixed constant positions of \([-\mu, 0, 0]^T\) for the first object, and \([1 - \mu, 0, 0]^T\) for the second object. The evolution of the third object of negligent mass is given by the following second-order non-dimensionalized differential equation:

\[\begin{split} x'' &= 2y' + \frac{\partial U}{\partial x},\\ y'' &= -2x' + \frac{\partial U}{\partial y},\\ z'' &= \frac{\partial U}{\partial z}, \end{split}\]

where the energy and distances are defined as,

\[\begin{split} U &= \frac{1}{2} (x^2 + y^2) + \frac{1 - \mu}{d} + \frac{\mu}{r},\\ d &= \sqrt{(x + \mu)^2 + y^2 + z^2},\\ r &= \sqrt{(x - 1 + \mu)^2 + y^2 + z^2}, \end{split}\]

and where the system is converted to a first order differential equation in six variables in the standard fashion as,

\[\begin{split} x' = v_x,\\ y' = v_y,\\ z' = v_z,\\ v_x' = x'',\\ v_y' = y'',\\ v_z' = z'', \end{split}\]

where the new variables \(v_x\), \(v_y\), and \(v_z\) represent the velocity vector.

The distances \(d\) and \(r\) can cause numerical instability as they approach zero, thus a softening factor of \(s^2\) is typically added under both of the square-roots of the distances \(d\) and \(r\).

When the object under consideration is on an orbit that is co-planar to the orbit of the two other objects, then the system of equations can reduce by two dimensions, removing the \(z''\) and \(z'\) terms.

The system of equations is energy-preserving, meaning that the Jacobi constant of the system,

\[ J = 2U - v_x^2 - v_y^2 - v_z^2, \]

is preserved throughout the evolution of the equations, though this is typically not true numerically. The Jacobi constant is provided as a function.

For state estimation purposes a radar measurement is also provided,

\[\begin{split} h(x, y, z, v_x, v_y, v_z) = \begin{bmatrix} \sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}\\ \frac{(x - s_x) \cdot v_x + (y - s_y) \cdot v_y + (z - s_z) \cdot v_z} {\sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}}\\ \tan^{-1} \frac{y}{x + \mu}\\ \tan^{-1} \frac{z}{\sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}} \end{bmatrix} \end{split}\]

where \(s_x\), \(s_y\), and \(s_z\) are the locations of the radar sensor, the first term is the range to the object from the sensor, the second term is the rate of change of the range (range-rate), and the third and fourth terms are the two angles the radar must be pointing. In the planar case, the fourth term is absent.

Notes

Type

ODE

Number of Variables

4 for planar or 6 for non-planar

Stiff

no

Example

>>> problem = otp.circularrestricted3body.presets.HaloOrbit('OrbitType', 'L2', 'Index', 10);
>>> sol = model.solve();
>>> problem.plotPhaseSpace(sol);
Constructor Summary
CR3BPProblem(timeSpan, y0, parameters)

Create a CR3BP problem object.

Parameters:

Parameters

class otp.circularrestricted3body.CR3BPParameters

Bases: otp.Parameters

Parameters for the CR3BP problem.

Constructor Summary
CR3BPParameters(varargin)

Create a CR3BP parameters object.

Parameters:

varargin – A variable number of name-value pairs. A name can be any property of this class, and the subsequent value initializes that property.

Property Summary
Mu

Relative mass of the system.

SoftFactor

A factor to avoid singularity when computing distances.

Presets

class otp.circularrestricted3body.presets.HaloOrbit

Bases: otp.circularrestricted3body.CR3BPProblem

This preset builds a halo orbit around the Moon in the Earth-Moon system preset for the CR3BP based on a table of reference initial conditions and periods. There are four possible different orbits given by this preset, \(L_2\), \(P2HO_1\), \(P2HO_2\), \(P4HO_1\), and \(P4HO_2\). The tables contain \(20\) entries, and thus there are \(100\) different possible orbits given by this preset. The tables of \(L_2\) halo orbits are given as Table A.1–A.5 on pages 218–222 of [Spr21].

Constructor Summary
HaloOrbit(varargin)

Create the NRHO CR3BP problem object.

Parameters:
  • OrbitType (string) –

    One of the following:
    1. ’L2’ for the L2 Orbit family (default)

    2. ’P2HO1’ for the period doubling halo orbit of type 1

    3. ’P2HO2’ for the period doubling halo orbit of type 2

    4. ’P4HO1’ for the period quadrupling halo orbit of type 1

    5. ’P4HO2’ for the period quadrupling halo orbit of type 2

  • Index (numeric(1, 1)) – An integer index between 1 and 20.

  • Corrected (boolean) – True (default) uses a modified version to better work with the physical constants and matlab time integrators. False uses the original table from [Spr21].

class otp.circularrestricted3body.presets.CircularEarthOrbit

Bases: otp.circularrestricted3body.CR3BPProblem

This preset builds a circular earth orbit in CR3BP based on the equations derived in [She20].

Constructor Summary
CircularEarthOrbit(varargin)

Create the CircularEarthOrbit CR3BP problem object.

Parameters:

OrbitalRadius (numeric(1, 1)) – The radius of the orbit above Earth’s surface in km. The default radius is 340 km, which is approximately where the ISS is/was located.

class otp.circularrestricted3body.presets.Canonical

Bases: otp.circularrestricted3body.CR3BPProblem

A trivial preset with a stable oscillating orbit around a lagrange point.

Constructor Summary
Canonical(varargin)

Create the Canonical CR3BP problem object.

class otp.circularrestricted3body.presets.Arenstorf

Bases: otp.circularrestricted3body.CR3BPProblem

One period of a satellite moving in an Earth-Moon system on a planar orbit. The original orbit was derived in [Are63] for the planar circular restricted three body problem, and the setting from which this preset is derived is taken form pages 129–130 of [HNW93].

Constructor Summary
Arenstorf(varargin)

Create the Arenstorf CR3BP problem object.