Attitude Ephemeris Message (AEM)¶
- class ccsds_ndm.AdmHeader(creation_date, originator, classification=None, message_id=None, comment=None)¶
Represents the admHeader complex type from the XSD.
- classification¶
User-defined free-text message classification/caveats of this ADM. It is recommended that selected values be pre-coordinated between exchanging entities by mutual agreement.
Examples: SBU, ‘Operator-proprietary data; secondary distribution not permitted’
- Type:
Optional[str]
- comment¶
User-defined comments. (See 7.8 for formatting rules.)
Examples: This is a comment
- creation_date¶
File creation date/time in UTC. (For format specification, see 6.8.9.)
Examples: 2001-11-06T11:17:33, 2002-204T15:56:23Z
- Type:
- message_id¶
ID that uniquely identifies a message from a given originator. The format and content of the message identifier value are at the discretion of the originator.
Examples: APM_201113719185, ABC-12_34
- Type:
Optional[str]
- originator¶
Creating agency or operator. Select from the accepted set of values indicated in annex B, subsection B1 from the ‘Abbreviation’ column (when present), or the ‘Name’ column when an Abbreviation column is not populated. If desired organization is not listed there, follow procedures to request that originator be added to SANA registry.
Examples: CNES, ESOC, GSFC, GSOC, JPL, JAXA, INTELSAT, USAF, INMARSAT
- Type:
- class ccsds_ndm.Aem(header, segments)¶
Attitude Ephemeris Message (AEM).
An AEM specifies the attitude state of a single object at multiple epochs, contained within a specified time range. The AEM is suited to interagency exchanges that involve automated interaction and require higher fidelity or higher precision dynamic modeling than is possible with the APM.
The AEM allows for dynamic modeling of any number of torques (solar pressure, atmospheric torques, magnetics, etc.). It requires the use of an interpolation technique to interpret the attitude state at times different from the tabular epochs.
- static from_file(path, format=None)¶
- static from_str(data, format=None)¶
- header¶
Attitude Ephemeris Message (AEM).
An AEM specifies the attitude state of a single object at multiple epochs, contained within a specified time range. The AEM is suited to interagency exchanges that involve automated interaction and require higher fidelity or higher precision dynamic modeling than is possible with the APM.
The AEM allows for dynamic modeling of any number of torques (solar pressure, atmospheric torques, magnetics, etc.). It requires the use of an interpolation technique to interpret the attitude state at times different from the tabular epochs.
- Type:
- segments¶
AEM Segments.
- Type:
- to_file(path, format, validate=True)¶
Write to file.
- to_str(format, validate=True)¶
Serialize to string.
- class ccsds_ndm.AemSegment(metadata, data)¶
-
- metadata¶
AEM Metadata Section.
- Type:
- validate()¶
Validate the segment against CCSDS rules.
- class ccsds_ndm.AemMetadata(object_name, object_id, ref_frame_a=None, ref_frame_b=None, start_time=None, stop_time=None, time_system=None, attitude_type=Ellipsis, center_name=None, useable_start_time=None, useable_stop_time=None, euler_rot_seq=None, angvel_frame=None, interpolation_method=None, interpolation_degree=None, comment=None)¶
AEM Metadata Section.
- angvel_frame¶
The frame of reference in which angular velocity data are specified. The set of allowed values is described in annex B, subsection B3. This keyword is applicable only if ATTITUDE_TYPE specifies the use of angular velocities in conjunction with either quaternions or Euler angles.
Examples: ICRF, SC_BODY_1
- Type:
str | None
- attitude_type¶
The type of information contained in the data lines. This keyword must have a value from the set specified at the right. (See table 4-4 for details of the data contained in each line.)
Examples: QUATERNION, QUATERNION/DERIVATIVE, QUATERNION/ANGVEL, EULER_ANGLE, EULER_ANGLE/DERIVATIVE, EULER_ANGLE/ANGVEL, SPIN, SPIN/NUTATION, SPIN/NUTATION_MOM
- Type:
- center_name¶
Celestial body orbited by the object, which may be a natural solar system body (planets, asteroids, comets, and natural satellites), including any planet barycenter or the solar system barycenter. The set of allowed values is described in annex B, subsection B8.
Examples: EARTH, STS-106
- Type:
str | None
- comment¶
Comments allowed only at the beginning of the Metadata section. Each comment line shall begin with this keyword.
Examples: This is a comment.
- euler_rot_seq¶
Rotation sequence that defines the REF_FRAME_A to REF_FRAME_B transformation. The order of the transformation is from left to right, where the leftmost letter (X, Y, or Z) represents the rotation axis of the first rotation, the second letter (X, Y, or Z) represents the rotation axis of the second rotation, and the third letter (X, Y, or Z) represents the rotation axis of the third rotation. This keyword is applicable only if ATTITUDE_TYPE specifies the use of Euler angles.
Examples: ZXZ, XYZ
- Type:
str | None
- interpolation_degree¶
Recommended interpolation degree for attitude ephemeris data in the block immediately following this metadata block. It must be an integer value. This keyword must be used if the ‘INTERPOLATION_METHOD’ keyword is used.
Examples: 1, 5
- Type:
int | None
- interpolation_method¶
Recommended interpolation method for attitude ephemeris data in the block immediately following this metadata block.
Examples: LINEAR, HERMITE, LAGRANGE
- Type:
str | None
- object_id¶
Spacecraft identifier of the object corresponding to the attitude data to be given. While there is no CCSDS-based restriction on the value for this keyword, it is recommended to use international designators from the UN Office of Outer Space Affairs (reference [ADM-2]). Recommended values have the format YYYY-NNNP{PP}, where: YYYY = Year of launch. NNN = Three- digit serial number of launch in year YYYY (with leading zeros). P{PP} = At least one capital letter for the identification of the part brought into space by the launch. In cases in which the asset is not listed in reference [ADM-2], the UN Office of Outer Space Affairs designator index format is not used, or the content cannot be disclosed, the value should be set to UNKNOWN.
Examples: 2000-052A
- Type:
- object_name¶
Spacecraft name for which the attitude state is provided. While there is no CCSDS-based restriction on the value for this keyword, it is recommended to use names from the UN Office of Outer Space Affairs designator index (reference [ADM-2], which include Object name and international designator). When OBJECT_NAME is not known or cannot be disclosed, the value should be set to UNKNOWN.
Examples: EUTELSAT W1
- Type:
- ref_frame_a¶
Name of the reference frame that defines the starting point of the transformation. The set of allowed values is described in annex B, subsection B3.
Examples: ICRF, SC_BODY_1, INSTRUMENT_A
- Type:
- ref_frame_b¶
Name of the reference frame that defines the end point of the transformation. The set of allowed values is described in annex B, subsection B3.
Examples: SC_BODY_1, INSTRUMENT_A
- Type:
- start_time¶
Start of TOTAL time span covered by attitude ephemeris data immediately following this metadata block.
Examples: 1996-12-18T14:28:15.11
- Type:
- stop_time¶
End of TOTAL time span covered by the attitude ephemeris data immediately following this metadata block.
Examples: 1996-12-18T14:28:15.11
- Type:
- time_system¶
Time system used for both attitude ephemeris data and metadata. The set of allowed values is described in annex B, subsection B2.
Examples: UTC, TAI
- Type:
- useable_start_time¶
Optional start of USEABLE time span covered by attitude ephemeris data immediately following this metadata block. To allow for proper interpolation near the beginning/end of the attitude ephemeris data block, it may be necessary to utilize this keyword with values within the time span covered by the attitude ephemeris data records as denoted by the START/STOP_TIME time tags. The USEABLE_START_TIME time tag of a new block of ephemeris data must be greater than or equal to the USEABLE_STOP_TIME time tag of the previous block.
Examples: 1996-12-18T14:28:15.11
- Type:
str | None
- useable_stop_time¶
Optional stop of USEABLE time span covered by attitude ephemeris data immediately following this metadata block. (See also USEABLE_START_TIME.)
Examples: 1996-12-18T14:28:15.11
- Type:
str | None
- validate()¶
Validate the metadata section against CCSDS rules.
- class ccsds_ndm.AemData(attitude_states, attitude_type=None, comment=None)¶
AEM Data Section.
- attitude_states¶
Attitude ephemeris data lines.
- Type:
- attitude_states_numpy¶
Get attitude states as a 2D NumPy array.
Use attitude_states_epochs for the corresponding epochs.
Supports all AEM attitude state types, but all rows must be of the same type.
- Type:
numpy.ndarray
- comment¶
Comments allowed only at the beginning of the Data section. Each comment line shall begin with this keyword.
- static from_numpy(epochs, array, attitude_type=None, comment=None)¶
- validate(attitude_type)¶
Validate the data section against CCSDS rules.
Attitude States¶
- class ccsds_ndm.QuaternionState(ref_frame_a, ref_frame_b, q1, q2, q3, qc, q1_dot, q2_dot, q3_dot, qc_dot, comment)¶
Attitude quaternion.
All mandatory elements are to be provided if the block is present. (See annex F for conventions and further detail.)
- comment¶
One or more comment line(s). Each comment line shall begin with this keyword.
- quaternion_dot¶
Quaternion derivative components [Q1_DOT, Q2_DOT, Q3_DOT, QC_DOT].
Units: 1/s
- ref_frame_a¶
Name of the reference frame that defines the starting point of the transformation. The set of allowed values is described in annex B, subsection B3.
- Type:
- class ccsds_ndm.EulerAngleState(ref_frame_a, ref_frame_b, euler_rot_seq, angle_1, angle_2, angle_3, angle_1_dot, angle_2_dot, angle_3_dot, comment)¶
Euler angle elements.
All mandatory elements of the logical block are to be provided if the block is present. (See annex F for conventions and further detail.)
- comment¶
One or more comment line(s). Each comment line shall begin with this keyword.
- euler_rot_seq¶
Rotation sequence that defines the REF_FRAME_A to REF_FRAME_B transformation. The order of the transformation is from left to right, where the leftmost letter (X, Y, or Z) represents the rotation axis of the first rotation, the second letter (X, Y, or Z) represents the rotation axis of the second rotation, and the third letter (X, Y, or Z) represents the rotation axis of the third rotation.
- Type:
- ref_frame_a¶
Name of the reference frame that defines the starting point of the transformation. The set of allowed values is described in annex B, subsection B3.
- Type:
- class ccsds_ndm.SpinState(ref_frame_a, ref_frame_b, spin_alpha, spin_delta, spin_angle, spin_angle_vel, nutation, nutation_per, nutation_phase, momentum_alpha, momentum_delta, nutation_vel, comment)¶
Spin block.
All mandatory elements are to be provided if the block is present. (See annex F for conventions and further detail.)
- comment¶
One or more comment line(s). Each comment line shall begin with this keyword.
- momentum_alpha¶
Right ascension of angular momentum vector in frame A.
Units: deg
- Type:
Optional[float]
- nutation_vel¶
Angular velocity of spin vector around the angular momentum vector.
Units: deg/s
- Type:
Optional[float]
- ref_frame_a¶
Name of the reference frame that defines the starting point of the transformation. The set of allowed values is described in annex B, subsection B3.
- Type:
- ref_frame_b¶
Name of the reference frame that defines the end point of the transformation. The set of allowed values is described in annex B, subsection B3.
- Type: