Skip to content

ECI-ROE

ECI to Quasi-Nonsingular Relative Orbital Elements (ROE) conversions.

Provides direct transformations between Earth-Centered Inertial (ECI) state vectors and Relative Orbital Elements (ROE), combining the ECI↔KOE and OE↔ROE transformations for convenience.

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

state_eci_to_roe(x_chief, x_deputy, use_degrees=False)

Compute Relative Orbital Elements (ROE) from chief and deputy ECI states.

Converts both ECI state vectors to Keplerian orbital elements, then computes the quasi-nonsingular Relative Orbital Elements between them.

Parameters:

Name Type Description Default
x_chief ArrayLike

6-element ECI state of the chief satellite [x, y, z, vx, vy, vz]. Units: m, m/s.

required
x_deputy ArrayLike

6-element ECI state of the deputy satellite [x, y, z, vx, vy, vz]. Units: m, m/s.

required
use_degrees bool

If True, 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.coordinates import state_koe_to_eci
from astrojax.relative_motion import state_eci_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])
x_c = state_koe_to_eci(oe_c, use_degrees=True)
x_d = state_koe_to_eci(oe_d, use_degrees=True)
roe = state_eci_to_roe(x_c, x_d, use_degrees=True)
roe.shape
References

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

state_roe_to_eci(x_chief, roe, use_degrees=False)

Compute deputy ECI state from chief ECI state and Relative Orbital Elements.

Converts the chief ECI state to Keplerian orbital elements, applies the ROE to obtain deputy orbital elements, then converts back to an ECI state vector.

Parameters:

Name Type Description Default
x_chief ArrayLike

6-element ECI state of the chief satellite [x, y, z, vx, vy, vz]. Units: m, m/s.

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 ROE components as degrees.

False

Returns:

Type Description
Array

6-element ECI state of the deputy satellite [x, y, z, vx, vy, vz] in m and m/s.

Examples:

import jax.numpy as jnp
from astrojax.constants import R_EARTH
from astrojax.coordinates import state_koe_to_eci
from astrojax.relative_motion import state_roe_to_eci
oe_c = jnp.array([R_EARTH + 700e3, 0.001, 97.8, 15.0, 30.0, 45.0])
x_c = state_koe_to_eci(oe_c, use_degrees=True)
roe = jnp.array([0.000142857, 0.05, 0.0005, -0.0003, 0.01, -0.02])
x_d = state_roe_to_eci(x_c, roe, use_degrees=True)
x_d.shape
References

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