Coordinate Reference Frames¶
The satkit.frame enum identifies a coordinate reference frame throughout
the satkit API — most visibly in the maneuver, thrust, uncertainty, and
frame-transform functions. Frames are passed by value, e.g.:
import satkit as sk
sat.add_maneuver(t_burn, [0, 10, 0], frame=sk.frame.RTN)
sat.set_pos_uncertainty(sigma, frame=sk.frame.LVLH)
dcm = sk.frametransform.to_gcrf(sk.frame.NTW, pos, vel)
Supported values¶
| Name | Type | Description |
|---|---|---|
GCRF |
Inertial | Geocentric Celestial Reference Frame — the default inertial frame |
ITRF |
Earth-fixed | International Terrestrial Reference Frame |
TEME |
Quasi-inertial | True Equator Mean Equinox (SGP4 output) |
CIRS |
Intermediate | Celestial Intermediate Reference System |
TIRS |
Intermediate | Terrestrial Intermediate Reference System |
EME2000 |
Inertial | Earth Mean Equator 2000 (J2000 inertial) |
ICRF |
Inertial | International Celestial Reference Frame |
LVLH |
Satellite-local | Local Vertical / Local Horizontal (z = nadir) |
RTN |
Satellite-local | Radial / Tangential / Normal (CCSDS OEM convention) |
RSW |
Alias | Alias for RTN — Vallado's name for the same frame |
RIC |
Alias | Alias for RTN — older NASA / Clohessy-Wiltshire name |
NTW |
Satellite-local | Normal / Tangent / Cross-track (velocity-aligned) |
frame.RSW and frame.RIC are class-level aliases that resolve to the
same enum value as frame.RTN, so sk.frame.RSW == sk.frame.RTN is
True and all three can be used interchangeably.
See the Theory: Maneuver Coordinate Frames guide for a side-by-side comparison of the four satellite-local frames (RTN, NTW, LVLH, GCRF) and guidance on when to use each.
Enum reference¶
frame
¶
Coordinate reference frame
Used to specify the frame for thrust vectors and maneuvers.
Available frames:
GCRF- Geocentric Celestial Reference Frame (inertial)ITRF- International Terrestrial Reference Frame (Earth-fixed)TEME- True Equator Mean Equinox (SGP4 output frame)CIRS- Celestial Intermediate Reference SystemTIRS- Terrestrial Intermediate Reference SystemEME2000- Earth Mean Equator 2000ICRF- International Celestial Reference FrameLVLH- Local Vertical Local Horizontal: z = -r (nadir), y = -h (opposite angular momentum), x completes right-handed systemRTN- Radial / Tangential / Normal (CCSDS OEM convention; also exposed asRSWandRICaliases for Vallado / older-NASA naming): R = radial (outward), T = tangential (in-track), N = normal (cross-track)NTW- Normal-to-velocity / Tangent / Cross-track (velocity-aligned): T = along velocity, N = in-plane perpendicular to v, W = cross-track
Example:
import satkit as sk
# Use RTN frame for in-track thrust (RSW and RIC are aliases and work too)
t = sk.thrust.constant([0, 1e-4, 0], t0, t1, frame=sk.frame.RTN)
GCRF
class-attribute
¶
Geocentric Celestial Reference Frame (inertial)
ITRF
class-attribute
¶
International Terrestrial Reference Frame (Earth-fixed)
TEME
class-attribute
¶
True Equator Mean Equinox
CIRS
class-attribute
¶
Celestial Intermediate Reference System
TIRS
class-attribute
¶
Terrestrial Intermediate Reference System
EME2000
class-attribute
¶
Earth Mean Equator 2000
ICRF
class-attribute
¶
International Celestial Reference Frame
LVLH
class-attribute
¶
Local Vertical Local Horizontal — the classical crewed-spaceflight / GN&C body-pointing frame used on the ISS and most Earth-pointing vehicles.
- z axis: -r (nadir, pointing toward Earth center)
- y axis: -h (opposite orbital angular momentum, h = r × v)
- x axis: completes right-handed system (approximately velocity direction for circular orbits)
Geometrically spans the same orbital plane as frame.RTN but with
different labels and sign conventions:
- LVLH +x = RTN +T (in-track; perpendicular to R, not strictly along v)
- LVLH -z = RTN +R (radial outward)
- LVLH -y = RTN +N (cross-track)
Supported as a maneuver frame — useful when porting GN&C code written
in LVLH body-frame conventions. For eccentric orbits, note that LVLH
+x is perpendicular to the position vector, not the velocity vector;
for strict along-velocity semantics use frame.NTW instead.
RTN
class-attribute
¶
Radial / Tangential / Normal — CCSDS OEM/OMM/ODM convention.
Also known as RSW (Vallado) or RIC (older NASA / Clohessy-
Wiltshire literature). The three names refer to the same axes;
Python-level aliases frame.RSW and frame.RTN resolve to the
same enum value as frame.RTN, so all three compare equal and can
be used interchangeably.
- R (radial): unit vector along position (outward from Earth center)
- T (tangential / in-track): perpendicular to R in the orbit plane,
in the prograde direction. Not strictly along velocity for
eccentric orbits — for "along velocity" semantics use
frame.NTWinstead. - N (normal / cross-track): along angular momentum (h = r × v)
This is the standard choice for CCSDS OEM/OMM covariance messages, for relative-motion (Hill / Clohessy-Wiltshire) equations, and for radial/normal burn components whose physical meaning is tied to the position vector.
RSW
class-attribute
¶
Alias for frame.RTN — Vallado's name for the same orbital
frame (Radial / S=Ŵ×R̂ / W=ĥ). frame.RSW == frame.RTN is True.
See [RTN][frame.RTN] for the axis definition.
RIC
class-attribute
¶
Alias for frame.RTN — the older NASA / Clohessy-Wiltshire name
(Radial / In-track / Cross-track). frame.RIC == frame.RTN is
True. Kept for backward compatibility with code written against
earlier satkit versions where RIC was the canonical name. See
[RTN][frame.RTN] for the axis definition.
NTW
class-attribute
¶
Velocity-aligned orbital frame (Vallado §3.3).
- N (in-plane normal to velocity): T̂ × Ŵ. For a circular orbit this coincides with the outward radial direction; for eccentric orbits it leans off-radial by the flight-path angle.
- T (tangent): v̂, unit velocity vector
- W (cross-track): (r × v) / |r × v|, same as RTN's N axis
The natural frame for prograde/retrograde maneuvers: a pure +T delta-v of magnitude Δv adds exactly Δv to |v|, regardless of orbit eccentricity.