KPL/FK ************************************************************************* | Task Order | Vendor | Mission | Spacecraft | |------------|--------------------|-----------|-------------------------| | TO2IM | Intuitive Machines | IM-1 | NOVA-C Lunar Lander | | | | | (Odysseus) | ************************************************************************* IM-1 Frame Definitions Kernel =============================================================================== This frame kernel contains frame definitions for Intuitive Machines' IM-1, Nova-C Lander, Odysseus, including a definition for the lander frame and NASA-provided science instrument frames. Version and Date ------------------------------------------------------------------------------- Version 2 -- August 22, 2025 -- Derek Maggard, CLPS Minor fix to Lander Frame diagram (facing -Ylnd). Added that IM1_LANDER is also relative to J2000, in the ``IM-1 Frames'' section. Version 1 -- December 09, 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. ``Discuss LRA SPICE Data'' meeting, May 21, 2024 5. IM-provided CAD with instruments in position 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. IM-1 NAIF ID Codes ======================================================================== The following names and NAIF ID codes are assigned to the IM-1 lander, its structures and science instruments (the keywords implementing these name-ID mappings are located in the section ``IM-1 NAIF ID Codes -- Definition Section'' at the end of this file): IM-1 lander and landing site: --------------------------------- IM1 -370011 IM1_LANDER -370011000 IM1_LANDING_SITE -370011900 Payloads: --------- IM1_LRA -370011110 IM1_ROLSES_N -370011210 IM1_ROLSES_S -370011220 IM1_ROLSES_NE -370011230 IM1_ROLSES_NW -370011240 Intuitive Machines' NAIF ID numbering system is as follows: -37 0 01 1 ___ _ __ _ | | | | | | | V | | | Rev (vehicle # if more than 1) | | V | | Mission identifier | V | Type of vehicle, NovaC (0) V Designation representing Intuitive Machines' headquarters (3700 Bay Area Blvd) IM-1 Frames ------------------------------------------------------------------------------- The following IM-1 frames are defined in this kernel file: Name Relative to Type Frame ID ========================== ========================== ======= ======== Surface frames (-3700119xx): ---------------------------------- IM1_TOPO MOON_ME FIXED -370011900 IM1_LOCAL_LEVEL IM1_TOPO FIXED -370011901 Lander frames (-37001100x): ------------------------- IM1_LANDER J2000, IM1_LOCAL_LEVEL CK -370011000 Payload frames (-370011xxx): -------------------------- IM1_LRA IM1_LANDER FIXED -370011110 IM1_ROLSES_N IM1_LANDER FIXED -370011210 IM1_ROLSES_S IM1_LANDER FIXED -370011220 IM1_ROLSES_NE IM1_LANDER FIXED -370011230 IM1_ROLSES_NW IM1_LANDER FIXED -370011240 The frame descriptions and definitions are provided in the sections below. IM-1 Frame Tree ------------------------------------------------------------------------------- The diagram below shows the IM-1 frames hierarchy: "J2000" INERTIAL +----------------------------------------------+ | | | | <--pck | pck--> | V | V "ITRF93" | "MOON_ME" EARTH | MOON ------ | ---- | | | |<--fixed | V | "IM1_TOPO" | ---------- | | | |<--fixed | V | <--ck "IM1_LOCAL_LEVEL" | ----------------- V | "IM1_LANDER" |<--fixed ck LANDER MECH FRAME V +---------------------------------------------------+ | | | | | |<--fixed fixed--> | | | | V V | | | "IM1_LRA" "IM1_ROLSES_N" | | | --------- -------------- | | | | | | fixed--> | | | V | | "IM1_ROLSES_S" | | -------------- | | | | fixed--> | | V | "IM1_ROLSES_NE" | --------------- | | fixed--> | V "IM1_ROLSES_NW" --------------- IM-1 Topocentric Frame ---------------------- IM-1 topocentric frame, IM1_TOPO, is defined as follows: -- +Z axis is along the outward normal at the landing site ("zenith"); -- +X axis is along the local north direction ("north"); -- +Y axis completes the right hand frame ("west"); -- the origin of this frame is located at IM1_LANDING_SITE. Orientation of the frame is given relative to the body fixed rotating frame 'MOON_ME', which is the name of the generic lunar mean Earth/polar axis (ME) reference frame. In this instance, MOON_ME is an alias for the frame MOON_ME_DE440_ME421, which is closely aligned with the lunar mean Earth/polar axis frame associated with the planetary ephemeris DE421. Topocentric frame IM1_TOPO is centered at the site IM1_LANDING_SITE, which has Cartesian coordinates X (km): 0.2982333034570E+03 Y (km): 0.7527572648204E+01 Z (km): -0.1714217335301E+04 and planetodetic coordinates Longitude (deg): 1.4458700000000 Latitude (deg): -80.1275900000000 Altitude (km): 0.2583000000000E+01 These planetodetic coordinates are expressed relative to a reference spheroid having the dimensions Equatorial radius (km): 1.7374000000000E+03 Polar radius (km): 1.7374000000000E+03 All of the above coordinates are relative to the frame MOON_ME. \begindata FRAME_IM1_TOPO = -370011900 FRAME_-370011900_NAME = 'IM1_TOPO' FRAME_-370011900_CLASS = 4 FRAME_-370011900_CLASS_ID = -370011900 FRAME_-370011900_CENTER = -370011900 TKFRAME_-370011900_RELATIVE = 'MOON_ME' TKFRAME_-370011900_SPEC = 'ANGLES' TKFRAME_-370011900_UNITS = 'DEGREES' TKFRAME_-370011900_AXES = ( 3, 2, 3 ) TKFRAME_-370011900_ANGLES = ( -1.4458700000000, -170.1275900000000, 180.0000000000000 ) \begintext Local Level Frame ----------------- IM-1 local level frame, IM1_LOCAL_LEVEL, is defined as follows: -- +Z axis is along the downward normal at the landing site ("nadir"); -- +X axis is along the local north direction ("north"); -- +Y axis completes the right hand frame ("east"); -- the origin of this frame is located at IM1_LANDING_SITE. Since this frame is essentially the IM1_TOPO frame flipped by 180 degrees about +X ("north") to point +Z down, this frame is defined as a fixed offset frame with respect to the IM1_TOPO frame. \begindata FRAME_IM1_LOCAL_LEVEL = -370011901 FRAME_-370011901_NAME = 'IM1_LOCAL_LEVEL' FRAME_-370011901_CLASS = 4 FRAME_-370011901_CLASS_ID = -370011901 FRAME_-370011901_CENTER = -370011901 TKFRAME_-370011901_RELATIVE = 'IM1_TOPO' TKFRAME_-370011901_SPEC = 'ANGLES' TKFRAME_-370011901_UNITS = 'DEGREES' TKFRAME_-370011901_AXES = ( 1, 2, 3 ) TKFRAME_-370011901_ANGLES = ( 180.000, 0.000, 0.000 ) \begintext Lander Frame ------------ The LANDER (or Mechanical frame) is defined for IM-1 where the normal landed spacecraft configuration is as follows: - +X axis is vertical and points up (from the lander "legs" toward the lander deck) - +Y axis points in the direction of the center of panel A - +Z completes the right-handed frame and points between panel B and C. For surface operations the IM1_LANDER frame orientation is represented by a fixed rotation stored in a CK to make SPICE "traverse" appropriate frame tree branch based on the time of interest. Lander Frame Diagrams --------------------- Looking in the -Xlnd direction (top view): | | | ROLSES_N | __ | __ / \ | / \ \ / | \ / `'``. | ,'`' ' . `. ___|___ ,',', ` ` ` / `.,' , . ' `. | | , / . `| | , . . / \________/\ , .---------------. / ___________________________,' `.____________________________ ROLSES_NW __ . . ` '| | `. . __ ROLSES_NE / \,.`. ' | +Xlnd | ` . / \ \ /.------------|LRA o-->+Zlnd |------------.\ / `' ` . . |o | | ,. ,-` `' ` ` . v +Ylnd ,'. ' `.______________,'\ / \ _______ / . ' ' / `.\ ` +Xlnd is out of the page , . | | \ ' . ' | |. \ ` , ' .' \_______/ \ \ . _, /, | `.`.__ / \' | / \ \ / | \ / `' | `' | | ROLSES_S | | | Panels (A to F) are arranged as follows (top view): D .-----------. , ` E , ` C , ` , +Xlnd ` . o-->+Zlnd `. ` | , ` v +Ylnd , F ` , B ` , `.___________. A Looking in the -Ylnd direction (side view): ,----------------. , `. |LRA | |* | . _______________ ,' ,`-----------------. | F | A | B | | | | | | | .---. | | | | |___| | | | | o | | | | ROLSES_S| | | . ----- . | | | | | | | | | | | | | | | | | | | +Xlnd | . ----- ` | ^ | | | | | | | | | o--> +Zlnd | | | | +Ylnd ,| | | | , | | \ /|\ | `. ______________________ .___| /| \ / | \ |___. _______________________ ROLSES_NW .' |__/_|___\__/__|__\_|. `. ROLSES_NE ,' .,' // ,' ^ `. \\ `. . , ,' / ,' / \ `. \ `. `. ,' .,' / ,' / \ `. ` `. `. , ,' / ,' , . `. \ `. `. .,' /.' ._____` `.\ `.` __._ __._ __._ _.__ Looking in the -Zlnd direction (side view): ., ^ .,.' `. LRA .'' ` `*.'`\ \ ,.',' ' ` . . __,'___ _'____`_`_ | B | C | | | | | | | ROLSES_S | | | ROLSES_N ---------------------------==| | |==-------------------------- | | | _ | | | _ / `\ | | | ,' `\ | O | | | || O | ` \ / | | |` / / +Xlnd ` _ ,\ | | | / _ ,' ^ \ | | |/ | \| | | +Ylnd <--o | | | +Zlnd ,| | |\ ., | ROLSES_NE| ` , ,| | o | ' ,. , |_______|_____ __|`. `. . , ./ \ | / `. `. ` , , ,,' \ /|\ / ` . `.`. . , .' \ | / `. `.` , ,,' / \| /\ `.``. ,,' ,__ \/__. ` .` _._ __;__ `.__ Lander Frame Definition ----------------------- The lander frame is defined as a CK frame for the following reason: - during cruise and EDL, the orientation of the IM1_LANDER frame is determined with respect to the J2000 reference frame in the CK file(s); - after landing the orientation of the IM1_LANDER frame may be determined with respect to the local level or topocentric frame; the orientation from local level to the lander is stored in the latest "fixed" CK landed orientation ``surf_ops'' file; \begindata FRAME_IM1_LANDER = -370011000 FRAME_-370011000_NAME = 'IM1_LANDER' FRAME_-370011000_CLASS = 3 FRAME_-370011000_CLASS_ID = -370011000 FRAME_-370011000_CENTER = -370011 CK_-370011000_SCLK = -370011 CK_-370011000_SPK = -370011 \begintext Laser Retroreflector Array (LRA) Frame -------------------------------------- Frame values from [4] and [5]. +Zlra ., +Ylra is into the page ^ +Xlra .,.' +Zlnd is out of the page `. .>.'' ` +Ylra `x`'`\ \ +Xlnd ,.',' ' ` . . ^ __,'___ _'____`_`_ | | B | C | +Ylnd <---o | | | +Zlnd \begindata FRAME_IM1_LRA = -370011110 FRAME_-370011110_NAME = 'IM1_LRA' FRAME_-370011110_CLASS = 4 FRAME_-370011110_CLASS_ID = -370011110 FRAME_-370011110_CENTER = -370011 TKFRAME_-370011110_RELATIVE = 'IM1_LANDER' TKFRAME_-370011110_SPEC = 'ANGLES' TKFRAME_-370011110_UNITS = 'DEGREES' TKFRAME_-370011110_AXES = ( 1, 2, 3) TKFRAME_-370011110_ANGLES = ( 90.0 , -60.0, 0.0 ) \begintext Radio-wave Observations at the Lunar Surface of the photo Electron Sheath (ROLSES) --------------------------------------------- ^ +Zroln | | | | ROLSES_N o--> +Yroln | +Xroln __ | __ / \ | / \ \ / | \ / `'``. | ,'`' +Yrolnw ' . `. ___|___ ,',' , ^ ` ` ` / `.,' , . +Xrolne | ' `. | | , / o---> +Zrolne +Zrolnw <---o . `| | , . | +Xrolnw . / \________/\ , V .---------------./ +Yrolne ____________________________,' `.___________________________ ROLSES_NW __ . . ` '| | `. . __ ROLSES_NE / \,.`. ' | +Xlnd | ` . / \ \ /.------------|LRA o-->+Zlnd |------------.\ / `' ` . . |o | | ,. ,-` `' ` ` . v +Ylnd ,'. ' `.______________,'\ / \ _______ / . ' ' / `.\ ` +Xlnd is out of , . | | \ ' the page . ' | |. \ ` +Xrol* are out of , ' .' \_______/ \ \ . the page _, /, | `.`.__ / \' | / \ \ / | \ / `' | `' | +Xrols | +Yrols <--o ROLSES_S | | v | +Zrols Each ROLSES antenna frame is defined so that it's pointing direction, the ``boresight'', is its +Z axis. Then each +Xrol is aligned with +Xlnd, and +Yrol completes the right handed frame. You can see this at a ``glance'' by noting that each row in the following matrices represents the ROLSES axes +Xrol, +Yrol, +Zrol as unit vectors in IM1_LANDER coordinates. \begindata FRAME_IM1_ROLSES_N = -370011210 FRAME_-370011210_NAME = 'IM1_ROLSES_N' FRAME_-370011210_CLASS = 4 FRAME_-370011210_CLASS_ID = -370011210 FRAME_-370011210_CENTER = -370011 TKFRAME_-370011210_RELATIVE = 'IM1_LANDER' TKFRAME_-370011210_SPEC = 'MATRIX' TKFRAME_-370011210_MATRIX = ( 1 0 0 0 0 1 0 -1 0 ) FRAME_IM1_ROLSES_S = -370011220 FRAME_-370011220_NAME = 'IM1_ROLSES_S' FRAME_-370011220_CLASS = 4 FRAME_-370011220_CLASS_ID = -370011220 FRAME_-370011220_CENTER = -370011 TKFRAME_-370011220_RELATIVE = 'IM1_LANDER' TKFRAME_-370011220_SPEC = 'MATRIX' TKFRAME_-370011220_MATRIX = ( 1 0 0 0 0 -1 0 1 0 ) FRAME_IM1_ROLSES_NE = -370011230 FRAME_-370011230_NAME = 'IM1_ROLSES_NE' FRAME_-370011230_CLASS = 4 FRAME_-370011230_CLASS_ID = -370011230 FRAME_-370011230_CENTER = -370011 TKFRAME_-370011230_RELATIVE = 'IM1_LANDER' TKFRAME_-370011230_SPEC = 'MATRIX' TKFRAME_-370011230_MATRIX = ( 1 0 0 0 1 0 0 0 1 ) FRAME_IM1_ROLSES_NW = -370011240 FRAME_-370011240_NAME = 'IM1_ROLSES_NW' FRAME_-370011240_CLASS = 4 FRAME_-370011240_CLASS_ID = -370011240 FRAME_-370011240_CENTER = -370011 TKFRAME_-370011240_RELATIVE = 'IM1_LANDER' TKFRAME_-370011240_SPEC = 'MATRIX' TKFRAME_-370011240_MATRIX = ( 1 0 0 0 -1 0 0 0 -1 ) \begintext IM-1 NAIF ID Codes -- Definition Section ------------------------------------------------------------------------------- This section contains name to NAIF ID mappings for IM-1. \begindata NAIF_BODY_NAME += ( 'IM1' ) NAIF_BODY_CODE += ( -370011 ) NAIF_BODY_NAME += ( 'IM-1' ) NAIF_BODY_CODE += ( -370011 ) NAIF_BODY_NAME += ( 'ODYSSEUS' ) NAIF_BODY_CODE += ( -370011 ) NAIF_BODY_NAME += ( 'INTUITIVE_MACHINES_MISSION_1' ) NAIF_BODY_CODE += ( -370011 ) NAIF_BODY_NAME += ( 'CLPS_TO2IM' ) NAIF_BODY_CODE += ( -370011 ) NAIF_BODY_NAME += ( 'IM1_LANDING_SITE' ) NAIF_BODY_CODE += ( -370011900 ) NAIF_BODY_NAME += ( 'IM1_LANDER' ) NAIF_BODY_CODE += ( -370011000 ) NAIF_BODY_NAME += ( 'IM1_LRA' ) NAIF_BODY_CODE += ( -370011110 ) NAIF_BODY_NAME += ( 'IM1_ROLSES_N' ) NAIF_BODY_CODE += ( -370011210 ) NAIF_BODY_NAME += ( 'IM1_ROLSES_S' ) NAIF_BODY_CODE += ( -370011220 ) NAIF_BODY_NAME += ( 'IM1_ROLSES_NE' ) NAIF_BODY_CODE += ( -370011230 ) NAIF_BODY_NAME += ( 'IM1_ROLSES_NW' ) NAIF_BODY_CODE += ( -370011240 ) \begintext End of FK file.