Skip to content

OE-ROE

Keplerian orbital elements to Quasi-Nonsingular Relative Orbital Elements (ROE) conversions.

Provides transformations between chief/deputy Keplerian orbital elements [a, e, i, RAAN, omega, M] and Quasi-Nonsingular Relative Orbital Elements [da, dλ, dex, dey, dix, diy].

The ROE vector components are:

Index Element Units
0 da — relative semi-major axis dimensionless
1 — relative mean longitude rad (or deg)
2 dex — relative eccentricity x-component dimensionless
3 dey — relative eccentricity y-component dimensionless
4 dix — relative inclination x-component rad (or deg)
5 diy — relative inclination y-component rad (or deg)
References
  1. Sullivan, J. "Nonlinear Angles-Only Orbit Estimation for Autonomous Distributed Space Systems", 2020.

state_oe_to_roe(oe_chief, oe_deputy, use_degrees=False)

Compute Relative Orbital Elements (ROE) from chief and deputy orbital elements.

Converts the Keplerian orbital elements of a chief and deputy satellite pair into quasi-nonsingular Relative Orbital Elements.

Parameters:

Name Type Description Default
oe_chief ArrayLike

Chief satellite orbital elements [a, e, i, RAAN, omega, M]. Semi-major axis in m, angles in rad (or deg if use_degrees=True).

required
oe_deputy ArrayLike

Deputy satellite orbital elements [a, e, i, RAAN, omega, M]. Semi-major axis in m, angles in rad (or deg if use_degrees=True).

required
use_degrees bool

If True, interpret angular inputs as degrees and return angular ROE components in degrees.

False

Returns:

Type Description
Array

Relative Orbital Elements [da, dλ, dex, dey, dix, diy]. da is dimensionless, dex/dey are dimensionless, /dix/diy are in rad (or deg).

Examples:

import jax.numpy as jnp
from astrojax.constants import R_EARTH
from astrojax.relative_motion import state_oe_to_roe
oe_c = jnp.array([R_EARTH + 700e3, 0.001, 97.8, 15.0, 30.0, 45.0])
oe_d = jnp.array([R_EARTH + 701e3, 0.0015, 97.85, 15.05, 30.05, 45.05])
roe = state_oe_to_roe(oe_c, oe_d, use_degrees=True)
roe.shape
References

Sullivan, J. "Nonlinear Angles-Only Orbit Estimation for Autonomous Distributed Space Systems", 2020.

state_roe_to_oe(oe_chief, roe, use_degrees=False)

Compute deputy orbital elements from chief OE and Relative Orbital Elements.

Inverts the ROE transformation to recover the deputy satellite's Keplerian orbital elements given the chief's elements and the ROE.

Parameters:

Name Type Description Default
oe_chief ArrayLike

Chief satellite orbital elements [a, e, i, RAAN, omega, M]. Semi-major axis in m, angles in rad (or deg if use_degrees=True).

required
roe ArrayLike

Relative Orbital Elements [da, dλ, dex, dey, dix, diy]. da is dimensionless, dex/dey are dimensionless, /dix/diy are in rad (or deg if use_degrees=True).

required
use_degrees bool

If True, interpret angular inputs as degrees and return angular elements in degrees.

False

Returns:

Type Description
Array

Deputy orbital elements [a, e, i, RAAN, omega, M]. Semi-major axis in m, angles in rad (or deg).

Examples:

import jax.numpy as jnp
from astrojax.constants import R_EARTH
from astrojax.relative_motion import state_oe_to_roe, state_roe_to_oe
oe_c = jnp.array([R_EARTH + 700e3, 0.001, 97.8, 15.0, 30.0, 45.0])
oe_d = jnp.array([R_EARTH + 701e3, 0.0015, 97.85, 15.05, 30.05, 45.05])
roe = state_oe_to_roe(oe_c, oe_d, use_degrees=True)
oe_d_recovered = state_roe_to_oe(oe_c, roe, use_degrees=True)
oe_d_recovered.shape
References

Sullivan, J. "Nonlinear Angles-Only Orbit Estimation for Autonomous Distributed Space Systems", 2020.