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.RTN)
dcm = sk.frametransform.to_gcrf(sk.frame.NTW, pos, vel)
Supported values¶
Earth and celestial frames¶
| Name | Type | Description |
|---|---|---|
GCRF |
Inertial | Geocentric Celestial Reference Frame — the default inertial frame |
ICRF |
Inertial | International Celestial Reference Frame — same axes as GCRF, origin at the solar-system barycenter (frame transforms rotate only; they do not shift the origin) |
EME2000 |
Inertial | Earth Mean Equator and Equinox of J2000.0 (the J2000 frame) |
TEME |
Quasi-inertial | True Equator Mean Equinox (SGP4 output) |
CIRS |
Intermediate | Celestial Intermediate Reference System |
TIRS |
Intermediate | Terrestrial Intermediate Reference System |
ITRF |
Earth-fixed | International Terrestrial Reference Frame |
Satellite frames¶
| Name | Description |
|---|---|
RTN |
Radial / Transverse / Normal — R along position (CCSDS OEM / CDM convention) |
RSW |
Alias for RTN — Vallado's name for the same frame |
RIC |
Alias for RTN — older NASA / Clohessy-Wiltshire name |
NTW |
Normal / Tangent / Cross-track — T along velocity |
LVLH |
Local Vertical / Local Horizontal — RTN relabeled (x = T, y = −N, z = −R) |
RTN follows the CCSDS Orbit Data Messages convention (CCSDS 502.0-B-3), RSW and NTW are defined in Vallado (2013), §3.3, and RIC descends from Clohessy & Wiltshire (1960).
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.
The Coordinate Frames tutorial describes both groups in more detail, Frame Transforms covers which function rotates between which frames, and Theory: Maneuver Coordinate Frames compares the satellite frames for maneuvers and covariance.
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.RIC 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.