Open
Description
I am comparing orbital elements before and after creation of an EarthSatellite from an OMM, and am getting slightly different values. I expect this is benign, but am not sure what's going on.
Here's a quick example script that shows what's happening:
from skyfield.api import EarthSatellite, load
from skyfield.elementslib import osculating_elements_of
ts = load.timescale()
omm_data = {
'OBJECT_NAME': 'TEST SAT',
'OBJECT_ID': '2024-001A',
'NORAD_CAT_ID': '12345',
'EPOCH': '2024-01-01T00:00:00.000000',
'MEAN_MOTION': 15.5, # rev/day
'ECCENTRICITY': 0.01, # unitless
'INCLINATION': 51.6, # degrees
'RA_OF_ASC_NODE': 180.0, # degrees
'ARG_OF_PERICENTER': 0.0, # degrees
'MEAN_ANOMALY': 0.0, # degrees
'BSTAR': 0.0, # 1/earth radius
'MEAN_MOTION_DOT': 0.0, # rev/day^2
'MEAN_MOTION_DDOT': 0.0, # rev/day^3
'CLASSIFICATION_TYPE': 'U',
'EPHEMERIS_TYPE': '0',
'ELEMENT_SET_NO': '999',
'REV_AT_EPOCH': '0',
}
sat = EarthSatellite.from_omm(ts, omm_data)
pos = sat.at(sat.epoch)
osc_elements = osculating_elements_of(pos) # ICRF frame
print(sat.epoch.utc)
print(osc_elements.eccentricity, omm_data['ECCENTRICITY'])
print(osc_elements.inclination.degrees, omm_data['INCLINATION'])
print(osc_elements.longitude_of_ascending_node.degrees, omm_data['RA_OF_ASC_NODE'])
print(osc_elements.argument_of_periapsis.degrees, omm_data['ARG_OF_PERICENTER'])
print(osc_elements.mean_anomaly.degrees, omm_data['MEAN_ANOMALY'])
# All values are at least somewhat different.
'''
CalendarTuple(year=2024, month=1, day=1, hour=0, minute=0, second=0.0)
0.010881909723842008 0.01
51.62267299309298 51.6
179.58708119720018 180.0
4.705040984693307 0.0
355.46545250154924 0.0
'''
I thought this might have to do with the frame conversion between TEME and ICRF, but when I try to check it the results are very roughly the same as before.
from skyfield.sgp4lib import TEME
osc_elements = osculating_elements_of(pos, reference_frame=TEME.rotation_at(sat.epoch)) # TEME frame
'''
CalendarTuple(year=2024, month=1, day=1, hour=0, minute=0, second=0.0)
0.010881909723847644 0.01
51.61995468574305 51.6
179.99991187961967 180.0
4.535383674828455 0.0
355.46545250155054 0.0
'''