KPL/IK L'RALPH Instrument Kernel ============================================================================== This instrument kernel (I-kernel) contains Lucy Visible/IR integrated imaging and spectroscopy remote sensing package (L'RALPH) optics, detector, and field-of-view parameters. Version and Date ---------------------------------------------------------- Version 0.2 -- May 12, 2020 -- Boris Semenov, NAIF Added Ralph radiator FOV definition (for LUCY_RALPH_RAD/-49290) Version 0.1 -- March 2, 2020 -- Boris Semenov, NAIF - Renamed LUCY_RALPH_MVIC_FT to LUCY_RALPH_MVIC to be consistent with the updated FK (lucy_v01.tf) Version 0.0 -- October 15, 2019 -- Boris Semenov, NAIF - Initial version heavily based on [4] References ---------------------------------------------------------- 1. Kernel Pool Required Reading 2. Frames Required Reading 3. Lucy Frames Kernel, latest version 4. New Horizons RALPH IK, nh_ralph_v100u.ti, NH SPICE data set NH-J/P/SS-SPICE-6-V1.0 5. L'RALPH Instrument CDR materials, LRalph_CDR_Day1_v2.pptx and LRalph_CDR_Day2_v2.pptx 6. Lucy Spacecraft to L'RALPH ICD, LUCY-RQ-17-SE-5A, latest version Contact Information ---------------------------------------------------------- Boris Semenov, NAIF/JPL, (818)-354-8136, Boris.Semenov@jpl.nasa.gov 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 SPICE API 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): spiceypy.furnsh( 'frame_kernel_name' ) This file was created and may be updated with a text editor or word processor. Naming Conventions ---------------------------------------------------------- All names referencing values in this I-kernel start with the characters `INS' followed by the NAIF Lucy spacecraft ID number (-49) followed by a NAIF three digit ID code for the L'RALPH instrument, defined in [3] as: LUCY_RALPH -49200 LUCY_RALPH_LEISA -49210 LUCY_RALPH_LEISA_YELLOW -49211 LUCY_RALPH_LEISA_GREEN -49212 LUCY_RALPH_LEISA_BLUE -49213 LUCY_RALPH_SCP -49220 LUCY_RALPH_MVIC -49230 LUCY_RALPH_MVIC_PAN -49231 LUCY_RALPH_MVIC_NIR -49232 LUCY_RALPH_MVIC_PHYLLO -49233 LUCY_RALPH_MVIC_ORANGE -49234 LUCY_RALPH_MVIC_GREEN -49235 LUCY_RALPH_MVIC_VIOLET -49236 LUCY_RALPH_SUNKOZ -49299 LUCY_RALPH_RAD -49290 The remainder of the name is an underscore character followed by the unique name of the data item. For example, the Ralph boresight direction in the Ralph LEISA frame (``LUCY_RALPH_LEISA'' -- see [3]) is specified by: INS-49210_BORESIGHT The upper bound on the length of the name of any data item is 32 characters. If the same item is included in more than one file, or if the same item appears more than once within a single file, the latest value supersedes any earlier values. L'RALPH description ---------------------------------------------------------- From [?]: TBD -- description in this section should be similar in scope to the description provided in [4] L'RALPH Field of View Parameters ---------------------------------------------------------- The detectors that constitute Ralph are MVIC, LEISA, and SCP. MVIC and LEISA has several focal plane arrays. - Multispectral Visible Imaging Camera (MVIC) - MVIC full array - MVIC Pan Array (PAN) - MVIC Near Infrared Array (NIR) - MVIC Phyllo Array (PHYLLO) - MVIC Orange Array (ORANGE) - MVIC Green Array (GREEN) - MVIC Violet Array (VIOLET) - Linear Etalon Imaging Spectral Array (LEISA) - LEISA Yellow Array (YELLOW) - LEISA Green Array (GREEN) - LEISA Blue Array (BLUE) - Solar Calibration Port (SCP) The field of view sizes for the above detectors/arrays based on pixel IFOVs and array sizes provided [5] are given in the tables below. Rectangular FOVs (coordinates in parenthesis are in the IPP frame): ---------- ---------------- ---------------- ---------------- Detector Horizontal Vertical Cone Axis (cross scan) ---------- ---------------- ---------------- ---------------- MVIC FT 8.308 deg (in Y) 0.904 deg (in Z) boresight (-X) NIR 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) PAN 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) PHYLLO 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) ORANGE 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) GREEN 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) VIOLET 8.308 deg (in Y) 0.106 deg (in Z) boresight (-X) LEISA 1.179 deg (in Y) 2.866 deg (in Z) boresight (-X) YELLOW 1.179 deg (in Y) 0.333 deg (in Z) boresight (-X) GREEN 1.179 deg (in Y) 0.662 deg (in Z) boresight (-X) BLUE 1.179 deg (in Y) 1.871 deg (in Z) boresight (-X) ---------- ---------------- ---------------- ---------------- Circular FOV: ---------- ---------------- ---------------- Detector Diameter Cone Axis ---------- ---------------- ---------------- SCP 5.0 degrees near +Y ---------- ---------------- ---------------- The MVIC and LEISA full FOV boresights are nominally through their full detector sensing area central pixel, along the -X axes of the corresponding detector frames, nominally aligned to the IPP -X axis. The MVIC and LEISA array boresights are nominally through their array area central pixel, along the -X axes of the corresponding array frames. The SCP cone axis is the IPP spacecraft ZX plane right-hand rotated by 38 degrees around the Y axis from the MVIC and LEISA boresights. The INS[ID]_FOV_FRAME, INS[ID]_FOV_SHAPE, INS[ID]_BORESIGHT, and FOV ANGLES specification keywords defined below are used to describe the instrument field of view. Since the SCP detector has a circular field of view, and the MVIC, LEISA, and their arrays have rectangular ones, the INS[ID]_FOV_SHAPE will either be 'CIRCLE' or 'RECTANGLE'. For SCP, GETFOV returns a single vector that lies along the edge of the circular cone, and for the MVIC arrays and LEISA, GETFOV returns four boundary corner vectors. Multispectral Visible Imaging Camera (MVIC) FOV Definitions Since the MVIC full array's angular size in Z is 0.904 degrees (half extent 0.452 degrees), looking along the Y axis in the instrument frame we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) ^ Z | inst | |. | | `. | | `. | | o`. | .452 `. | <---------------x -X | ,' Y (in) inst | ,' inst | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 And since the MVIC full array's angular size in Y is 8.308 degrees (half extent 4.154 degrees), looking down the Z axis in the instrument frame, we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) ^ Y | inst | |. | | `. | | `. | | o`. | 4.154 `. | <---------------o -X | ,' Z (out) inst | ,' inst | ,' | ,' |' |--- 1.0 ---| Plane Z = 0 These FOV half extent values for the MVIC full array are given in the keywords below: \begindata INS-49230_FOV_FRAME = 'LUCY_RALPH_MVIC' INS-49230_FOV_SHAPE = 'RECTANGLE' INS-49230_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49230_FOV_CLASS_SPEC = 'ANGLES' INS-49230_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49230_FOV_REF_ANGLE = ( 0.452 ) INS-49230_FOV_CROSS_ANGLE = ( 4.154 ) INS-49230_FOV_ANGLE_UNITS = 'DEGREES' \begintext The angular size in Z for each of the TDI arrays is 0.106 degrees (half extent 0.053 degrees). Looking along the Y axis in the TDI array frame we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) ^ Z | array | |. | | `. | | `. | | o`. | 0.053 `. | <---------------x -X | ,' Y (in) array | ,' array | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 Which leads to the following field of view definitions: \begindata INS-49231_FOV_FRAME = 'LUCY_RALPH_MVIC_PAN' INS-49231_FOV_SHAPE = 'RECTANGLE' INS-49231_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49231_FOV_CLASS_SPEC = 'ANGLES' INS-49231_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49231_FOV_REF_ANGLE = ( 0.053 ) INS-49231_FOV_CROSS_ANGLE = ( 4.154 ) INS-49231_FOV_ANGLE_UNITS = 'DEGREES' INS-49232_FOV_FRAME = 'LUCY_RALPH_MVIC_NIR' INS-49232_FOV_SHAPE = 'RECTANGLE' INS-49232_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49232_FOV_CLASS_SPEC = 'ANGLES' INS-49232_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49232_FOV_REF_ANGLE = ( 0.053 ) INS-49232_FOV_CROSS_ANGLE = ( 4.154 ) INS-49232_FOV_ANGLE_UNITS = 'DEGREES' INS-49233_FOV_FRAME = 'LUCY_RALPH_MVIC_PHYLLO' INS-49233_FOV_SHAPE = 'RECTANGLE' INS-49233_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49233_FOV_CLASS_SPEC = 'ANGLES' INS-49233_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49233_FOV_REF_ANGLE = ( 0.053 ) INS-49233_FOV_CROSS_ANGLE = ( 4.154 ) INS-49233_FOV_ANGLE_UNITS = 'DEGREES' INS-49234_FOV_FRAME = 'LUCY_RALPH_MVIC_ORANGE' INS-49234_FOV_SHAPE = 'RECTANGLE' INS-49234_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49234_FOV_CLASS_SPEC = 'ANGLES' INS-49234_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49234_FOV_REF_ANGLE = ( 0.053 ) INS-49234_FOV_CROSS_ANGLE = ( 4.154 ) INS-49234_FOV_ANGLE_UNITS = 'DEGREES' INS-49235_FOV_FRAME = 'LUCY_RALPH_MVIC_GREEN' INS-49235_FOV_SHAPE = 'RECTANGLE' INS-49235_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49235_FOV_CLASS_SPEC = 'ANGLES' INS-49235_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49235_FOV_REF_ANGLE = ( 0.053 ) INS-49235_FOV_CROSS_ANGLE = ( 4.154 ) INS-49235_FOV_ANGLE_UNITS = 'DEGREES' INS-49236_FOV_FRAME = 'LUCY_RALPH_MVIC_VIOLET' INS-49236_FOV_SHAPE = 'RECTANGLE' INS-49236_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49236_FOV_CLASS_SPEC = 'ANGLES' INS-49236_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49236_FOV_REF_ANGLE = ( 0.053 ) INS-49236_FOV_CROSS_ANGLE = ( 4.154 ) INS-49236_FOV_ANGLE_UNITS = 'DEGREES' \begintext Linear Etalon Imaging Spectral Array (LEISA) FOV Definition Since the LEISA's angular size in Z is 2.866 degrees (half extent 1.433 degrees), looking along the Y axis in the instrument frame we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) ^ Z | inst | |. | | `. | | `. | | o`. | 1.433 `. | <---------------x -X | ,' Y (in) inst | ,' inst | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 And since the LEISA's angular size in Y is 1.179 degrees (half extent 0.5895 degrees), looking down the Z axis in the instrument frame, we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) ^ Y | inst | |. | | `. | | `. | | o. | 0.5895 `. | <---------------o -X | ,' Z (out) inst | ,' inst | ,' | ,' |' |--- 1.0 ---| Plane Z = 0 These FOV half extent values for LEISA are given in the keywords below: \begindata INS-49210_FOV_FRAME = 'LUCY_RALPH_LEISA' INS-49210_FOV_SHAPE = 'RECTANGLE' INS-49210_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49210_FOV_CLASS_SPEC = 'ANGLES' INS-49210_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49210_FOV_REF_ANGLE = ( 1.433 ) INS-49210_FOV_CROSS_ANGLE = ( 0.5895 ) INS-49210_FOV_ANGLE_UNITS = 'DEGREES' \begintext The angular size in Z for the LEISA YELLOW, GREEN and BLUE arrays are 0.333 (half is 0.1665), 0.662 (half is 0.331), and 1.871 (half is 0.9355) degrees. Looking along the Y axis in the array frames we have: (Note we are arbitrarily choosing vectors that terminate in the X=-1 plane.) YELLOW: ^ Z | array | |. | | `. | | `. | | o. | 0.1665 `. | <---------------x -X | ,' Y (in) array | ,' array | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 GREEN: ^ Z | array | |. | | `. | | `. | | o`. | 0.331 `. | <---------------x -X | ,' Y (in) array | ,' array | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 BLUE: ^ Z | array | |. | | `. | | `. | | o`. | 0.9355 `. | <---------------x -X | ,' Y (in) array | ,' array | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 Which leads to the following field of view definitions: \begindata INS-49211_FOV_FRAME = 'LUCY_RALPH_LEISA_YELLOW' INS-49211_FOV_SHAPE = 'RECTANGLE' INS-49211_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49211_FOV_CLASS_SPEC = 'ANGLES' INS-49211_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49211_FOV_REF_ANGLE = ( 0.1665 ) INS-49211_FOV_CROSS_ANGLE = ( 0.5895 ) INS-49211_FOV_ANGLE_UNITS = 'DEGREES' INS-49212_FOV_FRAME = 'LUCY_RALPH_LEISA_GREEN' INS-49212_FOV_SHAPE = 'RECTANGLE' INS-49212_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49212_FOV_CLASS_SPEC = 'ANGLES' INS-49212_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49212_FOV_REF_ANGLE = ( 0.331 ) INS-49212_FOV_CROSS_ANGLE = ( 0.5895 ) INS-49212_FOV_ANGLE_UNITS = 'DEGREES' INS-49213_FOV_FRAME = 'LUCY_RALPH_LEISA_BLUE' INS-49213_FOV_SHAPE = 'RECTANGLE' INS-49213_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49213_FOV_CLASS_SPEC = 'ANGLES' INS-49213_FOV_REF_VECTOR = ( 0.0, 0.0, +1.0 ) INS-49213_FOV_REF_ANGLE = ( 0.9355 ) INS-49213_FOV_CROSS_ANGLE = ( 0.5895 ) INS-49213_FOV_ANGLE_UNITS = 'DEGREES' \begintext Solar Calibration Port (SCP) FOV Definition The SCP frame is defined such that the boresight is the port frame's Z axis. The field of view is circular with a 5 degree (half extent 2.5 degrees) angular size [TBD -- tentatively set to the SIA size from [4]]. A cross section is illustrated below. (Note we are arbitrarily choosing vectors that terminate in the Z=1 plane.) Y ^ scp | | | | | _.-| | _.-' o| |_.-' 2.5 | x--------------> X (in)`~._ | Z scp `~._ | scp `~.| |--- 1.0 ---| Plane X = 0 Because the SCP field of view is circular, the FOV reference vector (keyword FOV_REF_VECTOR) is any vector with a component that lies in a plane normal to the field of view boresight. We chose the +Y axis of the instrument frame. This FOV half extent value is given in the keywords below: \begindata INS-49220_FOV_FRAME = 'LUCY_RALPH_SCP' INS-49220_FOV_SHAPE = 'CIRCLE' INS-49220_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-49220_FOV_CLASS_SPEC = 'ANGLES' INS-49220_FOV_REF_VECTOR = ( 0.0, 1.0, 0.0 ) INS-49220_FOV_REF_ANGLE = ( 2.5 ) INS-49220_FOV_ANGLE_UNITS = 'DEGREES' \begintext Sun Damage Keep-out Zone (SUNKOZ) FOV Definition Per [6], SUNKOZ FOV is an 16 x 16 degree rectangle centered on the instrument frame's -X axis: ^ Z | inst | |. | | `. | | `. | | o`. | | 8.0 `. | <---------------x -X | ,' Y (in) inst | ,' inst | ,' | ,' |' |--- 1.0 ---| Plane Y = 0 This FOV is defined below: \begindata INS-49299_FOV_CLASS_SPEC = 'ANGLES' INS-49299_FOV_SHAPE = 'RECTANGLE' INS-49299_FOV_FRAME = 'LUCY_RALPH' INS-49299_BORESIGHT = ( -1.0, 0.0, 0.0 ) INS-49299_FOV_REF_VECTOR = ( 0.0, 0.0, 1.0 ) INS-49299_FOV_REF_ANGLE = ( 8.0 ) INS-49299_FOV_CROSS_ANGLE = ( 8.0 ) INS-49299_FOV_ANGLE_UNITS = ( 'DEGREES' ) \begintext Radiator (RAD) FOV Definition The radiator FOV is a 2pi steradian cone centered on the radiator frame's +Z axis: ^ X | rad | . | . ' | . | o | ' 180.0 | <---------------x +Z . Y (in) rad . rad . | ' . | | Plane Y = 0 To work around a limitation in the GFTFOV routine this FOV is defined below as a polygon with 8 boundary vectors, with the opposite vectors 179.8 degrees apart: \begindata INS-49290_FOV_FRAME = 'LUCY_RALPH_RAD' INS-49290_FOV_SHAPE = 'POLYGON' INS-49290_BORESIGHT = ( 0.0 0.0 1.0 ) INS-49290_FOV_BOUNDARY_CORNERS = ( 0.999998476913 0.000000000000 0.001745328366 0.707105704202 0.707105704202 0.001745328366 0.000000000000 0.999998476913 0.001745328366 -0.707105704202 0.707105704202 0.001745328366 -0.999998476913 0.000000000000 0.001745328366 -0.707105704202 -0.707105704202 0.001745328366 -0.000000000000 -0.999998476913 0.001745328366 0.707105704202 -0.707105704202 0.001745328366 ) \begintext L'RALPH Detector Parameters ---------------------------------------------------------- From [5], the MVIC pixels are 13 microns wide with a single pixel FOV of 29.0 microradians. The FT array is 5000 x 544 pixels while the TDI array sizes are 5000 x 64 pixels with 32 pixels gaps in between. These values are captured for each of the MVIC arrays in the keywords below. \begindata INS-49230_PIXEL_SIZE = ( 13.0 ) INS-49230_IFOV = ( 29.0 ) INS-49230_PIXEL_SAMPLES = ( 5000 ) INS-49230_PIXEL_LINES = ( 544 ) INS-49231_PIXEL_SIZE = ( 13.0 ) INS-49231_IFOV = ( 29.0 ) INS-49231_PIXEL_SAMPLES = ( 5000 ) INS-49231_PIXEL_LINES = ( 64 ) INS-49232_PIXEL_SIZE = ( 13.0 ) INS-49232_IFOV = ( 29.0 ) INS-49232_PIXEL_SAMPLES = ( 5000 ) INS-49232_PIXEL_LINES = ( 64 ) INS-49233_PIXEL_SIZE = ( 13.0 ) INS-49233_IFOV = ( 29.0 ) INS-49233_PIXEL_SAMPLES = ( 5000 ) INS-49233_PIXEL_LINES = ( 64 ) INS-49234_PIXEL_SIZE = ( 13.0 ) INS-49234_IFOV = ( 29.0 ) INS-49234_PIXEL_SAMPLES = ( 5000 ) INS-49234_PIXEL_LINES = ( 64 ) INS-49235_PIXEL_SIZE = ( 13.0 ) INS-49235_IFOV = ( 29.0 ) INS-49235_PIXEL_SAMPLES = ( 5000 ) INS-49235_PIXEL_LINES = ( 64 ) INS-49236_PIXEL_SIZE = ( 13.0 ) INS-49236_IFOV = ( 29.0 ) INS-49236_PIXEL_SAMPLES = ( 5000 ) INS-49236_PIXEL_LINES = ( 64 ) \begintext From [5], the LEISA super-pixels are 36 microns wide with a single super-pixel FOV of 80.36 microradians. The full LEISA array is 256 x 622.5 super-pixels, while the YELLOW, GREEN and BLUE arrays are 256 x 72.5, 256 x 144.0, and 256 x 406 super-pixels [TBD -- these vertical pixel values were ``guesstimated'' as they do not explicitly appear in [5]]. These values are captured for each of the MVIC arrays in the keywords below. \begindata INS-49210_PIXEL_SIZE = ( 36.0 ) INS-49210_IFOV = ( 80.36 ) INS-49210_PIXEL_SAMPLES = ( 256 ) INS-49210_PIXEL_LINES = ( 622.5 ) INS-49211_PIXEL_SIZE = ( 36.0 ) INS-49211_IFOV = ( 80.36 ) INS-49211_PIXEL_SAMPLES = ( 256 ) INS-49211_PIXEL_LINES = ( 72.5 ) INS-49212_PIXEL_SIZE = ( 36.0 ) INS-49212_IFOV = ( 80.36 ) INS-49212_PIXEL_SAMPLES = ( 256 ) INS-49212_PIXEL_LINES = ( 144.0 ) INS-49213_PIXEL_SIZE = ( 36.0 ) INS-49213_IFOV = ( 80.36 ) INS-49213_PIXEL_SAMPLES = ( 256 ) INS-49213_PIXEL_LINES = ( 406 ) \begintext End of IK file.