KPL/FK ******************************************************************** | Task Order | Vendor | Mission | Spacecraft | |------------|----------------|-----------|------------------------| | TO2AB | Astrobotic | APM1 | Peregrine Lunar Lander | ******************************************************************** APM1 Frame Definitions Kernel =============================================================================== This frame kernel contains a set of frame definitions for Astrobotic's Peregrine Mission 1 (APM1) Lander, including a definition for the lander frame, and NASA-provided science instrument frames. Version and Date ------------------------------------------------------------------------------- Version 2 -- September 30, 2024 -- Derek Maggard, CLPS Added header. Version 1 -- August 30, 2024 -- Derek Maggard, CLPS Initial release. Contact Information ------------------------------------------------------------------------------- Derek R. Maggard, CLPS, Derek.R.Maggard@nasa.gov References ------------------------------------------------------------------------------- 1. ``Frames Required Reading'' 2. ``Kernel Pool Required Reading'' 3. ``C-Kernel Required Reading'' 4. Email correspondence with Daniel Cremmons, April 15, 2024 5. Astrobotic-provided CAD with instruments in position 6. Email correspondence with Chris Howe & Barbara Cohen, June 11, 2024 7. Email correspondence with Richard Elphic, May 15, 2024 8. ``M-PE1-CQ-0109L'' Payload Interface Control Document (ICD) - PITMS 9. ``M-PE1-CQ-0101J'' Payload Interface Control Document (ICD) - LETS 10. ``PM1-NASA Payload Translation Matrices 03-13-2024'' 11. ``NIRVSS CLPS User Guide Document No: A9SP-1901-XB003'' 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. The SPICE routine FURNSH loads a kernel file into the pool as shown below. CALL FURNSH ( 'frame_kernel_name' ) (FORTRAN) furnsh_c ( "frame_kernel_name" ); (C) cspice_furnsh, "frame_kernel_name" (IDL) cspice_furnsh( 'frame_kernel_name' ) (MATLAB) This file was created and may be updated with a text editor. APM1 NAIF ID Codes ======================================================================== The following names and NAIF ID codes are assigned to the APM1 lander, its structures and science instruments (the keywords implementing these name-ID mappings are located in the section ``APM1 NAIF ID Codes -- Definition Section'' at the end of this file): APM1 lander: ------------ APM1 -244 APM1_LANDER -244000 Payloads: --------- APM1_LRA -244110 APM1_PITMS -244120 APM1_LETS -244130 APM1_NIRVSS_AIM -244141 APM1_NIRVSS_SPC -244142 APM1_NIRVSS_SPC_SW -244147 APM1_NIRVSS_SPC_LW -244148 APM1_NIRVSS_LCS_1 -244143 APM1_NIRVSS_LCS_2 -244144 APM1_NIRVSS_LCS_3 -244145 APM1_NIRVSS_LCS_4 -244146 APM1_NSS -244150 APM1 Frames ------------------------------------------------------------------------------- The following APM1 frames are defined in this kernel file: Name Relative to Type Frame ID ========================== ========================== ======= ======== Lander frame (-244000): ----------------------- APM1_LANDER J2000 CK -244000 Payload frames (-2441xx): ------------------------ APM1_LRA APM1_LANDER FIXED -244110 APM1_PITMS APM1_LANDER FIXED -244120 APM1_LETS APM1_LANDER FIXED -244130 APM1_NIRVSS APM1_LANDER FIXED -244140 APM1_NIRVSS_AIM APM1_NIRVSS FIXED -244141 APM1_NIRVSS_SPC APM1_NIRVSS FIXED -244142 APM1_NIRVSS_LCS APM1_NIRVSS FIXED -244143 APM1_NSS APM1_LANDER FIXED -244150 The frame descriptions and definitions are provided in the sections below. APM1 Frame Tree ------------------------------------------------------------------------------- The diagram below shows the APM1 frames hierarchy: "J2000" INERTIAL +----------------------------------------------+ | | | |<--pck | pck-->| V | V "ITRF93" |<--ck "MOON_ME" EARTH | MOON ----- | ---- V "APM1_LANDER" LANDER MECH FRAME +------------------------------------------------------+ | | | | | | | |<--fixed fixed-->| | | | V V | | | "APM1_LRA" "APM1_NIRVSS" | | | ---------- ------------- | | | | | | | | |<--fixed fixed-->| | | fixed-->| | V V | | V | "APM1_PITMS" "APM1_NIRVSS_AIM" | | "APM1_NSS" | ------------ ----------------- | | ---------- | | | |<--fixed fixed-->| | V V | "APM1_LETS" "APM1_NIRVSS_SPC" | ----------- ----------------- | | fixed-->| V "APM1_NIRVSS_LCS" ----------------- Lander Frames ------------------------------------------------------------------------------- The LANDER (or Mechanical frame) is defined for the APM1 spacecraft with the +X axis as follows, during the cruise phase: ``ASTROBOTIC expects to tolerate a nominal SPACECRAFT orientation of the positive X axis direction being Sun-pointing within +/- 15 degree during cislunar transit.'' [8] If someone would look at the normal landed spacecraft configuration, he/she would see: - +X axis is vertical and points up (from bottom of lander ``legs'' toward the lander deck) - +Y axis points in the direction of lander Deck D - +Z completes the right-handed frame Note that the -Y axis points in the direction of lander Deck B. Lander Frame Definition ----------------------- This diagram illustrates the LANDER frame from a top view, looking in the -X direction: Deck B _________ __ / -NSS \ _ / \ / \ / \ \_\/ -NIRVSS \ \/_/ .----------------------. | \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | | | | v +LRA| \| +Ylnd |/ '_______________________| _ / \+LETS / \ __ / /\ \ / / \ +Xlnd is out of the page \_ / \ +PITMS / \__/ \_______./ +/-INSTRUMENT signifies that the Deck D instrument is above/below the deck or spacecraft. The lander frame is defined as a CK frame: - during cruise, the orientation of the APM1_LANDER frame is determined with respect to the J2000 reference frame, stored in CK file(s); \begindata FRAME_APM1_LANDER = -244000 FRAME_-244000_NAME = 'APM1_LANDER' FRAME_-244000_CLASS = 3 FRAME_-244000_CLASS_ID = -244000 FRAME_-244000_CENTER = -244 CK_-244000_SCLK = -244 CK_-244000_SPK = -244 \begintext Instrument Frames ----------------- Understanding Rotation Matrices ------------------------------- Note that if you wish to understand these matrices, each row may be interpreted as a unit vector in the LANDER frame that describes the instrument's +X, +Y, and +Z axes respectively. For instance, if an instrument's boresight (+Z axis) corresponds precisely to the lander's -X axis, then the third row (instrument's +Z axis) of the matrix will have values ( -1 0 0 ). Laser Retroreflector Array (LRA) Frame -------------------------------------- Frame values determined via [4]. Deck B _________ __ / \ _ / \ / \ / \ \_\/ / \ \/_/ .----------------------. | \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | +Zlra | | v o---> +Ylra \| +Ylnd |/ '_______________________v +Xlra _ / \ / \ __ / /\ \ / / \ +Zlra is out of the page \_ / \ / \__/ +Xlnd is out of the page \_______./ Deck D \begindata FRAME_APM1_LRA = -244110 FRAME_-244110_NAME = 'APM1_LRA' FRAME_-244110_CLASS = 4 FRAME_-244110_CLASS_ID = -244110 FRAME_-244110_CENTER = -244 TKFRAME_-244110_RELATIVE = 'APM1_LANDER' TKFRAME_-244110_SPEC = 'MATRIX' TKFRAME_-244110_MATRIX = ( 0.000000000000000 1.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.000000000000000 1.000000000000000 0.000000000000000 0.000000000000000 ) \begintext Peregrine Ion-Trap Mass Spectrometer (PITMS) Frame -------------------------------------------------- Frame values determined via [6] and [8]. The PITMS' +Z axis corresponds with the PITMS aperture and the spacecraft's +X axis. PITMS +Y corresponds with LANDER -Y. And PITMS +X corresponds with LANDER +Z, completing the frame. Deck B _________ __ / \ _ / \ / \ / \ \_\/ / \ \/_/ .----------------------. | \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | -| | | v || \| +Ylnd |/ '_______________________| _ / \ +Ypit / \ __ / /\ \ ^ / / \ +Zpit is out of the page \_ / \ | / \__/ +Xlnd is out of the page +Zpit o-->+Xpit ```````` Deck D \begindata FRAME_APM1_PITMS = -244120 FRAME_-244120_NAME = 'APM1_PITMS' FRAME_-244120_CLASS = 4 FRAME_-244120_CLASS_ID = -244120 FRAME_-244120_CENTER = -244 TKFRAME_-244120_RELATIVE = 'APM1_LANDER' TKFRAME_-244120_SPEC = 'MATRIX' TKFRAME_-244120_MATRIX = ( 0.000000000000000 0.000000000000000 1.000000000000000 0.000000000000000 -1.000000000000000 0.000000000000000 1.000000000000000 0.000000000000000 0.000000000000000 ) \begintext Linear Energy Transfer Spectrometer (LETS) Frame ------------------------------------------------ Frame values determined via [9] and [10]. The LETS +Z axis is approximately normal to the timepix detector. The LETS +Y axis is approximately in the direction of the electrical connector. +X completes the right-handed frame. Deck B _________ __ / \ _ / \ / \ / \ \_\/ / \ \/_/ .----------------------. | \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | -| | | +Ylnd v || \| |/ '__+Zlets .> +Ylets_ ___| _ / \ o.' / \ __ / /\ \ \ / / \ +Zlets is out of the page \_ / \ v / \__/ +Xlnd is out of the page +Xlets / ```````` Deck D \begindata FRAME_APM1_LETS = -244130 FRAME_-244130_NAME = 'APM1_LETS' FRAME_-244130_CLASS = 4 FRAME_-244130_CLASS_ID = -244130 FRAME_-244130_CENTER = -244 TKFRAME_-244130_RELATIVE = 'APM1_LANDER' TKFRAME_-244130_SPEC = 'MATRIX' TKFRAME_-244130_MATRIX = ( 0.000000000000000 0.865693251104181 0.500574864523454 0.000000000000000 -0.500574864523454 0.865693251104181 1.000000000000000 0.000000000000000 0.000000000000000 ) \begintext Near-Infrared Volatile Spectrometer System (NIRVSS) Frames ---------------------------------------------------------- NIRVSS frame: These values have been derived by CAD based upon instrument surface features [5]. A generic NIRVSS frame has been included to match the NIRVSS reference frame as defined in [10] and [11]. Note that +Znir is aligned with +Xlnd. Deck B +Ynir _+Xnir___ __ <. / ^ \ _ / \ `. / \ / \ \_\/ / o +Znir \ \/_/ .---------------------. | \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | -| | | v || \| +Ylnd _.|/ '____________________/ _ / \ / \ __ +Znir is out of the page / /\ \ / / \ +Xlnd is out of the page \_ / \ / \__/ \_______./ Deck D \begindata FRAME_APM1_NIRVSS = -244140 FRAME_-244140_NAME = 'APM1_NIRVSS' FRAME_-244140_CLASS = 4 FRAME_-244140_CLASS_ID = -244140 FRAME_-244140_CENTER = -244 TKFRAME_-244140_RELATIVE = 'APM1_LANDER' TKFRAME_-244140_SPEC = 'MATRIX' TKFRAME_-244140_MATRIX = ( 0.000000000000000 -0.866357174719382 0.499424915089596 0.000000000000000 -0.499424915089596 -0.866357174719382 1.000000000000000 0.000000000000000 0.000000000000000 ) \begintext The NIRVSS instruments relate to the NIRVSS frame in the following way [5]: The AIM and LCS boresights are identical and are both separated from -Znir by 10 degrees. More specifically, rotating the NIRVSS frame 170 degrees about +Ynir gives the AIM and LCS frames. SPC's boresight is separated 6 degrees from -Znir. More specifically, rotating the NIRVSS frame 180 degrees about +Ynir and then -6 degrees about the new +X axis gives the SPC frame. Because they are visually close, ``ins'' is used in the image below to represent the axes for AIM, SPC, and LCS. +Ynir +Xnir <. ^ `. / +Yins __o +Znir __ <. / \ _ / \ `. Deck B / \ \_\/ / x +Zins \ \/_/ .-----/---------------. | / \| /| v \ | | +Xins | | | +Xlnd | | | o--->+Zlnd | | | | -| | | v || \| +Ylnd _.|/ '____________________/ _ / \ / \ __ +Zins is into the page / /\ \ / / \ +Znir is out of the page \_ / \ / \__/ +Xlnd is out of the page \_______./ Deck D Since the frame definitions below contain the reverse transformations (i.e. from the NIRVSS instrument frames to the NIRVSS frame), the order and the signs of the rotations are reversed. \begindata FRAME_APM1_NIRVSS_AIM = -244141 FRAME_-244141_NAME = 'APM1_NIRVSS_AIM' FRAME_-244141_CLASS = 4 FRAME_-244141_CLASS_ID = -244141 FRAME_-244141_CENTER = -244 TKFRAME_-244141_RELATIVE = 'APM1_NIRVSS' TKFRAME_-244141_SPEC = 'ANGLES' TKFRAME_-244141_UNITS = 'DEGREES' TKFRAME_-244141_AXES = ( 2, 3, 1 ) TKFRAME_-244141_ANGLES = ( -170, 0.0, 0.0 ) FRAME_APM1_NIRVSS_SPC = -244142 FRAME_-244142_NAME = 'APM1_NIRVSS_SPC' FRAME_-244142_CLASS = 4 FRAME_-244142_CLASS_ID = -244142 FRAME_-244142_CENTER = -244 TKFRAME_-244142_RELATIVE = 'APM1_NIRVSS' TKFRAME_-244142_SPEC = 'ANGLES' TKFRAME_-244142_UNITS = 'DEGREES' TKFRAME_-244142_AXES = ( 2, 3, 1 ) TKFRAME_-244142_ANGLES = ( -180.0, 0.0, 6.0 ) FRAME_APM1_NIRVSS_LCS = -244143 FRAME_-244143_NAME = 'APM1_NIRVSS_LCS' FRAME_-244143_CLASS = 4 FRAME_-244143_CLASS_ID = -244143 FRAME_-244143_CENTER = -244 TKFRAME_-244143_RELATIVE = 'APM1_NIRVSS' TKFRAME_-244143_SPEC = 'ANGLES' TKFRAME_-244143_UNITS = 'DEGREES' TKFRAME_-244143_AXES = ( 2, 3, 1 ) TKFRAME_-244143_ANGLES = ( -170.0, 0.0, 0.0 ) \begintext Neutron Spectrometer System (NSS) --------------------------------- Though NSS is omnidirectional, its sensitivity is not isotropic, meaning that while it receives neutrons from all directions, its sensitivity varies depending on the direction of incoming neutrons. The least sensitive direction for NSS is along the detectors' axes, defined as +Ynss. The least obstructed field of view (if it can be called that) is defined as +Znss. +Xnss completes the right-handed frame. [7] Deck B _________ __ /+Znss x \ +Xnss_ / \ / / `- \. > / \ \_\/ / . \ \/_/ .-----------v----------. | +Ynss \| /| \ | | | | | +Xlnd | | | o--->+Zlnd | | | | -| | | v || \| +Ylnd _.|/ '____________________/ _ / \ / \ __ +Znss is into the page / /\ \ / / \ +Xlnd is out of the page \_ / \ / \__/ \_______./ Deck D \begindata FRAME_APM1_NSS = -244150 FRAME_-244150_NAME = 'APM1_NSS' FRAME_-244150_CLASS = 4 FRAME_-244150_CLASS_ID = -244150 FRAME_-244150_CENTER = -244 TKFRAME_-244150_RELATIVE = 'APM1_LANDER' TKFRAME_-244150_SPEC = 'MATRIX' TKFRAME_-244150_MATRIX = ( 0.000000000000000 0.2157913802750998 0.9764394913147293 0.000000000000000 0.9764394913147293 -0.2157913802750998 -1.000000000000000 0.0000000000000000 0.0000000000000000 ) \begintext APM1 NAIF ID Codes -- Definition Section ------------------------------------------------------------------------------- This section contains name to NAIF ID mappings for APM1. \begindata NAIF_BODY_NAME += ( 'APM1' ) NAIF_BODY_CODE += ( -244 ) NAIF_BODY_NAME += ( 'PEREGRINE_MISSION_1' ) NAIF_BODY_CODE += ( -244 ) NAIF_BODY_NAME += ( 'ASTROBOTIC_PEREGRINE_MISSION_1' ) NAIF_BODY_CODE += ( -244 ) NAIF_BODY_NAME += ( 'CLPS_TO2AB' ) NAIF_BODY_CODE += ( -244 ) NAIF_BODY_NAME += ( 'APM1_LANDER' ) NAIF_BODY_CODE += ( -244000 ) NAIF_BODY_NAME += ( 'APM1_LRA' ) NAIF_BODY_CODE += ( -244110 ) NAIF_BODY_NAME += ( 'APM1_PITMS' ) NAIF_BODY_CODE += ( -244120 ) NAIF_BODY_NAME += ( 'APM1_LETS' ) NAIF_BODY_CODE += ( -244130 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_AIM' ) NAIF_BODY_CODE += ( -244141 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_SPC' ) NAIF_BODY_CODE += ( -244142 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_SPC_SW' ) NAIF_BODY_CODE += ( -244147 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_SPC_LW' ) NAIF_BODY_CODE += ( -244148 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_LCS_1' ) NAIF_BODY_CODE += ( -244143 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_LCS_2' ) NAIF_BODY_CODE += ( -244144 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_LCS_3' ) NAIF_BODY_CODE += ( -244145 ) NAIF_BODY_NAME += ( 'APM1_NIRVSS_LCS_4' ) NAIF_BODY_CODE += ( -244146 ) NAIF_BODY_NAME += ( 'APM1_NSS' ) NAIF_BODY_CODE += ( -244150 ) \begintext End of FK file.