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 = 2001-06-27T17:43:38 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<>_EULER_ANGLES, where <> is the detector index (1,2,3 and 4), contain these values, in radians, in the following order: INS-94020_D<>_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<>_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