KPL/FK Frame (FK) SPICE kernel file for M-Matisse science operations frames =============================================================================== This frames kernel defines a number of frames used by the M-Matisse science operations centre to perform mission analysis and attitude dependent science opportunity identification. These frames can be used stand-alone, i.e. referring directly to them and assuming they correspond to the M-Matisse spacecrafts reference frames, or in combination with the M-Matisse spacecraft frames. The latter will allow the user to use the existing alignments and instrument frame definitions to perform instrument specific mission analysis and attitude dependent science opportunity identification. Please refer to the section ``Using these frames'' for further details. Version and Date ------------------------------------------------------------------------------- Version 0.0 -- May 17, 2024 -- Alfredo Escalante Lopez, ESAC/ESA Initial version. References ------------------------------------------------------------------------------- 1. ``Frames Required Reading'' 2. ``Kernel Pool Required Reading'' 3. ``C-Kernel Required Reading'' 4. ``M-Matisse CDF Study Report'', CDF235, ESA Concurrent Design Facility, August 2023. Contact Information ------------------------------------------------------------------------------- If you have any questions regarding this file contact SPICE support at ESAC: Alfredo Escalante Lopez (+34) 91-8131-429 spice@cosmos.esa.int Implementation Notes ------------------------------------------------------------------------------- This file is used by the SPICE system as follows: programs that make use of this frame kernel must "load" the kernel normally during program initialization. Loading the kernel associates the data items with their names in a data structure called the "kernel pool". The SPICELIB routine FURNSH loads a kernel into the pool as shown below: FORTRAN: (SPICELIB) CALL FURNSH ( frame_kernel_name ) C: (CSPICE) furnsh_c ( frame_kernel_name ); IDL: (ICY) cspice_furnsh, frame_kernel_name MATLAB: (MICE) cspice_furnsh ( 'frame_kernel_name' ) PYTHON: (SPICEYPY)* furnsh( frame_kernel_name ) In order for a program or routine to extract data from the pool, the SPICELIB routines GDPOOL, GIPOOL, and GCPOOL are used. See [2] for more details. This file was created and may be updated with a text editor or word processor. * SPICEPY is a non-official, community developed Python wrapper for the NAIF SPICE toolkit. Its development is managed on Github. It is available at: https://github.com/AndrewAnnex/SpiceyPy M-Matisse Science Operations frame names and NAIF ID Codes ------------------------------------------------------------------------------- The following frames are defined in this kernel file: SPICE Frame Name Long-name ------------------------ --------------------------------------------- HENRI_EARTH_COMMS Henri HGA Earth communications pointing MARGUERITE_EARTH_COMMS Marguerite HGA Earth communications pointing M-Matisse Ramming direction (RAM) pointing: HENRI_MARS_RAM Henri Ramming direction pointing @ Mars MARGUERITE_MARS_RAM Marguerite Ramming direction pointing @ Mars M-Matisse Sun direction pointing: HENRI_MARS_SUN Henri Sun direction pointing @ Mars MARGUERITE_MARS_SUN Marguerite Sun direction pointing @ Mars These frames have the following centers, frame class and NAIF IDs: SPICE Frame Name Center Class NAIF ID ------------------------ --------------------- ------- ---------- HENRI_EARTH_COMMS HENRI DYNAMIC -101911 MARGUERITE_EARTH_COMMS MARGUERITE DYNAMIC -102911 HENRI_MARS_RAM HENRI DYNAMIC -101912 MARGUERITE_MARS_RAM MARGUERITE DYNAMIC -102912 HENRI_MARS_SUN HENRI DYNAMIC -101913 MARGUERITE_MARS_SUN MARGUERITE DYNAMIC -102913 The keywords implementing these frame definitions are located in the "M-Matisse Science Operations Frame Definitions" section. General Notes About This File ------------------------------------------------------------------------------- About Required Data: -------------------- All the dynamic frames defined in this file require at least one of the following kernel types to be loaded prior to their evaluation, normally during program initialization: - Planetary and Satellite ephemeris data (SPK), i.e. de432, mar097, etc; - Spacecraft ephemeris data (SPK); Note that loading different kernels will lead to different orientations of the same frame at a given epoch, providing different results from each other, in terms of state vectors referred to these frames. Using these frames ------------------ These frames have been implemented to define the different pointing profiles for the Henri and Marguerite spacecrafts. These pointing profiles can be used in two different ways: [1] ``As is'' for analysis of offsets between the spacecraft attitude defined in the corresponding CK and a given pointing profile. Loading this kernel in combination with any Henri CK will allow the user to perform this comparison between the HENRI_SPACECRAFT frame and any of the different frames defined within this kernel. [2] In combination with the M-Matisse Frames kernel, to define a default pointing profile for the whole duration of the mission together with the spacecraft and instrument frames defined in the M-Matisse FK. In this way, instrument-specific mission analysis activities, for which a particular pointing profile and knowledge of the instruments is required, can be conducted without the need for a spacecraft CK. In order to define such default pointing profile, the latest M-Matisse frames kernel and this file shall be loaded before the selected ``Henri spacecraft frame overwrite'' frame kernel. As an example, imagine that the desired default pointing profile is "Nadir power optimized with respect to Mars", then the furnish (metakernel) file should contain the following sequence of frames kernels, in the following order: ... $DATA/fk/mmatisse_v00.tf $DATA/fk/mmatisse_ops_v00.tf $DATA/fk/mmatisse_sc_mar_npo_v00.tf ... (*) Newer versions of these files will produce the same results. By loading the ``mmatisse_sc_mar_npo_v00.tf'' frames kernel last, the spacecraft frame HENRI_SPACECRAFT, which is defined as a CK-based frame in the ``M-Matisse frames kernel'', will be overwritten as a type-4 fixed offset frame, mapping the HENRI_SPACECRAFT frame to the HENRI_MARS_NPO frame defined in the ``M-Matisse Science Operations Frames Kernel'' (this) file. M-Matisse Science Operations Frame Definitions ------------------------------------------------------------------------------- This section contains the definition of the M-Matisse science operations frames. M-Matisse RAM pointing frame(s) (_RAM) ------------------------------------------------------------------------ SPICE frame name and literature references: ------------------------------------------- The M-Matisse RAM frame(s) are a family of frames that define the RAM pointing profile for the different M-Matisse targets. RAM pointing stands for a pointing whose primary axis is the velocity direction; the RAM side of the S/C is the side that points in the direction of the satellite's motion. It is called the RAM side because it is the side impacting/ramming into the fluid that the satellite moves through -such as the ionosphere-. Within the M-Matisse mission, these frames are referred as HENRI_MARS_RAM (for Henri-Mars RAM pointing profile) and MARGUERITE_MARS_RAM (for Marguerite-Mars RAM pointing profile). Definition: ----------- The spacecraft Nadir RAM pointing frame is defined as follows (from [3]): - +X axis is the primary vector and points from the spacecraft to the inertially referenced velocity vector relative to the target body; - +Z axis is the secondary vector and is the orthogonal component to the vector from the spacecraft to the center of the target body (Nadir direction); - +Y axis completes the right-handed system; - the origin of this frame is the spacecraft's center of mass. All vectors are geometric: no corrections are used. Required Data: -------------- This frame is defined as a two-vector frame using two different types of specifications for the primary and secondary vectors. The primary vector is defined as an 'observer-target velocity' vector and the secondary vector is defined as an 'observer-target position', therefore, the ephemeris data required to compute the spacecraft-target body state in J2000 frame have to be loaded before using this frame. Remarks: -------- Since the primary and secondary vectors of this frame are defined based on the spacecraft-target body state vector, the usage of different ephemerides to compute this state vector may lead to different frame orientation at given time. \begindata FRAME_HENRI_MARS_RAM = -101912 FRAME_-101912_NAME = 'HENRI_MARS_RAM' FRAME_-101912_CLASS = 5 FRAME_-101912_CLASS_ID = -101912 FRAME_-101912_CENTER = -101 FRAME_-101912_RELATIVE = 'J2000' FRAME_-101912_DEF_STYLE = 'PARAMETERIZED' FRAME_-101912_FAMILY = 'TWO-VECTOR' FRAME_-101912_PRI_AXIS = 'X' FRAME_-101912_PRI_VECTOR_DEF = 'OBSERVER_TARGET_VELOCITY' FRAME_-101912_PRI_OBSERVER = 'MARS' FRAME_-101912_PRI_TARGET = 'HENRI' FRAME_-101912_PRI_ABCORR = 'NONE' FRAME_-101912_PRI_FRAME = 'J2000' FRAME_-101912_SEC_AXIS = 'Z' FRAME_-101912_SEC_VECTOR_DEF = 'OBSERVER_TARGET_POSITION' FRAME_-101912_SEC_OBSERVER = 'HENRI' FRAME_-101912_SEC_TARGET = 'MARS' FRAME_-101912_SEC_ABCORR = 'NONE' FRAME_MARGUERITE_MARS_RAM = -102912 FRAME_-102912_NAME = 'MARGUERITE_MARS_RAM' FRAME_-102912_CLASS = 5 FRAME_-102912_CLASS_ID = -102912 FRAME_-102912_CENTER = -102 FRAME_-102912_RELATIVE = 'J2000' FRAME_-102912_DEF_STYLE = 'PARAMETERIZED' FRAME_-102912_FAMILY = 'TWO-VECTOR' FRAME_-102912_PRI_AXIS = 'X' FRAME_-102912_PRI_VECTOR_DEF = 'OBSERVER_TARGET_VELOCITY' FRAME_-102912_PRI_OBSERVER = 'MARS' FRAME_-102912_PRI_TARGET = 'MARGUERITE' FRAME_-102912_PRI_ABCORR = 'NONE' FRAME_-102912_PRI_FRAME = 'J2000' FRAME_-102912_SEC_AXIS = 'Z' FRAME_-102912_SEC_VECTOR_DEF = 'OBSERVER_TARGET_POSITION' FRAME_-102912_SEC_OBSERVER = 'MARGUERITE' FRAME_-102912_SEC_TARGET = 'MARS' FRAME_-102912_SEC_ABCORR = 'NONE' \begintext M-Matisse Sun pointing frame ------------------------------------------------------------------------ Definition: ----------- The M-Matisse Sun pointing frame is defined as follows (from [3]): - -Z axis is the primary vector and points from the spacecraft to the center of the Sun; - +X axis is the secondary vector and points from the spacecraft to the inertially referenced velocity vector relative to the target body; - +Y axis completes the right-handed system; - the origin of this frame is the spacecraft's center of mass. All vectors are geometric: no corrections are used. Required Data: -------------- This frame is defined as a two-vector frame using two different types of specifications for the primary and secondary vectors. The primary vector is defined as an 'observer-target velocity' vector and the secondary vector is defined as an 'observer-target position', therefore, the ephemeris data required to compute the spacecraft-target body state in J2000 frame have to be loaded before using this frame. Remarks: -------- Since the primary and secondary vectors of this frame are defined based on the spacecraft-target body state vector, the usage of different ephemerides to compute this state vector may lead to different frame orientation at given time. \begindata FRAME_HENRI_MARS_SUN = -101913 FRAME_-101913_NAME = 'HENRI_MARS_SUN' FRAME_-101913_CLASS = 5 FRAME_-101913_CLASS_ID = -101913 FRAME_-101913_CENTER = -101 FRAME_-101913_RELATIVE = 'J2000' FRAME_-101913_DEF_STYLE = 'PARAMETERIZED' FRAME_-101913_FAMILY = 'TWO-VECTOR' FRAME_-101913_PRI_AXIS = '-Z' FRAME_-101913_PRI_VECTOR_DEF = 'OBSERVER_TARGET_POSITION' FRAME_-101913_PRI_OBSERVER = 'HENRI' FRAME_-101913_PRI_TARGET = 'SUN' FRAME_-101913_PRI_ABCORR = 'NONE' FRAME_-101913_SEC_AXIS = '+X' FRAME_-101913_SEC_VECTOR_DEF = 'OBSERVER_TARGET_VELOCITY' FRAME_-101913_SEC_OBSERVER = 'MARS' FRAME_-101913_SEC_TARGET = 'HENRI' FRAME_-101913_SEC_ABCORR = 'NONE' FRAME_-101913_SEC_FRAME = 'J2000' FRAME_MARGUERITE_MARS_SUN = -102913 FRAME_-102913_NAME = 'MARGUERITE_MARS_SUN' FRAME_-102913_CLASS = 5 FRAME_-102913_CLASS_ID = -102913 FRAME_-102913_CENTER = -102 FRAME_-102913_RELATIVE = 'J2000' FRAME_-102913_DEF_STYLE = 'PARAMETERIZED' FRAME_-102913_FAMILY = 'TWO-VECTOR' FRAME_-102913_PRI_AXIS = '-Z' FRAME_-102913_PRI_VECTOR_DEF = 'OBSERVER_TARGET_POSITION' FRAME_-102913_PRI_OBSERVER = 'MARGUERITE' FRAME_-102913_PRI_TARGET = 'SUN' FRAME_-102913_PRI_ABCORR = 'NONE' FRAME_-102913_SEC_AXIS = '+X' FRAME_-102913_SEC_VECTOR_DEF = 'OBSERVER_TARGET_VELOCITY' FRAME_-102913_SEC_OBSERVER = 'MARS' FRAME_-102913_SEC_TARGET = 'MARGUERITE' FRAME_-102913_SEC_ABCORR = 'NONE' FRAME_-102913_SEC_FRAME = 'J2000' \begintext End of FK file.