KPL/IK SARA instrument kernel Bjoern Grieger 2009-01-14 This instrument kernel (I-kernel) contains CHANDRAYAAN-1 Sub keV Atom Reflecting Analyzer (SARA) FOV parameters. Contents 1 Preliminaries 1.1 Version and Date 1.2 References 1.3 Contact Information 1.4 Implementation Notes 1.5 Conventions for Specifying Data 1.6 Instrument Overview 1.7 Mounting Alignment 2 Treatment of sensor sectors 3 Sector frame names 4 Field of view definitions 4.1 Sector boresights 4.2 Shape of field of view 4.3 Size of field of view 5 Defining the frames for the sectors 5.1 Frame class 5.2 Frame class ID 5.3 Frame center 5.4 Relative frame 1. Preliminaries 1.1. Version and Date +------------+------------+----------------+ |Version 0.0 | 2009-01-14 | Bjoern Grieger | +------------+------------+----------------+ Section 1 is along the lines of the SIR2 instrument kernel, the other sections have been written from scratch, with knowledge acquired from the SMART-1 spacecraft frames kernel. 1.2. References (1) Kernel Pool Required Reading (2) C-kernel Required Reading (3) SARA Sensor Numbering and Requirement for Auxiliary Data, CH1-SARA-DS-0017, Version 1/0 (4) CH1 Frames Definition Kernel (FK), (official version from ISRO not yet available, preliminary version `CH1_V02.TF' by Bjoern Grieger) 1.3. Contact Information Bjoern Grieger, ESA/SRE-OS, +34 91 81 31 107, bgrieger@sciops.esa.int 1.4. Implementation Notes Applications that need SPICE I-kernel data must "load" the I-kernel file, normally during program initialization. Loading the kernel using the SPICELIB routine FURNSH causes the data items and their associated values present in the kernel to become associated with a data structure called the "kernel pool". The appli- cation program may then obtain the value(s) for any IK data item using the SPICELIB routines GDPOOL, GIPOOL, GCPOOL. Routine GETFOV may also be used if the file contains instrument field-of-view (FOV) specifica- tions. See (1) for details. This file was created from LaTeX source code and should prefer- ably be updated by editing the source and recreating the kernel file. Alternatively, the kernel file itself can directly be updated with a text editor, however, care must be taken to preserve consistency in cross references and between assignments for different sensor sectors. 1.5. Conventions for Specifying Data Data items are specified using "keyword=value" assignments (1). All keywords referencing values for defining fields of view in this I-ker- nel start with the characters `INS' followed by the NAIF CHANDRAYAAN-1 instrument ID code, constructed using the spacecraft ID number, -86, followed by the NAIF three digit ID number for the respective intru- ment frame. The remainder of the keyword is an underscore character followed by the unique name of the data item. The upper bound on the length of all keywords is 32 characters. If a keyword is included in more then one file, or if the same keyword appears more than once within a single file, the last assign- ment supersedes any earlier assignments. 1.6. Instrument Overview The SARA instrument consists of three independent units 1. Chandrayaan-1 Energetic Neutral Analyzer (CENA) to detect low energy neutral atoms (LENAs) produced from lunar surface 2. Solar WInd Monitor (SWIM) to measure solar wind. 3. Digital Processing Unit (DPU) CENA detects neural atoms in the energy range 10 eV - 3.3 keV with an energy resolution of 50% and thereby enables to find the mass of neutral atoms sputtered from lunar surface. CENA consists of 4 subsystems, which are a Charged particle removal system, a conversion surface, an energy analysis system and a system to provide the time of flight analysis. It is capable of resolving all major mass groups H, O, Na-Mg group, K-Ca group and Fe. SWIM which is basically an ion-mass analyzer which detects ions in various mass and energy bins, in the energy range 10 eV - 15 keV, in the vicinity of the Moon. In other words it measures the solar wind flux precipitating on Moon. The main two components of SWIM are a sensor and the associated electronic board. The sensor consists of an electrostatic deflector, electrostatic energy analyzer and a system to provide the time of flight analysis. SWIM detects ions with an energy resolution of 7%. The two sensors CENA and SWIM are connected to spacecraft through DPU. DPU consists of 1. A processing unit 2. Sensor interface Unit 3. Power Distribution Unit 4. Spacecraft Interface Unit DPU acquires data from the two sensors simultaneously; process the data including time integration, binning, lossless compression, data formatting, storage, and transfer to the telemetry (TM) as per the TM requirements. Power distribution to sensors is under DPU control. 1.7. Mounting Alignment The orientation of the CENA and SWIM co-ordinate systems with respect to the spacecraft co-ordinate system is described in the CHANDRAYAAN-1 Frames Definition Kernel (FK) (4). Nominal mounting on the spacecraft is assumed. Rotations on the spacecraft have not been measured as there is no target on the sensors. 2. Treatment of sensor sectors CENA as well as SWIM collects data from different direction sectors. Each sector has a (approximately) rectangular field of view. Our approach to describe these different sectors is the following: * Besides the two sensor (CENA and SWIM) frames defined in the space- craft frames definition kernel, we define herein one frame for each sector. * All sector frames of one sensor are parallel to the respective sen- sor frame. * Each sector is distinguished by its boresight vector, expressed in the sensor frame. 3. Sector frame names Each sector frame name has to be assigned to a couple of SPICE kernel pool variables (and a variable comprising this name has to be cre- ated). We encompass all these naming assignments in the following data section. Sector frame names are _not_ used elsewhere in this kernel. \begindata FRAME_CH1_CENA_1 = -86601 FRAME_-86601_NAME = 'CH1_CENA_1' INS-86601_FOV_FRAME = 'CH1_CENA_1' NAIF_BODY_NAME += 'CH1_CENA_1' NAIF_BODY_CODE += -86601 FRAME_CH1_CENA_2 = -86602 FRAME_-86602_NAME = 'CH1_CENA_2' INS-86602_FOV_FRAME = 'CH1_CENA_2' NAIF_BODY_NAME += 'CH1_CENA_2' NAIF_BODY_CODE += -86602 FRAME_CH1_CENA_3 = -86603 FRAME_-86603_NAME = 'CH1_CENA_3' INS-86603_FOV_FRAME = 'CH1_CENA_3' NAIF_BODY_NAME += 'CH1_CENA_3' NAIF_BODY_CODE += -86603 FRAME_CH1_CENA_4 = -86604 FRAME_-86604_NAME = 'CH1_CENA_4' INS-86604_FOV_FRAME = 'CH1_CENA_4' NAIF_BODY_NAME += 'CH1_CENA_4' NAIF_BODY_CODE += -86604 FRAME_CH1_CENA_5 = -86605 FRAME_-86605_NAME = 'CH1_CENA_5' INS-86605_FOV_FRAME = 'CH1_CENA_5' NAIF_BODY_NAME += 'CH1_CENA_5' NAIF_BODY_CODE += -86605 FRAME_CH1_CENA_6 = -86606 FRAME_-86606_NAME = 'CH1_CENA_6' INS-86606_FOV_FRAME = 'CH1_CENA_6' NAIF_BODY_NAME += 'CH1_CENA_6' NAIF_BODY_CODE += -86606 FRAME_CH1_CENA_7 = -86607 FRAME_-86607_NAME = 'CH1_CENA_7' INS-86607_FOV_FRAME = 'CH1_CENA_7' NAIF_BODY_NAME += 'CH1_CENA_7' NAIF_BODY_CODE += -86607 FRAME_CH1_SWIM_1 = -86611 FRAME_-86611_NAME = 'CH1_SWIM_1' INS-86611_FOV_FRAME = 'CH1_SWIM_1' NAIF_BODY_NAME += 'CH1_SWIM_1' NAIF_BODY_CODE += -86611 FRAME_CH1_SWIM_2 = -86612 FRAME_-86612_NAME = 'CH1_SWIM_2' INS-86612_FOV_FRAME = 'CH1_SWIM_2' NAIF_BODY_NAME += 'CH1_SWIM_2' NAIF_BODY_CODE += -86612 FRAME_CH1_SWIM_3 = -86613 FRAME_-86613_NAME = 'CH1_SWIM_3' INS-86613_FOV_FRAME = 'CH1_SWIM_3' NAIF_BODY_NAME += 'CH1_SWIM_3' NAIF_BODY_CODE += -86613 FRAME_CH1_SWIM_4 = -86614 FRAME_-86614_NAME = 'CH1_SWIM_4' INS-86614_FOV_FRAME = 'CH1_SWIM_4' NAIF_BODY_NAME += 'CH1_SWIM_4' NAIF_BODY_CODE += -86614 FRAME_CH1_SWIM_5 = -86615 FRAME_-86615_NAME = 'CH1_SWIM_5' INS-86615_FOV_FRAME = 'CH1_SWIM_5' NAIF_BODY_NAME += 'CH1_SWIM_5' NAIF_BODY_CODE += -86615 FRAME_CH1_SWIM_6 = -86616 FRAME_-86616_NAME = 'CH1_SWIM_6' INS-86616_FOV_FRAME = 'CH1_SWIM_6' NAIF_BODY_NAME += 'CH1_SWIM_6' NAIF_BODY_CODE += -86616 FRAME_CH1_SWIM_7 = -86617 FRAME_-86617_NAME = 'CH1_SWIM_7' INS-86617_FOV_FRAME = 'CH1_SWIM_7' NAIF_BODY_NAME += 'CH1_SWIM_7' NAIF_BODY_CODE += -86617 FRAME_CH1_SWIM_8 = -86618 FRAME_-86618_NAME = 'CH1_SWIM_8' INS-86618_FOV_FRAME = 'CH1_SWIM_8' NAIF_BODY_NAME += 'CH1_SWIM_8' NAIF_BODY_CODE += -86618 \begintext 4. Field of view definitions 4.1. Sector boresights These boresight vectors are taken from (3), however, due to a private communication with Martin Wieser, the numbering of SWIM sectors is reversed. \begindata INS-86601_BORESIGHT = ( 125.25, 59.74, 16.17 ) INS-86602_BORESIGHT = ( 94.64, 101.49, 16.17 ) INS-86603_BORESIGHT = ( 50.86, 129.11, 16.17 ) INS-86604_BORESIGHT = ( 0.00, 138.77, 16.17 ) INS-86605_BORESIGHT = ( -50.86, 129.11, 16.17 ) INS-86606_BORESIGHT = ( -94.64, 101.49, 16.17 ) INS-86607_BORESIGHT = ( -125.25, 59.75, 16.17 ) INS-86611_BORESIGHT = ( 0.00, 27.25, 0.00 ) INS-86612_BORESIGHT = ( 11.82, 24.55, 0.00 ) INS-86613_BORESIGHT = ( 21.31, 16.99, 0.00 ) INS-86614_BORESIGHT = ( 26.57, 6.06, 0.00 ) INS-86615_BORESIGHT = ( 26.57, -6.06, 0.00 ) INS-86616_BORESIGHT = ( 21.31, -16.99, 0.00 ) INS-86617_BORESIGHT = ( 11.82, -24.55, 0.00 ) INS-86618_BORESIGHT = ( 0.00, -27.25, 0.00 ) \begintext 4.2. Shape of field of view \begindata INS-86601_FOV_SHAPE = 'RECTANGLE' INS-86602_FOV_SHAPE = 'RECTANGLE' INS-86603_FOV_SHAPE = 'RECTANGLE' INS-86604_FOV_SHAPE = 'RECTANGLE' INS-86605_FOV_SHAPE = 'RECTANGLE' INS-86606_FOV_SHAPE = 'RECTANGLE' INS-86607_FOV_SHAPE = 'RECTANGLE' INS-86611_FOV_SHAPE = 'RECTANGLE' INS-86612_FOV_SHAPE = 'RECTANGLE' INS-86613_FOV_SHAPE = 'RECTANGLE' INS-86614_FOV_SHAPE = 'RECTANGLE' INS-86615_FOV_SHAPE = 'RECTANGLE' INS-86616_FOV_SHAPE = 'RECTANGLE' INS-86617_FOV_SHAPE = 'RECTANGLE' INS-86618_FOV_SHAPE = 'RECTANGLE' \begintext 4.3. Size of field of view In order to specify the size of the field of view, we have to define a reference vector which should be parallel to one of the edges of the rectangular field of view. In order to use the same reference vector for all sectors, we use a vector perpendicular to the plane of all sector boresights. \begindata INS-86601_FOV_REF_VECTOR = (0 0 1) INS-86602_FOV_REF_VECTOR = (0 0 1) INS-86603_FOV_REF_VECTOR = (0 0 1) INS-86604_FOV_REF_VECTOR = (0 0 1) INS-86605_FOV_REF_VECTOR = (0 0 1) INS-86606_FOV_REF_VECTOR = (0 0 1) INS-86607_FOV_REF_VECTOR = (0 0 1) INS-86611_FOV_REF_VECTOR = (0 0 1) INS-86612_FOV_REF_VECTOR = (0 0 1) INS-86613_FOV_REF_VECTOR = (0 0 1) INS-86614_FOV_REF_VECTOR = (0 0 1) INS-86615_FOV_REF_VECTOR = (0 0 1) INS-86616_FOV_REF_VECTOR = (0 0 1) INS-86617_FOV_REF_VECTOR = (0 0 1) INS-86618_FOV_REF_VECTOR = (0 0 1) \begintext We specify the field of view as angles. \begindata INS-86601_FOV_CLASS_SPEC = 'ANGLES' INS-86602_FOV_CLASS_SPEC = 'ANGLES' INS-86603_FOV_CLASS_SPEC = 'ANGLES' INS-86604_FOV_CLASS_SPEC = 'ANGLES' INS-86605_FOV_CLASS_SPEC = 'ANGLES' INS-86606_FOV_CLASS_SPEC = 'ANGLES' INS-86607_FOV_CLASS_SPEC = 'ANGLES' INS-86611_FOV_CLASS_SPEC = 'ANGLES' INS-86612_FOV_CLASS_SPEC = 'ANGLES' INS-86613_FOV_CLASS_SPEC = 'ANGLES' INS-86614_FOV_CLASS_SPEC = 'ANGLES' INS-86615_FOV_CLASS_SPEC = 'ANGLES' INS-86616_FOV_CLASS_SPEC = 'ANGLES' INS-86617_FOV_CLASS_SPEC = 'ANGLES' INS-86618_FOV_CLASS_SPEC = 'ANGLES' \begintext The angles are given in degrees. \begindata INS-86601_FOV_ANGLE_UNITS = 'DEGREES' INS-86602_FOV_ANGLE_UNITS = 'DEGREES' INS-86603_FOV_ANGLE_UNITS = 'DEGREES' INS-86604_FOV_ANGLE_UNITS = 'DEGREES' INS-86605_FOV_ANGLE_UNITS = 'DEGREES' INS-86606_FOV_ANGLE_UNITS = 'DEGREES' INS-86607_FOV_ANGLE_UNITS = 'DEGREES' INS-86611_FOV_ANGLE_UNITS = 'DEGREES' INS-86612_FOV_ANGLE_UNITS = 'DEGREES' INS-86613_FOV_ANGLE_UNITS = 'DEGREES' INS-86614_FOV_ANGLE_UNITS = 'DEGREES' INS-86615_FOV_ANGLE_UNITS = 'DEGREES' INS-86616_FOV_ANGLE_UNITS = 'DEGREES' INS-86617_FOV_ANGLE_UNITS = 'DEGREES' INS-86618_FOV_ANGLE_UNITS = 'DEGREES' \begintext Now we set the half diameter of the field of few parallel to the reference vector. The values are from (3). \begindata INS-86601_FOV_REF_ANGLE = 6.7 INS-86602_FOV_REF_ANGLE = 6.7 INS-86603_FOV_REF_ANGLE = 6.7 INS-86604_FOV_REF_ANGLE = 6.7 INS-86605_FOV_REF_ANGLE = 6.7 INS-86606_FOV_REF_ANGLE = 6.7 INS-86607_FOV_REF_ANGLE = 6.7 INS-86611_FOV_REF_ANGLE = 4.5 INS-86612_FOV_REF_ANGLE = 4.5 INS-86613_FOV_REF_ANGLE = 4.5 INS-86614_FOV_REF_ANGLE = 4.5 INS-86615_FOV_REF_ANGLE = 4.5 INS-86616_FOV_REF_ANGLE = 4.5 INS-86617_FOV_REF_ANGLE = 4.5 INS-86618_FOV_REF_ANGLE = 4.5 \begintext And now we set the half diameter of the field of few perpendicu- lar to the reference vector. The values are from a private communica- tion with Martin Wieser. \begindata INS-86601_FOV_CROSS_ANGLE = 10.75 INS-86602_FOV_CROSS_ANGLE = 10.75 INS-86603_FOV_CROSS_ANGLE = 10.75 INS-86604_FOV_CROSS_ANGLE = 10.75 INS-86605_FOV_CROSS_ANGLE = 10.75 INS-86606_FOV_CROSS_ANGLE = 10.75 INS-86607_FOV_CROSS_ANGLE = 10.75 INS-86611_FOV_CROSS_ANGLE = 11.25 INS-86612_FOV_CROSS_ANGLE = 11.25 INS-86613_FOV_CROSS_ANGLE = 11.25 INS-86614_FOV_CROSS_ANGLE = 11.25 INS-86615_FOV_CROSS_ANGLE = 11.25 INS-86616_FOV_CROSS_ANGLE = 11.25 INS-86617_FOV_CROSS_ANGLE = 11.25 INS-86618_FOV_CROSS_ANGLE = 11.25 \begintext 5. Defining the frames for the sectors 5.1. Frame class The frame class for a TK frame is 4. \begindata FRAME_-86601_CLASS = 4 FRAME_-86602_CLASS = 4 FRAME_-86603_CLASS = 4 FRAME_-86604_CLASS = 4 FRAME_-86605_CLASS = 4 FRAME_-86606_CLASS = 4 FRAME_-86607_CLASS = 4 FRAME_-86611_CLASS = 4 FRAME_-86612_CLASS = 4 FRAME_-86613_CLASS = 4 FRAME_-86614_CLASS = 4 FRAME_-86615_CLASS = 4 FRAME_-86616_CLASS = 4 FRAME_-86617_CLASS = 4 FRAME_-86618_CLASS = 4 \begintext 5.2. Frame class ID For a TK frame the frame class ID must match the frame ID. \begindata FRAME_-86601_CLASS_ID = -86601 FRAME_-86602_CLASS_ID = -86602 FRAME_-86603_CLASS_ID = -86603 FRAME_-86604_CLASS_ID = -86604 FRAME_-86605_CLASS_ID = -86605 FRAME_-86606_CLASS_ID = -86606 FRAME_-86607_CLASS_ID = -86607 FRAME_-86611_CLASS_ID = -86611 FRAME_-86612_CLASS_ID = -86612 FRAME_-86613_CLASS_ID = -86613 FRAME_-86614_CLASS_ID = -86614 FRAME_-86615_CLASS_ID = -86615 FRAME_-86616_CLASS_ID = -86616 FRAME_-86617_CLASS_ID = -86617 FRAME_-86618_CLASS_ID = -86618 \begintext 5.3. Frame center We set the spacecraft as frame center. \begindata FRAME_-86601_CENTER = -86 FRAME_-86602_CENTER = -86 FRAME_-86603_CENTER = -86 FRAME_-86604_CENTER = -86 FRAME_-86605_CENTER = -86 FRAME_-86606_CENTER = -86 FRAME_-86607_CENTER = -86 FRAME_-86611_CENTER = -86 FRAME_-86612_CENTER = -86 FRAME_-86613_CENTER = -86 FRAME_-86614_CENTER = -86 FRAME_-86615_CENTER = -86 FRAME_-86616_CENTER = -86 FRAME_-86617_CENTER = -86 FRAME_-86618_CENTER = -86 \begintext 5.4. Relative frame All sector frames are defined relative to the respective sensor frame (which is defined in the spacecraft frames kernel). \begindata TKFRAME_-86601_RELATIVE = 'CH1_CENA' TKFRAME_-86602_RELATIVE = 'CH1_CENA' TKFRAME_-86603_RELATIVE = 'CH1_CENA' TKFRAME_-86604_RELATIVE = 'CH1_CENA' TKFRAME_-86605_RELATIVE = 'CH1_CENA' TKFRAME_-86606_RELATIVE = 'CH1_CENA' TKFRAME_-86607_RELATIVE = 'CH1_CENA' TKFRAME_-86611_RELATIVE = 'CH1_SWIM' TKFRAME_-86612_RELATIVE = 'CH1_SWIM' TKFRAME_-86613_RELATIVE = 'CH1_SWIM' TKFRAME_-86614_RELATIVE = 'CH1_SWIM' TKFRAME_-86615_RELATIVE = 'CH1_SWIM' TKFRAME_-86616_RELATIVE = 'CH1_SWIM' TKFRAME_-86617_RELATIVE = 'CH1_SWIM' TKFRAME_-86618_RELATIVE = 'CH1_SWIM' \begintext The sector frames have the same orientation as their respective sensor frames. Thus we have to prescribe a null rotation. We do this by a matrix. \begindata TKFRAME_-86601_SPEC = 'MATRIX' TKFRAME_-86602_SPEC = 'MATRIX' TKFRAME_-86603_SPEC = 'MATRIX' TKFRAME_-86604_SPEC = 'MATRIX' TKFRAME_-86605_SPEC = 'MATRIX' TKFRAME_-86606_SPEC = 'MATRIX' TKFRAME_-86607_SPEC = 'MATRIX' TKFRAME_-86611_SPEC = 'MATRIX' TKFRAME_-86612_SPEC = 'MATRIX' TKFRAME_-86613_SPEC = 'MATRIX' TKFRAME_-86614_SPEC = 'MATRIX' TKFRAME_-86615_SPEC = 'MATRIX' TKFRAME_-86616_SPEC = 'MATRIX' TKFRAME_-86617_SPEC = 'MATRIX' TKFRAME_-86618_SPEC = 'MATRIX' \begintext This is the matrix for a null rotation. \begindata TKFRAME_-86601_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86602_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86603_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86604_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86605_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86606_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86607_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86611_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86612_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86613_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86614_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86615_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86616_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86617_MATRIX = (1 0 0 0 1 0 0 0 1) TKFRAME_-86618_MATRIX = (1 0 0 0 1 0 0 0 1) \begintext