KPL/IK

\beginlabel
PDS_VERSION_ID               = PDS3
RECORD_TYPE                  = STREAM
RECORD_BYTES                 = "N/A"
^SPICE_KERNEL                = "MGS_MHSA_V23.TI"
MISSION_NAME                 = "MARS GLOBAL SURVEYOR"
SPACECRAFT_NAME              = "MARS GLOBAL SURVEYOR"
DATA_SET_ID                  = "MGS-M-SPICE-6-V1.0"
KERNEL_TYPE_ID               = IK
PRODUCT_ID                   = "MGS_MHSA_V23.TI"
PRODUCT_CREATION_TIME        = 2000-01-04T09:41:58
PRODUCER_ID                  = "NAIF/JPL"
MISSION_PHASE_NAME           = "N/A"
PRODUCT_VERSION_TYPE         = ACTUAL
PLATFORM_OR_MOUNTING_NAME    = "MGS NADIR DECK"
START_TIME                   = "N/A"
STOP_TIME                    = "N/A"
SPACECRAFT_CLOCK_START_COUNT = "N/A"
SPACECRAFT_CLOCK_STOP_COUNT  = "N/A"
TARGET_NAME                  = MARS
INSTRUMENT_NAME              = "MGS HORIZON SENSOR ASSEMBLY"
NAIF_INSTRUMENT_ID           = -94020
SOURCE_PRODUCT_ID            = "N/A"
NOTE                         = "See comments in the file for details"
OBJECT                       = SPICE_KERNEL
  INTERCHANGE_FORMAT         = ASCII
  KERNEL_TYPE                = INSTRUMENT
  DESCRIPTION                = "MGS Mars Horizon Sensor Assembly instrument
parameters SPICE I-Kernel File. This file also contains MHSA Frame
definitions."
END_OBJECT                   = SPICE_KERNEL
\endlabel


MHSA Instrument Kernel
===========================================================================
 
     This MGS Horizon Sensor Assembly (MHSA) instrument kernel (I-kernel)
     contains the instrument base mounting offset, and field of view
     orientation data for four detectors of the instrument.
 
 
Version and Date
--------------------------------------------------------
 
     Version 2.3 -- August 11, 1997
 
 
Revisions
--------------------------------------------------------
 
     Version 2.3 -- August 11, 1997
     
         Frame definitions were corrected to represent the correct
         trasnformation sense.
 
     Version 2.2 -- July 18, 1997
     
         Direction of the FOV principal axis of each detector was changed
         to point to the center of the middle lower element instead 
         of the geometrical center of the FOV (center of the circle 
         circumscribing all 4 elements). 2.7 degrees was subtracted 
         from ALPHA angle for each detector. 
          
     Version 2.1 -- July 9, 1997
     
         Section containing MHSA frame definitions was added.
         
     Version 2.0 -- January 27, 1997 
     
         Initial release.
         
 
 
References
--------------------------------------------------------
 
         1.   ``MGS Alignment Transformation'', by Richard A. Hund, 
              November 26, 1996.
 
         2.   Horizon Sensor Assembly Data Sheet, by EDO/BARNES Engineering
              Department, 12/6/90 - 12/12/90

         3.   ``C-kernel Required Reading''
 
         4.   ``Kernel Pool Required Reading''
         
         5.   Memo "???", from ???, (provided by T.Martin, on January 
              10, 1997)

         6.   MHSA assembly drawing ??? provided by C.Connor and T.Martin, 
              on July 17, 1997.
              
 
 
Implementation Notes
--------------------------------------------------------
 
     This file is used by the SPICE system as follows: programs that make
     use of this I-kernel must `load' the kernel, normally during program
     initialization. Loading the kernel associates data items with their
     names in a data structure called the `kernel pool'. The SPICELIB
     routine LDPOOL loads a kernel file into the pool as shown below.
 
 
        CALL LDPOOL ( I_kernel_name )
 
 
     In order for a program or subroutine to extract data from the pool,
     the SPICELIB routines GDPOOL and GIPOOL are used. See [4] for more 
     details.
     
     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 Mars Global Surveyor spacecraft 
     ID number (-94) followed by the NAIF three digit MHSA instrument
     reference number (020).
 
     The remainder of the name is an underscore character followed by the
     unique name of the data item. For example, the mounting alignment of 
     the MHSA is specified by
 
 
        INS-94020_EULER_ANGLES
 
 
     The upper bound on the length of the name of any data item is 32
     characters.
 
     If the same item is included in more then one file, or if the same
     item appears more than once within a single file, the latest value
     supersedes any earlier values.
 
 
MHSA mounting offset
--------------------------------------------------------
 
     This section describes the offset of the MHSA instrument fixed frame
     (the frame fixed to the alignment cube on the MHSA) relative to the
     Mars Global Surveyor spacecraft frame. From the offset, given as three
     rotation angles -- ROLL, PITCH and YAW, a rotation matrix can be 
     constructed that will transform the components of a vector expressed 
     in the spacecraft frame to components expressed in the MHSA instrument
     fixed frame. For example, if x y and z are the components of a vector
     expressed in the spacecraft frame, X Y and Z will be the components of
     the same vector expressed in the MHSA instrument fixed frame:
 
 
        [ X ]    [     ]  [ x ]
        | Y |  = | ROT |  | y |
        [ Z ]    [     ]  [ z ]
 
 
     where ROT is the rotation matrix constructed from the rotation angles
     as follows:
     
        [     ]   [     ]  [       ]  [      ]
        [ ROT ] = [ YAW ]  [ PITCH ]  [ ROLL ]
        [     ]   [     ]  [       ]  [      ]
                         Z          Y         X
                         
     where each of three matrixes on the right side represent a coordinate
     frame rotation by the given angle around the indicated axis. See the
     SPICELIB routine EUL2M for more information about constructing
     a rotation matrix from a set of rotation angles.
 
     The following measured values of ROLL, PITCH and YAW provided in [1] 
     give the alignment of the MHSA alignment cube:
     
        ROLL  =   359.967 (degrees) 
        PITCH =     0.037 (degrees)
        YAW   =   359.974 (degrees)
        
     An additional -45 degrees offset must be applied in YAW because the 
     actual MHSA frame (or so called Barnes frame) in which the detector
     field of view vectors are defined is rotated relative to the alignment 
     cube by that angle about Z axis. So
     
        YAW   = ( 359.974 - 45.0 ) = 314.974 (degrees)

     The keyword INS-94020_EULER_ANGLES contains these values, in radians, 
     in the following order:
     
        INS-94020_EULER_ANGLES = (  ``ROLL''  ``PITCH''  ``YAW''  )
        
     The keyword INS-94020_EULER_AXES contains integer codes of the 
     corresponding axes of rotations (1 -- X, 2 -- Y, 3 -- Z).
     
 
        \begindata
 
        INS-94020_EULER_ANGLES = (  6.282609348526 0.000645771823 5.497333358177 )
        INS-94020_EULER_AXES   = (  1              2              3              )
 
        \begintext
 
 
Orientation of the detector FOVs
--------------------------------------------------------
 
     The following description the MHSA detector field of view vectors is 
     provided in [5]:
     
       ``...
       
         For each MHSA quadrant, two angles are necessary to 
         describe the field of view vectors in Barnes(*) frame. 
         These angles are ALPHA and THETA. Following is the 
         table showing the Barnes data:
         
                        THETA          ALPHA
                     -----------    -----------
                  1     44.85583       65.68686
                  2     45.11277       65.62951
                  3     45.18111       65.62672
                  4     44.81861       65.72406
                  
         ALPHA (A) is defined as the angle from Barnes Z axis 
         to the field of view vector. In general, THETA (T) 
         defines an angle from Barnes +/-Y axis to the 
         projection of the field of view vector onto the Barnes
         XY plane. However, the precise definition of the angle 
         depends on which quadrant it refers to. Following is 
         a table which specifies how the field of view vectors 
         were calculated in the Barnes frame, using the correct 
         quadrant dependent definition of THETA.
         
                           X              Y           Z
                     ------------   ------------   -------     
            QUAD1     sin(A)sin(T)   sin(A)cos(T)  cos(A)   
            QUAD2    -sin(A)sin(T)  -sin(A)cos(T)  cos(A)   
            QUAD3     sin(A)sin(T)  -sin(A)cos(T)  cos(A)   
            QUAD4    -sin(A)sin(T)   sin(A)cos(T)  cos(A)      
            
         ...''

     The angles ALPHA and THETA provided in the first table above
     in combination with the data from the second table can be easily 
     transformed into two other angles (ALPHA' and THETA'), defining the 
     rotations required to construct a rotation matrix that will transform  
     the components of a vector expressed in the MHSA instrument fixed frame  
     to the components of a vector expressed in a particular detector frame.
     
     The first of these angles, THETA', is the angle between +X axis of the 
     Barnes frame and projection of the field of view vector onto the Barnes
     XY plane. It can be derived from THETA and corresponds to the first 
     rotation about +Z axis of the Barnes frame. The second angle, 
     ALPHA', is the same as ALPHA, i.e. it the angle from Barnes Z axis 
     to the field of view vector. It corresponds to the second 
     rotation about new position of the +Y axis of the Barnes frame.
     
     The derived values of the ALPHA' and THETA' are provided in the table
     below:
     
                           THETA'                      ALPHA'
                   ----------------------------     -----------
              1   (  90 - 44.85583 ) =  45.14417      65.68686
              2   ( 270 - 45.11277 ) = 224.88723      65.62951
              3   ( 270 + 45.18111 ) = 315.18111      65.62672
              4   (  90 + 44.81861 ) = 134.81861      65.72406
              
     The FOV vectors defined in the table above go through the geometrical
     centers of the detectors (i.e. centers of the circles circumscribing 
     4 elements of each FOV). To make the centers of the middle lower 
     elements be FOV vectors, 2.7 degrees offset must be subtracted
     from ALPHA angle for each detector:
     
                           THETA'                      ALPHA'       ALPHA1'
                   ----------------------------     -----------   ----------
              1   (  90 - 44.85583 ) =  45.14417      65.68686     62.98686
              2   ( 270 - 45.11277 ) = 224.88723      65.62951     62.92951
              3   ( 270 + 45.18111 ) = 315.18111      65.62672     62.92672
              4   (  90 + 44.81861 ) = 134.81861      65.72406     63.02406
              
     A rotation matrix transforming the components of a vector expressed in 
     the MHSA instrument fixed frame to the components of a vector expressed 
     in a particular detector frame can be constructed from these two 
     rotation angles as follows:
     
        [      ]    [         ]  [         ]
        [ ROTi ] =  [ ALPHA'i ]  [ THETA'i ]
        [      ]    [         ]  [         ]
                               Y            Z
                         
     where each of two matrixes on the right side represent a coordinate
     frame rotation by the given angle around the indicated axis. See the
     SPICELIB routine EUL2M for more information about constructing
     a rotation matrix from a set of rotation angles.
     
     Then given a X Y and Z, the components of a vector expressed in the 
     Barnes instrument fixed frame, the corresponding Xi Yi and Zi,  
     the components of the same vector expressed in the "i"th detector 
     frame, can be calculated as follows:
 
 
        [ Xi ]    [      ]  [ x ]
        | Yi |  = | ROTi |  | y |
        [ Zi ]    [      ]  [ z ]
 
 
     where ROTi is the rotation matrix constructed from the corresponding 
     rotation angles above     
 
     The keywords INS-94020_D<<i>>_EULER_ANGLES, where <<i>> is the detector
     index (1,2,3 and 4), contain these values, in radians, in the following 
     order:
     
        INS-94020_D<<i>>_EULER_ANGLES = (  ``THETA1i''  ``ALPHA1i''  0  )
        
     The third component is set to 0 for all four detectors since tilt of 
     the FOV is insignificant for processing of the data coming from a 
     detector.

     The keywords INS-94020_D<<i>>_EULER_AXES contain integer codes of the 
     corresponding axes of rotations (1 -- X, 2 -- Y, 3 -- Z). 
     
     ALPHA angle values below are given for lower middle detector centers.
     
        \begindata
 
        INS-94020_D1_EULER_ANGLES = (   0.7879144046    1.0993280925   0 )
        INS-94020_D1_EULER_AXES   = (   3               2              3 )
 
        INS-94020_D2_EULER_ANGLES = (   3.9250226092    1.0983271462   0 )
        INS-94020_D2_EULER_AXES   = (   3               2              3 )
 
        INS-94020_D3_EULER_ANGLES = (   5.5009481096    1.0982784515   0 )
        INS-94020_D3_EULER_AXES   = (   3               2              3 )
 
        INS-94020_D4_EULER_ANGLES = (   2.3530286375    1.0999773550   0 )
        INS-94020_D4_EULER_AXES   = (   3               2              3 )
        
        \begintext
        
        
 
Platform ID
--------------------------------------------------------
 
     This number is the NAIF instrument ID of the platform on which the
     instrument is mounted.
 
 
        \begindata
 
        INS-94020_PLATFORM_ID  = ( -94000 )

        \begintext 
 

Instrument Frame Definition
--------------------------------------------------------

     The instrument frame definitions for MHSA base frame and for the frames  
     of a particular sensors. This definition will be utilized by SPICE's 
     FRAMES subsystem to provide automatic state transformations to/from
     MHSA instrument frames.
     
     The names of these frames are:
     
        MGS_MHSA
        MGS_MHSA_D1
        MGS_MHSA_D2
        MGS_MHSA_D3
        MGS_MHSA_D4
        
     Given that MGS SCLK file, MGS CK file containing orientation of the s/c and 
     this IK file loaded into the program, transformation matrix from inertial
     J2000 frame to the detector 3 frame can be obtained with a single call to
     SPICE's SXFORM subroutine:
     
        CALL SXFORM ( 'J2000', 'MGS_MHSA_D3', ET, XFORM )
        DO I = 1,3
           DO J = 1,3
              CMAT(I,J) = XFORM(I,J)
           END DO
        END DO
        
     Note that angles in the frame definitions are specified for "from
     instrument to base (relative to) frame" transformation.

     Frame definitions: 
  
   
        \begindata

        FRAME_MGS_MHSA           = -94020
        FRAME_-94020_NAME        = 'MGS_MHSA'
        FRAME_-94020_CLASS       = 4
        FRAME_-94020_CLASS_ID    = -94020
        FRAME_-94020_CENTER      = -94
        TKFRAME_-94020_SPEC      = 'ANGLES'
        TKFRAME_-94020_RELATIVE  = 'MGS_SPACECRAFT'
        TKFRAME_-94020_ANGLES    = ( -6.282609348526, -0.000645771823, -5.497333358177 )
        TKFRAME_-94020_AXES      = (  1,               2,               3              )
        TKFRAME_-94020_UNITS     = 'RADIANS'

        FRAME_MGS_MHSA_D1        = -94021
        FRAME_-94021_NAME        = 'MGS_MHSA_D1'
        FRAME_-94021_CLASS       = 4
        FRAME_-94021_CLASS_ID    = -94021
        FRAME_-94021_CENTER      = -94
        TKFRAME_-94021_SPEC      = 'ANGLES'
        TKFRAME_-94021_RELATIVE  = 'MGS_MHSA'
        TKFRAME_-94021_ANGLES    = ( -0.7879144046, -1.0993280925,  0.0   )
        TKFRAME_-94021_AXES      = (  3,             2,              3    )
        TKFRAME_-94021_UNITS     = 'RADIANS'

        FRAME_MGS_MHSA_D2        = -94022
        FRAME_-94022_NAME        = 'MGS_MHSA_D2'
        FRAME_-94022_CLASS       = 4
        FRAME_-94022_CLASS_ID    = -94022
        FRAME_-94022_CENTER      = -94
        TKFRAME_-94022_SPEC      = 'ANGLES'
        TKFRAME_-94022_RELATIVE  = 'MGS_MHSA'
        TKFRAME_-94022_ANGLES    = ( -3.9250226092, -1.0983271462,  0.0   )
        TKFRAME_-94022_AXES      = (  3,             2,              3   )
        TKFRAME_-94022_UNITS     = 'RADIANS'

        FRAME_MGS_MHSA_D3        = -94023
        FRAME_-94023_NAME        = 'MGS_MHSA_D3'
        FRAME_-94023_CLASS       = 4
        FRAME_-94023_CLASS_ID    = -94023
        FRAME_-94023_CENTER      = -94
        TKFRAME_-94023_SPEC      = 'ANGLES'
        TKFRAME_-94023_RELATIVE  = 'MGS_MHSA'
        TKFRAME_-94023_ANGLES    = ( -5.5009481096, -1.0982784515,  0.0   )
        TKFRAME_-94023_AXES      = (  3,              2,              3   )
        TKFRAME_-94023_UNITS     = 'RADIANS'

        FRAME_MGS_MHSA_D4        = -94024
        FRAME_-94024_NAME        = 'MGS_MHSA_D4'
        FRAME_-94024_CLASS       = 4
        FRAME_-94024_CLASS_ID    = -94024
        FRAME_-94024_CENTER      = -94
        TKFRAME_-94024_SPEC      = 'ANGLES'
        TKFRAME_-94024_RELATIVE  = 'MGS_MHSA'
        TKFRAME_-94024_ANGLES    = ( -2.3530286375, -1.0999773550,  0.0   )
        TKFRAME_-94024_AXES      = (  3,              2,              3   )
        TKFRAME_-94024_UNITS     = 'RADIANS'
        
        \begintext