diff --git a/ale/drivers/mex_drivers.py b/ale/drivers/mex_drivers.py index 61af9fd83..e83bf8264 100644 --- a/ale/drivers/mex_drivers.py +++ b/ale/drivers/mex_drivers.py @@ -9,8 +9,11 @@ import warnings from ale.base import Driver +from ale.base.data_isis import read_table_data +from ale.base.data_isis import parse_table from ale.base.data_naif import NaifSpice from ale.base.label_pds3 import Pds3Label +from ale.base.label_isis import IsisLabel from ale.base.type_sensor import LineScanner from ale.base.type_distortion import RadialDistortion from ale.util import find_latest_metakernel @@ -130,7 +133,7 @@ def fikid(self): : int Naif ID code used in calculating focal length """ - return spice.bods2c(self.label['DETECTOR_ID']) + return spice.bods2c(self.instrument_id) # TODO Since HRSC has different frames based on filters, need to check that @@ -164,6 +167,8 @@ def instrument_id(self): : str Short name of the instrument """ + if(super().instrument_id != "HRSC"): + raise Exception ("Instrument ID is wrong.") return self.label['DETECTOR_ID'] @@ -323,75 +328,128 @@ def line_scan_rate(self): """ Returns a 2D array of line scan rates. - For HRSC, this data is actually imbedded in the binary data of the image - itself. Each line is stored in what is referred to as a "record" within - the image. The label will have the size of each record, the number of - records, and the number of records in the label, so the beginning of - binary data can be calculated. - - For each line/record of the binary data, the first 8 bytes make up the - double presicion value of the ephemeris time, with the next 4 bytes - making up the float value of the line exposure duration for the - associated line. NOTE: The image label specifies MSB_INTEGER as the byte - order, however, to match ISIS values, we used python struct's little - endian functionality. + For HRSC, the ephemeris times and exposure durations are + stored in the image data. Returns ------- : list - Start lines - : list - Line times + Line scan rates + """ + times = [time - self.center_ephemeris_time for time in self.binary_ephemeris_times] + return (self.binary_lines, times, self.binary_exposure_durations) + + + @property + def binary_exposure_durations(self): + """ + Returns the exposure durations taken from the binary image data. + + For HRSC, the exposure durations are imbedded in the binary data of the image. + The expsoure durations start at the 9th byte of the line/record and are 4 bytes long. + + Returns + ------- : list Exposure durations """ - if not hasattr(self, '_line_scan_rate'): - self._line_scan_rate = None - lines = [] - times = [] - durations = [] - - with open(self._file, 'rb') as image_file: - bytes_per_record = self.label['RECORD_BYTES'] - num_records = self.label['FILE_RECORDS'] - img_start_record = self.label['^IMAGE'] - img_start_byte = bytes_per_record * (img_start_record - 1) # Offset by one for zero-based records - num_img_records = num_records - img_start_record - image_file.seek(img_start_byte) - - for record in range(num_img_records): - record_bytes = image_file.read(bytes_per_record) - eph_time = struct.unpack(' + +Xsrc | +Zsrc | lines direction of + (along-track) | boresight | flight + | (into page) | (s/c +Y axis) + | | + +-------------------+ + 1024 pixels/line + + +Optical Parameters +-------------------------------------------------------- + + The following HRSC and SRC camera first order optical parameters are + included in the data section below, taken from [6]: + + ----------------------------------------------------------------- + parameter HRSC HRSC/SRC + ----------------------------------------------------------------- + Focal Length, mm 175.0 988.6 (4) + f/ratio f/5.6 f/9.2 + IFOV, rad/pixel 0.000040 0.0000092 + Field of view (rad) + Cross-track 0.200000 (1) 0.0094 (3) + Along-track 0.659734 (2) 0.0094 (3) + ----------------------------------------------------------------- + + (1) The HRSC main camera cross-track FOV is nominally 11.9 degrees. + + (2) The HRSC main camera combined along-track FOV size is assumed to be + equal to the angular separation between the first and last line + detectors. It is nominally equal to 2 * 18.9 degrees = 37.8 + degrees, where 18.9 degrees is the nominal stereo angle. + + (3) The SRC along-track FOV is assumed to have the same size as the + cross-track FOV -- nominally 0.54 degrees. + + (4) Actual calibrated FL from [9]; nominal value is 975.0 mm. + + Note that the value for HRSC cross-track FOV is not equal to the value + of IFOV multiplied by the the number of pixels in the line arrays. + This is due to the fact that [6] provided nominal reference values. + + This data section also provides nominal data for each of the HRSC main + camera line detectors. In these, the FOV_ANGULAR_SIZE keyword's along- + track FOV dimension is set to IFOV. + + Angular size values in the keywords are given radians, with the + cross-track size being the first value and the along-track size being + the second value in each pair. + + \begindata + + INS-41210_FOCAL_LENGTH = ( 175.0 ) + INS-41210_F/RATIO = ( 5.6 ) + INS-41210_FOV_ANGULAR_SIZE = ( 0.200, 0.659734 ) + INS-41210_IFOV = ( 0.000040 ) + + + INS-41211_FOCAL_LENGTH = ( 175.0 ) + INS-41211_F/RATIO = ( 5.6 ) + INS-41211_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41211_IFOV = ( 0.000040 ) + + INS-41212_FOCAL_LENGTH = ( 175.0 ) + INS-41212_F/RATIO = ( 5.6 ) + INS-41212_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41212_IFOV = ( 0.000040 ) + + INS-41213_FOCAL_LENGTH = ( 175.0 ) + INS-41213_F/RATIO = ( 5.6 ) + INS-41213_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41213_IFOV = ( 0.000040 ) + + INS-41214_FOCAL_LENGTH = ( 175.0 ) + INS-41214_F/RATIO = ( 5.6 ) + INS-41214_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41214_IFOV = ( 0.000040 ) + + INS-41215_FOCAL_LENGTH = ( 175.0 ) + INS-41215_F/RATIO = ( 5.6 ) + INS-41215_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41215_IFOV = ( 0.000040 ) + + INS-41216_FOCAL_LENGTH = ( 175.0 ) + INS-41216_F/RATIO = ( 5.6 ) + INS-41216_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41216_IFOV = ( 0.000040 ) + + INS-41217_FOCAL_LENGTH = ( 175.0 ) + INS-41217_F/RATIO = ( 5.6 ) + INS-41217_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41217_IFOV = ( 0.000040 ) + + INS-41218_FOCAL_LENGTH = ( 175.0 ) + INS-41218_F/RATIO = ( 5.6 ) + INS-41218_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41218_IFOV = ( 0.000040 ) + + INS-41219_FOCAL_LENGTH = ( 175.0 ) + INS-41219_F/RATIO = ( 5.6 ) + INS-41219_FOV_ANGULAR_SIZE = ( 0.200, 0.000040 ) + INS-41219_IFOV = ( 0.000040 ) + + + INS-41220_FOCAL_LENGTH = ( 988.6 ) + INS-41220_F/RATIO = ( 9.2 ) + INS-41220_FOV_ANGULAR_SIZE = ( 0.0094, 0.0094 ) + INS-41220_IFOV = ( 0.0000092 ) + + \begintext + + +Detector CCD Parameters +-------------------------------------------------------- + + The HRSC and SRC CCD detector geometry parameters are included in the + data section below, taken from [6]: + + ----------------------------------------------------------------- + parameter HRSC SRC + ----------------------------------------------------------------- + Pixel Size, microns + Cross-track 7.0 9.0 + Along-track 7.0 9.0 + Detector Array Size + Cross-track 5184 (2) 1024 (3) + Along-track 1 (1) 1024 (3) + Detector Array Center + Cross-track 2592.5 512.5 + Along-track 0.5 (1) 512.5 + ----------------------------------------------------------------- + + (1) This dimension is given for individual line detectors, each of which + is 1 pixel wide. No combined CCD dimensions are provided for the + HRSC main camera because they are not applicable. + + (2) The HRSC sensor lines have 5272 "physical" pixels but only 5184 of + them are active and used for image reconstruction and processing ([8]). + + (3) The SRC has 1032 pixels and 1024 lines; only 1024 pixels are + transferred to the data processing unit; only 1016 samples are + transmitted to Earth; and only 1008 lines and 1008 pixels are + available after calibration [8]. The 1024 by 1024 CCD and + (512.5,512.5) for its center were chosen by the HRSC team as + a reference for geometric calibration. + + The values are given in microns for PIXEL_SIZE keywords and in counts + for PIXEL_SAMPLES, PIXEL_LINES, and CENTER keywords. + + \begindata + + INS-41211_PIXEL_SIZE = ( 7, 7 ) + INS-41211_PIXEL_SAMPLES = ( 5184 ) + INS-41211_PIXEL_LINES = ( 1 ) + INS-41211_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41212_PIXEL_SIZE = ( 7, 7 ) + INS-41212_PIXEL_SAMPLES = ( 5184 ) + INS-41212_PIXEL_LINES = ( 1 ) + INS-41212_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41213_PIXEL_SIZE = ( 7, 7 ) + INS-41213_PIXEL_SAMPLES = ( 5184 ) + INS-41213_PIXEL_LINES = ( 1 ) + INS-41213_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41214_PIXEL_SIZE = ( 7, 7 ) + INS-41214_PIXEL_SAMPLES = ( 5184 ) + INS-41214_PIXEL_LINES = ( 1 ) + INS-41214_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41215_PIXEL_SIZE = ( 7, 7 ) + INS-41215_PIXEL_SAMPLES = ( 5184 ) + INS-41215_PIXEL_LINES = ( 1 ) + INS-41215_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41216_PIXEL_SIZE = ( 7, 7 ) + INS-41216_PIXEL_SAMPLES = ( 5184 ) + INS-41216_PIXEL_LINES = ( 1 ) + INS-41216_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41217_PIXEL_SIZE = ( 7, 7 ) + INS-41217_PIXEL_SAMPLES = ( 5184 ) + INS-41217_PIXEL_LINES = ( 1 ) + INS-41217_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41218_PIXEL_SIZE = ( 7, 7 ) + INS-41218_PIXEL_SAMPLES = ( 5184 ) + INS-41218_PIXEL_LINES = ( 1 ) + INS-41218_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41219_PIXEL_SIZE = ( 7, 7 ) + INS-41219_PIXEL_SAMPLES = ( 5184 ) + INS-41219_PIXEL_LINES = ( 1 ) + INS-41219_CCD_CENTER = ( 2592.5, 0.5 ) + + INS-41220_PIXEL_SIZE = ( 9, 9 ) + INS-41220_PIXEL_SAMPLES = ( 1024 ) + INS-41220_PIXEL_LINES = ( 1024 ) + INS-41220_CCD_CENTER = ( 512.5, 512.5 ) + + \begintext + + +Wavelength Ranges +--------------------------------------------------------------------------- + + This section contains assignments specifying HRSC and SRC detector + wavelength ranges. + + +HRSC Camera + + The following line detector wavelength band center/width data are + taken from [6]: + + ------------------------------------------- + Detector Band Center, Bandwidth, + # nanometers nanometers (1) + ------------------------------------------- + S1 675 180 + RED 750 40 + P2 675 180 + BLUE 440 90 + NADIR 675 180 + GREEN 530 90 + P1 675 180 + IR 970 90 + S1 675 180 + ------------------------------------------- + + (1) in [6] the bandwidth was specified as 1/2 of the value provided + in this table (i.e. +/- 90 for 180 bandwidth given above.) + + The set of assignments below specifies wavelength center and bandwidth + for each detector, with units the same as in the table above. + + \begindata + + INS-41211_FILTER_BANDCENTER = ( 675 ) + INS-41211_FILTER_BANDWIDTH = ( 180 ) + + INS-41212_FILTER_BANDCENTER = ( 750 ) + INS-41212_FILTER_BANDWIDTH = ( 40 ) + + INS-41213_FILTER_BANDCENTER = ( 675 ) + INS-41213_FILTER_BANDWIDTH = ( 180 ) + + INS-41214_FILTER_BANDCENTER = ( 440 ) + INS-41214_FILTER_BANDWIDTH = ( 90 ) + + INS-41215_FILTER_BANDCENTER = ( 675 ) + INS-41215_FILTER_BANDWIDTH = ( 180 ) + + INS-41216_FILTER_BANDCENTER = ( 530 ) + INS-41216_FILTER_BANDWIDTH = ( 90 ) + + INS-41217_FILTER_BANDCENTER = ( 675 ) + INS-41217_FILTER_BANDWIDTH = ( 180 ) + + INS-41218_FILTER_BANDCENTER = ( 970 ) + INS-41218_FILTER_BANDWIDTH = ( 90 ) + + INS-41219_FILTER_BANDCENTER = ( 675 ) + INS-41219_FILTER_BANDWIDTH = ( 180 ) + + \begintext + + +SRC Camera + + No wavelength data has been made available for this camera at the + time when this IK file was made. + + begindata + + INS-41220_FILTER_BANDCENTER = ( '?' ) + INS-41220_FILTER_BANDWIDTH = ( '?' ) + + begintext + + +FOV Definitions +--------------------------------------------------------------------------- + + This section contains definitions for the HRSC main camera combined FOV, + HRSC line detector individual FOVs, and SRC camera FOV. These definitions + are provided in a format consistent required by the SPICE (CSPICE) + function GETFOV (getfov_c). + + +HRSC Camera Individual Line Detector FOVs + + The sets of keywords in the data section below define individual + HRSC line detector FOVs with respect to the MEX_HRSC_HEAD frame. + + Each of these FOVS is a rectangle with the edges defined by the + outer corners of the first and last pixels of that line detector. The + boresight of each of these FOVs is defined such that it points along + the detector center's view direction (with the center being the point + between the two middle pixels.) + + The data from which the view directions for the corner pixels + have been computed are provided in the camera geometric calibration + tables ([5]). This reference specifies coordinates for each pixel of + each line detector in the CCD plane -- the plane normal to the + camera boresight (+Z axis) and located at the focal length behind + the focal point. The view direction of each pixel can then be + determined as a vector pointing from that pixel's location on that + plane through the focal point, as illustrated by this diagram: + + Corner pixel + view direction + ^ + Center pixel \ Y + view <. \ ^ CCD plane + direction `-. \ | + `-. \ | .^ X + `-. \ | .' + `-.\ F | .' + <-----------`o.-----o' Detector line in + Z Focal \`-. | . the CCD plane + point \ `-*' + \ .'| Center pixel + * | + Corner + pixel + + Assuming that the CCD plane coordinates of the first and last pixel + of the detector line N are (Xf,Yf) and (Xl,Yl) and the coordinates + of the two pixels on either side of the geometric middle point of the + line are (Xm1,Ym1) and (Xm2,Ym2), the FOV definition for that line can + be constructed as: + + INS_FOV_FRAME = 'MEX_HRSC_HEAD' + INS_FOV_SHAPE = 'RECTANGLE' + INS_BORESIGHT = ( + -(Xm1+Xm2)/2, -(Ym1+Ym2)/2, FL + ) + INS_FOV_BOUNDARY_CORNERS = ( + -(Xf-HP), -(Yf-HP), FL + -(Xf-HP), -(Yf+HP), FL + -(Xl+HP), -(Yl+HP), FL + -(Xl+HP), -(Yl-HP), FL + ) + + where HP is 1/2 of the pixel size, and FL is the focal length. + + The boresight and corner vectors included in the frame definition + below have intentionally been left un-unitized to allow easier back + tracking to the original calibration data and focal length and pixel + size values defined earlier in this I-kernel. + + Refer to [7] for definitions of the keywords used in these assignments. + + \begindata + + + INS-41211_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41211_FOV_SHAPE = 'RECTANGLE' + INS-41211_BORESIGHT = ( + -0.028300 -60.035700 175.000000 + ) + INS-41211_FOV_BOUNDARY_CORNERS = ( + 18.128100 -60.032900 175.000000 + 18.128100 -60.039900 175.000000 + -18.186200 -60.043500 175.000000 + -18.186200 -60.036500 175.000000 + ) + + + INS-41212_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41212_FOV_SHAPE = 'RECTANGLE' + INS-41212_BORESIGHT = ( + -0.052100 -49.818000 175.000000 + ) + INS-41212_FOV_BOUNDARY_CORNERS = ( + 18.112200 -49.816100 175.000000 + 18.112200 -49.823100 175.000000 + -18.217400 -49.821800 175.000000 + -18.217400 -49.814800 175.000000 + ) + + + INS-41213_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41213_FOV_SHAPE = 'RECTANGLE' + INS-41213_BORESIGHT = ( + -0.023700 -39.592400 175.000000 + ) + INS-41213_FOV_BOUNDARY_CORNERS = ( + 18.145600 -39.597300 175.000000 + 18.145600 -39.604300 175.000000 + -18.191600 -39.591500 175.000000 + -18.191600 -39.584500 175.000000 + ) + + + INS-41214_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41214_FOV_SHAPE = 'RECTANGLE' + INS-41214_BORESIGHT = ( + 0.064300 -10.229000 175.000000 + ) + INS-41214_FOV_BOUNDARY_CORNERS = ( + 18.184500 -10.219900 175.000000 + 18.184500 -10.226900 175.000000 + -18.053200 -10.233100 175.000000 + -18.053200 -10.226100 175.000000 + ) + + + INS-41215_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41215_FOV_SHAPE = 'RECTANGLE' + INS-41215_BORESIGHT = ( + 0.032200 -0.005800 175.000000 + ) + INS-41215_FOV_BOUNDARY_CORNERS = ( + 18.174900 -0.002900 175.000000 + 18.174900 -0.009900 175.000000 + -18.110800 -0.007700 175.000000 + -18.110800 -0.000700 175.000000 + ) + + + INS-41216_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41216_FOV_SHAPE = 'RECTANGLE' + INS-41216_BORESIGHT = ( + 0.042600 10.213000 175.000000 + ) + INS-41216_FOV_BOUNDARY_CORNERS = ( + 18.186200 10.232000 175.000000 + 18.186200 10.225000 175.000000 + -18.100700 10.191500 175.000000 + -18.100700 10.198500 175.000000 + ) + + + INS-41217_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41217_FOV_SHAPE = 'RECTANGLE' + INS-41217_BORESIGHT = ( + 0.031600 39.612600 175.000000 + ) + INS-41217_FOV_BOUNDARY_CORNERS = ( + 18.202500 39.617200 175.000000 + 18.202500 39.610200 175.000000 + -18.138900 39.603100 175.000000 + -18.138900 39.610100 175.000000 + ) + + + INS-41218_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41218_FOV_SHAPE = 'RECTANGLE' + INS-41218_BORESIGHT = ( + 0.015100 49.903900 175.000000 + ) + INS-41218_FOV_BOUNDARY_CORNERS = ( + 18.198200 49.912100 175.000000 + 18.198200 49.905100 175.000000 + -18.169300 49.890100 175.000000 + -18.169300 49.897100 175.000000 + ) + + + INS-41219_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41219_FOV_SHAPE = 'RECTANGLE' + INS-41219_BORESIGHT = ( + 0.021500 60.057200 175.000000 + ) + INS-41219_FOV_BOUNDARY_CORNERS = ( + 18.187000 60.064100 175.000000 + 18.187000 60.057100 175.000000 + -18.142000 60.040600 175.000000 + -18.142000 60.047600 175.000000 + ) + + \begintext + + +HRSC Camera Combined FOV + + The set of assignments in the data section below defines the combined HRSC + main camera FOV with respect to the MEX_HRSC_HEAD frame to be a + rectangle with the edges defined by the outer corners of the first + and last pixels of the S1 and S2 detectors and the boresight along the +Z + axis of the MEX_HRSC_HEAD frame. The corner view direction are taken + from the corresponding individual detector FOV defined in the + previous section. + + \begindata + + INS-41210_FOV_FRAME = 'MEX_HRSC_HEAD' + INS-41210_FOV_SHAPE = 'RECTANGLE' + INS-41210_BORESIGHT = ( + 0.000000 0.000000 175.000000 + ) + INS-41210_FOV_BOUNDARY_CORNERS = ( + 18.187000 60.064100 175.000000 + 18.128100 -60.039900 175.000000 + -18.186200 -60.043500 175.000000 + -18.142000 60.047600 175.000000 + ) + + \begintext + + +SRC Camera FOV + + The set of assignments in the data section below defines the SRC FOV + with respect to the MEX_HRSC_SRC frame to be a rectangle with the + corners defined by the first and last pixels of the first and last + lines of the CCD and the boresight along the +Z axis of the MEX_HRSC_SRC + frame. This FOV definition uses angular extent style specification + with the cross and along track angular sizes taken from the ``Optics + Parameters'' section above. + + \begindata + + INS-41220_FOV_FRAME = 'MEX_HRSC_SRC' + INS-41220_FOV_SHAPE = 'RECTANGLE' + INS-41220_BORESIGHT = ( + 0.000000 0.000000 988.600000 + ) + INS-41220_FOV_CLASS_SPEC = 'ANGLES' + INS-41220_FOV_REF_VECTOR = ( + 1.000000 0.000000 0.000000 + ) + INS-41220_FOV_REF_ANGLE = ( 0.27 ) + INS-41220_FOV_CROSS_ANGLE = ( 0.27 ) + INS-41220_FOV_ANGLE_UNITS = 'DEGREES' + + \begintext + + +Optical Distortion +-------------------------------------------------------- + + This section provides optical distortion and geometric calibration + data for HRSC and SRC cameras. + + +HRSC Camera + + The optical distortion for the HRSC provided in [5] has not been included + in this version of the I-kernel. + + +SRC Camera + + The optical distortion for the SRC camera was not available at the time + when this version of the IK was released. + + +Platform ID +--------------------------------------------------------------------------- + + This number is the NAIF instrument ID of the platform on which the + cameras are mounted. For both cameras this platform is the + spacecraft. + + \begindata + + INS-41210_PLATFORM_ID = ( -41000 ) + INS-41220_PLATFORM_ID = ( -41000 ) + + \begintext + diff --git a/tests/pytests/data/h5270_0000_ir2/MEX_V14.TF b/tests/pytests/data/h5270_0000_ir2/MEX_V14.TF new file mode 100644 index 000000000..6c4c0b5b5 --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/MEX_V14.TF @@ -0,0 +1,3535 @@ +KPL/FK + +Mars Express Spacecraft and Beagle-2 Lander Frames Kernel +======================================================================== + + This frame kernel contains complete set of frame definitions for the + Mars Express Spacecraft (MEX) and Beagle-2 Lander (BEAGLE2) including + definitions for the MEX fixed and MEX science instrument frames and + BEAGLE2 fixed, BEAGLE2 instrument, and landing site local frames. This + kernel also contains NAIF ID/name mapping for the MEX and BEAGLE2 + instruments. + + +Version and Date +======================================================================== + + Version 1.4 -- January 23, 2019 -- Boris Semenov, NAIF + Marc Costa Sitja, ESAC/ESA + + Corrected typo in the MEX_PFS_NADIR_SWC definition (SCW->SWC) + + Updated SPICAM port frame description and diagram + + Added more details to Version 1.3 version entry + + Corrected VMC frame definition typo. + + Version 1.3 -- January 13, 2019 -- Marc Costa Sitja, ESAC/ESA + + Updated PFS frames: + + - removed generic nadir frame -- MEX_PFS_NADIR/-41533 + + - added PFS nadir channel frames -- MEX_PFS_NADIR_LWC/-41537 + and MEX_PFS_NADIR_SWC/-41533 + + - incorporated actual alignments into all LWC and SWC + frames -- MEX_PFS_SWC/-41510, MEX_PFS_LWC/-41520, + MEX_PFS_NADIR_LWC/-41537, and MEX_PFS_NADIR_SWC/-41533 + + Updated SPICAM frames: + + - removed old SUV/SIR frames -- MEX_SPICAM_SUV/-41620, + MEX_SPICAM_SIR/-41610, MEX_SPICAM_SIR_SOLAR/-41611, and + MEX_SPICAM_SUV_SOLAR/-41621 + + - added detector port frames -- MEX_SPICAM_STELLAR/-41601, + MEX_SPICAM_SOLAR/-41602, and MEX_SPICAM_NADIR/-41603 + + Added Star Tracker frames -- MEX_STR_A/-41051, MEX_STR_B/MEX_STR_B + + Added MARSIS base frame -- MEX_MARSIS_BASE/-41300 + + Removed some SPICAM name/ID mappings: + + MEX_SPICAM_SIR -41610 + MEX_SPICAM_SIR_SOLAR -41611 + MEX_SPICAM_SUV -41620 + MEX_SPICAM_SUV_SOLAR -41621 + + Added new STR, MARSIS, PFS, and SPICAM name/ID mappings: + + MEX_STR_A -41071 + MEX_STR_B -41072 + + MEX_MARSIS_250KM -41301 + MEX_MARSIS_1400KM -41302 + + MEX_PFS_SWC_25_LEFT -41511 + MEX_PFS_SWC_12_LEFT -41512 + MEX_PFS_SWC_NADIR -41513 + MEX_PFS_SWC_12_RIGHT -41514 + MEX_PFS_SWC_25_RIGHT -41515 + MEX_PFS_SWC_COLD_SPACE -41516 + MEX_PFS_LWC_25_LEFT -41521 + MEX_PFS_LWC_12_LEFT -41522 + MEX_PFS_LWC_NADIR -41523 + MEX_PFS_LWC_12_RIGHT -41524 + MEX_PFS_LWC_25_RIGHT -41525 + MEX_PFS_LWC_COLD_SPACE -41526 + + MEX_SPICAM_UV -41610 + MEX_SPICAM_UV1_STAR -41611 + MEX_SPICAM_UV2_SUN -41612 + MEX_SPICAM_UV1_NADIR_SLIT -41613 + MEX_SPICAM_UV1_NADIR_BIN_2 -41614 + MEX_SPICAM_UV1_NADIR_BIN_4 -41615 + MEX_SPICAM_UV1_NADIR_BIN_8 -41616 + MEX_SPICAM_UV1_NADIR_BIN_16 -41617 + MEX_SPICAM_UV1_NADIR_BIN_32 -41618 + MEX_SPICAM_UV1_CCD -41619 + MEX_SPICAM_IR -41620 + MEX_SPICAM_IR1_STELLAR -41621 + MEX_SPICAM_IR2_SOLAR -41622 + MEX_SPICAM_IR1_NADIR -41623 + + Edited comments and updated contact information. + + Version 1.2 -- December 10, 2013 -- J. Vazquez, PSA/ESA, + B. Semenov, NAIF + + Updated HRSC SRC frame orientation with information provided by + T. Duxbury and T. Roatsch ([17]). + + Version 1.1 -- January 21, 2011 -- J. Vazquez, PSA/ESAC + + Changed rotation angle for MEX_PFS_COLD_SPACE from 90 deg. to 85 deg. + + Version 1.0 -- June 16, 2008 -- Jorge Diaz del Rio, MIG + + Added Visual Monitoring Camera (VMC) frame. + + Version 0.9 -- May 21, 2008 -- J. Vazquez + + Added MEX_SA+Y_ZERO and MEX_SA-Y_ZERO, fixed offset frames with + respect to MEX_SPACECRAFT. + + Modified MEX_SA_+Y and MEX_SA_-Y. The cells of the Solar Arrays + face the +Z axis of the frames. The frames are type 3 frames that + rotate with respect to MEX_SA+Y_ZERO and MEX_SA-Y_ZERO. + + Version 0.8 -- September 17, 2004 -- Boris Semenov, NAIF + + Added ASPERA_IMAS frame. This frame was introduced because it + matches the "natural" IMA spherical coordinate system and the way + IMA operates better than the ASPERA_IMA frame defined originally + (see the latest ASPERA IK file for more discussion on this + issue.) + + Version 0.7 -- July 19, 2004 -- Boris Semenov, NAIF + + Corrected HGA frame to incorporate 5 degree boresight offset + towards +Z. + + Version 0.6 -- March 15, 2004 -- Boris Semenov, NAIF + + Incorporated revised OMEGA frame layout (no OMEGA_BASE and + OMEGA_SWIR frames, OMEGA_SWIR_S defined w.r.t. SPACECRAFT, + OMEGA_SWIR_L and OMEGA_VNIR defined w.r.t OMEGA_SWIR_S) and + initial in-flight calibrated alignments provided by Nicolas + Manaud on March 12, 2004. Renamed OMEGA_SWIR_S to OMEGA_SWIR_C + for consistency with the conventions accepted by OMEGA team. + + Version 0.5 -- December 15, 2003 -- Boris Semenov, NAIF + + Incorporated in-flight calibrated alignments provided by Thomas + Roatsch on December 15, 2003 into the HRSC_HEAD and HRSC_SRC + frame definitions. + + Renamed and re-defined ASPERA Solar Sensor frames, MEX_ASPERA_SS1 + and MEX_ASPERA_SS2. + + Version 0.4 -- October 5, 2003 -- Boris Semenov, NAIF + + Modified ASPERA frames to match the conventions accepted by the + ASPERA team, specifically: + + -- changed MEX_ASPERA_BASE frame name to MEX_ASPERA_URF + + -- changed MEX_ASPERA_SCANNER frame name to MEX_ASPERA_SAF + + -- replaced MEX_ASPERA_NPD frame with MEX_ASPERA_NPD1 and + MEX_ASPERA_NPD2 + + -- added MEX_ASPERA_IMA_URF frame (in the IMA branch between + MEX_SPACECRAFT and MEX_ASPERA_IMA frames) + + -- added MEX_ASPERA_SS0 and MEX_ASPERA_SS1 frames + + Updated ASPERA frame tree diagrams and descriptions accordingly + + Modified MEX_HRSC_SRC frame to incorporate 90 degree rotation + w.r.t to the MEX_HRSC_BASE frame (per HRSC calibration results) + + Updated BEAGLE2_LOCAL_LEVEL frame to correspond to the project + official landing site coordinates (areocentric LON=90.75 & + LAT=11.6) + + Version 0.3 -- June 2, 2003 -- Boris Semenov, NAIF + + Changed the types of and relationship between the MEX_SPACECRAFT + (mechanical) and MEX_SC_REF (ACS reference) frames. Now the + MEX_SC_REF frame is CK-based because telemetry and S/C CKs + contains orientation for it and the MEX_SPACECRAFT frame is fixed + offset (rotated by 180 about Z) with respect to MEX_SC_REF. + + Version 0.2 -- January 2, 2002 -- Boris Semenov, NAIF + + Added frames and IDs for the short and long wavelength OMEGA SWIR + channels per review feedback from Yves Langevin, OMEGA Team + (December 2001.) + + Version 0.1 -- December 5, 2001 -- Boris Semenov, NAIF + + Updated SPICAM frames per review feedback from Emmanuel Dimarellis + (e-mail from November 11, 2001.) + + Version 0.0 -- June 18, 2001 -- Boris Semenov, NAIF + + Preliminary Version. Pending review and approval by MEX and + BEAGLE2 instrument teams and ESOC Science operations team. + + +References +======================================================================== + + 1. ``Frames Required Reading'', NAIF. + + 2. ``Kernel Pool Required Reading'', NAIF. + + 3. ``C-Kernel Required Reading'', NAIF. + + 4. ``ASPERA-3'' ME-ASP-DS-0002, Draft Rev. 1, 23 April, 1999. + + 5. ``HRSC on Mars Express'' Presentation by R.Pischel et al, May 9, 2001. + + 6. ``Mars Express Hypotheses for AOCS Studies'', Draft, Issue 02, Rev 00, + 9/11/00, by Astrium. + + 7. ``OMEGA PID'', PID-B, OME-CI-0022-003-IAS, 25/02/00. + + 8. ``PFS Instrument Description'', PFS-ICDR-02, June 5, 2000. + + 9. ``SPICAM LIGHT'', PID-B, PS-DES-011, August 19, 1999. + + 10. ``Beagle-2 Landing Site Selection Press Release'', December 20, 2000 + http://spdext.estec.esa.nl/content/news/index.cfm?aid=9&cid=260 + &oid=25649. + + 11. Review comments by Emmanuel Dimarellis, SPICAM Team, e-mail from + November 11, 2001. + + 12. Review comments by Yves Langevin, OMEGA Team, personal communication + in December 2001. + + 13. ASPERA Sensor Numbering, by Stas Barabash, Latest Version, Aug 2003. + + 14. HRSC Earth-Moon Calibration Results, notes by T. Roatsch, Jul 2003. + + 15. OMEGA in-flight calibrated alignments, e-mail by N. Manaud, Mar 2004. + + 16. ``VMC for MEX. Flight User Manual'', MEX-ESA-VMC-MA-0003, Issue 4, + Revision 2, January 17, 2003. + + 17. ``SRC Alignment & Geometric Calibration, NAIF SPICE Kernels, Image + Restoration and Vesta'', Harald Hoffmann, Thomas Roatsch, Stephan + Elgner and Klaus-Dieter Matz, November 25, 2013. + + 18. ``MARS EXPRESS SPICAM GEOMETRY Computation'', + SPICAM_GEOMETRY_DESC.TXT, version 014, September 15th, 2005. + + 19. ``Planetary Fourier Spectrometer Instrument Calibration Report, + Volume II, V. Formisano, M. GIiuranna, et al., CNR IFSI, December 2002. + + 20. ``MEX conditions for STR blindings'', e-mail from Michael Mueller, + 13th September 2017. + + +Contact Information +======================================================================== + + If you have any questions regarding this file contact SPICE support at + ESAC: + + Marc Costa Sitja + (+34) 91-8131-457 + mcosta@sciops.esa.int, esa_spice@sciops.esa.int + + or NAIF at JPL: + + Boris Semenov + +1 (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. The SPICELIB routine FURNSH and CSPICE function furnsh_c + load a kernel file into the kernel pool as shown below. + + CALL FURNSH ( 'frame_kernel_name' ) + furnsh_c ( "frame_kernel_name" ); + + This file was created and may be updated with a text editor or word + processor. + + +Mars Express Mission NAIF ID Codes +======================================================================== + + The following names and NAIF ID codes are assigned to the MEX spacecraft, + its structures and science instruments (the keywords implementing these + definitions are located in the section "Mars Express Mission NAIF ID + Codes -- Definition Section" at the end of this file): + + MEX Spacecraft and Spacecraft Structures names/IDs: + + MEX -41 (synonyms: MARS EXPRESS, + MARS-EXPRESS, MARS_EXPRESS) + MEX_SPACECRAFT -41000 (synonym: MEX_SC) + MEX_SA+Y -41011 + MEX_SA-Y -41012 + MEX_SA+Y_GIMBAL -41013 + MEX_SA-Y_GIMBAL -41014 + MEX_HGA -41020 + MEX_MELACOM_1 -41031 + MEX_MELACOM_2 -41032 + MEX_LGA -41040 + MEX_STR_A -41071 + MEX_STR_B -41072 + + + ASPERA names/IDs: + + MEX_ASPERA -41100 + MEX_ASPERA_URF -41110 + MEX_ASPERA_SAF -41111 + MEX_ASPERA_ELS -41120 + MEX_ASPERA_NPI -41130 + MEX_ASPERA_NPD1 -41141 + MEX_ASPERA_NPD2 -41142 + MEX_ASPERA_IMA_URF -41150 + MEX_ASPERA_IMA -41151 + MEX_ASPERA_IMAS -41152 + MEX_ASPERA_SS1 -41161 + MEX_ASPERA_SS2 -41162 + + HRSC names/IDs: + + MEX_HRSC -41200 + MEX_HRSC_HEAD -41210 + MEX_HRSC_S2 -41211 + MEX_HRSC_RED -41212 + MEX_HRSC_P2 -41213 + MEX_HRSC_BLUE -41214 + MEX_HRSC_NADIR -41215 + MEX_HRSC_GREEN -41216 + MEX_HRSC_P1 -41217 + MEX_HRSC_IR -41218 + MEX_HRSC_S1 -41219 + MEX_HRSC_SRC -41220 + + MARSIS names/IDs: + + MEX_MARSIS -41300 + MEX_MARSIS_250KM -41301 + MEX_MARSIS_1400KM -41302 + MEX_MARSIS_DIPOLE_1 -41310 + MEX_MARSIS_DIPOLE_2 -41320 + MEX_MARSIS_MONOPOLE -41330 + + OMEGA names/IDs: + + MEX_OMEGA -41400 + MEX_OMEGA_VNIR -41410 + MEX_OMEGA_SWIR -41420 + MEX_OMEGA_SWIR_C -41421 + MEX_OMEGA_SWIR_L -41422 + + PFS names/IDs: + + MEX_PFS -41500 + MEX_PFS_SWC -41510 + MEX_PFS_SWC_25_LEFT -41511 + MEX_PFS_SWC_12_LEFT -41512 + MEX_PFS_SWC_NADIR -41513 + MEX_PFS_SWC_12_RIGHT -41514 + MEX_PFS_SWC_25_RIGHT -41515 + MEX_PFS_SWC_COLD_SPACE -41516 + MEX_PFS_LWC -41520 + MEX_PFS_LWC_25_LEFT -41521 + MEX_PFS_LWC_12_LEFT -41522 + MEX_PFS_LWC_NADIR -41523 + MEX_PFS_LWC_12_RIGHT -41524 + MEX_PFS_LWC_25_RIGHT -41525 + MEX_PFS_LWC_COLD_SPACE -41526 + MEX_PFS_SCANNER -41530 + + SPICAM names/IDs: + + MEX_SPICAM -41600 + MEX_SPICAM_UV -41610 + MEX_SPICAM_UV1_STAR -41611 + MEX_SPICAM_UV2_SUN -41612 + MEX_SPICAM_UV1_NADIR_SLIT -41613 + MEX_SPICAM_UV1_NADIR_BIN_2 -41614 + MEX_SPICAM_UV1_NADIR_BIN_4 -41615 + MEX_SPICAM_UV1_NADIR_BIN_8 -41616 + MEX_SPICAM_UV1_NADIR_BIN_16 -41617 + MEX_SPICAM_UV1_NADIR_BIN_32 -41618 + MEX_SPICAM_UV1_CCD -41619 + MEX_SPICAM_IR -41620 + MEX_SPICAM_IR1_STELLAR -41621 + MEX_SPICAM_IR2_SOLAR -41622 + MEX_SPICAM_IR1_NADIR -41623 + + + VMC names/IDs: + + MEX_VMC -41700 + + + The following names and NAIF ID codes are assigned to the Beagle-2 + lander, its structures and science instruments: + + BEAGLE2 -44 (synonyms: BEAGLE 2, BEAGLE-2, + BEAGLE_2) + BEAGLE2_LANDER -44000 + BEAGLE2_GAP -44100 + BEAGLE2_PAW -44200 + BEAGLE2_LANDING_SITE -44900 (synonyms: BEAGLE2_LS, + BEAGLE2_SITE) + + +Mars Express Frames +======================================================================== + + The following MEX and BEAGLE2 frames are defined in this kernel file: + + Name Relative to Type NAIF ID + ====================== =================== ============ ======= + + MEX Spacecraft and Spacecraft Structures frames: + ------------------------------------------------ + MEX_SPACECRAFT MEX_SC_REF FIXED -41000 + MEX_SC_REF J2000 CK -41001 + MEX_SA+Y_ZERO MEX_SPACECRAFT FIXED -41013 + MEX_SA+Y MEX_SA+Y_ZERO CK -41011 + MEX_SA-Y_ZERO MEX_SPACECRAFT FIXED -41014 + MEX_SA-Y MEX_SA-Y_ZERO CK -41012 + MEX_HGA MEX_SPACECRAFT FIXED -41020 + MEX_MELACOM_1 MEX_SPACECRAFT FIXED -41031 + MEX_MELACOM_2 MEX_SPACECRAFT FIXED -41032 + MEX_LGA MEX_SPACECRAFT FIXED -41040 + MEX_STR_A MEX_SPACECRAFT FIXED -41051 + MEX_STR_B MEX_SPACECRAFT FIXED -41052 + + ASPERA frames: + -------------- + MEX_ASPERA_URF MEX_SPACECRAFT FIXED -41110 + MEX_ASPERA_SAF MEX_ASPERA_URF CK -41111 + MEX_ASPERA_ELS MEX_ASPERA_SAF FIXED -41120 + MEX_ASPERA_NPI MEX_ASPERA_SAF FIXED -41130 + MEX_ASPERA_NPD1 MEX_ASPERA_SAF FIXED -41141 + MEX_ASPERA_NPD2 MEX_ASPERA_SAF FIXED -41142 + MEX_ASPERA_IMA_URF MEX_SPACECRAFT FIXED -41150 + MEX_ASPERA_IMA MEX_ASPERA_IMA_URF FIXED -41151 + MEX_ASPERA_IMAS MEX_ASPERA_IMA FIXED -41152 + MEX_ASPERA_SS1 MEX_ASPERA_SAF FIXED -41161 + MEX_ASPERA_SS2 MEX_ASPERA_SAF FIXED -41162 + + HRSC frames: + ------------ + MEX_HRSC_BASE MEX_SPACECRAFT FIXED -41200 + MEX_HRSC_HEAD MEX_HRSC_BASE FIXED -41210 + MEX_HRSC_SRC MEX_HRSC_BASE FIXED -41220 + + MARSIS frames: + -------------- + MEX_MARSIS_BASE MEX_SPACECRAFT FIXED -41300 + MEX_MARSIS_DIPOLE_1 MEX_SPACECRAFT FIXED -41310 + MEX_MARSIS_DIPOLE_2 MEX_SPACECRAFT FIXED -41320 + MEX_MARSIS_MONOPOLE MEX_SPACECRAFT FIXED -41330 + + OMEGA frames: + ------------- + MEX_OMEGA_SWIR_C MEX_SPACECRAFT FIXED -41421 + MEX_OMEGA_SWIR_L MEX_OMEGA_SWIR_C FIXED -41422 + MEX_OMEGA_VNIR MEX_OMEGA_SWIR_C FIXED -41410 + + PFS frames: + ------------- + MEX_PFS_BASE MEX_SPACECRAFT FIXED -41500 + MEX_PFS_SCANNER MEX_PFS_BASE CK -41530 + MEX_PFS_SWC MEX_PFS_SCANNER FIXED -41510 + MEX_PFS_LWC MEX_PFS_SCANNER FIXED -41520 + MEX_PFS_25_LEFT MEX_PFS_BASE FIXED -41531 + MEX_PFS_12_LEFT MEX_PFS_BASE FIXED -41532 + MEX_PFS_NADIR_SWC MEX_PFS_BASE FIXED -41533 + MEX_PFS_NADIR_LWC MEX_PFS_BASE FIXED -41537 + MEX_PFS_12_RIGHT MEX_PFS_BASE FIXED -41534 + MEX_PFS_25_RIGHT MEX_PFS_BASE FIXED -41535 + MEX_PFS_COLD_SPACE MEX_PFS_BASE FIXED -41536 + + SPICAM frames: + -------------- + MEX_SPICAM_BASE MEX_SPACECRAFT FIXED -41600 + MEX_SPICAM_STELLAR MEX_SPICAM_BASE FIXED -41601 + MEX_SPICAM_SOLAR MEX_SPICAM_BASE FIXED -41602 + MEX_SPICAM_NADIR MEX_SPICAM_BASE FIXED -41603 + + VMC frames: + ----------- + MEX_VMC MEX_SPACECRAFT FIXED -41700 + + + Beagle-2 Lander Frame: + --------------- + BEAGLE2_LOCAL_LEVEL IAU_MARS FIXED -44900 + BEAGLE2_LANDER BEAGLE2_LOCAL_LEVEL FIXED -44000 + + Other Beagle-2 frames are TBD. + + +Spacecraft and Its Structures Frame Tree +======================================================================== + + The diagram below shows the Mars Express spacecraft and its structures + frame hierarchy (not including science instrument frames.) + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED | EARTH BODY-FIXED + --------------- | ---------------- + | | + |<-fixed | + | | + V | + "BEAGLE2_LOCAL_LEVEL" | + -------------------- | + | | + |<-fixed | + | | + V | + "BEAGLE2_LANDER" | + ---------------- | + | + |<-ck "MEX_STR_A" + | ----------- + V ^ + "MEX_SC_REF" | + ------------ | "MEX_STR_B" + | | ----------- + |<-fixed | ^ + | | | + V fixed->| |<-fixed + "MEX_SPACECRAFT" | | + +----------------------------------------------------+-----+ + | | . | | | | + |<-fixed |<-fixed . fixed->| | | |<-fixed + | | . | | | | + V V . V | | V + "MEX_SA+Y_ZERO" "MEX_SA-Y_ZERO" . "MEX_HGA" | | "MEX_LGA" + -------------- -------------- . --------- | | --------- + | | . | | + |<-ck |<-ck . fixed->| |<-fixed + | | . | | + V v . V V + "MEX_SA+Y" "MEX_SA-Y" . "MEX_MELACOM_1" "MEX_MELACOM_2" + --------- ---------- . --------------- --------------- + . + . + V + Individual instrument frame trees are provided + in the corresponding sections of this file + + + +MEX Spacecraft and Spacecraft Structures Frames +======================================================================== + + This section of the file contains the definitions of the spacecraft + and spacecraft structures frames. + + +MEX Spacecraft Frames +-------------------------------------- + + Two reference frames are defined for the MEX spacecraft (see [6]) -- + "mechanical/structure frame" (Xb,Yb,Zb) and "spacecraft reference + frame" (Xa,Ya,Za). + + The "mechanical/structure frame" frame (Xb,Yb,Zb), with respect to + which orientation of all science instruments and spacecraft + structures is defined, is called MEX_SPACECRAFT frame in the MEX + SPICE implementation. + + This frame is defined as follows: + + - the payloads are located on the +Zb axis (the Main Engine being + on the -Zb axis); + + - the HGA is located on -Xb axis; + + - the +Y axis is defined so that the (Xb,Yb,Zb) frame is right- + handed. + + - the origin of this frames is the launch vehicle interface point. + + The "spacecraft reference frame" (Xa,Ya,Za) frame, used primarily in + AOSC studies, is the one for which orientation is determined + on-board the spacecraft. This frame is called MEX_SC_REF in MEX + SPICE implementation. + + This frame is related to MEX_SPACECRAFT frame (Xb,Yb,Zb) as a + follows: + + - +Xa = -Xb; + + - +Ya = -Yb; + + - +Za = Zb ; + + - the origin of this frame is also located at the launch vehicle + interface point. + + These diagrams illustrate the MEX_SPACECRAFT and MEX_SC_REF frames: + + +X S/C side view: + ----------------- + ^ + | Nadir + | Direction + of flight + ----> + + Beagle-2 .'. + .' `. + \_____/ + ._____________. + |Science Deck | + =====================o | | o===================== + -Y Solar Array | +Zsc | +Y Solar Array + | +Zsc_ref | + | ^ | + | | | + | | | + .______|______. +Xsc is out + | | | of the page + +Ysc_ref <-------*-------> +Ysc + / \ +Xsc_ref is into + /_____\ Main Engine the page + + +Z S/C side view: + ----------------- + HGA + ____ +Xsc_ref + \ ^ / + .________________. .__`.__|__.'__. .________________. + | \ | | | / | + | \ | _|_ | / | + | +Ysc_ref .' | ` +Ysc | | + | |o<-------o------->o| | + | | | `_|+Zsc | | | + | / | |+Zsc_ref \ | + ._________________/ .______|______. \_________________. + -Y Solar Array | +Y Solar Array + V +Xsc + + Both, +Zsc and +Zsc_ref + are out of the page + + + As seen on the diagram, the MEX_SPACECRAFT and MEX_SC_REF frames are + rotated 180 degrees about +Z with respect to each other. + + Since the orientation of the MEX_SC_REF frame is computed on-board, + sent down in telemetry, and stored in the S/C CK files, it is + defined as a CK-based frame. + + The MEX_SPACECRAFT frame is then defined as a fixed-offset frame -- + rotated by 180 degrees about +Z axis -- with respect to the + MEX_SC_REF frame. + + These sets of keywords define the MEX_SPACECRAFT and MEX_SC_REF frames: + + \begindata + + FRAME_MEX_SPACECRAFT = -41000 + FRAME_-41000_NAME = 'MEX_SPACECRAFT' + FRAME_-41000_CLASS = 4 + FRAME_-41000_CLASS_ID = -41000 + FRAME_-41000_CENTER = -41 + TKFRAME_-41000_RELATIVE = 'MEX_SC_REF' + TKFRAME_-41000_SPEC = 'ANGLES' + TKFRAME_-41000_UNITS = 'DEGREES' + TKFRAME_-41000_AXES = ( 1, 2, 3 ) + TKFRAME_-41000_ANGLES = ( 0.0, 0.0, 180.0 ) + + FRAME_MEX_SC_REF = -41001 + FRAME_-41001_NAME = 'MEX_SC_REF' + FRAME_-41001_CLASS = 3 + FRAME_-41001_CLASS_ID = -41001 + FRAME_-41001_CENTER = -41 + CK_-41001_SCLK = -41 + CK_-41001_SPK = -41 + + \begintext + + +MEX Solar Array Frames +-------------------------------------- + + Note that, unlike in most spacecrafts, the +Y panel is situated along the + -Y axis of the MEX_SPACECRAFT frame, and the -Y panel is situated along + the +Y axis. The reason is that the solar arrays are named with respect to + the MEX_SC_REF frame. + + Two auxiliary frames, MEX_SA+Y_ZERO and MEX_SA-Y_ZERO, fixed with respect + to the MEX_SPACECRAFT frame, are defined as follows: + + - +Y is parallel to the longest side of the array, positively orientated + from the yoke to the end of the wing. + + - +Z is orientated along the -X axis of MEX_SPACECRAFT. It is equal to + the -X axis of MEX_SPACECRAFT. + + - +X is defined such that (X,Y,Z) is right handed. + + Since the MEX solar arrays can be articulated (having one degree of + freedom), the solar Array frames, MEX_SA+Y and MEX_SA-Y, are defined as + CK frames with their orientation given relative to MEX_SA+Y_ZERO and + MEX_SA-Y_ZERO. + + Both array frames are defined as follows (from [6]): + + - +Y is parallel to the longest side of the array, positively oriented + from the yoke to the end of the wing; + + - +Z is normal to the solar array plane, the solar cells facing +Z; + + - +X is defined such that (X,Y,Z) is right handed; + + - the origin of the frame is located at the yoke geometric center. + + The axis of rotation is parallel to the Y axis of the spacecraft and + solar array frames. + + This diagram illustrates the solar array frames: + + +X S/C side view: + ----------------- + + + ^ +Zsc + | + .'. ^ +Xsa-y_zero + / | \ | + /Beagle-2 | + +Zsa+y_zero \_____/ | +Zsa-y_zero is into the page + is into the page .______|______. | + +Ysa+y_zero <------x |Science Deck | x---------> +Ysa-y_zero + ._____________________|__ | | | ________________________. + | | \ | | | / | + | | o| | |o | + |_____________________|__/ | | | \________________________| + | | | o---------> +Ysc + | | +Xsc | + V | (out of the page ) + +Xsa+y_zero ._____________. + | | + ._________. + / \ + /_____\ Main Engine + + + + + These sets of keywords define solar array frames as CK frames: + + \begindata + + FRAME_MEX_SA+Y_ZERO = -41013 + FRAME_-41013_NAME = 'MEX_SA+Y_ZERO' + FRAME_-41013_CLASS = 4 + FRAME_-41013_CLASS_ID = -41013 + FRAME_-41013_CENTER = -41 + TKFRAME_-41013_SPEC = 'ANGLES' + TKFRAME_-41013_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41013_ANGLES = ( 180.0, -90.0, 0.0 ) + TKFRAME_-41013_AXES = ( 3, 2, 3 ) + TKFRAME_-41013_UNITS = 'DEGREES' + + FRAME_MEX_SA+Y = -41011 + FRAME_-41011_NAME = 'MEX_SA+Y' + FRAME_-41011_CLASS = 3 + FRAME_-41011_CLASS_ID = -41011 + FRAME_-41011_CENTER = -41 + CK_-41011_SCLK = -41 + CK_-41011_SPK = -41 + + FRAME_MEX_SA-Y_ZERO = -41014 + FRAME_-41014_NAME = 'MEX_SA-Y_ZERO' + FRAME_-41014_CLASS = 4 + FRAME_-41014_CLASS_ID = -41014 + FRAME_-41014_CENTER = -41 + TKFRAME_-41014_SPEC = 'ANGLES' + TKFRAME_-41014_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41014_ANGLES = ( 0.0, 90.0, 0.0 ) + TKFRAME_-41014_AXES = ( 3, 2, 1 ) + TKFRAME_-41014_UNITS = 'DEGREES' + + FRAME_MEX_SA-Y = -41012 + FRAME_-41012_NAME = 'MEX_SA-Y' + FRAME_-41012_CLASS = 3 + FRAME_-41012_CLASS_ID = -41012 + FRAME_-41012_CENTER = -41 + CK_-41012_SCLK = -41 + CK_-41012_SPK = -41 + + \begintext + + +MEX High Gain Antenna Frame +-------------------------------------- + + The MEX High Gain Antenna is rigidly attached to the -X side of the + S/C bus. Therefore, the MEX HGA frame, MEX_HGA, is defined as a fixed + offset frame with its orientation given relative to the MEX_SPACECRAFT + frame. + + The MEX_HGA frame is defined as follows: + + - +Z axis is in the antenna boresight direction (nominally + 5 degrees off the S/C -X axis towards the S/C +Z axis); + + - +Y axis is in the direction of the S/C +Y axis ; + + - +X completes the right hand frame; + + - the origin of the frame is located at the geometric center of the + HGA dish outer rim circle. + + This diagram illustrates the MEX_HGA frame: + + +Z S/C side view: + ----------------- + ^+Zhga + | + | + | + +Xhga | +Yhga + _____o-------> + \ / + .________________. .__`._____.'__. .________________. + | \ |Beagle-2 | / | + | \ | ___ | / | + | | | .' ` +Ysc | | + | |o=| | o------->o| | + | | | `_|+Zsc | | | + | / | | | \ | + ._________________/ .______|______. \_________________. + -Y Solar Array | +Y Solar Array + V +Xsc + + + Nominally a single rotation of -85 degrees about the +Y axis is needed to + co-align the S/C frame with the HGA frame. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_HGA = -41020 + FRAME_-41020_NAME = 'MEX_HGA' + FRAME_-41020_CLASS = 4 + FRAME_-41020_CLASS_ID = -41020 + FRAME_-41020_CENTER = -41 + TKFRAME_-41020_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41020_SPEC = 'ANGLES' + TKFRAME_-41020_UNITS = 'DEGREES' + TKFRAME_-41020_AXES = ( 1, 2, 3 ) + TKFRAME_-41020_ANGLES = ( 0.0, 85.0, 0.0 ) + + \begintext + + +MEX Lander Communication Antenna Frames +-------------------------------------- + + Both Mars Lander Communication (MELACOM) Antennas are rigidly mounted + on the instrument deck of the S/C bus. Therefore, the MELACOM antenna + frames, MEX_MELACOM_1 and MEX_MELACOM_2, are defined as fixed offset + frames with their orientation given relative to the MEX_SPACECRAFT frame. + + The MEX_MELACOM_1 and MEX_MELACOM_2 frames are defined as follows: + + - +Z axis is in the direction of the antenna boresight (nominally + along the S/C +Z axis); + + - +Y axis is in the direction of the S/C +Y axis; + + - X completes the right hand frame; + + - the origin of the frame is located at the geometric center of the + outer side of the antenna. + + This diagram illustrates the MEX_MELACOM_1 and MEX_MELACOM_2 frames: + + +X S/C side view: + ----------------- + ^ +Zm1 ^ +Zm2 + | | +Xm1, +Xm2 + | | are out of + | | the page + | +Ym1 | +Ym2 + .o-------> .o-------> + | | .' `. | | + MELACOM 1 | | \_____/ | | MELACOM 2 + ._____________. + |Science Deck | + =====================o | | o===================== + -Y SA | | +Y SA + | +Zsc | + | ^ | + | | | + | | | + .______|______. + | | | + .____o-------> +Ysc + +Xsc \ + /_____\ Main Engine + + + Nominally both antenna frames are co-aligned with the S/C frame. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_MELACOM_1 = -41031 + FRAME_-41031_NAME = 'MEX_MELACOM_1' + FRAME_-41031_CLASS = 4 + FRAME_-41031_CLASS_ID = -41031 + FRAME_-41031_CENTER = -41 + TKFRAME_-41031_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41031_SPEC = 'ANGLES' + TKFRAME_-41031_UNITS = 'DEGREES' + TKFRAME_-41031_AXES = ( 1, 2, 3 ) + TKFRAME_-41031_ANGLES = ( 0.0, 0.0, 0.0 ) + + FRAME_MEX_MELACOM_2 = -41032 + FRAME_-41032_NAME = 'MEX_MELACOM_2' + FRAME_-41032_CLASS = 4 + FRAME_-41032_CLASS_ID = -41032 + FRAME_-41032_CENTER = -41 + TKFRAME_-41032_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41032_SPEC = 'ANGLES' + TKFRAME_-41032_UNITS = 'DEGREES' + TKFRAME_-41032_AXES = ( 1, 2, 3 ) + TKFRAME_-41032_ANGLES = ( 0.0, 0.0, 0.0 ) + + \begintext + + +MEX Low Gain Antenna Frame +-------------------------------------- + + The MEX_LGA frame is a fixed offset frame with its orientation give + relative to the MEX_SPACECRAFT frame. + + The MEX_LGA frame is defined as follows: + + - Z axis is along <> ; + + - Y axis is along <> ; + + - X completes the right hand frame; + + - the origin of the MEX_LGA frame is located at <> . + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_LGA = -41040 + FRAME_-41040_NAME = 'MEX_LGA' + FRAME_-41040_CLASS = 4 + FRAME_-41040_CLASS_ID = -41040 + FRAME_-41040_CENTER = -41 + TKFRAME_-41040_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41040_SPEC = 'ANGLES' + TKFRAME_-41040_UNITS = 'DEGREES' + TKFRAME_-41040_AXES = ( 1, 2, 3 ) + TKFRAME_-41040_ANGLES = ( 000.000, 000.000, 000.000 ) + + \begintext + + +Star Tracker Frames +-------------------------------------- + + The Star Tracker STR_A and STR_B frames -- MEX_STR_A and MEX_STR_B + -- are defined as follows: + + - +Z axis points along the Star Tracker boresight; + + - +Y axis is nominally parallel to the S/C YZ plane and points + in the direction of the S/C -Y axis; + + - +X axis completes the right hand frame; + + - the origin of the frame is located at the Star Tracker focal + point. + + This diagram illustrates the Star Tracker frames: + + +Z S/C side (science deck side) view: + ------------------------------------------------- + + ~15 deg ~15 deg + \<--->| |<--->/ + + +Zstr-b ^ ^ +Zstr-a + \ / + \ / + .\___________/. + <-------* <-------* | + +Ystr-b |/ +Ystr-a \| + / \ +Ysc + o==/ /==================o/| o------->o==================/ /==o + -Y Solar Array v | | | v +Y Solar Array + +Xstr-b | | | +Xstr-a + .______|______. + .' V +Xsc + HGA /___________\ +Zsc is out of the page + `.|.' + +Zstr-a, +Zstr-b, +Xstr-a and + +Xstr-b are ~45 deg below the page + + +Ystr-a is ~20 deg below the page + + +Ystr-b is ~20 deg above the page + + + Star Tracker frame alignment matrices rotating vectors from the S/C + frame to the Star Tracker frames had been provided by Michael Mueller + (ESOC) and were cited in [20]: + + STR_A boresight in S/C frame: [-0.682765542 0.258035685 -0.683555996] + STR_B boresight in S/C frame: [-0.682268486 -0.259031278 -0.683675735] + + + The boresights are defined relative to the MEX_SPACECRAFT frame. Given + the boresight the rotation from the MEX_SPACECRAFT frame to the + MEX_STR_A and MEX_STR_B frames can be represented by the following + rotation angles in degrees: + + str-a + M = |0.0| * |-43.06013208133495| * |-159.3189701261016| + sc Z Y X + + str-b + M = |0.0| * |-43.02116586137415| * |159.24928820009603| + sc Z Y X + + + Here, we need the rotation matrices from the Star Tracker frames to + the S/C frame, and hence the inverse of the above matrices, which is + the same as the transpose for rotation matrices. This is incorporated + by the frame definitions below. + + \begindata + + FRAME_MEX_STR_A = -41051 + FRAME_-41051_NAME = 'MEX_STR_A' + FRAME_-41051_CLASS = 4 + FRAME_-41051_CLASS_ID = -41051 + FRAME_-41051_CENTER = -41 + TKFRAME_-41051_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41051_SPEC = 'ANGLES' + TKFRAME_-41051_UNITS = 'DEGREES' + TKFRAME_-41051_AXES = ( 1, 2, 3 ) + TKFRAME_-41051_ANGLES = ( + 159.3189701261016, 43.06013208133495, 0.0 + ) + + FRAME_MEX_STR_B = -41052 + FRAME_-41052_NAME = 'MEX_STR_B' + FRAME_-41052_CLASS = 4 + FRAME_-41052_CLASS_ID = -41052 + FRAME_-41052_CENTER = -41 + TKFRAME_-41052_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41052_SPEC = 'ANGLES' + TKFRAME_-41052_UNITS = 'DEGREES' + TKFRAME_-41052_AXES = ( 1, 2, 3 ) + TKFRAME_-41052_ANGLES = ( + -159.24928820009603, 43.02116586137415, 0.0 + ) + + \begintext + + +ASPERA Frames +======================================================================== + + This section of the file contains the definitions of the ASPERA + instrument frames. + + +ASPERA Frame Tree +-------------------------------------- + + The diagram below shows the ASPERA frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + +-----------------------------------+ + | | + |<-fixed |<-fixed + | | + V V + "MEX_ASPERA_URF" "MEX_ASPERA_IMA_URF" + ---------------- -------------------- + | | + | |<-fixed + | | + | V + | "MEX_ASPERA_IMA" + | ---------------- + | | + | |<-fixed + | | + | V + | "MEX_ASPERA_IMAS" + | ----------------- + | + | + | + | "MEX_ASPERA_SS1" "MEX_ASPERA_SS2" + | ---------------- ---------------- + | | | + |<-ck |<-fixed |<-fixed + | | | + V | | + "MEX_ASPERA_SAF" | | + -----------------------------------------------------------------+ + | | | | + |<-fixed |<-fixed |<-fixed fixed->| + | | | | + V V V V + "MEX_ASPERA_ELS" "MEX_ASPERA_NPI" "MEX_ASPERA_NPD1" "MEX_ASPERA_NPD2" + ---------------- ---------------- ----------------- ----------------- + + +ASPERA Main Unit URF and SAF Frames +-------------------------------------- + + The ASPERA main unit base is rigidly mounted on the S/C science + deck. Therefore, the frame associated with it -- the ASPERA main + unit reference frame, MEX_ASPERA_URF, -- is a fixed offset frame + with its orientation given relative to the MEX_SPACECRAFT frame. + + The MEX_ASPERA_URF frame is defined as follows: + + - +Z axis is along the scanner rotation axis and points from the + main unit mounting plate toward the scanner (nominally this + axis is co-aligned with the S/C +Z axis); + + - +X axis is parallel to the longer side of the main unit base + and points from the NPD side towards the ELS side for scanner + in "90 degrees" position (nominally this axis is co-aligned + with the S/C -Y axis); + + - +Y completes the right handed frame; + + - the origin of the frame is located at the intersection of the + mounting surface of the main unit base and the axis of the + mounting screw hole located at NPD2 side for scanner in "90 + degrees" position. + + Nominally this frame is rotated by -90 degrees about Z axis from the + S/C frame. + + Since ASPERA main unit scanner rotates with respect to its base with + 0..180 angle range clockwise about Z axis of the MEX_ASPERA_URF + frame, the frame associated with it -- the sensor assembly frame, + MEX_ASPERA_SAF, -- is defined as a CK frame with its orientation + provided in a CK file relative to the MEX_ASPERA_URF frame. + + The MEX_ASPERA_SAF frame is defined as follows: + + - +Z axis is along the scanner rotation axis and points from the + main unit mounting plate toward the scanner; this axis is + co-aligned with the +Z axis of the MEX_ASPERA_URF frame; + + - +X axis is along the ASPERA sensor assembly central axis and + points from the NPD sensor towards the ELS sensor; this axis + is co-aligned with the +X axis of the MEX_ASPERA_URF frame + when scanner is in "90 degrees" position. + + - +Y axis completes the right handed frame; + + - the origin of the MEX_ASPERA_SAF frame is located at the + intersection of the scanner rotation axis and the bottom + (mounting) surface of the scanner base. + + This diagram illustrates the MEX_ASPERA_URF and MEX_ASPERA_SAF + frames for the scanner angle of 135 degrees: + + +Z S/C side view: + ----------------- + "180 deg" + position + "135 deg" | + position `. . + ` | + HGA + +Xsaf ^. ___________ + "90 deg" `. \ / + position _________ `.__`._____.'__ _________________ + -.- \ o +Zsaf | / | + | +Xurf <---.'--o +Zurf | / | + | .' | | | | | + | V|o=| | o-------> +Ysc | + | +Ysaf | | | | +Zsc | . | + | / | V | | \ | + ._________________/ +Yurf |______. \_________________. + -Y Solar Array V +Y Solar Array + +Xsc + | + . + | + "0 deg" +Zsc, +Zsaf and +Zurf + position axes are out of the page + + In general the MEX_ASPERA_SAF frame is rotated with respect to the + MEX_ASPERA_URF frame by ( 90- ) degrees about +Z axis for + scanner in position. This rotation as a function of time is + provided in the ASPERA scanner CK files. + + Thus, in "0 degrees" scanner position the SAF frame is co-aligned + with the S/C frame; in "90 degrees" scanner position the SAF frame + is co-aligned with the URF frame: + + "0 deg" position: "90 deg" position + ----------------- ----------------- + + o-------> +Ysaf +Xsaf <-------o + <-----|-o <-----|-o + +Xurf | | +Xurf | | + | | o-------> +Ysc | | o--------> +Ysc + +Xsaf V | | +Ysaf V | | + V | V | + +Yurf | +Yurf | + V V + +Xsc +Xsc + + These sets of keywords define the ASPERA URF and SAF frames: + + \begindata + + FRAME_MEX_ASPERA_URF = -41110 + FRAME_-41110_NAME = 'MEX_ASPERA_URF' + FRAME_-41110_CLASS = 4 + FRAME_-41110_CLASS_ID = -41110 + FRAME_-41110_CENTER = -41 + TKFRAME_-41110_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41110_SPEC = 'ANGLES' + TKFRAME_-41110_UNITS = 'DEGREES' + TKFRAME_-41110_AXES = ( 1, 2, 3 ) + TKFRAME_-41110_ANGLES = ( 0.0, 0.0, 90.0 ) + + FRAME_MEX_ASPERA_SAF = -41111 + FRAME_-41111_NAME = 'MEX_ASPERA_SAF' + FRAME_-41111_CLASS = 3 + FRAME_-41111_CLASS_ID = -41111 + FRAME_-41111_CENTER = -41 + CK_-41111_SCLK = -41 + CK_-41111_SPK = -41 + + \begintext + + +ASPERA Main Unit Sensor Frames +-------------------------------------- + + Because ASPERA main unit sensors are rigidly mounted on the scanner, + their corresponding frames -- MEX_ASPERA_ELS, MEX_ASPERA_NPI, + MEX_ASPERA_NPD1, and MEX_ASPERA_NPD2 -- are defined as fixed-offset + frames with respect to the MEX_ASPERA_SAF frame. + + ELS and NPI sensor frames are defined such that their axes are + co-aligned with the axes of the MEX_ASPERA_SAF frame and their + origins are at the sensors' "focal points", located at the + intersection of the sensor's aperture plane and the sensor's + symmetry axis. + + NPD1 and NPD2 sensor frames are defined such that their +Y and +Z + axes are in the sensor's aperture plane, with the +Z axis along the + central axis of the aperture (view direction of the middle sector), + and +X axis is perpendicular to the aperture plane and points in + direction of the SAF frame +X axis. The origins of these frames are + at the sensor "focal points", which are located in the sensor's + aperture plane at the point here the sensor sector view directions + intersect. + + In all cases the "focal point" of a particular sensor is the point + from which all sensor view direction are emanating. + + This diagram illustrates the ELS, NPI, NPD1, and NPD2 sensor frames + orientation w.r.t to the SAF, URF and spacecraft frames (for scanner + at 90 degrees position: + + +Xels + .--- ^ ---. ELS + | | | + +Yels |<---o | - - - - - - - - - - - - - - + | | ELS aperture + +Xnpi ^ -----. NPI plane + +Xss2 ^ | | + +Ynpi <---o | - - - - - - - - - - - - - + ----------- +Yss2 <---o o---> +Yss1 -. NPI aperture + / .--------------|----------. | plane + | | +Xsaf^ V +Xss1 | | + \ | | | | + / | +Ysaf <---o +Xnpd1 | | YZ of "npd1" frame + | | ^ +Znpd1 are in the aperture + \ | .-\--.^.| plane + / +Xnpd2 +Ynpd1 <--o' || +Xnpd1 is into the page + | ^ `------'| +Ynpd1 and +Znpd1 are + \ .---\---. NPD1 | | out of the page + / +Ynpd2 <---o | | | + | `--.'---' NPD2 Scanner | | YZ of "npd2" frame + \ +Znpd2 <'________________________. | are in the aperture + / | | | plane + | |^ +Xurf | | + \ || Base | | +Ynpd1 is into the page + \ +Yurf <---o____________________. | +Xnpd1 and +Znpd1 are + \ | out of the page + +Xsc \____ Nadir deck | + <---o \____________ | + | \__________________| +Z axes of all frames + V +Ysc are out of the page + + + These sets of keywords define the MEX_ASPERA_ELS and MEX_ASPERA_NPI + frames: + + \begindata + + FRAME_MEX_ASPERA_ELS = -41120 + FRAME_-41120_NAME = 'MEX_ASPERA_ELS' + FRAME_-41120_CLASS = 4 + FRAME_-41120_CLASS_ID = -41120 + FRAME_-41120_CENTER = -41 + TKFRAME_-41120_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41120_SPEC = 'ANGLES' + TKFRAME_-41120_UNITS = 'DEGREES' + TKFRAME_-41120_AXES = ( 1, 2, 3 ) + TKFRAME_-41120_ANGLES = ( 0.0, 0.0, 0.0 ) + + FRAME_MEX_ASPERA_NPI = -41130 + FRAME_-41130_NAME = 'MEX_ASPERA_NPI' + FRAME_-41130_CLASS = 4 + FRAME_-41130_CLASS_ID = -41130 + FRAME_-41130_CENTER = -41 + TKFRAME_-41130_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41130_SPEC = 'ANGLES' + TKFRAME_-41130_UNITS = 'DEGREES' + TKFRAME_-41130_AXES = ( 1, 2, 3 ) + TKFRAME_-41130_ANGLES = ( 0.0, 0.0, 0.0 ) + + \begintext + + The NPD1 aperture plane is tilted by 15 degrees towards +X axis of + the SAF frame about +Y/+Z line of the SAF frame. Thus, to align the + SAF frame with the NPD1 frame the SAF frame has to be rotated by +45 + degrees about X axis and then by +15 degrees about new position of Y + axis. + + The NPD2 aperture plane is tilted by 15 degrees towards -X axis of + the SAF frame about -Y/+Z line of the SAF frame. Thus, to align the + SAF frame with the NPD2 frame the SAF frame has to be rotated by -45 + degrees about X axis and then by -15 degrees about new position of Y + axis. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + These sets of keywords define the MEX_ASPERA_NPD1 and MEX_ASPERA_NPD2 + frames: + + \begindata + + FRAME_MEX_ASPERA_NPD1 = -41141 + FRAME_-41141_NAME = 'MEX_ASPERA_NPD1' + FRAME_-41141_CLASS = 4 + FRAME_-41141_CLASS_ID = -41141 + FRAME_-41141_CENTER = -41 + TKFRAME_-41141_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41141_SPEC = 'ANGLES' + TKFRAME_-41141_UNITS = 'DEGREES' + TKFRAME_-41141_AXES = ( 1, 2, 1 ) + TKFRAME_-41141_ANGLES = ( -45.0, -15.0, 0.0 ) + + FRAME_MEX_ASPERA_NPD2 = -41142 + FRAME_-41142_NAME = 'MEX_ASPERA_NPD2' + FRAME_-41142_CLASS = 4 + FRAME_-41142_CLASS_ID = -41142 + FRAME_-41142_CENTER = -41 + TKFRAME_-41142_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41142_SPEC = 'ANGLES' + TKFRAME_-41142_UNITS = 'DEGREES' + TKFRAME_-41142_AXES = ( 1, 2, 1 ) + TKFRAME_-41142_ANGLES = ( 45.0, 15.0, 0.0 ) + + \begintext + + The ASPERA Solar Sensor 1 frame, MEX_ASPERA_SS1, is defined as follows: + + - +X axis is co-aligned with +X axis of the MEX_ASPERA_SAF + frame; + + - +Z axis is 15 degrees off +Z axis of the MEX_ASPERA_SAF frame + towards -Y axis of MEX_ASPERA_SAF frame; + + - +Y completes the right handed frame and is along the sensor + boresight direction; + + - the origin of the frame is located at the sensor's FOV focal + point. + + The ASPERA Solar Sensor 2 frame, MEX_ASPERA_SS2, is defined as follows: + + - +X axis is co-aligned with -X axis of the MEX_ASPERA_SAF + frame; + + - +Z axis is 15 degrees off +Z axis of the MEX_ASPERA_SAF frame + towards +Y axis of MEX_ASPERA_SAF frame; + + - +Y completes the right handed frame and is along the sensor + boresight direction; + + - the origin of the frame is located at the sensor's FOV focal + point. + + This diagram illustrates the MEX_ASPERA_SS1 and MEX_ASPERA_SS2 + frames: + + ^ +Zsaf + | + +Zss1 ^ | ^ +Zss2 + ..\.|./.. + .' \|/ `. + +Yss2 <-. .' | `. .-> +Yss1 + `-. /|\ .-' + . `-. / | \ .-' . + . +Xss2`x | o'+Xss1 . + . o--------------> +Ysaf + . +Xsaf . + . . + . . + . . + `. .' + ` ......... ' + + + Both frames are defined as fixed offset frames with respect to the + MEX_ASPERA_SAF frame. + + To align the SAF frame with the SS1 frame the SAF frame has to be + rotated by +15 degrees about X axis. + + To align the SAF frame with the SS2 frame the SAF frame has to be + rotated by 180 degrees about Z axis and then by +15 degrees about + new position of X axis. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + These sets of keywords define the MEX_ASPERA_SS1 and MEX_ASPERA_SS2 + frames: + + \begindata + + FRAME_MEX_ASPERA_SS1 = -41161 + FRAME_-41161_NAME = 'MEX_ASPERA_SS1' + FRAME_-41161_CLASS = 4 + FRAME_-41161_CLASS_ID = -41161 + FRAME_-41161_CENTER = -41 + TKFRAME_-41161_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41161_SPEC = 'ANGLES' + TKFRAME_-41161_UNITS = 'DEGREES' + TKFRAME_-41161_AXES = ( 3, 2, 1 ) + TKFRAME_-41161_ANGLES = ( 0.0, 0.0, -15.0 ) + + FRAME_MEX_ASPERA_SS2 = -41162 + FRAME_-41162_NAME = 'MEX_ASPERA_SS2' + FRAME_-41162_CLASS = 4 + FRAME_-41162_CLASS_ID = -41162 + FRAME_-41162_CENTER = -41 + TKFRAME_-41162_RELATIVE = 'MEX_ASPERA_SAF' + TKFRAME_-41162_SPEC = 'ANGLES' + TKFRAME_-41162_UNITS = 'DEGREES' + TKFRAME_-41162_AXES = ( 3, 2, 1 ) + TKFRAME_-41162_ANGLES = ( 180.0, 0.0, -15.0 ) + + \begintext + + +ASPERA Ion Mass Analyzer Unit Frames +-------------------------------------- + + The ASPERA IMA unit is rigidly mounted in the -X/-Y quadrant of the + on the S/C -Z ("main engine") deck and has no moving parts. + Therefore, the three ASPERA IMA frames -- IMA Unit Reference Frame + (MEX_ASPERA_IMA_URF), IMA sensor frame (MEX_ASPERA_IMA), and IMA + sensor head frame (MEX_ASPERA_IMAS) -- are defined as fixed offset + frames. + + The MEX_ASPERA_IMA_URF frame is defined as follows: + + - +Z axis is normal to the UMA unit mounting plate and points + from the the mounting plate toward the sensor (nominally this + axis is co-aligned with the S/C -Z axis); + + - +X axis is parallel to the longer side of the IMA unit base + and sensor symmetry axis and points towards the sensors + aperture side (nominally this axis is co-aligned with + the S/C -Y axis); + + - +Y completes the right handed frame; + + - the origin of the frame is located at the intersection of the + mounting surface of the IMA unit base and the axis of the + mounting screw hole located far right from the sensor aperture + (as seen on the top view with the sensor aperture at the bottom + on the page) + + The MEX_ASPERA_IMA frame is defined such that its axes are + co-aligned with the axes of the MEX_ASPERA_IMA_URF frame and its + origin is at the sensor's "focal point", located at the intersection + of the sensor's aperture symmetry plane and the sensor's symmetry + axis. + + The MEX_ASPERA_IMAS frame is defined such that its axes are aligned + with the axes of the MEX_ASPERA_IMA frame as follows: + + - +Z-imas points along the +X-ima axis + + - +X-imas axis points along the +Y-ima axis + + - +Y-imas axis points along the +Z-ima axis + + The origin of the MEX_ASPERA_IMAS is also at the sensor's "focal point". + + These diagrams illustrate the MEX_ASPERA_IMA_URF, MEX_ASPERA_IMA, and + MEX_ASPERA_IMAS frames: + + -Z S/C side view ("main engine" side): + -------------------------------------- + + +Xsc + -Y Solar Array ^ +Y Solar Array + ._________________ .______|______. .________________. + | \ | | | / | + | \ | | | / | + | | | |+Zsc | | | + | +Zimas |+Yimas x------->o| | + | +Xima |+Zima +Ysc . | + | <----o +Zimau | \ | + ._________________/ <----o__________. \_________________. + +Ximau | |' `. + V /|________\ + +Ximas V HGA + +Yima +Yimau + + +Zsc is into the page + +Zima, +Zimau, and +Yimas + are out of the page + + + -Z S/C side view ("main engine" side) -- zoom in: + ------------------------------------------------- + + -- ^ +Xsc + | \ | + | \__ | + | \_________ | + | \ | + | \ x-------> + IMA |._____________. \ +Zsc +Ysc + Aperture || o o | \ + .___________________. | \____ + +Zimas | | +Yimas | | \ + +Xima | | +Zima | | \ + <-------o | | | \ + | | | | | | IMA | + | | | | | | Mounting \ + .___|_______________. | plate | + | || o <-------o | | + +Ximas V |. +Ximau ___|_. / + +Yima | | | "Main Engine" + .____________|_______________/ Deck + | + +Yimau V + + + As seen in the diagram two rotations are needed to align the S/C + frame (MEX_SPACECRAFT) with the IMA URF frame (MEX_ASPERA_IMA_URF) + -- first rotation is by 180 degrees about Y axis, and then by -90 + degrees about new position of Z axis. + + No rotations are needed to align the IMA URF frame + (MEX_ASPERA_IMA_URF) with the IMA sensor frame (MEX_ASPERA_IMA). + + Two rotations -- first by +90 degrees about X axis and then by +90 + degrees about Y axis -- are needed to align the IMA sensor frame + (MEX_ASPERA_IMA) with the IMA sensor head frame (MEX_ASPERA_IMAS). + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_ASPERA_IMA_URF = -41150 + FRAME_-41150_NAME = 'MEX_ASPERA_IMA_URF' + FRAME_-41150_CLASS = 4 + FRAME_-41150_CLASS_ID = -41150 + FRAME_-41150_CENTER = -41 + TKFRAME_-41150_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41150_SPEC = 'ANGLES' + TKFRAME_-41150_UNITS = 'DEGREES' + TKFRAME_-41150_AXES = ( 1, 2, 3 ) + TKFRAME_-41150_ANGLES = ( 0.0, 180.0, 90.0 ) + + FRAME_MEX_ASPERA_IMA = -41151 + FRAME_-41151_NAME = 'MEX_ASPERA_IMA' + FRAME_-41151_CLASS = 4 + FRAME_-41151_CLASS_ID = -41151 + FRAME_-41151_CENTER = -41 + TKFRAME_-41151_RELATIVE = 'MEX_ASPERA_IMA_URF' + TKFRAME_-41151_SPEC = 'ANGLES' + TKFRAME_-41151_UNITS = 'DEGREES' + TKFRAME_-41151_AXES = ( 1, 2, 3 ) + TKFRAME_-41151_ANGLES = ( 0.0, 0.0, 0.0 ) + + FRAME_MEX_ASPERA_IMAS = -41152 + FRAME_-41152_NAME = 'MEX_ASPERA_IMAS' + FRAME_-41152_CLASS = 4 + FRAME_-41152_CLASS_ID = -41152 + FRAME_-41152_CENTER = -41 + TKFRAME_-41152_RELATIVE = 'MEX_ASPERA_IMA' + TKFRAME_-41152_SPEC = 'ANGLES' + TKFRAME_-41152_UNITS = 'DEGREES' + TKFRAME_-41152_AXES = ( 3 , 1, 2 ) + TKFRAME_-41152_ANGLES = ( 0.0, -90.0, -90.0 ) + + \begintext + + +HRSC Frames +======================================================================== + + This section of the file contains the definitions of the HRSC camera + frames. + + +HRSC Frame Tree +-------------------------------------- + + The diagram below shows the HRSC frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + ---------------- + | + |<-fixed + | + V + "MEX_HRSC_BASE" + +-----------------+ + | | + |<-fixed |<-fixed + | | + V V + "MEX_HRSC_HEAD" "MEX_HRSC_SRC" + --------------- -------------- + + +HRSC Base Frame +-------------------------------------- + + The HRSC camera base frame is defined by the camera design and its + mounting on the S/C as follows: + + - +Z axis is in the nominal direction of the HRSC main and SRC + camera boresights; it nominally points in the direction of the + S/C +Z axis; + + - +Y axis is perpendicular to the nominal direction of HRSC main + camera and SRC camera CCD lines and nominally points along the + S/C +Y axis, in the direction of flight; + + - +X completes the right hand frame and is parallel to the nominal + CCD detector lines; it nominally points in the direction of the + S/C +X axis; + + - the origin of the frame is located at the HRSC main camera focal + point. + + Because the HRSC camera is rigidly mounted on the S/C, the HRSC base + frame is defined as a fixed-offset frame with its orientation given + relative to the MEX_SPACECRAFT frame. Any misalignment between nominal + and actual HRSC camera mounting alignment measured pre-launch should + be incorporated into the definition of this frame. + + This diagram illustrates nominal MEX_HRSC_BASE frame with respect to the + spacecraft frame. + + +Z S/C side view: + ----------------- + direction + of flight (+Ysc) + ___________ HGA ----------> + \ / + .________________. .__`._____.'__. .________________. + | \ | | / | + | \ | | / | + | | | +Zsc +Ysc | | + | |o= o------->o| | + | | | | .___| . +Yhbase | + | / | | | o-------> | + ._________________/ .______|__._|_. \_________________. + -Y Solar Array | | HRSC +Y Solar Array + +Xsc V | + | + V +Xhbase + + +Zsc and +Zhbase are + out of page + + + Nominally, the HRSC base frame is co-aligned with the S/C frame. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_HRSC_BASE = -41200 + FRAME_-41200_NAME = 'MEX_HRSC_BASE' + FRAME_-41200_CLASS = 4 + FRAME_-41200_CLASS_ID = -41200 + FRAME_-41200_CENTER = -41 + TKFRAME_-41200_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41200_SPEC = 'ANGLES' + TKFRAME_-41200_UNITS = 'DEGREES' + TKFRAME_-41200_AXES = ( 1, 2, 3 ) + TKFRAME_-41200_ANGLES = ( 0.0, 0.0, 0.0 ) + + \begintext + + +HRSC Main Camera Frame +-------------------------------------- + + The HRSC main camera frame, MEX_HRSC_HEAD, is defined exactly as, and + is nominally co-aligned with, the HRSC camera base frame + MEX_HRSC_BASE. This frame is introduced to allow incorporating into + the HRSC frame chain any misalignment between the camera base and main + camera measured prior to delivering the camera for installation on the + S/C. + + The following in-flight calibrated misalignment angles were provided + by Thomas Roatsch on December 15, 2003: + + HRSC: ( -0.3340, 0.0101, 0.0 ) + + These values are included in the definition below. + + \begindata + + FRAME_MEX_HRSC_HEAD = -41210 + FRAME_-41210_NAME = 'MEX_HRSC_HEAD' + FRAME_-41210_CLASS = 4 + FRAME_-41210_CLASS_ID = -41210 + FRAME_-41210_CENTER = -41 + TKFRAME_-41210_RELATIVE = 'MEX_HRSC_BASE' + TKFRAME_-41210_SPEC = 'ANGLES' + TKFRAME_-41210_UNITS = 'DEGREES' + TKFRAME_-41210_AXES = ( 1, 2, 3 ) + TKFRAME_-41210_ANGLES = ( -0.3340, 0.0101, 0.0 ) + + \begintext + + +HRSC Super Resolution Camera Frame +-------------------------------------- + + The HRSC SRC camera frame, MEX_HRSC_SRC, frame is introduced to + allow incorporating into the HRSC frame chain any misalignment + between the camera base and the SRC camera. This frame is fixed with + respect to the the HRSC camera base frame, MEX_HRSC_BASE, and is + nominally rotated by -90 degrees about +Z from it, as shown on the + diagram: + + +Z S/C side view: + ----------------- + direction + of flight (+Ysc) + ___________ HGA ----------> + \ / + .________________. .__`._____.'__. .________________. + | \ | | / | + | \ | | / | + | | | +Zsc +Ysc | | + | |o= o------->o| | + | | | | .___| . +Yhbase | + | / +Xsrc <-------o-------> | + ._________________/ .______|__._|_. \_________________. + -Y Solar Array | | HRSC +Y Solar Array + +Xsc V | + | + V +Xhbase + +Ysrc + + +Zsc and +Zhbase are + out of page + + + The following in-flight calibrated misalignment angles were provided + by Thomas Roatsch on December 15, 2003 and were used in the FK versions + 0.5 to 1.1: + + SRC: ( -0.0735, -0.0301, 90.0 ) + + The following in-flight calibrated misalignment angles were provided + by Thomas Duxbury on December 3, 2013 and are currently used in the FK: + + SRC: ( -0.084154, -0.038531, 90.038 ) + + These values are included in the definition below. + + \begindata + + FRAME_MEX_HRSC_SRC = -41220 + FRAME_-41220_NAME = 'MEX_HRSC_SRC' + FRAME_-41220_CLASS = 4 + FRAME_-41220_CLASS_ID = -41220 + FRAME_-41220_CENTER = -41 + TKFRAME_-41220_RELATIVE = 'MEX_HRSC_BASE' + TKFRAME_-41220_SPEC = 'ANGLES' + TKFRAME_-41220_UNITS = 'DEGREES' + TKFRAME_-41220_AXES = ( 1, 2, 3 ) + TKFRAME_-41220_ANGLES = ( -0.084154, -0.038531, 90.038 ) + + \begintext + + +MARSIS Frames +======================================================================== + + This section of the file contains the definitions of the MARSIS + antenna frames. + + +MARSIS Frame Tree +-------------------------------------- + + The diagram below shows the MARSIS frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + +---------------------------------------------------------------+ + | | | | + |<-fixed |<-fixed |<-fixed | + | | | | + V V V | + "MEX_MARSIS_DIPOLE_1" "MEX_MARSIS_DIPOLE_2" "MEX_MARSIS_MONOPOLE" | + --------------------- --------------------- --------------------- | + | + fixed->| + | + V + "MEX_MARSIS_BASE" + ----------------- + + +MARSIS Antenna Frames +-------------------------------------- + + Because all three MARSIS antennas are rigidly mounted on the S/C, the + MARSIS antenna frames are defined as fixed-offset frames with their + orientation given relative to the MEX_SPACECRAFT frame. + + \begindata + + FRAME_MEX_MARSIS_BASE = -41300 + FRAME_-41300_NAME = 'MEX_MARSIS_BASE' + FRAME_-41300_CLASS = 4 + FRAME_-41300_CLASS_ID = -41300 + FRAME_-41300_CENTER = -41 + TKFRAME_-41300_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41300_SPEC = 'ANGLES' + TKFRAME_-41300_UNITS = 'DEGREES' + TKFRAME_-41300_AXES = ( 1, 2, 3 ) + TKFRAME_-41300_ANGLES = ( 000.000, 000.000, 000.000 ) + + FRAME_MEX_MARSIS_DIPOLE_1 = -41310 + FRAME_-41310_NAME = 'MEX_MARSIS_DIPOLE_1' + FRAME_-41310_CLASS = 4 + FRAME_-41310_CLASS_ID = -41310 + FRAME_-41310_CENTER = -41 + TKFRAME_-41310_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41310_SPEC = 'ANGLES' + TKFRAME_-41310_UNITS = 'DEGREES' + TKFRAME_-41310_AXES = ( 1, 2, 3 ) + TKFRAME_-41310_ANGLES = ( 000.000, 000.000, 000.000 ) + + FRAME_MEX_MARSIS_DIPOLE_2 = -41320 + FRAME_-41320_NAME = 'MEX_MARSIS_DIPOLE_2' + FRAME_-41320_CLASS = 4 + FRAME_-41320_CLASS_ID = -41320 + FRAME_-41320_CENTER = -41 + TKFRAME_-41320_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41320_SPEC = 'ANGLES' + TKFRAME_-41320_UNITS = 'DEGREES' + TKFRAME_-41320_AXES = ( 1, 2, 3 ) + TKFRAME_-41320_ANGLES = ( 000.000, 000.000, 000.000 ) + + FRAME_MEX_MARSIS_MONOPOLE = -41330 + FRAME_-41330_NAME = 'MEX_MARSIS_MONOPOLE' + FRAME_-41330_CLASS = 4 + FRAME_-41330_CLASS_ID = -41330 + FRAME_-41330_CENTER = -41 + TKFRAME_-41330_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41330_SPEC = 'ANGLES' + TKFRAME_-41330_UNITS = 'DEGREES' + TKFRAME_-41330_AXES = ( 1, 2, 3 ) + TKFRAME_-41330_ANGLES = ( 000.000, 000.000, 000.000 ) + + \begintext + + +OMEGA Frames +======================================================================== + + This section of the file contains the definitions of the OMEGA + frames. + + +OMEGA Frame Tree +-------------------------------------- + + The diagram below shows the OMEGA frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + ---------------- + | + |<-fixed + | + V + "MEX_OMEGA_SWIR_C" + +-----------------+ + | | + |<-fixed |<-fixed + | | + V V + "MEX_OMEGA_VNIR" "MEX_OMEGA_SWIR_L" + ---------------- ----------------- + + +OMEGA Frames +-------------------------------------- + + All three OMEGA frames -- MEX_OMEGA_SWIR_C, MEX_OMEGA_SWIR_L, and + MEX_OMEGA_VNIR -- are defined by the instrument design and mounting + on the S/C as follows: + + - +Z axis is nominally in the direction of the OMEGA VNIR and SWIR + channel boresights; it nominally points in the direction of the + S/C +Z axis; + + - +Y axis is perpendicular to the nominal OMEGA VNIR and SWIR image + lines; it nominally points along the S/C +Y axis, in the + direction of flight; + + - +X completes the right hand frame and is parallel to the nominal + VNIR and SWIR image lines; it nominally points along the S/C +X + axis; + + - the origins of the frames are located at the OMEGA SWIR and + VNIR channel telescope focal points. + + Because OMEGA is rigidly mounted on the S/C and its telescopes are + rigidly mounted to the instrument enclosure, all three frames are + defined as a fixed-offset frames. + + This diagram illustrates nominal MEX_OMEGA_* frames with respect to the + spacecraft frame. + + +Z S/C side view: + ----------------- + direction + of flight (+Ysc) + ___________ HGA ----------> + \ / + .________________. .__`._____.'__. .________________. + | \ | | / | + | \ | | / | + | | | +Zsc +Ysc | | + | |o= o------->o| | + | | | |._. | +Yomega_* | + | / | ||o-------> | + ._________________/ .______|.|.___. \__________________. + -Y Solar Array | | OMEGA +Y Solar Array + +Xsc V | + | + V +Xomega_* + + +Zsc and +Zomega_* are + out of the page + + + Nominally, all three OMEGA frames are co-aligned with the S/C frame. + + Because of the way the alignment calibrations have been performed, + the orientation of the MEX_OMEGA_SWIR_C frame is defined w.r.t. to + the MEX_SPACECRAFT frame while the orientations of the MEX_OMEGA_SWIR_L + and MEX_OMEGA_VNIR are given relative to it. + + The definitions below are based on the initial in-flight calibrated + values provided by N. Manaud on March 12, 2004 ([15]). + + \begindata + + FRAME_MEX_OMEGA_SWIR_C = -41421 + FRAME_-41421_NAME = 'MEX_OMEGA_SWIR_C' + FRAME_-41421_CLASS = 4 + FRAME_-41421_CLASS_ID = -41421 + FRAME_-41421_CENTER = -41 + TKFRAME_-41421_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41421_SPEC = 'ANGLES' + TKFRAME_-41421_UNITS = 'DEGREES' + TKFRAME_-41421_AXES = ( 1, 2, 3 ) + TKFRAME_-41421_ANGLES = ( -0.030, 0.249, 0.0 ) + + FRAME_MEX_OMEGA_SWIR_L = -41422 + FRAME_-41422_NAME = 'MEX_OMEGA_SWIR_L' + FRAME_-41422_CLASS = 4 + FRAME_-41422_CLASS_ID = -41422 + FRAME_-41422_CENTER = -41 + TKFRAME_-41422_RELATIVE = 'MEX_OMEGA_SWIR_C' + TKFRAME_-41422_SPEC = 'ANGLES' + TKFRAME_-41422_UNITS = 'DEGREES' + TKFRAME_-41422_AXES = ( 1, 2, 3 ) + TKFRAME_-41422_ANGLES = ( 0.0715, -0.0135, 0.0 ) + + FRAME_MEX_OMEGA_VNIR = -41410 + FRAME_-41410_NAME = 'MEX_OMEGA_VNIR' + FRAME_-41410_CLASS = 4 + FRAME_-41410_CLASS_ID = -41410 + FRAME_-41410_CENTER = -41 + TKFRAME_-41410_RELATIVE = 'MEX_OMEGA_SWIR_C' + TKFRAME_-41410_SPEC = 'ANGLES' + TKFRAME_-41410_UNITS = 'DEGREES' + TKFRAME_-41410_AXES = ( 1, 2, 3 ) + TKFRAME_-41410_ANGLES = ( -0.3067, 0.0, 0.0 ) + + \begintext + + +PFS Frames +======================================================================== + + This section of the file contains the definitions of the PFS frames. + + +PFS Frame Tree +-------------------------------------- + + The diagram below shows the PFS frame hierarchy. + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + ---------------- + | + |<-fixed + | + V + "MEX_PFS_BASE" + +------------------------------------------+ + | | + |<-fixed |<-ck + | | + | V + | "MEX_PFS_SCANNER" + | +-----------------+ + | | | + | |<-fixed |<-fixed + | | | + | V V + | "MEX_PFS_SWC" "MEX_PFS_LWC" + | ------------- ------------- + | + V + "MEX_PFS_{NADIR_LWC/SWC,25_LEFT,12_LEFT,25_RIGHT,12_RIGHT,COLD_SPACE}" + ---------------------------------------------------------------------- + + +PFS Base and Scanner Frames +-------------------------------------- + + The PFS instrument is rigidly mounted on the S/C science + deck. Therefore, the PFS base frame, MEX_PFS_BASE, is a fixed offset + frame with its orientation given relative to the MEX_SPACECRAFT frame. + + The MEX_PFS_BASE frame is defined by the instrument design and its + mounting on the S/C as follows: + + - +Y axis is along the nominal PFS 'S' module scanner rotation + axis and nominal PFS 'O' module optical axis, and points from the + PFS 'S' module toward the PFS 'O' module; nominally this axis + is co-aligned with the S/C +Y axis; + + - +Z axis is parallel to the nominal direction of the PFS 'S' + scanner boresight in its 'nadir' (zero) position; it nominally + points in the same direction as the S/C +Z axis; + + - +X completes the right hand frame; it nominally points + in the same direction as the S/C +X axis; + + - the origin of this frame is located at the intersection of the + PFS 'S' scanner rotation axis and the scanner cylinder central + axis. + + Nominally this frame is co-aligned with the S/C frame. Any misalignment + between nominal and actual PFS mounting alignment measured pre-launch + can be incorporated into the definition of this frame. + + Since the PFS 'S' scanner rotates with respect to its base, the + MEX_PFS_SCANNER frame is defined as a CK frame with its orientation + provided in a CK file relative to the MEX_PFS_BASE frame. + + The MEX_PFS_SCANNER frame is defined as follows: + + - +Y axis is along the nominal PFS 'S' module scanner rotation + axis and nominal PFS 'O' module optical axis, and points from the + PFS 'S' module toward PFS 'O' module; nominally this axis + is co-aligned with the +Y axis of the MEX_PFS_BASE frame; + + - +Z axis is parallel to the PFS 'S' scanner boresight; in 'nadir' + scanner position it is co-aligned with the +Z axis of + the MEX_PFS_BASE frame; + + - +X completes the right hand frame; + + - the origin of this frame is located at the intersection of the + PFS 'S' scanner rotation axis and the scanner central axis. + + For an arbitrary scanner angle, the MEX_PFS_SCANNER frame is rotated by + this angle about the +Y axis with respect to the MEX_PFS_BASE frame. + + This diagram illustrates the MEX_PFS_BASE and MEX_PFS_SCANNER + frames for scanner angles of +25 degrees ('25 left') and -25 degrees + ('25 right'). Both diagrams are +Y S/C side view: + + + Scanner in '25 left' position Scanner in '25 right' position + ----------------------------- ------------------------------ + + +Zbase +Zbase + +Zscan ^ ^ +Zscan + ^ | +Xscan | ^ + \ | Science ^. | / Science + \ | PFS Deck `. | / Deck + \|___________. `.|/__________. + <-------o | | <-------o | | + +Xbase .' | =o======== +Xbase | | =o======== + .'|___. SA+Y PFS___. SA+Y + <' | +Zsc | | +Zsc | + +Xscan | ^ | | ^ | + | | | | | | + | | | | | | + .______|______. .______|______. + | | | | | | + <-------o____. <-------o____. + +Xsc / +Ysc +Xsc / +Ysc + /_____\ /_____\ + Main Engine Main Engine + + +Ysc, +Ybase, and +Yscan are out of the page + + + These sets of keywords define PFS base and scanner frames: + + \begindata + + FRAME_MEX_PFS_BASE = -41500 + FRAME_-41500_NAME = 'MEX_PFS_BASE' + FRAME_-41500_CLASS = 4 + FRAME_-41500_CLASS_ID = -41500 + FRAME_-41500_CENTER = -41 + TKFRAME_-41500_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41500_SPEC = 'ANGLES' + TKFRAME_-41500_UNITS = 'DEGREES' + TKFRAME_-41500_AXES = ( 1, 2, 3 ) + TKFRAME_-41500_ANGLES = ( 0.0, 0.0, 0.0 ) + + FRAME_MEX_PFS_SCANNER = -41530 + FRAME_-41530_NAME = 'MEX_PFS_SCANNER' + FRAME_-41530_CLASS = 3 + FRAME_-41530_CLASS_ID = -41530 + FRAME_-41530_CENTER = -41 + CK_-41530_SCLK = -41 + CK_-41530_SPK = -41 + + \begintext + + +PFS Detector Frames +-------------------------------------- + + Since both PFS detectors receive radiation through the scanner + and both essentially have a single pixel, their frames, MEX_PFS_SWC + and MEX_PFS_LWC, are defined to be nominally co-aligned with the PFS + scanner frame, MEX_PFS_SCANNER. These frames are introduced to allow + incorporating into the PFS frame chain any misalignment between the + scanner boresight direction and the individual detector view directions + measured prior to delivering the instrument for installation + on the S/C. + + The misalignment of the PFS detectors was done during comissioning + (see [19]): SW is pointing in the S/C +Y axis by 0.55 degrees. The LW + channel is pointing backward by 1.3, 0.945 degrees. + + \begindata + + FRAME_MEX_PFS_SWC = -41510 + FRAME_-41510_NAME = 'MEX_PFS_SWC' + FRAME_-41510_CLASS = 4 + FRAME_-41510_CLASS_ID = -41510 + FRAME_-41510_CENTER = -41 + TKFRAME_-41510_RELATIVE = 'MEX_PFS_SCANNER' + TKFRAME_-41510_SPEC = 'ANGLES' + TKFRAME_-41510_UNITS = 'DEGREES' + TKFRAME_-41510_AXES = ( 1, 2, 3 ) + TKFRAME_-41510_ANGLES = ( -0.55, 0.0, 0.0 ) + + FRAME_MEX_PFS_LWC = -41520 + FRAME_-41520_NAME = 'MEX_PFS_LWC' + FRAME_-41520_CLASS = 4 + FRAME_-41520_CLASS_ID = -41520 + FRAME_-41520_CENTER = -41 + TKFRAME_-41520_RELATIVE = 'MEX_PFS_SCANNER' + TKFRAME_-41520_SPEC = 'ANGLES' + TKFRAME_-41520_UNITS = 'DEGREES' + TKFRAME_-41520_AXES = ( 1, 2, 3 ) + TKFRAME_-41520_ANGLES = ( 1.3, -0.945, 0.0 ) + + \begintext + + +PFS Scanner Fixed Positions Frames +-------------------------------------- + + Because the PFS 'S' scanner can be rotated to only a limited number of + positions for external observations -- 'nadir', '25 deg left', '12.5 + deg left', '25 deg right', '12.5 deg right', and 'cold_space' -- a + fixed frame co-aligned with the scanner frame in each of these + positions is defined to allow computing scanner orientation without + needing to use CK. + + Each of these 'fixed-scanner-position' convenience frames is defined + as a fixed offset frame with respect to the MEX_PFS_BASE frame as follows: + + - +Y axis is along the nominal PFS 'S' module scanner rotation + axis and nominal PFS 'O' module optical axis, and points from the + PFS 'S' module toward PFS 'O' module; nominally this axis + is co-aligned with the +Y axis of the MEX_PFS_BASE frame; + + - +Z axis is parallel to the PFS 'S' scanner boresight at a particular + angle; + + - +X completes the right hand frame; + + - the origin of this frame is located at the intersection of the + PFS 'S' scanner rotation axis and scanner central axis. + + This diagram illustrates fixed PFS scanner pointing directions co-aligned + with the +Z axis of the corresponding 'fixed-scanner-position' (fsp) + frame: + + +Y S/C side view + ---------------- + +Zbase + ^ + | + + nadir + | + 12.5 left | 12.5 right + . | . + 25 left \ . | . / 25 right + \ .|. / + \.|./ + \|/__________. Science Deck + <--- cold -------o | | + +Xbase space | | =o======== + |___. SA+Y + PFS +Zsc | + | ^ | + | | | + | | | + .______|______. + | | | + <-------o____. + +Xsc / +Ysc + /_____\ + Main Engine + + +Ysc, +Ybase, and +Yfsp are out of the page + + + The 'fixed-scanner-position' frames are nominally rotated about the + +Y axis of the MEX_PFS_BASE frames by the following angles: + + Frame name Rotation Angle, deg + ---------------------- ------------------- + MEX_PFS_25_RIGHT -25.0 + MEX_PFS_12_RIGHT -12.5 + MEX_PFS_NADIR_LWC ~0.0 (*) + MEX_PFS_NADIR_SWC ~0.0 (*) + MEX_PFS_12_LEFT 12.5 + MEX_PFS_25_LEFT 25.0 + MEX_PFS_COLD_SPACE 85.0 + + + (*) Note that the MEX_PFS_NADIR_ include the comissioning missalignent + whereas the rest of the scanner fixed positions do not include the + missalignment. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_PFS_25_RIGHT = -41535 + FRAME_-41535_NAME = 'MEX_PFS_25_RIGHT' + FRAME_-41535_CLASS = 4 + FRAME_-41535_CLASS_ID = -41535 + FRAME_-41535_CENTER = -41 + TKFRAME_-41535_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41535_SPEC = 'ANGLES' + TKFRAME_-41535_UNITS = 'DEGREES' + TKFRAME_-41535_AXES = ( 1, 2, 3 ) + TKFRAME_-41535_ANGLES = ( 0.0, 25.0, 0.0 ) + + FRAME_MEX_PFS_12_RIGHT = -41534 + FRAME_-41534_NAME = 'MEX_PFS_12_RIGHT' + FRAME_-41534_CLASS = 4 + FRAME_-41534_CLASS_ID = -41534 + FRAME_-41534_CENTER = -41 + TKFRAME_-41534_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41534_SPEC = 'ANGLES' + TKFRAME_-41534_UNITS = 'DEGREES' + TKFRAME_-41534_AXES = ( 1, 2, 3 ) + TKFRAME_-41534_ANGLES = ( 0.0, 12.5, 0.0 ) + + FRAME_MEX_PFS_NADIR_LWC = -41537 + FRAME_-41537_NAME = 'MEX_PFS_NADIR_LWC' + FRAME_-41537_CLASS = 4 + FRAME_-41537_CLASS_ID = -41537 + FRAME_-41537_CENTER = -41 + TKFRAME_-41537_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41537_SPEC = 'ANGLES' + TKFRAME_-41537_UNITS = 'DEGREES' + TKFRAME_-41537_AXES = ( 1, 2, 3 ) + TKFRAME_-41537_ANGLES = ( 1.3, -0.945, 0.0 ) + + FRAME_MEX_PFS_NADIR_SWC = -41533 + FRAME_-41533_NAME = 'MEX_PFS_NADIR_SWC' + FRAME_-41533_CLASS = 4 + FRAME_-41533_CLASS_ID = -41533 + FRAME_-41533_CENTER = -41 + TKFRAME_-41533_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41533_SPEC = 'ANGLES' + TKFRAME_-41533_UNITS = 'DEGREES' + TKFRAME_-41533_AXES = ( 1, 2, 3 ) + TKFRAME_-41533_ANGLES = ( -0.55, 0.0, 0.0 ) + + FRAME_MEX_PFS_12_LEFT = -41532 + FRAME_-41532_NAME = 'MEX_PFS_12_LEFT' + FRAME_-41532_CLASS = 4 + FRAME_-41532_CLASS_ID = -41532 + FRAME_-41532_CENTER = -41 + TKFRAME_-41532_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41532_SPEC = 'ANGLES' + TKFRAME_-41532_UNITS = 'DEGREES' + TKFRAME_-41532_AXES = ( 1, 2, 3 ) + TKFRAME_-41532_ANGLES = ( 0.0, -12.5, 0.0 ) + + FRAME_MEX_PFS_25_LEFT = -41531 + FRAME_-41531_NAME = 'MEX_PFS_25_LEFT' + FRAME_-41531_CLASS = 4 + FRAME_-41531_CLASS_ID = -41531 + FRAME_-41531_CENTER = -41 + TKFRAME_-41531_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41531_SPEC = 'ANGLES' + TKFRAME_-41531_UNITS = 'DEGREES' + TKFRAME_-41531_AXES = ( 1, 2, 3 ) + TKFRAME_-41531_ANGLES = ( 0.0, -25.0, 0.0 ) + + FRAME_MEX_PFS_COLD_SPACE = -41536 + FRAME_-41536_NAME = 'MEX_PFS_COLD_SPACE' + FRAME_-41536_CLASS = 4 + FRAME_-41536_CLASS_ID = -41536 + FRAME_-41536_CENTER = -41 + TKFRAME_-41536_RELATIVE = 'MEX_PFS_BASE' + TKFRAME_-41536_SPEC = 'ANGLES' + TKFRAME_-41536_UNITS = 'DEGREES' + TKFRAME_-41536_AXES = ( 1, 2, 3 ) + TKFRAME_-41536_ANGLES = ( 0.0, -85.0, 0.0 ) + + \begintext + + +SPICAM Frames +======================================================================== + + This section of the file contains the definitions of the SPICAM + frames. + + +SPICAM Frame Tree +-------------------------------------- + + The diagram below shows the SPICAM frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + ---------------- + | + |<-fixed + | + V + "MEX_SPICAM_BASE" + +-----------------------------------------------+ + | | | + |<-fixed |<--fixed |<--fixed + | | | + V V V + "MEX_SPICAM_STELLAR "MEX_SPICAM_NADIR" "MEX_SPICAM_SUN" + -------------------- ------------------ ---------------- + + +SPICAM Base Frame +-------------------------------------- + + SPICAM has two openings for Nadir viewing, one for UV channel, the other + for IR channel (UV1, IR1 nominally near the +Z S/C axis). In addition, + the UV and IR channel have an opening for Solar viewing (UV2, IR2, in the + XY plane nominally around 30 deg from the +X axis of the S/C ref frame). + + The SPICAM base frame is defined by the instrument design and its + mounting on the S/C as follows: + + - +Z axis is in the nominal direction of the SPICAM UV/nadir and + IR detector boresights; it nominally points in the direction of the + S/C +Z axis; + + - +X axis is parallel to the nominal direction of SPICAM UV CCD + columns; it is nominally along the S/C +X axis; + + - +Y completes the right hand frame; it is nominally along + the S/C +Y axis and points in the direction of flight; (*) + + - the origin of the frame is located at the SPICAM SUV detector + focal point. + + (*) SPICAM UV spectral dimension is along CCD lines, which are parallel + to Y,Z plane. SPICAM IR has a single pixel. + + Because the SPICAM instrument is rigidly mounted to the S/C, the SPICAM + base frame is defined as a fixed-offset frame with its orientation + given relative to the MEX_SPACECRAFT frame. Any misalignment between the + nominal and actual SPICAM mounting alignment measured pre-launch + can be incorporated into the definition of this frame. + + This diagram illustrates the nominal MEX_SPICAM_BASE frame with respect + to the spacecraft frame. + + +Z S/C side view: + ----------------- + direction + of flight (+Ysc) + ___________ HGA ----------> + \ / + .________________. .__`._____.'__. .________________. + | \ | | / | + | \ | +Ybase | / | + | | .____. | | | + | |o=|o---> o------->o| | + | SPICAM .|___. |+Zsc |+Ysc | + | / || | | \ | + ._________________/ .|_____|______. \_________________. + -Y Solar Array | | +Y Solar Array + V V + +Xbase +Xsc + + +Zsc and +Zbase are + out of the page + + + Nominally, the SPICAM base frame is co-aligned the S/C frame. + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_SPICAM_BASE = -41600 + FRAME_-41600_NAME = 'MEX_SPICAM_BASE' + FRAME_-41600_CLASS = 4 + FRAME_-41600_CLASS_ID = -41600 + FRAME_-41600_CENTER = -41 + TKFRAME_-41600_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41600_SPEC = 'ANGLES' + TKFRAME_-41600_UNITS = 'DEGREES' + TKFRAME_-41600_AXES = ( 1, 2, 3 ) + TKFRAME_-41600_ANGLES = ( 0.0, 0.0, 0.0 ) + + \begintext + + +SPICAM Detector Frames +-------------------------------------- + + The SPICAM UV/IR detectors nadir and stellar occultation port frames -- + MEX_SPICAM_NADIR and MEX_SPICAM_STELLAR -- are defined as follows: + + - +Y axis points along IR/UV nadir and stellar occultation port + boresights; + + - +Z axis points nominally along the S/C -X axis; + + - +X axis completes the right hand frame; + + - the origin of the frame is located at the focal point. + + The SPICAM IR and UV detector solar port frame -- MEX_SPICAM_SOLAR -- + is defined as follows: + + - +X axis points along IR/UV solar port boresight; + + - +Z axis points nominally along the S/C +Z axis; + + - +Y axis completes the right hand frame; + + - the origin of the frame is located at the focal point. + + All three SPICAM detector port frames are defined with respect to the + SPICAM base frame -- MEX_SPICAM_BASE -- and incorporate into the SPICAM + frame chain misalignments between the instrument base and ports. The + alignment of the IR and VIR sensors is considered to be the same. + + This diagram illustrates all three SPICAM detector port frames: + + +Z S/C side view: + ----------------- + direction + +Zstel of flight (+Ysc) + +Xsol +Znad _________ HGA ----------> + ^ ^ / + .________________. \ .|_ ._____.'__. .________________. + | \ \ || | / | + | \ \|| | / | + | +Xstel | .o|___. +Ybase | | + | +Xnad <-------o-----o-> ----> | | + | <-' | .|___. | |+Ysc | + | +Ysol / || | | \ | + ._________________/ .|_____|______. \_________________. + -Y Solar Array | | +Y Solar Array + V V + +Xbase +Xsc + + +Ynad is the nadir port boresight (out of the the page) + + +Ystel is the stellar port boresight (out of the the page) + + +Xsol is the solar port boresight (in the page plane) + + +Zsc, +Zbase, and +Zsol are out of the page + + + The in-flight calibrated misalignments provided in [18], giving the + the rotations from the MEX_SPICAM_BASE frame to the MEX_SPICAM_STELLAR, + MEX_SPICAM_NADIR and MEX_SPICAM_SOLAR frames determined from the in-flight + calibration data, are incorporated in the frame definitions below. + + \begindata + + FRAME_MEX_SPICAM_STELLAR = -41601 + FRAME_-41601_NAME = 'MEX_SPICAM_STELLAR' + FRAME_-41601_CLASS = 4 + FRAME_-41601_CLASS_ID = -41601 + FRAME_-41601_CENTER = -41 + TKFRAME_-41601_RELATIVE = 'MEX_SPICAM_BASE' + TKFRAME_-41601_SPEC = 'ANGLES' + TKFRAME_-41601_UNITS = 'DEGREES' + TKFRAME_-41601_AXES = ( 1, 2, 3 ) + TKFRAME_-41601_ANGLES = ( 0.0, 89.83 , 90.0 ) + + FRAME_MEX_SPICAM_SOLAR = -41602 + FRAME_-41602_NAME = 'MEX_SPICAM_SOLAR' + FRAME_-41602_CLASS = 4 + FRAME_-41602_CLASS_ID = -41602 + FRAME_-41602_CENTER = -41 + TKFRAME_-41602_RELATIVE = 'MEX_SPICAM_BASE' + TKFRAME_-41602_SPEC = 'ANGLES' + TKFRAME_-41602_UNITS = 'DEGREES' + TKFRAME_-41602_AXES = ( 1, 2, 3 ) + TKFRAME_-41602_ANGLES = ( 0.0, -0.05, -210.30 ) + + FRAME_MEX_SPICAM_NADIR = -41603 + FRAME_-41603_NAME = 'MEX_SPICAM_NADIR' + FRAME_-41603_CLASS = 4 + FRAME_-41603_CLASS_ID = -41603 + FRAME_-41603_CENTER = -41 + TKFRAME_-41603_RELATIVE = 'MEX_SPICAM_BASE' + TKFRAME_-41603_SPEC = 'ANGLES' + TKFRAME_-41603_UNITS = 'DEGREES' + TKFRAME_-41603_AXES = ( 1, 2, 3 ) + TKFRAME_-41603_ANGLES = ( 0.0, 89.83 , 90.0 ) + + \begintext + + +VMC Frames +======================================================================== + + This section of the file contains the definitions of the VMC + frames. + + +VMC Frame Tree +-------------------------------------- + + The diagram below shows the VMC frame hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-pck | |<-pck + | | | + V | V + "IAU_MARS" | "IAU_EARTH" + MARS BODY-FIXED |<-ck EARTH BODY-FIXED + --------------- | ---------------- + V + "MEX_SPACECRAFT" + ---------------- + | + |<-fixed + | + V + "MEX_VMC" + --------- + + +Visual Monitoring Camera (VMC) Frame +---------------------------------------- + + The MEX Visual Monitoring Camera is rigidly mounted on the instrument + deck of the S/C bus, therefore the VMC camera frame, MEX_VMC, is defined + as fixed offset frame with its orientation given relative to the + MEX_SPACECRAFT frame, and is nominally rotated by -19 degrees about S/C + +X, i.e. toward S/C +Y axis. + + The MEX_VMC frame is defined by the camera design and its mounting + on the S/C as follows: + + - +Z axis is in the nominal direction of the VMC camera boresight; + it points towards the S/C +Z axis, tilted 19 degrees towards the + S/C +Y axis. + + - +X axis is perpendicular to the CCD detector lines, and its nominally + along the S/C +X axis. + + - +Y completes the right hand frame; + + - the origin of the frame is located at the VMC camera focal point. + + This diagram illustrates the VMC frame: + + +X S/C side view: + ----------------- + + +Xvmc is + out of + the page + ^ +Zvmc + .' + .' `. + '\_____/ + +Xvmc_o.__________. + | `. | + =====================o | `.> | o===================== + -Y SA | +Yvmc| +Y SA + | +Zsc | + | ^ | + | | | + | | | + .______|______. + | | | + .____o-------> +Ysc + +Xsc \ + /_____\ Main Engine + + + + Since the SPICE frames subsystem calls for specifying the reverse + transformation--going from the instrument or structure frame to the + base frame--as compared to the description given above, the order of + rotations assigned to the TKFRAME_*_AXES keyword is also reversed + compared to the above text, and the signs associated with the + rotation angles assigned to the TKFRAME_*_ANGLES keyword are the + opposite from what is written in the above text. + + \begindata + + FRAME_MEX_VMC = -41700 + FRAME_-41700_NAME = 'MEX_VMC' + FRAME_-41700_CLASS = 4 + FRAME_-41700_CLASS_ID = -41700 + FRAME_-41700_CENTER = -41 + TKFRAME_-41700_RELATIVE = 'MEX_SPACECRAFT' + TKFRAME_-41700_SPEC = 'ANGLES' + TKFRAME_-41700_UNITS = 'DEGREES' + TKFRAME_-41700_AXES = ( 3, 2, 1 ) + TKFRAME_-41700_ANGLES = ( 0.0, 0.0, 19.0 ) + + \begintext + + +BEAGLE2 Frames +======================================================================== + + This section of the file contains the definitions of the Beagle-2 local + level, lander and instrument frames. + + +Beagle-2 Frame Tree +-------------------------------------- + + The diagram below shows the Beagle-2 Lander and its instruments frame + hierarchy. + + + "J2000" INERTIAL + +-----------------------------------------------------+ + | | | + |<-ck | |<-pck + | | | + V | V + "MEX_SPACECRAFT" | "IAU_EARTH" + --------------- |<-pck EARTH BODY-FIXED + | ---------------- + V + "IAU_MARS" + MARS BODY-FIXED + --------------- + | + |<-fixed + | + V + "BEAGLE2_LOCAL_LEVEL" + -------------------- + | + |<-fixed + | + V + "BEAGLE2_LANDER" + ---------------- + | + | + | + V + (Beagle-2 instrument + frames) + + +Beagle-2 Local Level frame +-------------------------------------- + + This BEAGLE2_LOCAL_LEVEL frame at the landing site is defined as + follows: + + - +Z axis is the normal outward at the landing site; + - +X axis points at local north; + - +Y completes the right hand frame; + - the origin of this frame is located on the surface under + the geometric center of the lander capsule; + + The orientation of the frame is fixed relative to the Mars fixed + rotating frame 'IAU_MARS' and is determined by the landing site + coordinates. + + The target Beagle-2 landing site selected on December 20, 2000 is + located at: + + 270.0 degrees west planetographic longitude, and + 10.6 degrees north planetographic latitude + + which is in Isidis Basin of Utopia Planitia. + + More accurate coordinates used by the project during summer/fall + 2003 are: + + 269.250 degrees west planetographic longitude, and + 11.734 degrees north planetographic latitude + + The transformation from 'BEAGLE2_LOCAL_LEVEL' frame to 'IAU_MARS' + frame is a 3-2-3 rotation with angles defined as the negative of the + site longitude, the negative of the site colatitude, 180 degrees. + + \begindata + + FRAME_BEAGLE2_LOCAL_LEVEL = -44900 + FRAME_-44900_NAME = 'BEAGLE2_LOCAL_LEVEL' + FRAME_-44900_CLASS = 4 + FRAME_-44900_CLASS_ID = -44900 + FRAME_-44900_CENTER = -44 + TKFRAME_-44900_RELATIVE = 'IAU_MARS' + TKFRAME_-44900_SPEC = 'ANGLES' + TKFRAME_-44900_UNITS = 'DEGREES' + TKFRAME_-44900_AXES = ( 3, 2, 3 ) + TKFRAME_-44900_ANGLES = ( 269.250, -78.266, 180.0 ) + + \begintext + + +Beagle-2 Lander Frame +-------------------------------------- + + The BEAGLE2 lander frame, BEAGLE2_LANDER, is defined by the lander + design as follows: + + - +Z axis is parallel to the lander capsule symmetry axis and + points up; + - +X axis point from +Z toward robotic arm; + - +Y axis completes the right hand frame; + - the origin of the frame is located at the intersection of the lander + main capsule outer rim plane and the lander main capsule symmetry + axis. + + Once landed the lander orientation is constant with respect to the + surface and, therefore, this frame is defined as a fixed-offset frame + with its orientation provided with respect to the BEAGLE2_LOCAL_LEVEL + frame. Should the lander orientation change due to sliding and/or science + instrument operations, BEAGLE2_LANDER frame should be re-defined as + a CK based frame. + + For nominal applications, the BEAGLE2_LANDER frame is assumed to be + co-aligned with the BEAGLE2_LOCAL_LEVEL frame. + + \begindata + + FRAME_BEAGLE2_LANDER = -44000 + FRAME_-44000_NAME = 'BEAGLE2_LANDER' + FRAME_-44000_CLASS = 4 + FRAME_-44000_CLASS_ID = -44000 + FRAME_-44000_CENTER = -44 + TKFRAME_-44000_RELATIVE = 'BEAGLE2_LOCAL_LEVEL' + TKFRAME_-44000_SPEC = 'ANGLES' + TKFRAME_-44000_UNITS = 'DEGREES' + TKFRAME_-44000_AXES = ( 1, 2, 3 ) + TKFRAME_-44000_ANGLES = ( 0.0, 0.0, 0.0 ) + + \begintext + + +Beagle-2 Instrument Frames +-------------------------------------- + + Beagle-2 instrument frames are TDB. + + +Mars Express Mission NAIF ID Codes -- Definition Section +======================================================================== + + This section contains name to NAIF ID mappings for the MEX mission. + + +Mars Express Spacecraft (MEX) spacecraft and instruments IDs: +------------------------------------------------------------- + + This table summarizes MEX Spacecraft IDs: + + Name ID Synonyms + --------------------- ------- --------------------------- + MEX -41 MARS EXPRESS, MARS-EXPRESS, + MARS_EXPRESS + Notes: + + -- 'MEX', 'MARS EXPRESS', 'MARS-EXPRESS', and 'MARS_EXPRESS' are + synonyms and all map to the official MEX S/C ID (-41); + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX' ) + NAIF_BODY_CODE += ( -41 ) + + NAIF_BODY_NAME += ( 'MARS EXPRESS' ) + NAIF_BODY_CODE += ( -41 ) + + NAIF_BODY_NAME += ( 'MARS-EXPRESS' ) + NAIF_BODY_CODE += ( -41 ) + + NAIF_BODY_NAME += ( 'MARS_EXPRESS' ) + NAIF_BODY_CODE += ( -41 ) + + \begintext + + +MEX Spacecraft Structures IDs +-------------------------------------- + + This table summarizes MEX Spacecraft Structure IDs: + + Name ID Synonyms + --------------------- ------- ------------------------- + MEX_SPACECRAFT -41000 MEX_SC + MEX_SA+Y -41011 + MEX_SA-Y -41012 + MEX_SA+Y_GIMBAL -41013 + MEX_SA-Y_GIMBAL -41014 + + MEX_HGA -41020 + MEX_MELACOM_1 -41031 + MEX_MELACOM_2 -41032 + MEX_LGA -41040 + + MEX_STR_A -41051 + MEX_STR_B -41052 + + Notes: + + -- 'MEX_SC' and 'MEX_SPACECRAFT' are synonyms and all map to the MEX + S/C bus structure ID (-41000); + + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_SC' ) + NAIF_BODY_CODE += ( -41000 ) + + NAIF_BODY_NAME += ( 'MEX_SPACECRAFT' ) + NAIF_BODY_CODE += ( -41000 ) + + NAIF_BODY_NAME += ( 'MEX_SA+Y' ) + NAIF_BODY_CODE += ( -41011 ) + + NAIF_BODY_NAME += ( 'MEX_SA-Y' ) + NAIF_BODY_CODE += ( -41012 ) + + NAIF_BODY_NAME += ( 'MEX_SA+Y_GIMBAL' ) + NAIF_BODY_CODE += ( -41013 ) + + NAIF_BODY_NAME += ( 'MEX_SA-Y_GIMBAL' ) + NAIF_BODY_CODE += ( -41014 ) + + NAIF_BODY_NAME += ( 'MEX_HGA' ) + NAIF_BODY_CODE += ( -41020 ) + + NAIF_BODY_NAME += ( 'MEX_MELACOM_1' ) + NAIF_BODY_CODE += ( -41031 ) + + NAIF_BODY_NAME += ( 'MEX_MELACOM_2' ) + NAIF_BODY_CODE += ( -41032 ) + + NAIF_BODY_NAME += ( 'MEX_LGA' ) + NAIF_BODY_CODE += ( -41040 ) + + NAIF_BODY_NAME += ( 'MEX_STR_A' ) + NAIF_BODY_CODE += ( -41051 ) + + NAIF_BODY_NAME += ( 'MEX_STR_B' ) + NAIF_BODY_CODE += ( -41052 ) + + \begintext + + +ASPERA IDs +-------------------------------------- + + This table summarizes ASPERA IDs: + + + Name ID + --------------------- ------- + MEX_ASPERA -41100 + MEX_ASPERA_URF -41110 + MEX_ASPERA_SAF -41111 + MEX_ASPERA_ELS -41120 + MEX_ASPERA_NPI -41130 + MEX_ASPERA_NPD1 -41141 + MEX_ASPERA_NPD2 -41142 + MEX_ASPERA_IMA_URF -41150 + MEX_ASPERA_IMA -41151 + MEX_ASPERA_IMAS -41152 + MEX_ASPERA_SS1 -41161 + MEX_ASPERA_SS2 -41162 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_ASPERA' ) + NAIF_BODY_CODE += ( -41100 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_URF' ) + NAIF_BODY_CODE += ( -41110 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_SAF' ) + NAIF_BODY_CODE += ( -41111 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_ELS' ) + NAIF_BODY_CODE += ( -41120 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_NPI' ) + NAIF_BODY_CODE += ( -41130 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_NPD1' ) + NAIF_BODY_CODE += ( -41141 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_NPD2' ) + NAIF_BODY_CODE += ( -41142 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_IMA_URF' ) + NAIF_BODY_CODE += ( -41150 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_IMA' ) + NAIF_BODY_CODE += ( -41151 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_IMAS' ) + NAIF_BODY_CODE += ( -41152 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_SS1' ) + NAIF_BODY_CODE += ( -41161 ) + + NAIF_BODY_NAME += ( 'MEX_ASPERA_SS2' ) + NAIF_BODY_CODE += ( -41162 ) + + \begintext + +HRSC IDs +-------------------------------------- + + This table summarizes HRSC IDs: + + Name ID + --------------------- ------- + MEX_HRSC -41200 + MEX_HRSC_HEAD -41210 + MEX_HRSC_S2 -41211 + MEX_HRSC_RED -41212 + MEX_HRSC_P2 -41213 + MEX_HRSC_BLUE -41214 + MEX_HRSC_NADIR -41215 + MEX_HRSC_GREEN -41216 + MEX_HRSC_P1 -41217 + MEX_HRSC_IR -41218 + MEX_HRSC_S1 -41219 + MEX_HRSC_SRC -41220 + + Notes: + + -- each CCD line detector has its own ID to allow individual + CCD detector FOV definitions in the Instrument Kernel (IK). + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_HRSC' ) + NAIF_BODY_CODE += ( -41200 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_HEAD' ) + NAIF_BODY_CODE += ( -41210 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_S2' ) + NAIF_BODY_CODE += ( -41211 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_RED' ) + NAIF_BODY_CODE += ( -41212 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_P2' ) + NAIF_BODY_CODE += ( -41213 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_BLUE' ) + NAIF_BODY_CODE += ( -41214 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_NADIR' ) + NAIF_BODY_CODE += ( -41215 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_GREEN' ) + NAIF_BODY_CODE += ( -41216 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_P1' ) + NAIF_BODY_CODE += ( -41217 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_IR' ) + NAIF_BODY_CODE += ( -41218 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_S1' ) + NAIF_BODY_CODE += ( -41219 ) + + NAIF_BODY_NAME += ( 'MEX_HRSC_SRC' ) + NAIF_BODY_CODE += ( -41220 ) + + \begintext + + +MARSIS IDs: +-------------------------------------- + + This table summarizes MARSIS IDs: + + Name ID + --------------------- ------- + MEX_MARSIS -41300 + MEX_MARSIS_250KM -41301 + MEX_MARSIS_1400KM -41302 + MEX_MARSIS_DIPOLE_1 -41310 + MEX_MARSIS_DIPOLE_2 -41320 + MEX_MARSIS_MONOPOLE -41330 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_MARSIS' ) + NAIF_BODY_CODE += ( -41300 ) + + NAIF_BODY_NAME += ( 'MEX_MARSIS_250KM' ) + NAIF_BODY_CODE += ( -41301 ) + + NAIF_BODY_NAME += ( 'MEX_MARSIS_1400KM' ) + NAIF_BODY_CODE += ( -41302 ) + + NAIF_BODY_NAME += ( 'MEX_MARSIS_DIPOLE_1' ) + NAIF_BODY_CODE += ( -41310 ) + + NAIF_BODY_NAME += ( 'MEX_MARSIS_DIPOLE_2' ) + NAIF_BODY_CODE += ( -41320 ) + + NAIF_BODY_NAME += ( 'MEX_MARSIS_MONOPOLE' ) + NAIF_BODY_CODE += ( -41330 ) + + \begintext + + +OMEGA IDs +-------------------------------------- + + This table summarizes OMEGA IDs: + + Name ID + --------------------- ------- + MEX_OMEGA -41400 + MEX_OMEGA_VNIR -41410 + MEX_OMEGA_SWIR -41420 + MEX_OMEGA_SWIR_C -41421 + MEX_OMEGA_SWIR_L -41422 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_OMEGA' ) + NAIF_BODY_CODE += ( -41400 ) + + NAIF_BODY_NAME += ( 'MEX_OMEGA_VNIR' ) + NAIF_BODY_CODE += ( -41410 ) + + NAIF_BODY_NAME += ( 'MEX_OMEGA_SWIR' ) + NAIF_BODY_CODE += ( -41420 ) + + NAIF_BODY_NAME += ( 'MEX_OMEGA_SWIR_C' ) + NAIF_BODY_CODE += ( -41421 ) + + NAIF_BODY_NAME += ( 'MEX_OMEGA_SWIR_L' ) + NAIF_BODY_CODE += ( -41422 ) + + \begintext + + +PFS IDs +-------------------------------------- + + This table summarizes PFS IDs: + + + Name ID + --------------------- ------- + MEX_PFS -41500 + MEX_PFS_SWC -41510 + MEX_PFS_SWC_25_LEFT -41511 + MEX_PFS_SWC_12_LEFT -41512 + MEX_PFS_SWC_NADIR -41513 + MEX_PFS_SWC_12_RIGHT -41514 + MEX_PFS_SWC_25_RIGHT -41515 + MEX_PFS_SWC_COLD_SPACE -41516 + MEX_PFS_LWC -41520 + MEX_PFS_LWC_25_LEFT -41521 + MEX_PFS_LWC_12_LEFT -41522 + MEX_PFS_LWC_NADIR -41523 + MEX_PFS_LWC_12_RIGHT -41524 + MEX_PFS_LWC_COLD_SPACE -41525 + MEX_PFS_SCANNER -41530 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_PFS' ) + NAIF_BODY_CODE += ( -41500 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC' ) + NAIF_BODY_CODE += ( -41510 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_25_LEFT' ) + NAIF_BODY_CODE += ( -41511 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_12_LEFT' ) + NAIF_BODY_CODE += ( -41512 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_NADIR' ) + NAIF_BODY_CODE += ( -41513 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_12_RIGHT' ) + NAIF_BODY_CODE += ( -41514 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_25_RIGHT' ) + NAIF_BODY_CODE += ( -41515 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SWC_COLD_SPACE' ) + NAIF_BODY_CODE += ( -41516 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC' ) + NAIF_BODY_CODE += ( -41520 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_25_LEFT' ) + NAIF_BODY_CODE += ( -41521 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_12_LEFT' ) + NAIF_BODY_CODE += ( -41522 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_NADIR' ) + NAIF_BODY_CODE += ( -41523 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_12_RIGHT' ) + NAIF_BODY_CODE += ( -41524 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_25_RIGHT' ) + NAIF_BODY_CODE += ( -41525 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_LWC_COLD_SPACE' ) + NAIF_BODY_CODE += ( -41526 ) + + NAIF_BODY_NAME += ( 'MEX_PFS_SCANNER' ) + NAIF_BODY_CODE += ( -41530 ) + + \begintext + + +SPICAM IDs +-------------------------------------- + + This table summarizes SPICAM IDs: + + Name ID + -------------------------- ------- + MEX_SPICAM -41600 + MEX_SPICAM_UV -41610 + MEX_SPICAM_UV1_STAR -41611 + MEX_SPICAM_UV2_SUN -41612 + MEX_SPICAM_UV1_NADIR_SLIT -41613 + MEX_SPICAM_UV1_NADIR_BIN_2 -41614 + MEX_SPICAM_UV1_NADIR_BIN_4 -41615 + MEX_SPICAM_UV1_NADIR_BIN_8 -41616 + MEX_SPICAM_UV1_NADIR_BIN_16 -41617 + MEX_SPICAM_UV1_NADIR_BIN_32 -41618 + MEX_SPICAM_UV1_CCD -41619 + MEX_SPICAM_IR -41620 + MEX_SPICAM_IR1_STELLAR -41621 + MEX_SPICAM_IR2_SOLAR -41622 + MEX_SPICAM_IR1_NADIR -41623 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_SPICAM' ) + NAIF_BODY_CODE += ( -41600 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV' ) + NAIF_BODY_CODE += ( -41610 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_STAR' ) + NAIF_BODY_CODE += ( -41611 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV2_SUN' ) + NAIF_BODY_CODE += ( -41612 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_SLIT' ) + NAIF_BODY_CODE += ( -41613 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_BIN_2' ) + NAIF_BODY_CODE += ( -41614 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_BIN_4' ) + NAIF_BODY_CODE += ( -41615 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_BIN_8' ) + NAIF_BODY_CODE += ( -41616 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_BIN_16' ) + NAIF_BODY_CODE += ( -41617 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_NADIR_BIN_32' ) + NAIF_BODY_CODE += ( -41618 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_UV1_CCD' ) + NAIF_BODY_CODE += ( -41619 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_IR' ) + NAIF_BODY_CODE += ( -41620 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_IR1_STAR' ) + NAIF_BODY_CODE += ( -41621 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_IR2_SUN' ) + NAIF_BODY_CODE += ( -41622 ) + + NAIF_BODY_NAME += ( 'MEX_SPICAM_IR1_NADIR' ) + NAIF_BODY_CODE += ( -41623 ) + + \begintext + + +VMC IDs +-------------------------------------- + + This table summarizes VMC IDs: + + Name ID + -------------------------- ------- + MEX_VMC -41700 + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'MEX_VMC' ) + NAIF_BODY_CODE += ( -41700 ) + + \begintext + + +Mars Express Beagle-2 (BEAGLE2) Lander and its instruments IDs +-------------------------------------------------------------- + + This table summarizes Beagle-2 lander and its instrument IDs: + + Name ID Synonyms + --------------------- ------- ------------------------- + BEAGLE2 -44 BEAGLE 2, BEAGLE-2, + BEAGLE_2 + BEAGLE2_LANDER -44000 + BEAGLE2_GAP -44100 + BEAGLE2_PAW -44200 + BEAGLE2_LANDING_SITE -44900 BEAGLE2_LS, BEAGLE2_SITE + + Notes: + + -- 'BEAGLE2', 'BEAGLE 2', 'BEAGLE-2', and 'BEAGLE_2' are + synonyms and all map to the official Beagle-2 S/C ID (-44); + + -- 'BEAGLE2_LANDING_SITE', 'BEAGLE2_LS' and 'BEAGLE2_SITE' are + synonyms and all map to Beagle-2 landing site ID (-44000); + + Name-ID Mapping keywords: + + \begindata + + NAIF_BODY_NAME += ( 'BEAGLE2' ) + NAIF_BODY_CODE += ( -44 ) + + NAIF_BODY_NAME += ( 'BEAGLE 2' ) + NAIF_BODY_CODE += ( -44 ) + + NAIF_BODY_NAME += ( 'BEAGLE-2' ) + NAIF_BODY_CODE += ( -44 ) + + NAIF_BODY_NAME += ( 'BEAGLE_2' ) + NAIF_BODY_CODE += ( -44 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_LANDER' ) + NAIF_BODY_CODE += ( -44000 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_GAP' ) + NAIF_BODY_CODE += ( -44100 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_PAW' ) + NAIF_BODY_CODE += ( -44200 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_LANDING_SITE' ) + NAIF_BODY_CODE += ( -44900 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_LS' ) + NAIF_BODY_CODE += ( -44900 ) + + NAIF_BODY_NAME += ( 'BEAGLE2_SITE' ) + NAIF_BODY_CODE += ( -44900 ) + + \begintext + + +End of FK file. \ No newline at end of file diff --git a/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_0.xsp b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_0.xsp new file mode 100644 index 000000000..18a74b0c8 --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_0.xsp @@ -0,0 +1,592 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/SPK ' +'2' +'6' +'SPKMERGE ' +BEGIN_ARRAY 1 341 +'../incoming/ORMM_FDRMMA_DA_080201000000_' +'F3E571EE8F3338^7' +'F3E58371165E58^7' +'-29' +'1F3' +'1' +'12' +341 +'9BA183CF28F3F^3' +'-7E2EDCD654BB8C^3' +'B1827FB0238DB^3' +'20C3BBEBE2D04C^1' +'748E4BAB4245CC^0' +'-343875FD64F14E^1' +'20C3BBEBE2D04C^1' +'748E4BAB4245D^0' +'-343875FD64F14E^1' +'-58943C225621A^-2' +'47DA4D90401D5C^-2' +'-6538FB5FB5B028^-2' +'9D92DD57990F3^3' +'-7DBDABF477AA8^3' +'AE62E6866E31F^3' +'206E333AB0F04C^1' +'78DB9B20AD4C08^0' +'-3498BEDC5A8716^1' +'206E333AB0F04C^1' +'78DB9B20AD4C08^0' +'-3498BEDC5A8716^1' +'-5AD2F89F66696^-2' +'48838BB894607C^-2' +'-64B7805F3C4764^-2' +'9F7BF6E24DB75^3' +'-7D491CE4F0CA68^3' +'AB42AD3A9A4D6^3' +'201713013303CC^1' +'7D2BE1CD2A912C^0' +'-34F7EBD1763B7E^1' +'201713013303CC^1' +'7D2BE1CD2A913^0' +'-34F7EBD1763B7E^1' +'-5D13E9C27FB15C^-2' +'49290B015A79A^-2' +'-6429E1481B4CD^-2' +'A15CD88C8F511^3' +'-7CD13662D00238^3' +'A821DD765A2A08^3' +'1FBE5D659AB56^1' +'817EE950D4F38^0' +'-3555F60421C452^1' +'1FBE5D659AB56^1' +'817EE950D4F38^0' +'-3555F60421C452^1' +'-5F56C1E99EC8E4^-2' +'49CAA1F4D5A6E^-2' +'-638FFDB82438D8^-2' +'A3358A65FD4C98^3' +'-7C55FF0E36633C^3' +'A50080A9F0BCC8^3' +'1F6414B34DA54F^1' +'85D47A909AA3D8^0' +'-35B2D6A18C6E66^1' +'1F6414B34DA55^1' +'85D47A909AA3E^0' +'-35B2D6A18C6E66^1' +'-619B315F227664^-2' +'4A682732911EE^-2' +'-62E9B76917F264^-2' +'A506146F5EA85^3' +'-7BD77D6C4E9154^3' +'A1DEA00D58811^3' +'1F083B5B30B2ED^1' +'8A2C5DBA44724^0' +'-360E86DD744EFE^1' +'1F083B5B30B2EE^1' +'8A2C5DBA44724^0' +'-360E86DD744EFE^1' +'-63E0E65EC985B4^-2' +'4B01717BD446C^-2' +'-6236F2491DBA04^-2' +'A6CE7E997C187^3' +'-7B55B7E748767C^3' +'9EBC44A16BB828^3' +'1EAAD3F3F4CE5E^1' +'8E865A48A31618^0' +'-3668FFF2F6AB9^1' +'1EAAD3F3F4CE5F^1' +'8E865A48A3162^0' +'-3668FFF2F6AB92^1' +'-66278D1C24C844^-2' +'4B9657C0A94A94^-2' +'-6177949665E93^-2' +'A88ED0C4040B4^3' +'-7AD0B4CE582F4C^3' +'9B9977310D8278^3' +'1E4BE13A63FB14^1' +'92E23707EA0A38^0' +'-36C23B256AC9DE^1' +'1E4BE13A63FB15^1' +'92E23707EA0A4^0' +'-36C23B256AC9E^1' +'-686ECFCBF403C4^-2' +'4C26B12DD0B04^-2' +'-60AB86FE6116A8^-2' +'AA4712BC78A3D^3' +'-7A487A55B814E^3' +'98764052531BF^3' +'1DEB6611ABB5EB^1' +'973FBA1A449338^0' +'-371A31C14A5A46^1' +'1DEB6611ABB5EC^1' +'973FBA1A449338^0' +'-371A31C14A5A46^1' +'-6AB656B240140C^-2' +'4CB2553BF41808^-2' +'-5FD2B4C0496F38^-2' +'ABF74C3D278EA^3' +'-79BD0E96ADBC08^3' +'9552A867AC61A8^3' +'1D896583A05ACD^1' +'9B9EA8FCB4E1F8^0' +'-3770DD1D29F5D^1' +'1D896583A05ACD^1' +'9B9EA8FCB4E1F8^0' +'-3770DD1D29F5D2^1' +'-6CFDC837100678^-2' +'4D391BC03F58^-2' +'-5EED0BD1D164B8^-2' +'AD9F84EC2B4CE8^3' +'-792E778F91B384^3' +'922EB7A10AB3E^3' +'1D25E2C0F3C8E6^1' +'9FFEC88C4D153^0' +'-37C6369AC29824^1' +'1D25E2C0F3C8E6^1' +'9FFEC88C4D153^0' +'-37C6369AC29824^1' +'-6F44C9032A382C^-2' +'4DBADCFE39DFB4^-2' +'-5DFA7D03C9B298^-2' +'AF3FC45A753D2^3' +'-789CBB23D9C104^3' +'8F0A75FD0553A8^3' +'1CC0E12158D4EE^1' +'A45FDD0BCCA858^0' +'-381A37A80AA5C8^1' +'1CC0E12158D4EE^1' +'A45FDD0BCCA86^0' +'-381A37A80AA5C8^1' +'-718AFC255B85B^-2' +'4E3771BA572BB^-2' +'-5CFAFC23BA2828^-2' +'B0D81202DF539^3' +'-7807DF1C2559B8^3' +'8BE5EB49FA8E08^3' +'1C5A64238D82C4^1' +'A8C1AA29A25178^0' +'-386CD9C05A423A^1' +'1C5A64238D82C5^1' +'A8C1AA29A2518^0' +'-386CD9C05A423A^1' +'-73D0033F50DB6C^-2' +'4EAEB34C52D358^-2' +'-5BEE801708B434^-2' +'B26875494434C8^3' +'-776FE9264C1C1^3' +'88C11F272D5C7^3' +'1BF26F6D47C59^1' +'AD23F30643729^0' +'-38BE166D9402A6^1' +'1BF26F6D47C591^1' +'AD23F306437298^0' +'-38BE166D9402A8^1' +'-76137EB76B272^-2' +'4F207BB028A5C^-2' +'-5AD502ECA2096^-2' +'B3F0F5799C462^3' +'-76D4DED56E2704^3' +'859C1905DF996^3' +'1B8906CB039BDE^1' +'B1867A3AB9C98^0' +'-390DE749491B02^1' +'1B8906CB039BDF^1' +'B1867A3AB9C98^0' +'-390DE749491B02^1' +'-78550DEB80DA9C^-2' +'4F8CA5946EF1A^-2' +'-59AE81E343E0D^-2' +'B57199C71E6178^3' +'-7636C5A2064ECC^3' +'8276E02A6968D8^3' +'1B1E2E2FB557FA^1' +'B5E901DF39A7E8^0' +'-395C45FDCFA372^1' +'1B1E2E2FB557FA^1' +'B5E901DF39A7E8^0' +'-395C45FDCFA372^1' +'-7A944F5FB05D34^-2' +'4FF30C6519C994^-2' +'-587AFD646E3204^-2' +'B6EA694B6327C8^3' +'-7595A2E9FE5AE8^3' +'7F517BAD4EEA3C^3' +'1AB1E9B466FD^1' +'BA4B4B918ACAA8^0' +'-39A92C4742EF46^1' +'1AB1E9B466FD^1' +'BA4B4B918ACAA8^0' +'-39A92C4742EF48^1' +'-7CD0E0E49D5AD4^-2' +'50538C5238E034^-2' +'-573A78F6419F^-2' +'B85B6B058A71^3' +'-74F17BF0C5A68^3' +'7C2BF27C559844^3' +'1A443D97CAD521^1' +'BEAD187B0F0BF^0' +'-39F493F46922C8^1' +'1A443D97CAD522^1' +'BEAD187B0F0BF^0' +'-39F493F46922C8^1' +'-7F0A5FB1D6EB1^-2' +'50AE0252FF6D1^-2' +'-55ECFB289DA4A^-2' +'B9C4A5D962F4B^3' +'-744A55DF6AA1BC^3' +'79064B5B9ACF9^3' +'19D52E3DCED9E2^1' +'C30E29563DEC3^0' +'-3A3E76E77DBA1E^1' +'19D52E3DCED9E2^1' +'C30E29563DEC3^0' +'-3A3E76E77DBA2^1' +'-814068738699A^-2' +'51024C262B8D8C^-2' +'-54928D83095448^-2' +'BB26208E94E518^3' +'-73A035C4B7C7E8^3' +'75E08CE6ACC348^3' +'1964C02F3BA447^1' +'C76E3E7380D13^0' +'-3A86CF16E58D08^1' +'1964C02F3BA447^1' +'C76E3E7380D138^0' +'-3A86CF16E58D08^1' +'-8372974D5E992^-2' +'515048517A721C^-2' +'-532B3C78DA4058^-2' +'BC7FE1CFD0B0D^3' +'-72F32095549E58^3' +'72BABD91A6BA8^3' +'18F2F819666B0A^1' +'CBCD17BD759E78^0' +'-3ACD968DD4CFFC^1' +'18F2F819666B0A^1' +'CBCD17BD759E78^0' +'-3ACD968DD4CFFC^1' +'-85A087D73FCE5^-2' +'5197D6220DC4B^-2' +'-51B7176783F438^-2' +'BDD1F02A035E6^3' +'-72431B2BEB39A^3' +'6F94E3AA50DCE8^3' +'187FDACDF8D0C5^1' +'D02A74BCB5B698^0' +'-3B12C76CF1912C^1' +'187FDACDF8D0C5^1' +'D02A74BCB5B698^0' +'-3B12C76CF1912C^1' +'-87C9D519732D28^-2' +'51D8D5AF606228^-2' +'-503630A0536D68^-2' +'BF1C520B91EDC^3' +'-71902A4952A04^3' +'6C6F0559433E24^3' +'180B6D42CC301B^1' +'D486149B500CC^0' +'-3B565BEAFCA5DA^1' +'180B6D42CC301B^1' +'D486149B500CC^0' +'-3B565BEAFCA5DC^1' +'-89EE198E0EACA^-2' +'521327E1AE683C^-2' +'-4EA89D7BDABAC^-2' +'C05F0DC39CE588^3' +'-70DA5294BE3348^3' +'694928A30B5DE^3' +'1795B491D2212A^1' +'D8DFB62829307^0' +'-3B984E558827D2^1' +'1795B491D2212A^1' +'D8DFB628293078^0' +'-3B984E558827D2^1' +'-8C0CEF2B32AE18^-2' +'5246AE7BBF1BFC^-2' +'-4D0E7672F7C7D^-2' +'C19A29814CC5D^3' +'-7021989BF21B8^3' +'66235369530F9^3' +'171EB5F9024341^1' +'DD3717DA6BFD4^0' +'-3BD89911BE8704^1' +'171EB5F9024341^1' +'DD3717DA6BFD4^0' +'-3BD89911BE8704^1' +'-8E25EF76D25D2^-2' +'52734C272D4CE8^-2' +'-4B67D7388B0D7C^-2' +'C2CDAB5327AF3^3' +'-6F6600D37C9BE4^3' +'62FD8B6C07B4FC^3' +'16A676DA46457F^1' +'E18BF7D525F6C8^0' +'-3C17369D395332^1' +'16A676DA46457F^1' +'E18BF7D525F6D^0' +'-3C17369D395332^1' +'-9038B3A1C1F548^-2' +'5298E482068298^-2' +'-49B4DECFF7849C^-2' +'F3E56F8D23487^7' +'F3E570813FC84^7' +'F3E57173D2121^7' +'F3E57264E1E04^7' +'F3E5735476DBB8^7' +'F3E57442989C08^7' +'F3E5752F4EA7C8^7' +'F3E5761AA074A^7' +'F3E5770495681^7' +'F3E577ED34D6F^7' +'F3E578D486066^7' +'F3E579BA902BB^7' +'F3E57A9F5A6CA8^7' +'F3E57B82EBE^7' +'F3E57C654B8D7^7' +'F3E57D46806E18^7' +'F3E57E26916CB^7' +'F3E57F058565E^7' +'F3E57FE363286^7' +'F3E580C0317578^7' +'F3E5819BF7012^7' +'F3E58276BA7258^7' +'F3E5835082636^7' +'F3E58429556208^7' +'F3E5850139EFF8^7' +'F3E585D83682F^7' +'0^0' +'6^1' +'1A^2' +END_ARRAY 1 341 +BEGIN_ARRAY 2 39 +'DE-0721LE-0721 ' +'F3E571EE8F3338^7' +'F3E58371165E58^7' +'A' +'0' +'1' +'2' +39 +'F3DAF4^7' +'A8C^5' +'-33602EBADF0E94^4' +'-1E29F97C6B4E59^4' +'-3D83D976024B2A^1' +'142BEFF91E55C6^0' +'43577C3AF6A53^-1' +'-4A683CE326168C^-2' +'-741AC6B66ABFD^-3' +'2846E4D58BFB1^-3' +'-38EA5C4106A6A4^-4' +'-67099959337084^-5' +'259DEE9B91E7C^-5' +'A788C111B8289^5' +'102A088BAAB9DE^3' +'-168A44082176C3^2' +'-2F5A7EA8F7AA28^0' +'10B43C1C4DDC1F^-1' +'58E93C24161404^-2' +'-E57901849C725^-3' +'5211D76CF1384^-4' +'4436B88FE2AB9C^-4' +'-C3FA1B5B0C22E^-5' +'462DB4319CAAF4^-6' +'45F9D25C821308^5' +'1051976E18F511^3' +'-9768C6FEA60B58^1' +'-183E01060B10FA^0' +'1B2D715B733F81^-2' +'36E27D20BC10E8^-2' +'-6E7A40389EB434^-3' +'-16F674EBE46955^-4' +'2A5705C21C7176^-4' +'-5E011D48FE4968^-5' +'-18F192F259BB8F^-6' +'F33234^7' +'1518^6' +'23^2' +'1^1' +END_ARRAY 2 39 +BEGIN_ARRAY 3 39 +'DE-0721LE-0721 ' +'F3E571EE8F3338^7' +'F3E58371165E58^7' +'4' +'0' +'1' +'2' +39 +'F33234^7' +'1518^6' +'-4F1FE4AEF82548^7' +'-1CBA666D457852^7' +'5B2B407B8A36EC^5' +'5178BD764224D^4' +'-106286D72C9ACF^3' +'4A2FAD545943F4^0' +'B94C0BDCFD41B8^-1' +'-7EC0E5FB5C7CFC^-2' +'806BCFDA77FAD^-4' +'23D7D14E82C194^-4' +'22A78BE9BB02C2^-4' +'C3918F8763741^7' +'-7CDD461D7DAD48^6' +'-E10A15943305^5' +'28B651AA4B6D34^4' +'D7C7A0535483B8^2' +'-420836806BCF3C^1' +'13125F8DA96FAD^0' +'-1E84079F894694^-2' +'-34100EE8C0BE34^-4' +'77EB26FCDCEE84^-4' +'-171FD95D70B022^-4' +'5BCFD194215308^7' +'-2CDB381059A9DA^6' +'-69AE757E8E767C^5' +'107902EC7329EB^4' +'6A0DCFB82B82D^2' +'-1E6ACE0461C9FC^1' +'871F884AB9604^-1' +'-A2D33E331C7AF^-3' +'-2DC4335A7274CA^-4' +'298ADB9BB0249E^-4' +'-A20DC64EECBBD8^-5' +'F1E0B4^7' +'2A3^6' +'23^2' +'1^1' +END_ARRAY 3 39 +BEGIN_ARRAY 4 104 +'MAR097 ' +'F3E571EE8F3338^7' +'F3E58371165E58^7' +'1F3' +'4' +'1' +'3' +104 +'F3E2DD^7' +'2A3^4' +'2808995CB6AA7C^-3' +'-2C5B9302EFADB6^-3' +'7107B619858F6^-3' +'18BCC8BD1F5AE9^-3' +'-134A2B3DDF2FC5^-3' +'-1DF5ED17EBD2AC^-4' +'12E137FA3DD025^-4' +'4B76DA39D31B^-6' +'-15DEC6BC98445^-3' +'-76A8F71084F9^-3' +'-17599D44EA1569^-3' +'3CB6DCB27CBCF4^-3' +'3543B864BE770A^-4' +'-5A5FDF2E186FFC^-4' +'-818BC0F80FD46^-6' +'43CE605A1454^-5' +'-22C4C178D65DE6^-3' +'-2694A17540DC64^-3' +'-4C670B6BC8C13^-3' +'129332F720EB7B^-3' +'CB1A9B88B68CA8^-4' +'-1F88300C36C144^-4' +'-AF2D29930B288^-5' +'21B468DED0A758^-5' +'7D2166B1D3308^-7' +'76508EC58405D8^-6' +'314996A8AB2C92^-6' +'-3527FCF2753DD6^-6' +'-701037C04DA0E4^-7' +'55EC83E13DBA1C^-7' +'190AFF38BC6277^-8' +'0^0' +'E118FB549420E^-7' +'-19775FD64940DA^-6' +'76249D0003E4D^-6' +'9F4E3522A2B198^-7' +'-1404086D2EB5D^-6' +'-24D93EDA788E54^-8' +'168068CAD5D24C^-7' +'0^0' +'31D55107684128^-7' +'-50815301C5B1FC^-6' +'237E4597D38414^-6' +'2366788916A95^-6' +'-6C672A5E808F7^-7' +'-31D3F511EEB1A2^-7' +'B2F5A8D7321EA8^-8' +'0^0' +'F3E823^7' +'2A3^4' +'2425FA54D4C0E^-3' +'-9F9AA323E87D18^-3' +'-1FA3FED2EC23F5^-3' +'3C95C934A04C64^-3' +'4E69E3FD380728^-4' +'-5B1D8143258358^-4' +'-5A99A5781780C8^-5' +'49EC11691A59F^-5' +'19AD7A939FE5D5^-3' +'1129A85F3CDDF2^-3' +'-8585408025A75^-3' +'7C83B2FD91D2C8^-5' +'159FA23CCF4DD4^-3' +'1360F6487C58C^-5' +'-15603095E2B02E^-4' +'-72899C1E8D59^-6' +'-6D744DBA1B6C14^-4' +'63B192F152A298^-3' +'-35B34C6B3F37C8^-3' +'-220069BB0CEB58^-3' +'8D37D4B3345138^-4' +'342BF2DE4B8908^-4' +'-8434AE636719E^-5' +'-2DA3A290328CE^-5' +'-1A194D6558F2A^-7' +'-22BDB8577FAD6E^-6' +'75CCDEC68E8534^-6' +'D4245DFC16392^-7' +'-141082673DD22C^-6' +'-19C54DC969AC07^-7' +'1887FCACEDD13C^-7' +'0^0' +'721BF8DF723C48^-7' +'-8F073C81E7CD7^-6' +'13ED366D80108D^-7' +'3B86FD240DCFA4^-6' +'237C7A3524B522^-8' +'-61488B32ADCC7C^-7' +'-26026E36E43142^-8' +'0^0' +'4D55E831BB948^-7' +'-390962CC0EFF84^-6' +'-41F3D91E6FE888^-6' +'186DC66B4F026D^-6' +'B6B86FAB574688^-7' +'-259AEE79928484^-7' +'-F253C64F2D0508^-8' +'0^0' +'F3E03A^7' +'546^4' +'32^2' +'2^1' +END_ARRAY 4 104 +TOTAL_ARRAYS 4 + ~NAIF/SPC BEGIN COMMENTS~ +; /home/kdlee/builds/ale/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_0.bsp LOG FILE + +; Created 2019-09-27/08:34:02.00. +; +; BEGIN SPKMERGE COMMANDS + +LEAPSECONDS_KERNEL = /usgs/cpkgs/isis3/data/base/kernels/lsk/naif0012.tls + +SPK_KERNEL = /home/kdlee/builds/ale/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_0.bsp +SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/mex/kernels/spk/ORMM__080201000000_00474.BSP + INCLUDE_COMMENTS = NO + BODIES = -41 + BEGIN_TIME = 2008 FEB 08 11:55:09.725 + END_TIME = 2008 FEB 08 11:59:49.883 + SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/base/kernels/spk/mar097.bsp + INCLUDE_COMMENTS = NO + BODIES = 4, 10, 499 + BEGIN_TIME = 2008 FEB 08 11:55:09.725 + END_TIME = 2008 FEB 08 11:59:49.883 + +; END SPKMERGE COMMANDS + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_1.xsp b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_1.xsp new file mode 100644 index 000000000..bed35aebf --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_1.xsp @@ -0,0 +1,581 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/SPK ' +'2' +'6' +'SPKMERGE ' +BEGIN_ARRAY 1 380 +'../incoming/ORMM_FDRMMA_DA_080201000000_' +'F3E5A4B126C0C8^7' +'F3E5B60F3B3BB8^7' +'-29' +'1F3' +'1' +'12' +380 +'DADF90A2A81088^3' +'-4E057F8577438C^3' +'-D921DF2614A898^2' +'356DBD5C63DD12^0' +'16E64EFE5CFCDC^1' +'-3FFB6261E52B08^1' +'356DBD5C63DD12^0' +'16E64EFE5CFCDC^1' +'-3FFB6261E52B08^1' +'-BE7033B9FADCE^-2' +'4402206E991B28^-2' +'B66507F3F20A2^-3' +'DB0550E9EBD9E8^3' +'-4CE8F13A14D72C^3' +'-10A968372E9A73^3' +'2C385D4AC027E2^0' +'171A880B8C1C51^1' +'-3FF1866D00332C^1' +'2C385D4AC027E2^0' +'171A880B8C1C51^1' +'-3FF1866D00332C^1' +'-BEAA147EB255B^-2' +'431287F80B1408^-2' +'E1A571F42DC8D^-3' +'DB23F029FAADB^3' +'-4BC9EFE62B91C^3' +'-13C003D5B24964^3' +'23011045E355D^0' +'174E02E128B428^1' +'-3FE59443020292^1' +'23011045E355D^0' +'174E02E128B428^1' +'-3FE59443020292^1' +'-BED312BEC41D4^-2' +'421CD23E8E08B8^-2' +'10CD9D6BD0E8A3^-2' +'DB3B6E7C52C8A^3' +'-4AA87CFD49A504^3' +'-16D5ED1402C97D^3' +'19C865E744949F^0' +'1780BC5198F16D^1' +'-3FD78C76B9DF76^1' +'19C865E744949F^0' +'1780BC5198F16D^1' +'-3FD78C76B9DF76^1' +'-BEEB207186C0F^-2' +'41212758F2D938^-2' +'137FB01F4DF6A7^-2' +'DB4BCBD12A5B38^3' +'-498499E53D42B8^3' +'-19EB203296CC8A^3' +'108EEE4668A294^0' +'17B2B13EC8D28E^1' +'-3FC76FC81DD5E^1' +'108EEE4668A295^0' +'17B2B13EC8D28E^1' +'-3FC76FC81DD5E^1' +'-BEF230B26C1D7^-2' +'401FB09572E148^-2' +'163019F39488F8^-2' +'DB5507EFC53518^3' +'-485E47F67EFF74^3' +'-1CFF996B52C3A7^3' +'7553A0306BCD14^-1' +'17E3DE9AB43E78^1' +'-3FB53F266FBDE6^1' +'7553A0306BCD14^-1' +'17E3DE9AB43E78^1' +'-3FB53F266FBDE6^1' +'-BEE839168BC9^-2' +'3F1899385748D4^-2' +'18DE62A3CDEA6E^-2' +'DB572276DCF978^3' +'-4735887C977268^3' +'-201354F0B7FBAA^3' +'-1E425C5395A04D^-1' +'181441688A7923^1' +'-3FA0FBB2EE7576^1' +'-1E425C5395A04D^-1' +'181441688A7923^1' +'-3FA0FBB2EE7576^1' +'-BECD3395C6D97^-2' +'3E0C0F2C5BCA3^-2' +'1B8A0EC3FA4CF2^-2' +'DB521ADD0A274^3' +'-460A5CB678FA24^3' +'-23264EED388C5E^3' +'-B1C9F999698E2^-1' +'1843D6BE4BBD6E^1' +'-3F8AA6C35D18A^1' +'-B1C9F999698E2^-1' +'1843D6BE4BBD6E^1' +'-3F8AA6C35D18A^1' +'-BEA1208634EE58^-2' +'3CFA4370152E2C^-2' +'1E32A090D1714F^-2' +'DB45F0711B747^3' +'-44DCC5D6C909DC^3' +'-26388382AA1BEE^3' +'-1453A1DF5A530A^0' +'18729BC69E4C61^1' +'-3F7241E3AB9AEA^1' +'-1453A1DF5A530A^0' +'18729BC69E4C61^1' +'-3F7241E3AB9AEA^1' +'-BE6408250FCA18^-2' +'3BE36A1B357AD8^-2' +'20D7998FA2A73E^-2' +'DB32A25A4CF68^3' +'-43ACC504184008^3' +'-2949EEC9C9911E^3' +'-1D889B2162BFA^0' +'18A08DC284CA3D^1' +'-3F57CED643C044^1' +'-1D889B2162BFA^0' +'18A08DC284CA3E^1' +'-3F57CED643C046^1' +'-BE15FB4E3309E8^-2' +'3AC7B9EF6C81DE^-2' +'23787C9A56CBAA^-2' +'DB182F9857FF08^3' +'-427A5B590CD124^3' +'-2C5A8CD1BD9BA6^3' +'-26BAFA5B0BEA94^0' +'18CDAA0AA06C7^1' +'-3F3B4F92D5ABBE^1' +'-26BAFA5B0BEA94^0' +'18CDAA0AA06C7^1' +'-3F3B4F92D5ABBE^1' +'-BDB7134120DD88^-2' +'39A76B835284C6^-2' +'2614CFDB11BB04^-2' +'DAF697035D464^3' +'-414589E4869B9^3' +'-2F6A599F8639AE^3' +'-2FEA2F3B588CB^0' +'18F9EE0FBD0663^1' +'-3F1CC643DBAE62^1' +'-2FEA2F3B588CB2^0' +'18F9EE0FBD0664^1' +'-3F1CC643DBAE62^1' +'-BD4770907CA3F^-2' +'3882B82BABFA88^-2' +'28AC1E48F03D8C^-2' +'DACDD74BB2BC18^3' +'-400E51A9C6AC5C^3' +'-3279512D4BDBBE^3' +'-3915AA57B8C096^0' +'1925575A864D0C^1' +'-3EFC3543535084^1' +'-3915AA57B8C098^0' +'1925575A864D0C^1' +'-3EFC3543535086^1' +'-BCC73983CF9158^-2' +'3759D8D47E9582^-2' +'2B3DF8613189BE^-2' +'DA9DEEF9A394A^3' +'-3ED4B3A0A49F12^3' +'-35876F6987DE2^3' +'-423CDD49B680F^0' +'194FE38A6D6535^1' +'-3ED99F174B0FDE^1' +'-423CDD49B680F^0' +'194FE38A6D6535^1' +'-3ED99F174B0FDE^1' +'-BC369843C21938^-2' +'362D04FEF5585A^-2' +'2DC9F40B6C69EA^-2' +'DA66DC6D333BD8^3' +'-3D98B0B5DAF194^3' +'-3894B03607FF44^3' +'-4B5F3AB6F560EC^0' +'19799053ED1D72^1' +'-3EB5066EE07D7C^1' +'-4B5F3AB6F560EC^0' +'19799053ED1D72^1' +'-3EB5066EE07D7E^1' +'-BB95B923498C08^-2' +'34FC7213DC306C^-2' +'304FABC3D0317A^-2' +'DA289DDDF2F2F^3' +'-3C5A49CB704944^3' +'-3BA10F66D595A^3' +'-547C364685CF64^0' +'19A25B7E7BDC16^1' +'-3E8E6E202A1CB6^1' +'-547C364685CF64^0' +'19A25B7E7BDC16^1' +'-3E8E6E202A1CB8^1' +'-BAE4C94734BA3^-2' +'33C8532DD3A73^-2' +'32CEBD43ABB146^-2' +'D9E3315AF682D8^3' +'-3B197FB93F39BE^3' +'-3EAC88C10E6D1E^3' +'-5D9344893D35F^0' +'19CA42E28EFECF^1' +'-3E65D92757694A^1' +'-5D9344893D35F^0' +'19CA42E28EFECF^1' +'-3E65D92757694C^1' +'-BA23F5D9F1EFB8^-2' +'3290D96B47A798^-2' +'3546C7EEFE563C^-2' +'D99694CAEF5808^3' +'-39D6534D9908EE^3' +'-41B717F9BFC9B4^3' +'-66A3DADC8CA5BC^0' +'19F14468179C6B^1' +'-3E3B4AA71922F2^1' +'-66A3DADC8CA5BC^0' +'19F14468179C6C^1' +'-3E3B4AA71922F4^1' +'-B9536BE604666^-2' +'315634C02B3AF2^-2' +'37B76B525C7FEA^-2' +'D942C5EC6F335^3' +'-3890C54DFB164C^3' +'-44C0B8B4D3CEEC^3' +'-6FAD6F502353A4^0' +'1A175E05D159AB^1' +'-3E0EC5EA2A743E^1' +'-6FAD6F502353A8^0' +'1A175E05D159AC^1' +'-3E0EC5EA2A743E^1' +'-B87358DB955278^-2' +'301895258AAA6C^-2' +'3A2045FA123E6E^-2' +'D8E7C2564D314^3' +'-3748D677CAE638^3' +'-47C966841E8124^3' +'-78AF78964ECD2^0' +'1A3C8DC19971C1^1' +'-3DE04E659E202^1' +'-78AF78964ECD2^0' +'1A3C8DC19971C1^1' +'-3DE04E659E2022^1' +'-B783EBA9B8EF5^-2' +'2ED82BEE8327FA^-2' +'3C80F4E0FDD882^-2' +'D8858778224268^3' +'-35FE87810B3B8^3' +'-4AD11CE6920D3C^3' +'-81A96E053906C^0' +'1A60D1B1D325A5^1' +'-3DAFE7BB693166^1' +'-81A96E053906C^0' +'1A60D1B1D325A6^1' +'-3DAFE7BB693166^1' +'-B68556344B468^-2' +'2D952CFDB56ED^-2' +'3ED9139F476CD2^-2' +'D81C129ACE79E8^3' +'-34B1D918FD9F8C^3' +'-4DD7D7479AC78^3' +'-8A9AC7ABD4A288^0' +'1A8427FFA9412F^1' +'-3D7D95BC90FD8C^1' +'-8A9AC7ABD4A288^0' +'1A8427FFA9413^1' +'-3D7D95BC90FD8C^1' +'-B577CED46AD988^-2' +'2C4FCF9947A6B^-2' +'41283D5D54174C^-2' +'D7AB60E0F7E05^3' +'-3362CBE8A730FC^3' +'-50DD90FE9BB1B^3' +'-9382FE78FA8D9^0' +'1AA68EE9CF2589^1' +'-3D495C6A6E06C4^1' +'-9382FE78FA8D98^0' +'1AA68EE9CF2589^1' +'-3D495C6A6E06C4^1' +'-B45B9187A3D698^-2' +'2B084EAF6F6EC^-2' +'436E0E6313B7FC^-2' +'D7336F47762CD8^3' +'-3211609334D71E^3' +'-53E2454E7DFE34^3' +'-9C618C6EFD0CA^0' +'1AC804C74AD173^1' +'-3D133FF6A34464^1' +'-9C618C6EFD0CA^0' +'1AC804C74AD174^1' +'-3D133FF6A34466^1' +'-B330E081834398^-2' +'29BEE87E1F2AAA^-2' +'45AA25F30D0764^-2' +'D6B43AA5A46B4^3' +'-30BD97B640E25E^3' +'-56E5EF65428FF4^3' +'-A535ECDB0B27E^0' +'1AE88809D3B263^1' +'-3CDB44C1B1AFE4^1' +'-A535ECDB0B27E^0' +'1AE88809D3B264^1' +'-3CDB44C1B1AFE4^1' +'-B1F803FBC5A4B8^-2' +'2873DDB4CA706E^-2' +'47DC2809FCDA2C^-2' +'D62DBFAD98B778^3' +'-2F6771EA0150FA^3' +'-59E88A5B84DC84^3' +'-ADFF9C872ABBE^0' +'1B08173F6EC103^1' +'-3CA16F58605586^1' +'-ADFF9C872ABBE8^0' +'1B08173F6EC104^1' +'-3CA16F58605586^1' +'-B0B14956F429D^-2' +'2727704474556A^-2' +'4A03BEA1DBC8FC^-2' +'D59FFAEC48E51^3' +'-2E0EEFC16942C4^3' +'-5CEA1133E2C93C^3' +'-B6BE19DF8F0CA8^0' +'1B26B1131ED5E7^1' +'-3C65C4707265EC^1' +'-B6BE19DF8F0CA8^0' +'1B26B1131ED5E7^1' +'-3C65C4707265EC^1' +'-AF5D01CD9DB06^-2' +'25D9E21FE8F646^-2' +'4C209A3A05B388^-2' +'D50AE8C9A7427^3' +'-2CB411CA49084^3' +'-5FEA7EDA43EBF^3' +'-BF70E507FD363^0' +'1B44544CB2BAB2^1' +'-3C2848E54375BC^1' +'-BF70E507FD363^0' +'1B44544CB2BAB3^1' +'-3C2848E54375BC^1' +'-ADFB811629CC58^-2' +'248B742914447^-2' +'4E32719B196DB^-2' +'D46E8588C3A228^3' +'-2B56D88D76C4AA^3' +'-62E9CE23021654^3' +'-C8177FE271E7A^0' +'1B60FFCFE39141^1' +'-3BE901B4D64EA8^1' +'-C8177FE271E7A8^0' +'1B60FFCFE39142^1' +'-3BE901B4D64EAA^1' +'-AC8D1C4A21ACD^-2' +'233C65744CD25A^-2' +'50390101E57E5^-2' +'F3E5A28105ED78^7' +'F3E5A346F57A3^7' +'F3E5A40CDB1268^7' +'F3E5A4D2BC39D^7' +'F3E5A5989E7398^7' +'F3E5A65E8742A^7' +'F3E5A7247C2A^7' +'F3E5A7EA82ACE^7' +'F3E5A8B0A04F3^7' +'F3E5A976DA95B8^7' +'F3E5AA3D37067^7' +'F3E5AB03BB28C^7' +'F3E5ABCA6C85D8^7' +'F3E5AC9150A8F^7' +'F3E5AD586D1F9^7' +'F3E5AE1FC779E^7' +'F3E5AEE7654AE^7' +'F3E5AFAF4C28B8^7' +'F3E5B07781AD^7' +'F3E5B1400B7508^7' +'F3E5B208EF222^7' +'F3E5B2D23259D8^7' +'F3E5B39BDAC65^7' +'F3E5B465EE1678^7' +'F3E5B53071FE6^7' +'F3E5B5FB6C377^7' +'F3E5B6C6E280E8^7' +'F3E5B792DA9FD^7' +'F3E5B85F5A5F88^7' +'0^0' +'6^1' +'1D^2' +END_ARRAY 1 380 +BEGIN_ARRAY 2 39 +'DE-0721LE-0721 ' +'F3E5A4B126C0C8^7' +'F3E5B60F3B3BB8^7' +'A' +'0' +'1' +'2' +39 +'F3DAF4^7' +'A8C^5' +'-33602EBADF0E94^4' +'-1E29F97C6B4E59^4' +'-3D83D976024B2A^1' +'142BEFF91E55C6^0' +'43577C3AF6A53^-1' +'-4A683CE326168C^-2' +'-741AC6B66ABFD^-3' +'2846E4D58BFB1^-3' +'-38EA5C4106A6A4^-4' +'-67099959337084^-5' +'259DEE9B91E7C^-5' +'A788C111B8289^5' +'102A088BAAB9DE^3' +'-168A44082176C3^2' +'-2F5A7EA8F7AA28^0' +'10B43C1C4DDC1F^-1' +'58E93C24161404^-2' +'-E57901849C725^-3' +'5211D76CF1384^-4' +'4436B88FE2AB9C^-4' +'-C3FA1B5B0C22E^-5' +'462DB4319CAAF4^-6' +'45F9D25C821308^5' +'1051976E18F511^3' +'-9768C6FEA60B58^1' +'-183E01060B10FA^0' +'1B2D715B733F81^-2' +'36E27D20BC10E8^-2' +'-6E7A40389EB434^-3' +'-16F674EBE46955^-4' +'2A5705C21C7176^-4' +'-5E011D48FE4968^-5' +'-18F192F259BB8F^-6' +'F33234^7' +'1518^6' +'23^2' +'1^1' +END_ARRAY 2 39 +BEGIN_ARRAY 3 39 +'DE-0721LE-0721 ' +'F3E5A4B126C0C8^7' +'F3E5B60F3B3BB8^7' +'4' +'0' +'1' +'2' +39 +'F33234^7' +'1518^6' +'-4F1FE4AEF82548^7' +'-1CBA666D457852^7' +'5B2B407B8A36EC^5' +'5178BD764224D^4' +'-106286D72C9ACF^3' +'4A2FAD545943F4^0' +'B94C0BDCFD41B8^-1' +'-7EC0E5FB5C7CFC^-2' +'806BCFDA77FAD^-4' +'23D7D14E82C194^-4' +'22A78BE9BB02C2^-4' +'C3918F8763741^7' +'-7CDD461D7DAD48^6' +'-E10A15943305^5' +'28B651AA4B6D34^4' +'D7C7A0535483B8^2' +'-420836806BCF3C^1' +'13125F8DA96FAD^0' +'-1E84079F894694^-2' +'-34100EE8C0BE34^-4' +'77EB26FCDCEE84^-4' +'-171FD95D70B022^-4' +'5BCFD194215308^7' +'-2CDB381059A9DA^6' +'-69AE757E8E767C^5' +'107902EC7329EB^4' +'6A0DCFB82B82D^2' +'-1E6ACE0461C9FC^1' +'871F884AB9604^-1' +'-A2D33E331C7AF^-3' +'-2DC4335A7274CA^-4' +'298ADB9BB0249E^-4' +'-A20DC64EECBBD8^-5' +'F1E0B4^7' +'2A3^6' +'23^2' +'1^1' +END_ARRAY 3 39 +BEGIN_ARRAY 4 54 +'MAR097 ' +'F3E5A4B126C0C8^7' +'F3E5B60F3B3BB8^7' +'1F3' +'4' +'1' +'3' +54 +'F3E823^7' +'2A3^4' +'2425FA54D4C0E^-3' +'-9F9AA323E87D18^-3' +'-1FA3FED2EC23F5^-3' +'3C95C934A04C64^-3' +'4E69E3FD380728^-4' +'-5B1D8143258358^-4' +'-5A99A5781780C8^-5' +'49EC11691A59F^-5' +'19AD7A939FE5D5^-3' +'1129A85F3CDDF2^-3' +'-8585408025A75^-3' +'7C83B2FD91D2C8^-5' +'159FA23CCF4DD4^-3' +'1360F6487C58C^-5' +'-15603095E2B02E^-4' +'-72899C1E8D59^-6' +'-6D744DBA1B6C14^-4' +'63B192F152A298^-3' +'-35B34C6B3F37C8^-3' +'-220069BB0CEB58^-3' +'8D37D4B3345138^-4' +'342BF2DE4B8908^-4' +'-8434AE636719E^-5' +'-2DA3A290328CE^-5' +'-1A194D6558F2A^-7' +'-22BDB8577FAD6E^-6' +'75CCDEC68E8534^-6' +'D4245DFC16392^-7' +'-141082673DD22C^-6' +'-19C54DC969AC07^-7' +'1887FCACEDD13C^-7' +'0^0' +'721BF8DF723C48^-7' +'-8F073C81E7CD7^-6' +'13ED366D80108D^-7' +'3B86FD240DCFA4^-6' +'237C7A3524B522^-8' +'-61488B32ADCC7C^-7' +'-26026E36E43142^-8' +'0^0' +'4D55E831BB948^-7' +'-390962CC0EFF84^-6' +'-41F3D91E6FE888^-6' +'186DC66B4F026D^-6' +'B6B86FAB574688^-7' +'-259AEE79928484^-7' +'-F253C64F2D0508^-8' +'0^0' +'F3E58^7' +'546^4' +'32^2' +'1^1' +END_ARRAY 4 54 +TOTAL_ARRAYS 4 + ~NAIF/SPC BEGIN COMMENTS~ +; /home/kdlee/builds/ale/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_1.bsp LOG FILE + +; Created 2019-09-27/08:34:02.00. +; +; BEGIN SPKMERGE COMMANDS + +LEAPSECONDS_KERNEL = /usgs/cpkgs/isis3/data/base/kernels/lsk/naif0012.tls + +SPK_KERNEL = /home/kdlee/builds/ale/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_1.bsp +SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/mex/kernels/spk/ORMM__080201000000_00474.BSP + INCLUDE_COMMENTS = NO + BODIES = -41 + BEGIN_TIME = 2008 FEB 08 12:08:41.887 + END_TIME = 2008 FEB 08 12:13:19.767 + SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/base/kernels/spk/mar097.bsp + INCLUDE_COMMENTS = NO + BODIES = 4, 10, 499 + BEGIN_TIME = 2008 FEB 08 12:08:41.887 + END_TIME = 2008 FEB 08 12:13:19.767 + +; END SPKMERGE COMMANDS + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_isis3.lbl b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_isis3.lbl new file mode 100644 index 000000000..d97d3e172 --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_isis3.lbl @@ -0,0 +1,375 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 322 + TileLines = 368 + + Group = Dimensions + Samples = 1288 + Lines = 15088 + Bands = 1 + End_Group + + Group = Pixels + Type = Real + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = "MARS EXPRESS" + InstrumentId = HRSC + StartTime = 2008-02-08T12:08:53.843 + StopTime = 2008-02-08T12:12:10.561 + SpacecraftClockStartCount = 1/0150552525.07284 + SpacecraftClockStopCount = 1/0150552792.64947 + MissionPhaseName = ME_Phase_11 + TargetName = Mars + FocalPlaneTemperature = 7.9716 + LensTemperature = 8.1755 + InstrumentTemperature = 11.0301 + Summing = 4 + End_Group + + Group = Archive + DataSetId = MEX-M-HRSC-3-RDR-V2.0 + DetectorId = MEX_HRSC_IR + EventType = MARS-REGIONAL-MAPPING-Vo-Te-Im + OrbitNumber = 5270 + ProductId = H5270_0000_IR2.IMG + End_Group + + Group = BandBin + Width = 81.0 + Center = 955.5 + End_Group + + Group = Kernels + NaifIkCode = -41218 + LeapSecond = $base/kernels/lsk/naif0012.tls + TargetAttitudeShape = $base/kernels/pck/pck00009.tpc + TargetPosition = (Table, $base/kernels/spk/de430.bsp, + $base/kernels/spk/mar097.bsp) + InstrumentPointing = (Table, + $mex/kernels/ck/ATNM_MEASURED_080101_090101_V- + 03.BC, $mex/kernels/fk/MEX_V14.TF) + Instrument = $mex/kernels/ik/MEX_HRSC_V03.TI + SpacecraftClock = $mex/kernels/sclk/MEX_190911_STEP.TSC + InstrumentPosition = (Table, + $mex/kernels/spk/ORMM__080201000000_00474.BSP) + InstrumentAddendum = $mex/kernels/iak/hrscAddendum004.ti + ShapeModel = $base/dems/molaMarsPlanetaryRadius0005.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = LineScanTimes + StartByte = 77798913 + Bytes = 60 + Records = 3 + ByteOrder = Lsb + + Group = Field + Name = EphemerisTime + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ExposureTime + Type = Double + Size = 1 + End_Group + + Group = Field + Name = LineStart + Type = Integer + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 77798973 + Bytes = 1856 + Records = 29 + ByteOrder = Lsb + TimeDependentFrames = (-41001, 1) + ConstantFrames = (-41210, -41200, -41000, -41001) + ConstantRotation = (-0.99999998446299, 1.02759057852749e-06, + 1.76275258411894e-04, 1.22462599129321e-16, + -0.99998300909767, 0.0058293666860367, + 1.76278253538481e-04, 0.0058293665954657, + 0.99998299356093) + CkTableStartTime = 255744599.02748 + CkTableEndTime = 255744795.75968 + CkTableOriginalSize = 15089 + FrameTypeCode = 3 + Description = "Created by spiceinit" + Kernels = ($mex/kernels/ck/ATNM_MEASURED_080101_090101_V03.BC, + $mex/kernels/fk/MEX_V14.TF) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 77812029 + Bytes = 1344 + Records = 24 + ByteOrder = Lsb + CacheType = HermiteSpline + SpkTableStartTime = 255744599.02748 + SpkTableEndTime = 255744795.75968 + SpkTableOriginalSize = 15089.0 + Description = "Created by spiceinit" + Kernels = $mex/kernels/spk/ORMM__080201000000_00474.BSP + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 77813373 + Bytes = 128 + Records = 2 + ByteOrder = Lsb + TimeDependentFrames = (10014, 1) + CkTableStartTime = 255744599.02748 + CkTableEndTime = 255744795.75968 + CkTableOriginalSize = 2 + FrameTypeCode = 2 + PoleRa = (317.68143, -0.1061, 0.0) + PoleDec = (52.8865, -0.0609, 0.0) + PrimeMeridian = (176.63, 350.89198226, 0.0) + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de430.bsp, + $base/kernels/spk/mar097.bsp, + $base/kernels/pck/pck00009.tpc) + SolarLongitude = 29.082082594798 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 77813501 + Bytes = 112 + Records = 2 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = 255744599.02748 + SpkTableEndTime = 255744795.75968 + SpkTableOriginalSize = 2.0 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de430.bsp, + $base/kernels/spk/mar097.bsp) + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 77813613 + Bytes = 1806 +End_Object + +Object = NaifKeywords + BODY_CODE = 499 + BODY499_RADII = (3396.19, 3396.19, 3376.2) + BODY_FRAME_CODE = 10014 + INS-41218_FOCAL_LENGTH = 174.82 + INS-41218_TRANSX = (0.016461898406507, -0.006999999322408, + 3.079982431615e-06) + INS-41218_TRANSY = (49.791792756805, 3.079982431615e-06, + 0.006999999322408) + INS-41218_ITRANSS = (-0.77805243343811, -142.85712902873, + 0.062856784318668) + INS-41218_ITRANSL = (-7113.1135971726, 0.062856784318668, + 142.85712902873) + INS-41218_BORESIGHT_SAMPLE = 2592.5 + INS-41218_BORESIGHT_LINE = 0.0 +End_Object +End diff --git a/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_pds3.lbl b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_pds3.lbl new file mode 100644 index 000000000..36681d8c8 --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/h5270_0000_ir2_pds3.lbl @@ -0,0 +1,282 @@ +PDS_VERSION_ID = PDS3 + +/* FILE DATA ELEMENTS */ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 2644 +FILE_RECORDS = 15095 +LABEL_RECORDS = 4 + +/* POINTERS TO DATA OBJECTS */ +^IMAGE_HEADER = 5 +^IMAGE = 8 + +/* IDENTIFICATION DATA ELEMENTS */ +FILE_NAME = H5270_0000_IR2.IMG +DATA_SET_ID = MEX-M-HRSC-3-RDR-V2.0 +DETECTOR_ID = MEX_HRSC_IR +EVENT_TYPE = MARS-REGIONAL-MAPPING-Vo-Te-Im +INSTRUMENT_HOST_ID = MEX +INSTRUMENT_HOST_NAME = "MARS EXPRESS" +INSTRUMENT_ID = HRSC +INSTRUMENT_NAME = "HIGH RESOLUTION STEREO CAMERA" +MISSION_NAME = "MARS EXPRESS" +MISSION_PHASE_NAME = ME_Phase_11 +PROCESSING_LEVEL_ID = 2 +PRODUCT_CREATION_TIME = 2009-04-30T15:19:42.000Z +PRODUCT_ID = H5270_0000_IR2.IMG +RELEASE_ID = 0062 +REVISION_ID = 0000 + +/* TIME DATA ELEMENTS */ +SPACECRAFT_CLOCK_START_COUNT = 1/0150552525.07284 +SPACECRAFT_CLOCK_STOP_COUNT = 1/0150552792.64947 +START_TIME = 2008-02-08T12:08:53.843Z +STOP_TIME = 2008-02-08T12:12:10.561Z + +/* ORBITAL DATA ELEMENTS */ +ASCENDING_NODE_LONGITUDE = 118.52 +MAXIMUM_RESOLUTION = 55.3 +FOOTPRINT_POINT_LATITUDE = (25.9975, 25.9916, 25.9739, 25.85, 25.599, + 25.351, 25.2208, 24.5915, 24.4629, 24.0857, + 23.9617, 22.7055, 22.577, 20.2998, 17.6826, + 17.4193, 17.1598, 13.0429, 13.0429, 13.0427, + 13.0427, 13.0425, 13.0425, 13.0423, 13.0423, + 13.0421, 13.0421, 13.042, 13.042, 13.0418, + 13.0416, 13.0415, 13.0411, 13.0409, 13.0406, + 13.0404, 13.04, 13.0396, 13.0392, 13.0388, + 13.0381, 13.0377, 13.0372, 13.0367, 13.0364, + 13.0362, 13.0357, 13.0354, 13.0353, 13.0348, + 13.0346, 13.0345, 13.0343, 13.0338, 13.0336, + 13.0335, 13.0332, 13.0327, 13.0324, 13.0323, + 13.032, 13.0315, 13.0312, 13.0311, 13.0308, + 13.0306, 13.0314, 17.2063, 17.3388, 17.7327, + 17.8665, 18.0031, 18.1342, 18.2588, 18.6486, + 18.7797, 18.9094, 19.4369, 19.8287, 19.9612, + 20.0923, 20.2223, 21.1159, 21.2444, 21.62, + 21.7442, 21.9976, 22.1232, 22.251, 22.6309, + 22.7559, 22.8791, 23.0084, 23.1362, 24.9031, + 25.151, 25.4021, 25.7834, 25.9087, 25.9975) +FOOTPRINT_POINT_LONGITUDE = (78.2107, 76.9405, 76.9316, 76.9337, 76.9367, + 76.9407, 76.9404, 76.9464, 76.9466, 76.95, + 76.9517, 76.9613, 76.9611, 76.9667, 76.9603, + 76.9585, 76.9579, 76.9246, 76.9359, 76.9483, + 76.9978, 77.0101, 77.0225, 77.0349, 77.0844, + 77.0968, 77.1092, 77.1216, 77.1711, 77.1835, + 77.1958, 77.2578, 77.2825, 77.3444, 77.3691, + 77.431, 77.4434, 77.5178, 77.5302, 77.6046, + 77.617, 77.6791, 77.7039, 77.7661, 77.7785, + 77.791, 77.8531, 77.8655, 77.878, 77.9277, + 77.9401, 77.9526, 77.965, 78.0147, 78.0272, + 78.0396, 78.0521, 78.1018, 78.1143, 78.1268, + 78.1393, 78.189, 78.2015, 78.214, 78.2265, + 78.2514, 78.2556, 78.2459, 78.2449, 78.2432, + 78.2416, 78.2388, 78.2383, 78.2406, 78.2406, + 78.2402, 78.2403, 78.2371, 78.2363, 78.2352, + 78.2347, 78.2347, 78.231, 78.2298, 78.2303, + 78.231, 78.2301, 78.23, 78.2291, 78.2277, + 78.228, 78.229, 78.2273, 78.2263, 78.2208, + 78.2219, 78.2215, 78.2186, 78.2185, 78.2107) +ORBIT_NUMBER = 5270 +ORBITAL_ECCENTRICITY = 0.573 +ORBITAL_INCLINATION = 86.74 +ORBITAL_SEMIMAJOR_AXIS = 8712.4 +PERIAPSIS_ALTITUDE = 331.9 +PERIAPSIS_ARGUMENT_ANGLE = 151.2 +PERIAPSIS_TIME = 2008-02-08T12:08:35.000Z +SPACECRAFT_ORIENTATION = (0.0, -1.0, 0.0) +^MEX_ORIENTATION_DESC = MEX_ORIENTATION_DESC.TXT +SPACECRAFT_POINTING_MODE = ACROSSTRACK +^MEX_POINTING_DESC = MEX_POINTING_DESC.TXT +RIGHT_ASCENSION = -1e+32 +DECLINATION = -1e+32 +OFFSET_ANGLE = 0.05 +SPACECRAFT_SOLAR_DISTANCE = 2.42797e+08 +TARGET_NAME = MARS + +/* CAMERA DATA ELEMENTS */ +DETECTOR_TEMPERATURE = 17.351 +FOCAL_PLANE_TEMPERATURE = 7.9716 +INST_CMPRS_NAME = "DISCRETE COSINE TRANSFORMATION (DCT)" +INST_CMPRS_RATIO = 11.2342 +INST_CMPRS_QUALITY = 0 +INST_CMPRS_QUANTZ_TBL_ID = 0 +INSTRUMENT_TEMPERATURE = 11.0301 +LENS_TEMPERATURE = 8.1755 +MACROPIXEL_SIZE = 4 +MISSING_FRAMES = 0 +PIXEL_SUBSAMPLING_FLAG = N +SAMPLE_FIRST_PIXEL = 80 +SIGNAL_CHAIN_ID = 2 + +/* RADIOMETRIC DATA ELEMENTS */ +BANDWIDTH = 81.0 +CENTER_FILTER_WAVELENGTH = 955.5 +RADIANCE_OFFSET = 0.0 +RADIANCE_SCALING_FACTOR = 0.0169353 +REFLECTANCE_SCALING_FACTOR = 0.00215382 + +/* DATA OBJECT DEFINITIONS */ +Object = IMAGE + INTERCHANGE_FORMAT = BINARY + LINES = 400 + LINE_PREFIX_BYTES = 68 + LINE_SAMPLES = 1288 + SAMPLE_TYPE = MSB_INTEGER + SAMPLE_BITS = 16 + BANDS = 1 + BAND_STORAGE_TYPE = BAND_SEQUENTIAL + MAXIMUM = 136 + MEAN = 72.9682 + MINIMUM = 29 + STANDARD_DEVIATION = 17.629 +End_Object + +/* IMAGE HEADER DATA ELEMENTS */ +Object = IMAGE_HEADER + HEADER_TYPE = VICAR2 + INTERCHANGE_FORMAT = ASCII + BYTES = 7932 + ^DESCRIPTION = VICAR2.TXT +End_Object +End +PDS_VERSION_ID = PDS3 + +/* FILE DATA ELEMENTS */ +RECORD_TYPE = FIXED_LENGTH +RECORD_BYTES = 2644 +FILE_RECORDS = 15095 +LABEL_RECORDS = 4 + +/* POINTERS TO DATA OBJECTS */ +^IMAGE_HEADER = 5 +^IMAGE = 8 + +/* IDENTIFICATION DATA ELEMENTS */ +FILE_NAME = H5270_0000_IR2.IMG +DATA_SET_ID = MEX-M-HRSC-3-RDR-V2.0 +DETECTOR_ID = MEX_HRSC_IR +EVENT_TYPE = MARS-REGIONAL-MAPPING-Vo-Te-Im +INSTRUMENT_HOST_ID = MEX +INSTRUMENT_HOST_NAME = "MARS EXPRESS" +INSTRUMENT_ID = HRSC +INSTRUMENT_NAME = "HIGH RESOLUTION STEREO CAMERA" +MISSION_NAME = "MARS EXPRESS" +MISSION_PHASE_NAME = ME_Phase_11 +PROCESSING_LEVEL_ID = 2 +PRODUCT_CREATION_TIME = 2009-04-30T15:19:42.000Z +PRODUCT_ID = H5270_0000_IR2.IMG +RELEASE_ID = 0062 +REVISION_ID = 0000 + +/* TIME DATA ELEMENTS */ +SPACECRAFT_CLOCK_START_COUNT = 1/0150552525.07284 +SPACECRAFT_CLOCK_STOP_COUNT = 1/0150552792.64947 +START_TIME = 2008-02-08T12:08:53.843Z +STOP_TIME = 2008-02-08T12:12:10.561Z + +/* ORBITAL DATA ELEMENTS */ +ASCENDING_NODE_LONGITUDE = 118.52 +MAXIMUM_RESOLUTION = 55.3 +FOOTPRINT_POINT_LATITUDE = (25.9975, 25.9916, 25.9739, 25.85, 25.599, + 25.351, 25.2208, 24.5915, 24.4629, 24.0857, + 23.9617, 22.7055, 22.577, 20.2998, 17.6826, + 17.4193, 17.1598, 13.0429, 13.0429, 13.0427, + 13.0427, 13.0425, 13.0425, 13.0423, 13.0423, + 13.0421, 13.0421, 13.042, 13.042, 13.0418, + 13.0416, 13.0415, 13.0411, 13.0409, 13.0406, + 13.0404, 13.04, 13.0396, 13.0392, 13.0388, + 13.0381, 13.0377, 13.0372, 13.0367, 13.0364, + 13.0362, 13.0357, 13.0354, 13.0353, 13.0348, + 13.0346, 13.0345, 13.0343, 13.0338, 13.0336, + 13.0335, 13.0332, 13.0327, 13.0324, 13.0323, + 13.032, 13.0315, 13.0312, 13.0311, 13.0308, + 13.0306, 13.0314, 17.2063, 17.3388, 17.7327, + 17.8665, 18.0031, 18.1342, 18.2588, 18.6486, + 18.7797, 18.9094, 19.4369, 19.8287, 19.9612, + 20.0923, 20.2223, 21.1159, 21.2444, 21.62, + 21.7442, 21.9976, 22.1232, 22.251, 22.6309, + 22.7559, 22.8791, 23.0084, 23.1362, 24.9031, + 25.151, 25.4021, 25.7834, 25.9087, 25.9975) +FOOTPRINT_POINT_LONGITUDE = (78.2107, 76.9405, 76.9316, 76.9337, 76.9367, + 76.9407, 76.9404, 76.9464, 76.9466, 76.95, + 76.9517, 76.9613, 76.9611, 76.9667, 76.9603, + 76.9585, 76.9579, 76.9246, 76.9359, 76.9483, + 76.9978, 77.0101, 77.0225, 77.0349, 77.0844, + 77.0968, 77.1092, 77.1216, 77.1711, 77.1835, + 77.1958, 77.2578, 77.2825, 77.3444, 77.3691, + 77.431, 77.4434, 77.5178, 77.5302, 77.6046, + 77.617, 77.6791, 77.7039, 77.7661, 77.7785, + 77.791, 77.8531, 77.8655, 77.878, 77.9277, + 77.9401, 77.9526, 77.965, 78.0147, 78.0272, + 78.0396, 78.0521, 78.1018, 78.1143, 78.1268, + 78.1393, 78.189, 78.2015, 78.214, 78.2265, + 78.2514, 78.2556, 78.2459, 78.2449, 78.2432, + 78.2416, 78.2388, 78.2383, 78.2406, 78.2406, + 78.2402, 78.2403, 78.2371, 78.2363, 78.2352, + 78.2347, 78.2347, 78.231, 78.2298, 78.2303, + 78.231, 78.2301, 78.23, 78.2291, 78.2277, + 78.228, 78.229, 78.2273, 78.2263, 78.2208, + 78.2219, 78.2215, 78.2186, 78.2185, 78.2107) +ORBIT_NUMBER = 5270 +ORBITAL_ECCENTRICITY = 0.573 +ORBITAL_INCLINATION = 86.74 +ORBITAL_SEMIMAJOR_AXIS = 8712.4 +PERIAPSIS_ALTITUDE = 331.9 +PERIAPSIS_ARGUMENT_ANGLE = 151.2 +PERIAPSIS_TIME = 2008-02-08T12:08:35.000Z +SPACECRAFT_ORIENTATION = (0.0, -1.0, 0.0) +^MEX_ORIENTATION_DESC = MEX_ORIENTATION_DESC.TXT +SPACECRAFT_POINTING_MODE = ACROSSTRACK +^MEX_POINTING_DESC = MEX_POINTING_DESC.TXT +RIGHT_ASCENSION = -1e+32 +DECLINATION = -1e+32 +OFFSET_ANGLE = 0.05 +SPACECRAFT_SOLAR_DISTANCE = 2.42797e+08 +TARGET_NAME = MARS + +/* CAMERA DATA ELEMENTS */ +DETECTOR_TEMPERATURE = 17.351 +FOCAL_PLANE_TEMPERATURE = 7.9716 +INST_CMPRS_NAME = "DISCRETE COSINE TRANSFORMATION (DCT)" +INST_CMPRS_RATIO = 11.2342 +INST_CMPRS_QUALITY = 0 +INST_CMPRS_QUANTZ_TBL_ID = 0 +INSTRUMENT_TEMPERATURE = 11.0301 +LENS_TEMPERATURE = 8.1755 +MACROPIXEL_SIZE = 4 +MISSING_FRAMES = 0 +PIXEL_SUBSAMPLING_FLAG = N +SAMPLE_FIRST_PIXEL = 80 +SIGNAL_CHAIN_ID = 2 + +/* RADIOMETRIC DATA ELEMENTS */ +BANDWIDTH = 81.0 +CENTER_FILTER_WAVELENGTH = 955.5 +RADIANCE_OFFSET = 0.0 +RADIANCE_SCALING_FACTOR = 0.0169353 +REFLECTANCE_SCALING_FACTOR = 0.00215382 + +/* DATA OBJECT DEFINITIONS */ +Object = IMAGE + INTERCHANGE_FORMAT = BINARY + LINES = 15088 + LINE_PREFIX_BYTES = 68 + LINE_SAMPLES = 1288 + SAMPLE_TYPE = MSB_INTEGER + SAMPLE_BITS = 16 + BANDS = 1 + BAND_STORAGE_TYPE = BAND_SEQUENTIAL + MAXIMUM = 136 + MEAN = 72.9682 + MINIMUM = 29 + STANDARD_DEVIATION = 17.629 +End_Object + +/* IMAGE HEADER DATA ELEMENTS */ +Object = IMAGE_HEADER + HEADER_TYPE = VICAR2 + INTERCHANGE_FORMAT = ASCII + BYTES = 7932 + ^DESCRIPTION = VICAR2.TXT +End_Object +End diff --git a/tests/pytests/data/h5270_0000_ir2/hrscAddendum004.ti b/tests/pytests/data/h5270_0000_ir2/hrscAddendum004.ti new file mode 100644 index 000000000..5b1d40db6 --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/hrscAddendum004.ti @@ -0,0 +1,233 @@ +HRSC Instrument Kernel +============================================================= + +This instrument kernel (I-kernel) contains parameters that +describe the Mars Express HRSC (High Resolution +Stereographic Camera) instrument. + +Version and Date +------------------------------------------------------------- +Version 4.0 -- March 23, 2010 -- Debbie Cook, U.S. Geological Survey, + Flagstaff, AZ + Added new keywords CK_FRAME_ID and CK_REFERENCE_FRAME_ID needed for ckwriter.. + +Version 3.0 -- June 05, 2009 -- Ken Edmundson, U.S. Geological Survey, + Flagstaff, AZ + Corrected additional errors in coefficients and updated documentation. + +Version 2.0 -- May 07, 2009 -- Ken Edmundson, U.S. Geological Survey, + Flagstaff, AZ + Modified focal lengths, "boresight" values, and forward/reverse affine + transformation coefficients. The focal lengths and boresight values + in Version 1.0 were specific to Socet Set instead of Isis. There were + also errors in the computation of the affine transformation + coefficients. The first indication that there was a problem with Version + 1.0 was in the Isis Support Center post of 2008-11-11 by Angelo Pio + entitled "HRSC anaglyphs with isis3 from level1 data?" + (http://isis.astrogeology.usgs.gov/IsisSupport/viewtopic.php?t=1852&highlight=anaglyph) + +Version 1.0 -- July 28, 2008 -- Steven Lambright, U.S. Geological Survey, + Flagstaff, AZ + Initial version. + +------------------------------------------------------------- + +\begindata +INS-41210_PLATFORM_ID = -41000 + +INS-41210_SPK_TIME_BIAS = 0.0 +INS-41210_CK_TIME_BIAS = 0.0 +INS-41210_CK_TIME_TOLERANCE = 1 + +\begintext +The following is the focal length, which is expressed in MILLIMETERS. +This value comes from Randy Kirk's file HRSC_cal_RLK.xls referenced +in his May 23rd, 2008 email (no subject). + +\begindata + +INS-41211_FOCAL_LENGTH = 174.80 +INS-41212_FOCAL_LENGTH = 174.61 +INS-41213_FOCAL_LENGTH = 174.74 +INS-41214_FOCAL_LENGTH = 175.01 +INS-41215_FOCAL_LENGTH = 175.01 +INS-41216_FOCAL_LENGTH = 175.23 +INS-41217_FOCAL_LENGTH = 174.80 +INS-41218_FOCAL_LENGTH = 174.82 +INS-41219_FOCAL_LENGTH = 174.87 + +INS-41211_BORESIGHT_SAMPLE = 2592.5 +INS-41211_BORESIGHT_LINE = 0.0 +INS-41212_BORESIGHT_SAMPLE = 2592.5 +INS-41212_BORESIGHT_LINE = 0.0 +INS-41213_BORESIGHT_SAMPLE = 2592.5 +INS-41213_BORESIGHT_LINE = 0.0 +INS-41214_BORESIGHT_SAMPLE = 2592.5 +INS-41214_BORESIGHT_LINE = 0.0 +INS-41215_BORESIGHT_SAMPLE = 2592.5 +INS-41215_BORESIGHT_LINE = 0.0 +INS-41216_BORESIGHT_SAMPLE = 2592.5 +INS-41216_BORESIGHT_LINE = 0.0 +INS-41217_BORESIGHT_SAMPLE = 2592.5 +INS-41217_BORESIGHT_LINE = 0.0 +INS-41218_BORESIGHT_SAMPLE = 2592.5 +INS-41218_BORESIGHT_LINE = 0.0 +INS-41219_BORESIGHT_SAMPLE = 2592.5 +INS-41219_BORESIGHT_LINE = 0.0 + +\begintext +The following is the pixel pitch, which is the distance between +adjacent pixels on the CCD arrays. This is expressed in +MILLIMETERS per pixel. + +\begindata +INS-41210_PIXEL_PITCH = 0.007 +INS-41210_OD_K = (0.0, 0.0, 0.0) + +\begintext +The following affine transformation computes focal plane +coordinates (x,y) from CCD coordinates (Line,Sample). The +affine coefficients are given by transx[0,1,2] and transy[0,1,2] + +x = transx[0] + transx[1]*ccdSample_c + transx[2]*ccdLine_c +y = transy[0] + transy[1]*ccdSample_c + transy[2]*ccdLine_c + +The affine coefficients are calculated as follows: + +TRANSX (0) = (So-Smid) * cos(theta) * PixelPitch + +TRANSX (1) = -cos(theta) * PixelPitch + +TRANSX (2) = sin(theta) * PixelPitch + +TRANSY (0) = Y0 - (So-Smid) * sin(theta) * PixelPitch + +TRANSY (1) = sin(theta) * PixelPitch + +TRANSY (2) = cos(theta) * PixelPitch + +where + +Smid = Boresight +PixelPitch = 0.007mm +Yo = offset of the line array along the Y axis (mm) from the xyz origin +So = Sample number where the detector crosses the Y axis (at x = 0, y = Y0) + +Values for Yo, So, and theta are given in the table below. + + +Instrument | description |theta radians (degrees) | So (sample) | Yo (mm) | +===========|==========================|========================|=============|===========| +INS-41211 | MEX_HRSC_S2 (aft stereo) | 0.00011 (0.0063) | 2588.7635 | -59.9927 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41212 | MEX_HRSC_RED (red) | -0.00004 (-0.00229) | 2585.3891 | -49.7678 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41213 | MEX_HRSC_P2 (aft photo) | -0.00034 (-0.01948) | 2589.3140 | -39.5483 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41214 | MEX_HRSC_BLUE (blue) | 0.00019 (0.01089) | 2602.0075 | -10.2417 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41215 | MEX_HRSC_NADIR (nadir) | -0.00006 (-0.00344) | 2597.3376 | -0.0055 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41216 | MEX_HRSC_GREEN (green) | 0.00095 (0.05443) | 2598.8432 | 10.2130 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41217 | MEX_HRSC_P1 (fwd photo) | 0.00021 (0.01203) | 2597.1421 | 39.5531 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41218 | MEX_HRSC_IR (infra-red) | 0.00044 (0.02521) | 2594.8517 | 49.7918 | +-----------|--------------------------|------------------------|-------------|-----------| +INS-41219 | MEX_HRSC_S1 (fwd stereo) | 0.00048 (0.02750) | 2595.9317 | 59.9869 | +-----------|--------------------------|------------------------|-------------|-----------| + + + +\begindata + INS-41211_TRANSX=(-0.026155499841886, -0.006999999957684, 0.0000007696901985785) + INS-41211_TRANSY=(-59.9926971240526, 0.0000007696901985785, 0.006999999957684) + INS-41212_TRANSX=(-0.049776299960244, -0.006999999994409, -0.0000002797762790202) + INS-41212_TRANSY=(-49.7678019894611, -0.0000002797762790202, 0.006999999994409) + INS-41213_TRANSX=(-0.022301998711020, -0.006999999595423, -0.000002379930922169) + INS-41213_TRANSY=(-39.5483075824599, -0.000002379930922169, 0.006999999595423) + INS-41214_TRANSX=(0.066552498797889, -0.006999999873562, 0.000001330464480785) + INS-41214_TRANSY=(-10.2417126493911, 0.000001330464480785, 0.006999999873562) + INS-41215_TRANSX=(0.033863199938965, -0.006999999987383, -0.0000004202752836277) + INS-41215_TRANSY=(-0.005497966876288, -0.0000004202752836277, 0.006999999987383) + INS-41216_TRANSX=(0.044402379964146, -0.006999996841365, 0.000006649877982807) + INS-41216_TRANSY=(10.212957818494, 0.000006649877982807, 0.006999996841365) + INS-41217_TRANSX=(0.032494699283744, -0.006999999845704, 0.000001469741752306) + INS-41217_TRANSY=(39.5530931773118, 0.000001469741752306, 0.006999999845704) + INS-41218_TRANSX=(0.016461898406507, -0.006999999322408, 0.000003079982431615) + INS-41218_TRANSY=(49.7917927568053, 0.000003079982431615, 0.006999999322408) + INS-41219_TRANSX=(0.024021897233075, -0.006999999193716, 0.000003359758681093) + INS-41219_TRANSY=(59.9868884703161, 0.000003359758681093, 0.006999999193716) + +\begintext +The inverse transformation computes CCD coordinates (Line,Sample) given +focal plane coordinates (x,y). + +The coefficients of the inverse transform are calculated as follows: + + +TRANSS (0) = (So-Smid) - Y0 * sin(theta) / PixelPitch + +TRANSS (1) = -cos(theta) / PixelPitch + +TRANSS (2) = sin(theta) / PixelPitch + +TRANSL (0) = -Y0 * cos(theta) / PixelPitch + +TRANSL (1) = sin(theta) / PixelPitch + +TRANSL (2) = cos(theta) / PixelPitch + + +\begindata + INS-41211_ITRANSS = (-2.7941368739538, -142.857141993552, 0.015707963236297) + INS-41211_ITRANSL = (8570.3856624766, 0.015707963236297, 142.857141993552) + INS-41212_ITRANSS = (-7.39506020202098, -142.85714274304, -0.005709719980004) + INS-41212_ITRANSL = (7109.68570860705, -0.005709719980004, 142.85714274304) + INS-41213_ITRANSS = (-5.10686167529011, -142.857134600479, -0.048570018819771) + INS-41213_ITRANSL = (5649.75681632013, -0.048570018819771, 142.857134600479) + INS-41214_ITRANSS = (9.78558608311961, -142.85714027677, 0.027152336342545) + INS-41214_ITRANSL = (1463.0999735726, 0.027152336342545, 142.85714027677) + INS-41215_ITRANSS = (4.83755282624351, -142.857142599663, -0.008577046604648) + INS-41215_ITRANSL = (0.785714284298145, -0.008577046604648, 142.857142599663) + INS-41216_ITRANSS = (4.95717543186894, -142.857078395208, 0.135711795567498) + INS-41216_ITRANSL = (-1458.99934165026, 0.135711795567498, 142.857078395208) + INS-41217_ITRANSS = (3.45571545912004, -142.857139708249, 0.029994729638890) + INS-41217_ITRANSL = (-5650.44273259436, 0.029994729638890, 142.857139708249) + INS-41218_ITRANSS = (-0.778052433438109, -142.857129028729, 0.062856784318668) + INS-41218_ITRANSL = (-7113.11359717265, 0.062856784318668, 142.857129028729) + INS-41219_ITRANSS = (-0.681392000547864, -142.857126402363, 0.068566503695773) + INS-41219_ITRANSL = (-8569.5561557859, 0.068566503695773, 142.857126402363) + +\begintext +These are the parameters required for writing c-kernels. Isis will +create ck with the same frame endpoints as the mission ck. For +the Mars Express spacecraft the ck frame is MEX_SC_REF (-41001), and the +ck reference frame is J2000 (1). + +\begindata +INS-41211_CK_FRAME_ID=-41001 +INS-41211_CK_REFERENCE_ID=1 +INS-41212_CK_FRAME_ID=-41001 +INS-41212_CK_REFERENCE_ID=1 +INS-41213_CK_FRAME_ID=-41001 +INS-41213_CK_REFERENCE_ID=1 +INS-41214_CK_FRAME_ID=-41001 +INS-41214_CK_REFERENCE_ID=1 +INS-41215_CK_FRAME_ID=-41001 +INS-41215_CK_REFERENCE_ID=1 +INS-41216_CK_FRAME_ID=-41001 +INS-41216_CK_REFERENCE_ID=1 +INS-41217_CK_FRAME_ID=-41001 +INS-41217_CK_REFERENCE_ID=1 +INS-41218_CK_FRAME_ID=-41001 +INS-41218_CK_REFERENCE_ID=1 +INS-41219_CK_FRAME_ID=-41001 +INS-41219_CK_REFERENCE_ID=1 + + + + + + + diff --git a/tests/pytests/data/h5270_0000_ir2/naif0012.tls b/tests/pytests/data/h5270_0000_ir2/naif0012.tls new file mode 100644 index 000000000..e1afdee1b --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/naif0012.tls @@ -0,0 +1,152 @@ +KPL/LSK + + +LEAPSECONDS KERNEL FILE +=========================================================================== + +Modifications: +-------------- + +2016, Jul. 14 NJB Modified file to account for the leapsecond that + will occur on December 31, 2016. + +2015, Jan. 5 NJB Modified file to account for the leapsecond that + will occur on June 30, 2015. + +2012, Jan. 5 NJB Modified file to account for the leapsecond that + will occur on June 30, 2012. + +2008, Jul. 7 NJB Modified file to account for the leapsecond that + will occur on December 31, 2008. + +2005, Aug. 3 NJB Modified file to account for the leapsecond that + will occur on December 31, 2005. + +1998, Jul 17 WLT Modified file to account for the leapsecond that + will occur on December 31, 1998. + +1997, Feb 22 WLT Modified file to account for the leapsecond that + will occur on June 30, 1997. + +1995, Dec 14 KSZ Corrected date of last leapsecond from 1-1-95 + to 1-1-96. + +1995, Oct 25 WLT Modified file to account for the leapsecond that + will occur on Dec 31, 1995. + +1994, Jun 16 WLT Modified file to account for the leapsecond on + June 30, 1994. + +1993, Feb. 22 CHA Modified file to account for the leapsecond on + June 30, 1993. + +1992, Mar. 6 HAN Modified file to account for the leapsecond on + June 30, 1992. + +1990, Oct. 8 HAN Modified file to account for the leapsecond on + Dec. 31, 1990. + + +Explanation: +------------ + +The contents of this file are used by the routine DELTET to compute the +time difference + +[1] DELTA_ET = ET - UTC + +the increment to be applied to UTC to give ET. + +The difference between UTC and TAI, + +[2] DELTA_AT = TAI - UTC + +is always an integral number of seconds. The value of DELTA_AT was 10 +seconds in January 1972, and increases by one each time a leap second +is declared. Combining [1] and [2] gives + +[3] DELTA_ET = ET - (TAI - DELTA_AT) + + = (ET - TAI) + DELTA_AT + +The difference (ET - TAI) is periodic, and is given by + +[4] ET - TAI = DELTA_T_A + K sin E + +where DELTA_T_A and K are constant, and E is the eccentric anomaly of the +heliocentric orbit of the Earth-Moon barycenter. Equation [4], which ignores +small-period fluctuations, is accurate to about 0.000030 seconds. + +The eccentric anomaly E is given by + +[5] E = M + EB sin M + +where M is the mean anomaly, which in turn is given by + +[6] M = M + M t + 0 1 + +where t is the number of ephemeris seconds past J2000. + +Thus, in order to compute DELTA_ET, the following items are necessary. + + DELTA_TA + K + EB + M0 + M1 + DELTA_AT after each leap second. + +The numbers, and the formulation, are taken from the following sources. + + 1) Moyer, T.D., Transformation from Proper Time on Earth to + Coordinate Time in Solar System Barycentric Space-Time Frame + of Reference, Parts 1 and 2, Celestial Mechanics 23 (1981), + 33-56 and 57-68. + + 2) Moyer, T.D., Effects of Conversion to the J2000 Astronomical + Reference System on Algorithms for Computing Time Differences + and Clock Rates, JPL IOM 314.5--942, 1 October 1985. + +The variable names used above are consistent with those used in the +Astronomical Almanac. + +\begindata + +DELTET/DELTA_T_A = 32.184 +DELTET/K = 1.657D-3 +DELTET/EB = 1.671D-2 +DELTET/M = ( 6.239996D0 1.99096871D-7 ) + +DELTET/DELTA_AT = ( 10, @1972-JAN-1 + 11, @1972-JUL-1 + 12, @1973-JAN-1 + 13, @1974-JAN-1 + 14, @1975-JAN-1 + 15, @1976-JAN-1 + 16, @1977-JAN-1 + 17, @1978-JAN-1 + 18, @1979-JAN-1 + 19, @1980-JAN-1 + 20, @1981-JUL-1 + 21, @1982-JUL-1 + 22, @1983-JUL-1 + 23, @1985-JUL-1 + 24, @1988-JAN-1 + 25, @1990-JAN-1 + 26, @1991-JAN-1 + 27, @1992-JUL-1 + 28, @1993-JUL-1 + 29, @1994-JUL-1 + 30, @1996-JAN-1 + 31, @1997-JUL-1 + 32, @1999-JAN-1 + 33, @2006-JAN-1 + 34, @2009-JAN-1 + 35, @2012-JUL-1 + 36, @2015-JUL-1 + 37, @2017-JAN-1 ) + +\begintext + + diff --git a/tests/pytests/data/h5270_0000_ir2/pck00009.tpc b/tests/pytests/data/h5270_0000_ir2/pck00009.tpc new file mode 100644 index 000000000..bfadaab2b --- /dev/null +++ b/tests/pytests/data/h5270_0000_ir2/pck00009.tpc @@ -0,0 +1,3639 @@ +KPL/PCK + + +P_constants (PcK) SPICE kernel file +=========================================================================== + + By: Nat Bachman (NAIF) 2010 March 3 + + +Purpose +-------------------------------------------------------- + + This file makes available for use in SPICE-based application + software orientation and size/shape data for natural bodies. The + principal source of the data is a published report by the IAU/IAG + Working Group on Cartographic Coordinates and Rotational Elements [1]. + + Orientation and size/shape data not provided by this file may be + available in mission-specific PCK files. Such PCKs may be the preferred + data source for mission-related applications. Mission-specific PCKs can + be found in PDS archives or on the NAIF web site at URL: + + http://naif.jpl.nasa.gov + + +File Organization +-------------------------------------------------------- + + The contents of this file are as follows. + + Introductory Information: + + -- Purpose + + -- File Organization + + -- Version description + + -- Disclaimer + + -- Sources + + -- Explanatory notes + + -- Body numbers and names + + + PcK Data: + + + Orientation Data + ---------------- + + -- Orientation constants for the Sun and planets. + Additional items included in this section: + + - Earth north geomagnetic centered dipole values + for epochs 1945-2000 + + - Mars prime meridian offset "lambda_a" + + -- Orientation constants for satellites + + -- Orientation constants for asteroids Eros, Gaspra, Ida, + Itokawa, and Vesta + + -- Orientation constants for comets 19P/Borrelly + and 9P/Tempel 1 + + + Radii of Bodies + --------------- + + -- Radii of Sun and planets + + -- Radii of satellites, where available + + -- Radii of asteroids Ceres, Eros, Gaspra, Ida, Itokawa, + Mathilde, Toutatis, and Vesta. + + -- Radii of comets 19P/Borrelly, Halley, 9P/Tempel 1, + and 81P/Wild 2 + + + +Version Description +-------------------------------------------------------- + + This file was created on March 3, 2010. This version + incorporates data from reference [1]. + + This file contains size, shape, and orientation data for all + objects described by the previous version of the file, except + for Kleopatra: a shape model for this body is not provided in [1] + because, according to this source, it had been "modeled from + low resolution radar data, and cannot be mapped from those + data." + + New objects covered by this file but not the previous + version are: + + 19P/Borrelly + Halley + 9P/Tempel 1 + 81P/Wild 2 + Ceres + Itokawa + Mathilde + Toutatis + + +Disclaimer +-------------------------------------------------------- + +Applicability of Data + + This P_constants file may not contain the parameter values that + you prefer. NAIF suggests that you inspect this file visually + before proceeding with any critical or extended data processing. + +File Modifications by Users + + Note that this file may be readily modified by you to change + values or add/delete parameters. NAIF requests that you update the + "by line," date, and version description section if you modify + this file. + +Known Limitations and Caveats + + Accuracy + -------- + + In general, the orientation models given here are claimed by the + IAU/IAG Working Group Report [1] to be accurate to 0.1 degree + ([1], p.158). However, NAIF notes that orientation models for + natural satellites and asteroids have in some cases changed + substantially with the availability of new observational data, so + users are urged to investigate the suitability for their + applications of the models presented here. + + Earth orientation + ----------------- + + NAIF strongly cautions against using the earth rotation model + (from [1]) for work demanding high accuracy. This model has been + determined by NAIF to have an error in the prime meridian location + of magnitude at least 150 arcseconds, with a local minimum + occurring during the year 1999. Regarding availability of better + earth orientation data for use with the SPICE system: + + Earth orientation data are available from NAIF in the form of + binary earth PCK files. NAIF employs an automated process to + create these files; each time JPL's Tracking Systems and + Applications Section produces a new earth orientation parameter + (EOP) file, a new PCK is produced. These PCKs cover a roughly + 10 year time span starting at Jan. 1, 2000. In these PCK files, + the following effects are accounted for in modeling the earth's + rotation: + + - Precession: 1976 IAU model + + - Nutation: 1980 IAU model, plus interpolated + EOP nutation corrections + + - Polar motion: interpolated from EOP file + + - True sidereal time: + + UT1 - UT1R (if needed): given by analytic formula + + TAI - UT1 (or UT1R): interpolated from EOP file + + UT1 - GMST: given by analytic formula + + equation of equinoxes: given by analytic formula + + where + + TAI = International Atomic Time + UT1 = Greenwich hour angle of computed mean sun - 12h + UT1R = Regularized UT1 + GMST = Greenwich mean sidereal time + + These kernels are available from the NAIF web site + + http://naif.jpl.nasa.gov + + (follow the links to Data, generic_kernels, and PCK data) or + + ftp://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck + + or via anonymous ftp from the server + + naif.jpl.nasa.gov + + The kernels are in the path + + pub/naif/generic_kernels/pck + + At this time, these kernels have file names of the form + + earth_000101_yymmdd_yymmdd.bpc + + The second and third dates are, respectively, the file's + coverage end time and the epoch of the last datum. + + These binary PCK files are very accurate (error < 0.1 + microradian) for epochs preceding the epoch of the last datum. + For later epochs, the error rises to several microradians. + + Binary PCK files giving accurate earth orientation from 1972 to + 2007 and *low accuracy* predicted earth orientation from + 2007 to 2037 are also available in the same location. See the + aareadme.txt file at the "pck" URL above for details. + + Characteristics and names of the binary kernels described here + are subject to change. See the "pck" URL above for information + on current binary earth PCKs. + + + Lunar orientation + ----------------- + + The lunar orientation formula provided by this file is a + trigonometric polynomial approximation yielding the orientation of + the lunar "Mean Earth/Polar Axis" (ME) reference frame. A more + accurate approximation can be obtained by using both the NAIF + lunar frame kernel and the binary lunar orientation PCK file, + which are available on the NAIF web site (see URLS above) + and in the NAIF server's ftp area. The lunar frame kernel + is located in the path + + pub/naif/generic_kernels/fk/satellites + + and has a name of the form + + moon_yymmdd.tf + + The binary lunar PCK is in the path + + pub/naif/generic_kernels/pck + + and has a name of the form + + moon_pa_dennn_yyyy-yyyy.bpc + + See the "aareadme.txt" files in the paths shown above for details + on file contents and versions. We also suggest you refer to the + SPICE tutorial named "lunar_earth_pck-fk," which is available from + the NAIF web site. + + + Earth geomagnetic dipole + ------------------------ + + The SPICE Toolkit doesn't currently contain software to model the + earth's north geomagnetic centered dipole as a function of time. + As a convenience for users, the north dipole location from the + J2000 epoch was selected as a representative datum, and the + planetocentric longitude and latitude of this location have been + associated with the keywords + + BODY399_N_GEOMAG_CTR_DIPOLE_LON + BODY399_N_GEOMAG_CTR_DIPOLE_LAT + + Values for the earth's north geomagnetic centered dipole are + presented in comments as a discrete time series for the time range + 1945-2000. For details concerning the geomagnetic field model from + which these values were derived, including a discussion of the + model's accuracy, see [9]. + + + Mars prime meridian offset + -------------------------- + + The Mars prime meridian offset given by [5] is not used by + SPICE geometry software for computations involving the shape + of Mars (for example, in sub-observer point or surface intercept + computations). The value is provided for informational + purposes only. + + + Software limitations + -------------------- + + SPICE Toolkits prior to version N0057 cannot make use of + trigonometric polynomial terms in the formulas for orientation of + the planets. The only planets for which such terms are used are + Jupiter and Neptune. Use of trigonometric polynomial terms for + natural satellites is and has been supported for all SPICE Toolkit + versions. + + The second nutation precession angle (M2) for Mars is represented + by a quadratic polynomial in the 2006 IAU report. The SPICELIB + subroutine BODEUL can not handle this term (which is extremely + small), so we truncate the polynomial to a linear one. The + resulting orientation error has a maximum magnitude of less + than 0.0032 degrees over the time span 1996-2015 and less than + 0.0082 degrees over the time span 1986-2025. + + +Sources +-------------------------------------------------------- + + The sources for the constants listed in this file are: + + + [1] Seidelmann, P.K., Archinal, B.A., A'Hearn, M.F., + Conrad, A., Consolmagno, G.J., Hestroffer, D., + Hilton, J.L., Krasinsky, G.A., Neumann, G., + Oberst, J., Stooke, P., Tedesco, E.F., Tholen, D.J., + and Thomas, P.C. "Report of the IAU/IAG Working Group + on cartographic coordinates and rotational elements: 2006." + + [2] Seidelmann, P.K., Archinal, B.A., A'Hearn, M.F., + Cruikshank, D.P., Hilton, J.L., Keller, H.U., Oberst, J., + Simon, J.L., Stooke, P., Tholen, D.J., and Thomas, P.C. + "Report of the IAU/IAG Working Group on Cartographic + Coordinates and Rotational Elements of the Planets and + Satellites: 2003." + + [3] Nautical Almanac Office, United States Naval Observatory + and H.M. Nautical Almanac Office, Rutherford Appleton + Laboratory (2010). "The Astronomical Almanac for + the Year 2010," U.S. Government Printing Office, + Washington, D.C.: and The Stationary Office, London. + + [4] Nautical Almanac Office, United States Naval Observatory, + H.M. Nautical Almanac Office, Royal Greenwich + Observatory, Jet Propulsion Laboratory, Bureau des + Longitudes, and The Time Service and Astronomy + Departments, United States Naval Observatory (1992). + "Explanatory Supplement to the Astronomical Almanac," P. + Kenneth Seidelmann, ed. University Science Books, 20 + Edgehill Road, Mill Valley, CA 9494. + + [5] Duxbury, Thomas C. (2001). "IAU/IAG 2000 Mars Cartographic + Conventions," presentation to the Mars Express Data + Archive Working Group, Dec. 14, 2001. + + [6] Russell, C.T. and Luhmann, J.G. (1990). "Earth: Magnetic + Field and Magnetosphere." . Originally + published in "Encyclopedia of Planetary Sciences," J.H. + Shirley and R.W. Fainbridge, eds. Chapman and Hall, + New York, pp 208-211. + + [7] Russell, C.T. (1971). "Geophysical Coordinate + Transformations," Cosmic Electrodynamics 2 184-186. + NAIF document 181.0. + + [8] ESA/ESTEC Space Environment Information System (SPENVIS) + (2003). Web page: "Dipole approximations of the + geomagnetic field." . + + [9] International Association of Geomagnetism and Aeronomy + and International Union of Geodesy and Geophysics (2004). + Web page: "The 9th Generation International Geomagnetic + Reference Field." . + + [10] Davies, M.E., Abalakin, V.K., Bursa, M., Hunt, G.E., + and Lieske, J.H. (1989). "Report of the IAU/IAG/COSPAR + Working Group on Cartographic Coordinates and Rotational + Elements of the Planets and Satellites: 1988," Celestial + Mechanics and Dynamical Astronomy, v.46, no.2, pp. + 187-204. + + + Most values are from [1]. All exceptions are + commented where they occur in this file. The exceptions are: + + + -- Radii for the Sun are from [3]. + + -- The second nutation precession angle (M2) for Mars is + represented by a quadratic polynomial in the 2000 + IAU report. The SPICELIB subroutine BODEUL can not + handle this term (which is extremely small), so we + truncate the polynomial to a linear one. + + -- Earth north geomagnetic centered dipole values are from + [8]. The article [6] was used to check most of + these values, and the values were also re-computed from + the 9th generation IGRF [9] by Nat Bachman. + + -- The Mars prime meridian offset angle is from [5]. + + + "Old values" listed are from the SPICE P_constants file + pck00008.tpc dated September 21, 2004. Most of these values came + from the 2003 IAU report [2]. + + + + +Explanatory Notes +-------------------------------------------------------- + + This file, which is logically part of the SPICE P-kernel, contains + constants used to model the orientation, size and shape of the + Sun, planets, natural satellites, and selected comets and + asteroids. The orientation models express the direction of the + pole and location of the prime meridian of a body as a function of + time. The size/shape models ("shape models" for short) represent + all bodies as ellipsoids, using two equatorial radii and a polar + radius. Spheroids and spheres are obtained when two or all three + radii are equal. + + The SPICE Toolkit routines that use this file are documented in + the SPICE "Required Reading" file pck.req. They are also + documented in the "PCK" SPICE tutorial, which is available on + the NAIF web site. + +File Format + + A terse description of the PCK file format is given here. See the + SPICE "Required Reading" files pck.req and kernel.req for a + detailed explanation of the SPICE text kernel file format. The + files pck.req and kernel.req are included in the documentation + provided with the SPICE Toolkit. + + The file starts out with the ``ID word'' string + + KPL/PCK + + This string identifies the file as a text kernel containing PCK + data. + + This file consists of a series of comment blocks and data blocks. + Comment blocks, which contain free-form descriptive or explanatory + text, are preceded by a \begintext token. Data blocks follow a + \begindata token. In order to be recognized, each of these tokens + must be placed on a line by itself. + + The portion of the file preceding the first data block is treated + as a comment block; it doesn't require an initial \begintext + token. + + This file identifies data using a series of + + KEYWORD = VALUE + + assignments. The left hand side of each assignment is a + "kernel variable" name; the right hand side is an associated value + or list of values. The SPICE subroutine API allows SPICE routines + and user applications to retrieve the set of values associated + with each kernel variable name. + + Kernel variable names are case-sensitive and are limited to + 32 characters in length. + + Numeric values may be integer or floating point. String values + are normally limited to 80 characters in length; however, SPICE + provides a mechanism for identifying longer, "continued" strings. + See the SPICE routine STPOOL for details. + + String values are single quoted. + + When the right hand side of an assignment is a list of values, + the list items may be separated by commas or simply by blanks. + The list must be bracketed by parentheses. Example: + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + Any blanks preceding or following keyword names, values and equal + signs are ignored. + + Assignments may be spread over multiple lines, for example: + + BODY399_RADII = ( 6378.14 + 6378.14 + 6356.75 ) + + This file may contain blank lines anywhere. Non-printing + characters including TAB should not be present in the file: the + presence of such characters may cause formatting errors when the + file is viewed. + +Time systems and reference frames + + The 2006 IAU/IAG Working Group Report [1] states the time scale + used as the independent variable for the rotation formulas is + Barycentric Dynamical Time (TDB) and that the epoch of variable + quantities is J2000 TDB (2000 Jan 1 12:00 TDB). Throughout SPICE + documentation and in this file, we use the names "J2000 TDB" and + "J2000" for this epoch. The name "J2000.0" is equivalent. + + SPICE documentation refers to the time system used in this file + as either "ET" or "TDB." SPICE software makes no distinction + between TDB and the time system associated with the independent + variable of the JPL planetary ephemerides T_eph. + + The inertial reference frame used for the rotational elements in + this file is identified by [1] as the ICRF (International + Celestial Reference Frame). + + The SPICE PCK software that reads this file uses the label "J2000" + to refer to the ICRF; this is actually a mislabeling which has + been retained in the interest of backward compatibility. Using + data from this file, by means of calls to the SPICE frame + transformation routines, will actually compute orientation + relative to the ICRF. + + The difference between the J2000 frame and the ICRF is + on the order of tens of milliarcseconds and is well below the + accuracy level of the formulas in this file. + +Orientation models + + All of the orientation models use three Euler angles to describe + the orientation of the coordinate axes of the "Body Equator and + Prime Meridian" system with respect to an inertial system. By + default, the inertial system is the ICRF (labeled as "J2000"), but + other frames can be specified in the file. See the PCK Required + Reading for details. + + The first two angles, in order, are the ICRF right ascension and + declination (henceforth RA and DEC) of the north pole of a body as + a function of time. The third angle is the prime meridian location + (represented by "W"), which is expressed as a rotation about the + north pole, and is also a function of time. + + For each body, the expressions for the north pole's right + ascension and declination, as well as prime meridian location, are + sums (as far as the models that appear in this file are concerned) + of quadratic polynomials and trigonometric polynomials, where the + independent variable is time. + + In this file, the time arguments in expressions always refer to + Barycentric Dynamical Time (TDB), measured in centuries or days + past a reference epoch. By default, the reference epoch is the + J2000 epoch, which is Julian ephemeris date 2451545.0, but other + epochs can be specified in the file. See the PCK Required Reading + for details. + + Orientation models for satellites and some planets (including + Jupiter) involve both polynomial terms and trigonometric terms. + The arguments of the trigonometric terms are linear polynomials. + In this file, we call the arguments of these trigonometric terms + "nutation precession angles." + + Example: 2006 IAU Model for orientation of Jupiter. Note that + these values are used as an example only; see the data area below + for current values. + + Right ascension + --------------- + + alpha = 268.056595 - 0.006499 T + 0.000117 sin(Ja) + 0 + 0.000938 sin(Jb) + 0.001432 sin(Jc) + + 0.000030 sin(Jd) + 0.002150 sin(Je) + + Declination + ----------- + + delta = 64.495303 + 0.002413 T + 0.000050 cos(Ja) + 0 + 0.000404 cos(Jb) + 0.000617 cos(Jc) + - 0.000013 cos(Jd) + 0.000926 cos(Je) + + Prime meridian + -------------- + + W = 284.95 + 870.5366420 d + + + Here + + T represents centuries past J2000 ( TDB ), + + d represents days past J2000 ( TDB ). + + Ja-Je are nutation precession angles. + + In this file, the polynomials' coefficients above are assigned + to kernel variable names (left-hand-side symbols) as follows + + BODY599_POLE_RA = ( 268.056595 -0.006499 0. ) + BODY599_POLE_DEC = ( 64.495303 0.002413 0. ) + BODY599_PM = ( 284.95 870.5366420 0. ) + + and the trigonometric polynomials' coefficients are assigned + as follows + + BODY599_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000117 + 0.000938 + 0.001432 + 0.000030 + 0.002150 ) + + BODY599_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000050 + 0.000404 + 0.000617 + -0.000013 + 0.000926 ) + + BODY599_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0 + 0.0 + 0.0 + 0.0 + 0.0 ) + + Note the number "599"; this is the NAIF ID code for Jupiter. + + In this file, the polynomial expressions for the nutation + precession angles are listed along with the planet's RA, DEC, and + prime meridian terms. Below are the 2006 IAU nutation precession + angles for the Jupiter system. + + J1 = 73.32 + 91472.9 T + J2 = 24.62 + 45137.2 T + J3 = 283.90 + 4850.7 T + J4 = 355.80 + 1191.3 T + J5 = 119.90 + 262.1 T + J6 = 229.80 + 64.3 T + J7 = 352.25 + 2382.6 T + J8 = 113.35 + 6070.0 T + + J9 = 146.64 + 182945.8 T + J10 = 49.24 + 90274.4 T + + Ja = 99.360714 + 4850.4046 T + Jb = 175.895369 + 1191.9605 T + Jc = 300.323162 + 262.5475 T + Jd = 114.012305 + 6070.2476 T + Je = 49.511251 + 64.3000 T + + Here + + T represents centuries past J2000 ( TDB ) + + J1-J10 and Ja-Je are the nutation precession angles. The angles + J9 and J10 are equal to 2*J1 and 2*J2, respectively. + + Angles J9 and J10 are not present in [1]; they have been added + to fit the terms 2*J1 and 2*J2, which appear in the orientation + models of several satellites, into a form that can be accepted + by the PCK system. + + The assignment of the nutation precession angles for the + Jupiter system is as follows: + + BODY5_NUT_PREC_ANGLES = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.25 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 + 99.360714 4850.4046 + 175.895369 1191.9605 + 300.323162 262.5475 + 114.012305 6070.2476 + 49.511251 64.3000 ) + + You'll see an additional symbol grouped with the ones listed + above; it is + + BODY599_LONG_AXIS + + This term is zero for all bodies except Mars. It represents the + angular offset between the meridian containing the longest axis of + the triaxial ellipsoid used to model a body's surface and the + prime meridian of the body. + + The pattern of the formulas for satellite orientation is similar + to that for Jupiter. Example: 2006 IAU values for Io. Again, these + values are used as an example only; see the data area below for + current values. + + Right ascension + --------------- + + alpha = 268.05 - 0.009 T + 0.094 sin(J3) + 0.024 sin(J4) + 0 + + Declination + ----------- + + delta = 64.50 + 0.003 T + 0.040 cos(J3) + 0.011 cos(J4) + 0 + + Prime meridian + -------------- + + W = 200.39 + 203.4889538 d - 0.085 sin(J3) - 0.022 sin(J4) + + + d represents days past J2000. + + J3 and J4 are nutation precession angles. + + The polynomial terms are assigned to symbols by the statements + + BODY501_POLE_RA = ( 268.05 -0.009 0. ) + BODY501_POLE_DEC = ( 64.50 0.003 0. ) + BODY501_PM = ( 200.39 203.4889538 0. ) + + The coefficients of the trigonometric terms are assigned to symbols by + the statements + + BODY501_NUT_PREC_RA = ( 0. 0. 0.094 0.024 ) + BODY501_NUT_PREC_DEC = ( 0. 0. 0.040 0.011 ) + BODY501_NUT_PREC_PM = ( 0. 0. -0.085 -0.022 ) + + 501 is the NAIF ID code for Io. + + SPICE software expects the models for satellite orientation to + follow the form of the model shown here: the polynomial portions of the + RA, DEC, and W expressions are expected to be quadratic, the + trigonometric terms for RA and W (satellite prime meridian) are expected + to be linear combinations of sines of nutation precession angles, the + trigonometric terms for DEC are expected to be linear combinations of + cosines of nutation precession angles, and the polynomials for the + nutation precession angles themselves are expected to be linear. + + Eventually, the software will handle more complex expressions, we + expect. + + +Shape models + + There is only one kind of shape model supported by the SPICE Toolkit + software at present: the triaxial ellipsoid. The 2006 IAU report does + not use any other models, except in the case of Mars, where + separate values are given for the north and south polar radii. + + For each body, three radii are listed: The first number is + the largest equatorial radius (the length of the semi-axis + containing the prime meridian), the second number is the smaller + equatorial radius, and the third is the polar radius. + + Example: Radii of the Earth. + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + +Body Numbers and Names +-------------------------------------------------------- + + + 1 Mercury barycenter + 2 Venus barycenter + 3 Earth barycenter + 4 Mars barycenter + 5 Jupiter barycenter + 6 Saturn barycenter + 7 Uranus barycenter + 8 Neptune barycenter + 9 Pluto barycenter + 10 Sun + + + 199 Mercury + + + 299 Venus + + + 399 Earth + + 301 Moon + + + 499 Mars + + 401 Phobos 402 Deimos + + + 599 Jupiter + + 501 Io 502 Europa 503 Ganymede 504 Callisto + 505 Amalthea 506 Himalia 507 Elara 508 Pasiphae + 509 Sinope 510 Lysithea 511 Carme 512 Ananke + 513 Leda 514 Thebe 515 Adrastea 516 Metis + + + 699 Saturn + + 601 Mimas 602 Enceladus 603 Tethys 604 Dione + 605 Rhea 606 Titan 607 Hyperion 608 Iapetus + 609 Phoebe 610 Janus 611 Epimetheus 612 Helene + 613 Telesto 614 Calypso 615 Atlas 616 Prometheus + 617 Pandora 618 Pan + + + 799 Uranus + + 701 Ariel 702 Umbriel 703 Titania 704 Oberon + 705 Miranda 706 Cordelia 707 Ophelia 708 Bianca + 709 Cressida 710 Desdemona 711 Juliet 712 Portia + 713 Rosalind 714 Belinda 715 Puck + + + 899 Neptune + + 801 Triton 802 Nereid 803 Naiad 804 Thalassa + 805 Despina 806 Galatea 807 Larissa 808 Proteus + + + 999 Pluto + + 901 Charon + + + 1000005 Comet 19P/Borrelly + 1000036 Comet Halley + 1000093 Comet 9P/Tempel 1 + 1000107 Comet 81P/Wild 2 + + 2000001 Asteroid Ceres + 2000004 Asteroid Vesta + 2000216 Asteroid Kleopatra + 2000253 Asteroid Mathilde + 2000433 Asteroid Eros + 2004179 Asteroid Toutatis + 2025143 Asteroid Itokawa + 2431010 Asteroid Ida + 9511010 Asteroid Gaspra + + +Orientation Constants for the Sun and Planets +-------------------------------------------------------- + + +Sun + + Old values: + + Values are from the 2003 IAU report. + + + body10_pole_ra = ( 286.13 0. 0. ) + body10_pole_dec = ( 63.87 0. 0. ) + body10_pm = ( 84.10 14.18440 0. ) + body10_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY10_POLE_RA = ( 286.13 0. 0. ) + BODY10_POLE_DEC = ( 63.87 0. 0. ) + BODY10_PM = ( 84.176 14.18440 0. ) + BODY10_LONG_AXIS = ( 0. ) + + \begintext + +Mercury + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + \begindata + + BODY199_POLE_RA = ( 281.01 -0.033 0. ) + BODY199_POLE_DEC = ( 61.45 -0.005 0. ) + BODY199_PM = ( 329.548 6.1385025 0. ) + + BODY199_LONG_AXIS = ( 0. ) + + \begintext + + +Venus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY299_POLE_RA = ( 272.76 0. 0. ) + BODY299_POLE_DEC = ( 67.16 0. 0. ) + BODY299_PM = ( 160.20 -1.4813688 0. ) + + BODY299_LONG_AXIS = ( 0. ) + + \begintext + + +Earth + + Old values: + + Values are unchanged in the 2006 report. + + + Current values: + + \begindata + + BODY399_POLE_RA = ( 0. -0.641 0. ) + BODY399_POLE_DEC = ( 90. -0.557 0. ) + BODY399_PM = ( 190.147 360.9856235 0. ) + BODY399_LONG_AXIS = ( 0. ) + + \begintext + + + Nutation precession angles for the Earth-Moon system: + + The linear coefficients have been scaled up from degrees/day + to degrees/century, because the SPICELIB PCK reader expects + these units. The original constants were: + + 125.045D0 -0.0529921D0 + 250.089D0 -0.1059842D0 + 260.008D0 13.0120009D0 + 176.625D0 13.3407154D0 + 357.529D0 0.9856003D0 + 311.589D0 26.4057084D0 + 134.963D0 13.0649930D0 + 276.617D0 0.3287146D0 + 34.226D0 1.7484877D0 + 15.134D0 -0.1589763D0 + 119.743D0 0.0036096D0 + 239.961D0 0.1643573D0 + 25.053D0 12.9590088D0 + + + \begindata + + + BODY3_NUT_PREC_ANGLES = ( 125.045 -1935.5364525000 + 250.089 -3871.0729050000 + 260.008 475263.3328725000 + 176.625 487269.6299850000 + 357.529 35999.0509575000 + 311.589 964468.4993100000 + 134.963 477198.8693250000 + 276.617 12006.3007650000 + 34.226 63863.5132425000 + 15.134 -5806.6093575000 + 119.743 131.8406400000 + 239.961 6003.1503825000 + 25.053 473327.7964200000 ) + + + \begintext + + + Earth north geomagnetic centered dipole: + + Old values: + + Values are from [7]. Note the year of publication was 1971. + + body399_mag_north_pole_lon = ( -69.761 ) + body399_mag_north_pole_lat = ( 78.565 ) + + + Current values: + + The north dipole location is time-varying. The values shown + below, taken from [8], represent a discrete sampling of the + north dipole location from 1945 to 2000. The terms DGRF and + IGRF refer to, respectively, "Definitive Geomagnetic + Reference Field" and "International Geomagnetic Reference + Field." See references [6], [8], and [9] for details. + + Coordinates are planetocentric. + + Data source Lat Lon + ----------- ----- ------ + DGRF 1945 78.47 291.47 + DGRF 1950 78.47 291.15 + DGRF 1955 78.46 290.84 + DGRF 1960 78.51 290.53 + DGRF 1965 78.53 290.15 + DGRF 1970 78.59 289.82 + DGRF 1975 78.69 289.53 + DGRF 1980 78.81 289.24 + DGRF 1985 78.97 289.10 + DGRF 1990 79.13 288.89 + IGRF 1995 79.30 288.59 + IGRF 2000 79.54 288.43 + + + Values are given for the epoch 2000 and are from the final row + of the above table, which is from [8]. As shown by the table + these values constitute a low-accuracy approximation for epochs + not close to 2000. + + \begindata + + BODY399_N_GEOMAG_CTR_DIPOLE_LON = ( 288.43 ) + BODY399_N_GEOMAG_CTR_DIPOLE_LAT = ( 79.54 ) + + \begintext + + +Mars + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY499_POLE_RA = ( 317.68143 -0.1061 0. ) + BODY499_POLE_DEC = ( 52.88650 -0.0609 0. ) + BODY499_PM = ( 176.630 350.89198226 0. ) + + \begintext + + Source [5] specifies the following value for the lambda_a term + (BODY499_LONG_AXIS ) for Mars. This term is the POSITIVE EAST + LONGITUDE, measured from the prime meridian, of the meridian + containing the longest axis of the reference ellipsoid. + (CAUTION: previous values were POSITIVE WEST.) + + body499_long_axis = ( 252. ) + + We list this lambda_a value for completeness. The IAU report + [1] gives equal values for both equatorial radii, so the + lambda_a offset does not apply to the IAU model. + + The 2003 IAU report defines M2, the second nutation precession angle, + by: + + 2 + 192.93 + 1128.4096700 d + 8.864 T + + We truncate the M2 series to a linear expression, because the PCK + software cannot handle the quadratic term. + + Again, the linear terms are scaled by 36525.0: + + -0.4357640000000000 --> -15916.28010000000 + 1128.409670000000 --> 41215163.19675000 + -1.8151000000000000E-02 --> -662.9652750000000 + + We also introduce a fourth nutation precession angle, which + is the pi/2-complement of the third angle. This angle is used + in computing the prime meridian location for Deimos. See the + discussion of this angle below in the section containing orientation + constants for Deimos. + + \begindata + + BODY4_NUT_PREC_ANGLES = ( 169.51 -15916.2801 + 192.93 41215163.19675 + 53.47 -662.965275 + 36.53 662.965275 ) + + \begintext + + +Jupiter + + Old values: + + Values are from the 2003 IAU report. + + + body599_pole_ra = ( 268.05 -0.009 0. ) + body599_pole_dec = ( 64.49 0.003 0. ) + body599_pm = ( 284.95 870.5366420 0. ) + body599_long_axis = ( 0. ) + + body5_nut_prec_angles = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.35 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 ) + + + + Current values: + + The number of nutation precession angles is 15. The ninth and + tenth are twice the first and second, respectively. The + eleventh through fifteenth correspond to angles JA-JE in + the 2006 IAU report; angles JA-JE were not used prior to that + report. + + \begindata + + + BODY599_POLE_RA = ( 268.056595 -0.006499 0. ) + BODY599_POLE_DEC = ( 64.495303 0.002413 0. ) + BODY599_PM = ( 284.95 870.5366420 0. ) + BODY599_LONG_AXIS = ( 0. ) + + BODY599_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000117 + 0.000938 + 0.001432 + 0.000030 + 0.002150 ) + + BODY599_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000050 + 0.000404 + 0.000617 + -0.000013 + 0.000926 ) + + BODY599_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0 + 0.0 + 0.0 + 0.0 + 0.0 ) + + + BODY5_NUT_PREC_ANGLES = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.25 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 + 99.360714 4850.4046 + 175.895369 1191.9605 + 300.323162 262.5475 + 114.012305 6070.2476 + 49.511251 64.3000 ) + \begintext + + +Saturn + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY699_POLE_RA = ( 40.589 -0.036 0. ) + BODY699_POLE_DEC = ( 83.537 -0.004 0. ) + BODY699_PM = ( 38.90 810.7939024 0. ) + BODY699_LONG_AXIS = ( 0. ) + + \begintext + + The first seven angles given here are the angles S1 + through S7 from the 2000 report; the eighth and + ninth angles are 2*S1 and 2*S2, respectively. + + + \begindata + + BODY6_NUT_PREC_ANGLES = ( 353.32 75706.7 + 28.72 75706.7 + 177.40 -36505.5 + 300.00 -7225.9 + 316.45 506.2 + 345.20 -1016.3 + 29.80 -52.1 + 706.64 151413.4 + 57.44 151413.4 ) + \begintext + + +Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY799_POLE_RA = ( 257.311 0. 0. ) + BODY799_POLE_DEC = ( -15.175 0. 0. ) + BODY799_PM = ( 203.81 -501.1600928 0. ) + BODY799_LONG_AXIS = ( 0. ) + + \begintext + + The first 16 angles given here are the angles U1 + through U16 from the 2000 report; the 17th and + 18th angles are 2*U11 and 2*U12, respectively. + + \begindata + + BODY7_NUT_PREC_ANGLES = ( 115.75 54991.87 + 141.69 41887.66 + 135.03 29927.35 + 61.77 25733.59 + 249.32 24471.46 + 43.86 22278.41 + 77.66 20289.42 + 157.36 16652.76 + 101.81 12872.63 + 138.64 8061.81 + 102.23 -2024.22 + 316.41 2863.96 + 304.01 -51.94 + 308.71 -93.17 + 340.82 -75.32 + 259.14 -504.81 + 204.46 -4048.44 + 632.82 5727.92 ) + + \begintext + + + +Neptune + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY899_POLE_RA = ( 299.36 0. 0. ) + BODY899_POLE_DEC = ( 43.46 0. 0. ) + BODY899_PM = ( 253.18 536.3128492 0. ) + BODY899_LONG_AXIS = ( 0. ) + + + BODY899_NUT_PREC_RA = ( 0.70 0. 0. 0. 0. 0. 0. 0. ) + BODY899_NUT_PREC_DEC = ( -0.51 0. 0. 0. 0. 0. 0. 0. ) + BODY899_NUT_PREC_PM = ( -0.48 0. 0. 0. 0. 0. 0. 0. ) + + \begintext + + The 2000 report defines the nutation precession angles + + N, N1, N2, ... , N7 + + and also uses the multiples of N1 and N7 + + 2*N1 + + and + + 2*N7, 3*N7, ..., 9*N7 + + In this file, we treat the angles and their multiples as + separate angles. In the kernel variable + + BODY8_NUT_PREC_ANGLES + + the order of the angles is + + N, N1, N2, ... , N7, 2*N1, 2*N7, 3*N7, ..., 9*N7 + + Each angle is defined by a linear polynomial, so two + consecutive array elements are allocated for each + angle. The first term of each pair is the constant term, + the second is the linear term. + + \begindata + + BODY8_NUT_PREC_ANGLES = ( 357.85 52.316 + 323.92 62606.6 + 220.51 55064.2 + 354.27 46564.5 + 75.31 26109.4 + 35.36 14325.4 + 142.61 2824.6 + 177.85 52.316 + 647.840 125213.200 + 355.700 104.632 + 533.550 156.948 + 711.400 209.264 + 889.250 261.580 + 1067.100 313.896 + 1244.950 366.212 + 1422.800 418.528 + 1600.650 470.844 ) + + \begintext + + + +Pluto + + Old values: + + Values are from the 2003 IAU report. + + BODY999_POLE_RA = ( 313.02 0. 0. ) + BODY999_POLE_DEC = ( 9.09 0. 0. ) + BODY999_PM = ( 236.77 -56.3623195 0. ) + BODY999_LONG_AXIS = ( 0. ) + + + Current values: + + \begindata + + BODY999_POLE_RA = ( 312.993 0. 0. ) + BODY999_POLE_DEC = ( 6.163 0. 0. ) + BODY999_PM = ( 237.305 -56.3625225 0. ) + BODY999_LONG_AXIS = ( 0. ) + + \begintext + + + + +Orientation constants for the satellites +-------------------------------------------------------- + + +Satellites of Earth + + Old values: + + Values are unchanged in the 2006 IAU report. + + + New values: + + \begindata + + + + + + BODY301_POLE_RA = ( 269.9949 0.0031 0. ) + BODY301_POLE_DEC = ( 66.5392 0.0130 0. ) + BODY301_PM = ( 38.3213 13.17635815 -1.4D-12 ) + BODY301_LONG_AXIS = ( 0. ) + + BODY301_NUT_PREC_RA = ( -3.8787 -0.1204 0.0700 -0.0172 + 0.0 0.0072 0.0 0.0 + 0.0 -0.0052 0.0 0.0 + 0.0043 ) + + BODY301_NUT_PREC_DEC = ( 1.5419 0.0239 -0.0278 0.0068 + 0.0 -0.0029 0.0009 0.0 + 0.0 0.0008 0.0 0.0 + -0.0009 ) + + BODY301_NUT_PREC_PM = ( 3.5610 0.1208 -0.0642 0.0158 + 0.0252 -0.0066 -0.0047 -0.0046 + 0.0028 0.0052 0.0040 0.0019 + -0.0044 ) + \begintext + + + +Satellites of Mars + + + Phobos + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + The quadratic prime meridian term is scaled by 1/36525**2: + + 8.864000000000000 ---> 6.6443009930565219E-09 + + \begindata + + BODY401_POLE_RA = ( 317.68 -0.108 0. ) + BODY401_POLE_DEC = ( 52.90 -0.061 0. ) + BODY401_PM = ( 35.06 1128.8445850 6.6443009930565219E-09 ) + + BODY401_LONG_AXIS = ( 0. ) + + BODY401_NUT_PREC_RA = ( 1.79 0. 0. 0. ) + BODY401_NUT_PREC_DEC = ( -1.08 0. 0. 0. ) + BODY401_NUT_PREC_PM = ( -1.42 -0.78 0. 0. ) + + + \begintext + + + Deimos + + Old values: + + Values are unchanged in the 2006 IAU report. + + + New values: + + The Deimos prime meridian expression is: + + + 2 + W = 79.41 + 285.1618970 d - 0.520 T - 2.58 sin M + 3 + + + 0.19 cos M . + 3 + + + At the present time, the PCK kernel software (the routine + BODEUL in particular) cannot handle the cosine term directly, + but we can represent it as + + 0.19 sin M + 4 + + where + + M = 90.D0 - M + 4 3 + + Therefore, the nutation precession angle assignments for Phobos + and Deimos contain four coefficients rather than three. + + The quadratic prime meridian term is scaled by 1/36525**2: + + -0.5200000000000000 ---> -3.8978300049519307E-10 + + \begindata + + BODY402_POLE_RA = ( 316.65 -0.108 0. ) + BODY402_POLE_DEC = ( 53.52 -0.061 0. ) + BODY402_PM = ( 79.41 285.1618970 -3.897830D-10 ) + BODY402_LONG_AXIS = ( 0. ) + + BODY402_NUT_PREC_RA = ( 0. 0. 2.98 0. ) + BODY402_NUT_PREC_DEC = ( 0. 0. -1.78 0. ) + BODY402_NUT_PREC_PM = ( 0. 0. -2.58 0.19 ) + + \begintext + + + + +Satellites of Jupiter + + + Io + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY501_POLE_RA = ( 268.05 -0.009 0. ) + BODY501_POLE_DEC = ( 64.50 0.003 0. ) + BODY501_PM = ( 200.39 203.4889538 0. ) + BODY501_LONG_AXIS = ( 0. ) + + BODY501_NUT_PREC_RA = ( 0. 0. 0.094 0.024 ) + BODY501_NUT_PREC_DEC = ( 0. 0. 0.040 0.011 ) + BODY501_NUT_PREC_PM = ( 0. 0. -0.085 -0.022 ) + + \begintext + + + + Europa + + + Old values: + + Values are from the 2003 IAU report. + + + body502_pole_ra = ( 268.08 -0.009 0. ) + body502_pole_dec = ( 64.51 0.003 0. ) + body502_pm = ( 35.67 101.3747235 0. ) + body502_long_axis = ( 0. ) + + body502_nut_prec_ra = ( 0. 0. 0. 1.086 0.060 0.015 0.009 ) + body502_nut_prec_dec = ( 0. 0. 0. 0.468 0.026 0.007 0.002 ) + body502_nut_prec_pm = ( 0. 0. 0. -0.980 -0.054 -0.014 -0.008 ) + + + Current values: + + \begindata + + BODY502_POLE_RA = ( 268.08 -0.009 0. ) + BODY502_POLE_DEC = ( 64.51 0.003 0. ) + BODY502_PM = ( 36.022 101.3747235 0. ) + BODY502_LONG_AXIS = ( 0. ) + + BODY502_NUT_PREC_RA = ( 0. 0. 0. 1.086 0.060 0.015 0.009 ) + BODY502_NUT_PREC_DEC = ( 0. 0. 0. 0.468 0.026 0.007 0.002 ) + BODY502_NUT_PREC_PM = ( 0. 0. 0. -0.980 -0.054 -0.014 -0.008 ) + + \begintext + + + Ganymede + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + \begindata + + BODY503_POLE_RA = ( 268.20 -0.009 0. ) + BODY503_POLE_DEC = ( 64.57 0.003 0. ) + BODY503_PM = ( 44.064 50.3176081 0. ) + BODY503_LONG_AXIS = ( 0. ) + + BODY503_NUT_PREC_RA = ( 0. 0. 0. -0.037 0.431 0.091 ) + BODY503_NUT_PREC_DEC = ( 0. 0. 0. -0.016 0.186 0.039 ) + BODY503_NUT_PREC_PM = ( 0. 0. 0. 0.033 -0.389 -0.082 ) + + \begintext + + + Callisto + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + + \begindata + + BODY504_POLE_RA = ( 268.72 -0.009 0. ) + BODY504_POLE_DEC = ( 64.83 0.003 0. ) + BODY504_PM = ( 259.51 21.5710715 0. ) + BODY504_LONG_AXIS = ( 0. ) + + BODY504_NUT_PREC_RA = ( 0. 0. 0. 0. -0.068 0.590 0. 0.010 ) + BODY504_NUT_PREC_DEC = ( 0. 0. 0. 0. -0.029 0.254 0. -0.004 ) + BODY504_NUT_PREC_PM = ( 0. 0. 0. 0. 0.061 -0.533 0. -0.009 ) + + \begintext + + + Amalthea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY505_POLE_RA = ( 268.05 -0.009 0. ) + BODY505_POLE_DEC = ( 64.49 0.003 0. ) + BODY505_PM = ( 231.67 722.6314560 0. ) + BODY505_LONG_AXIS = ( 0. ) + + BODY505_NUT_PREC_RA = ( -0.84 0. 0. 0. 0. 0. 0. 0. 0.01 0. ) + BODY505_NUT_PREC_DEC = ( -0.36 0. 0. 0. 0. 0. 0. 0. 0. 0. ) + BODY505_NUT_PREC_PM = ( 0.76 0. 0. 0. 0. 0. 0. 0. -0.01 0. ) + + \begintext + + + Thebe + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY514_POLE_RA = ( 268.05 -0.009 0. ) + BODY514_POLE_DEC = ( 64.49 0.003 0. ) + BODY514_PM = ( 8.56 533.7004100 0. ) + BODY514_LONG_AXIS = ( 0. ) + + BODY514_NUT_PREC_RA = ( 0. -2.11 0. 0. 0. 0. 0. 0. 0. 0.04 ) + BODY514_NUT_PREC_DEC = ( 0. -0.91 0. 0. 0. 0. 0. 0. 0. 0.01 ) + BODY514_NUT_PREC_PM = ( 0. 1.91 0. 0. 0. 0. 0. 0. 0. -0.04 ) + + \begintext + + + Adrastea + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + + BODY515_POLE_RA = ( 268.05 -0.009 0. ) + BODY515_POLE_DEC = ( 64.49 0.003 0. ) + BODY515_PM = ( 33.29 1206.9986602 0. ) + BODY515_LONG_AXIS = ( 0. ) + + \begintext + + + Metis + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY516_POLE_RA = ( 268.05 -0.009 0. ) + BODY516_POLE_DEC = ( 64.49 0.003 0. ) + BODY516_PM = ( 346.09 1221.2547301 0. ) + BODY516_LONG_AXIS = ( 0. ) + + \begintext + + + +Satellites of Saturn + + + Mimas + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY601_POLE_RA = ( 40.66 -0.036 0. ) + BODY601_POLE_DEC = ( 83.52 -0.004 0. ) + BODY601_PM = ( 337.46 381.9945550 0. ) + BODY601_LONG_AXIS = ( 0. ) + + BODY601_NUT_PREC_RA = ( 0. 0. 13.56 0. 0. 0. 0. 0. 0. ) + BODY601_NUT_PREC_DEC = ( 0. 0. -1.53 0. 0. 0. 0. 0. 0. ) + BODY601_NUT_PREC_PM = ( 0. 0. -13.48 0. -44.85 0. 0. 0. 0. ) + + \begintext + + + Enceladus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY602_POLE_RA = ( 40.66 -0.036 0. ) + BODY602_POLE_DEC = ( 83.52 -0.004 0. ) + BODY602_PM = ( 2.82 262.7318996 0. ) + BODY602_LONG_AXIS = ( 0. ) + + \begintext + + + + Tethys + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY603_POLE_RA = ( 40.66 -0.036 0. ) + BODY603_POLE_DEC = ( 83.52 -0.004 0. ) + BODY603_PM = ( 10.45 190.6979085 0. ) + BODY603_LONG_AXIS = ( 0. ) + + BODY603_NUT_PREC_RA = ( 0. 0. 0. 9.66 0. 0. 0. 0. 0. ) + BODY603_NUT_PREC_DEC = ( 0. 0. 0. -1.09 0. 0. 0. 0. 0. ) + BODY603_NUT_PREC_PM = ( 0. 0. 0. -9.60 2.23 0. 0. 0. 0. ) + + \begintext + + + Dione + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY604_POLE_RA = ( 40.66 -0.036 0. ) + BODY604_POLE_DEC = ( 83.52 -0.004 0. ) + BODY604_PM = ( 357.00 131.5349316 0. ) + BODY604_LONG_AXIS = ( 0. ) + + \begintext + + + + Rhea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY605_POLE_RA = ( 40.38 -0.036 0. ) + BODY605_POLE_DEC = ( 83.55 -0.004 0. ) + BODY605_PM = ( 235.16 79.6900478 0. ) + BODY605_LONG_AXIS = ( 0. ) + + BODY605_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 3.10 0. 0. 0. ) + BODY605_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. -0.35 0. 0. 0. ) + BODY605_NUT_PREC_PM = ( 0. 0. 0. 0. 0. -3.08 0. 0. 0. ) + + \begintext + + + + Titan + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY606_POLE_RA = ( 36.41 -0.036 0. ) + BODY606_POLE_DEC = ( 83.94 -0.004 0. ) + BODY606_PM = ( 189.64 22.5769768 0. ) + BODY606_LONG_AXIS = ( 0. ) + + BODY606_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 2.66 0. 0 ) + BODY606_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. -0.30 0. 0 ) + BODY606_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. -2.64 0. 0 ) + + \begintext + + + + Hyperion + + The IAU report does not give an orientation model for Hyperion. + Hyperion's rotation is in chaotic and is not predictable for + long periods. + + + Iapetus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY608_POLE_RA = ( 318.16 -3.949 0. ) + BODY608_POLE_DEC = ( 75.03 -1.143 0. ) + BODY608_PM = ( 350.20 4.5379572 0. ) + BODY608_LONG_AXIS = ( 0. ) + + \begintext + + + + Phoebe + + + Old values: + + Values are from the 2003 IAU report. + + body609_pole_ra = ( 355.00 0. 0. ) + body609_pole_dec = ( 68.70 0. 0. ) + body609_pm = ( 304.70 930.8338720 0. ) + body609_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY609_POLE_RA = ( 356.90 0. 0. ) + BODY609_POLE_DEC = ( 77.80 0. 0. ) + BODY609_PM = ( 178.58 931.639 0. ) + BODY609_LONG_AXIS = ( 0. ) + + \begintext + + + Janus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY610_POLE_RA = ( 40.58 -0.036 0. ) + BODY610_POLE_DEC = ( 83.52 -0.004 0. ) + BODY610_PM = ( 58.83 518.2359876 0. ) + BODY610_LONG_AXIS = ( 0. ) + + BODY610_NUT_PREC_RA = ( 0. -1.623 0. 0. 0. 0. 0. 0. 0.023 ) + BODY610_NUT_PREC_DEC = ( 0. -0.183 0. 0. 0. 0. 0. 0. 0.001 ) + BODY610_NUT_PREC_PM = ( 0. 1.613 0. 0. 0. 0. 0. 0. -0.023 ) + + \begintext + + + + Epimetheus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY611_POLE_RA = ( 40.58 -0.036 0. ) + BODY611_POLE_DEC = ( 83.52 -0.004 0. ) + BODY611_PM = ( 293.87 518.4907239 0. ) + BODY611_LONG_AXIS = ( 0. ) + + BODY611_NUT_PREC_RA = ( -3.153 0. 0. 0. 0. 0. 0. 0.086 0. ) + BODY611_NUT_PREC_DEC = ( -0.356 0. 0. 0. 0. 0. 0. 0.005 0. ) + BODY611_NUT_PREC_PM = ( 3.133 0. 0. 0. 0. 0. 0. -0.086 0. ) + + \begintext + + + + Helene + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY612_POLE_RA = ( 40.85 -0.036 0. ) + BODY612_POLE_DEC = ( 83.34 -0.004 0. ) + BODY612_PM = ( 245.12 131.6174056 0. ) + BODY612_LONG_AXIS = ( 0. ) + + \begintext + + + + Telesto + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY613_POLE_RA = ( 50.51 -0.036 0. ) + BODY613_POLE_DEC = ( 84.06 -0.004 0. ) + BODY613_PM = ( 56.88 190.6979332 0. ) + BODY613_LONG_AXIS = ( 0. ) + + \begintext + + + + Calypso + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY614_POLE_RA = ( 36.41 -0.036 0. ) + BODY614_POLE_DEC = ( 85.04 -0.004 0. ) + BODY614_PM = ( 153.51 190.6742373 0. ) + BODY614_LONG_AXIS = ( 0. ) + + \begintext + + + + Atlas + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY615_POLE_RA = ( 40.58 -0.036 0. ) + BODY615_POLE_DEC = ( 83.53 -0.004 0. ) + BODY615_PM = ( 137.88 598.3060000 0. ) + BODY615_LONG_AXIS = ( 0. ) + + \begintext + + + + Prometheus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY616_POLE_RA = ( 40.58 -0.036 ) + BODY616_POLE_DEC = ( 83.53 -0.004 ) + BODY616_PM = ( 296.14 587.289000 ) + BODY616_LONG_AXIS = ( 0. ) + + \begintext + + + + Pandora + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY617_POLE_RA = ( 40.58 -0.036 0. ) + BODY617_POLE_DEC = ( 83.53 -0.004 0. ) + BODY617_PM = ( 162.92 572.7891000 0. ) + BODY617_LONG_AXIS = ( 0. ) + + \begintext + + + + Pan + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY618_POLE_RA = ( 40.6 -0.036 0. ) + BODY618_POLE_DEC = ( 83.5 -0.004 0. ) + BODY618_PM = ( 48.8 626.0440000 0. ) + BODY618_LONG_AXIS = ( 0. ) + + \begintext + + + + + +Satellites of Uranus + + + + Ariel + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY701_POLE_RA = ( 257.43 0. 0. ) + BODY701_POLE_DEC = ( -15.10 0. 0. ) + BODY701_PM = ( 156.22 -142.8356681 0. ) + BODY701_LONG_AXIS = ( 0. ) + + BODY701_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0.29 ) + + BODY701_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0.28 ) + + BODY701_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0.05 0.08 ) + \begintext + + + + Umbriel + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY702_POLE_RA = ( 257.43 0. 0. ) + BODY702_POLE_DEC = ( -15.10 0. 0. ) + BODY702_PM = ( 108.05 -86.8688923 0. ) + BODY702_LONG_AXIS = ( 0. ) + + BODY702_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0.21 ) + + BODY702_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0.20 ) + + BODY702_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. -0.09 0. 0.06 ) + + \begintext + + + + Titania + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY703_POLE_RA = ( 257.43 0. 0. ) + BODY703_POLE_DEC = ( -15.10 0. 0. ) + BODY703_PM = ( 77.74 -41.3514316 0. ) + BODY703_LONG_AXIS = ( 0. ) + + BODY703_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.29 ) + + BODY703_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.28 ) + + BODY703_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.08 ) + \begintext + + + + Oberon + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY704_POLE_RA = ( 257.43 0. 0. ) + BODY704_POLE_DEC = ( -15.10 0. 0. ) + BODY704_PM = ( 6.77 -26.7394932 0. ) + BODY704_LONG_AXIS = ( 0. ) + + + BODY704_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.16 ) + + BODY704_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.16 ) + + BODY704_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.04 ) + \begintext + + + + Miranda + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + BODY705_POLE_RA = ( 257.43 0. 0. ) + BODY705_POLE_DEC = ( -15.08 0. 0. ) + BODY705_PM = ( 30.70 -254.6906892 0. ) + BODY705_LONG_AXIS = ( 0. ) + + BODY705_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 4.41 0. 0. 0. 0. + 0. -0.04 0. ) + + BODY705_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 4.25 0. 0. 0. 0. + 0. -0.02 0. ) + + BODY705_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 1.15 -1.27 0. 0. 0. + 0. -0.09 0.15 ) + \begintext + + + + Cordelia + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY706_POLE_RA = ( 257.31 0. 0. ) + BODY706_POLE_DEC = ( -15.18 0. 0. ) + BODY706_PM = ( 127.69 -1074.5205730 0. ) + BODY706_LONG_AXIS = ( 0. ) + + BODY706_NUT_PREC_RA = ( -0.15 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY706_NUT_PREC_DEC = ( 0.14 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY706_NUT_PREC_PM = ( -0.04 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Ophelia + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY707_POLE_RA = ( 257.31 0. 0. ) + BODY707_POLE_DEC = ( -15.18 0. 0. ) + BODY707_PM = ( 130.35 -956.4068150 0. ) + BODY707_LONG_AXIS = ( 0. ) + + BODY707_NUT_PREC_RA = ( 0. -0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY707_NUT_PREC_DEC = ( 0. 0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY707_NUT_PREC_PM = ( 0. -0.03 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Bianca + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY708_POLE_RA = ( 257.31 0. 0. ) + BODY708_POLE_DEC = ( -15.18 0. 0. ) + BODY708_PM = ( 105.46 -828.3914760 0. ) + BODY708_LONG_AXIS = ( 0. ) + + BODY708_NUT_PREC_RA = ( 0. 0. -0.16 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY708_NUT_PREC_DEC = ( 0. 0. 0.16 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY708_NUT_PREC_PM = ( 0. 0. -0.04 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Cressida + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + BODY709_POLE_RA = ( 257.31 0. 0. ) + BODY709_POLE_DEC = ( -15.18 0. 0. ) + BODY709_PM = ( 59.16 -776.5816320 0. ) + BODY709_LONG_AXIS = ( 0. ) + + + BODY709_NUT_PREC_RA = ( 0. 0. 0. -0.04 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + BODY709_NUT_PREC_DEC = ( 0. 0. 0. 0.04 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + BODY709_NUT_PREC_PM = ( 0. 0. 0. -0.01 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + \begintext + + + + Desdemona + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY710_POLE_RA = ( 257.31 0. 0. ) + BODY710_POLE_DEC = ( -15.18 0. 0. ) + BODY710_PM = ( 95.08 -760.0531690 0. ) + BODY710_LONG_AXIS = ( 0. ) + + BODY710_NUT_PREC_RA = ( 0. 0. 0. 0. -0.17 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY710_NUT_PREC_DEC = ( 0. 0. 0. 0. 0.16 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY710_NUT_PREC_PM = ( 0. 0. 0. 0. -0.04 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Juliet + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY711_POLE_RA = ( 257.31 0. 0. ) + BODY711_POLE_DEC = ( -15.18 0. 0. ) + BODY711_PM = ( 302.56 -730.1253660 0. ) + BODY711_LONG_AXIS = ( 0. ) + + BODY711_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + -0.06 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY711_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0.06 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY711_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + -0.02 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Portia + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY712_POLE_RA = ( 257.31 0. 0. ) + BODY712_POLE_DEC = ( -15.18 0. 0. ) + BODY712_PM = ( 25.03 -701.4865870 0. ) + BODY712_LONG_AXIS = ( 0. ) + + BODY712_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. -0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY712_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY712_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. -0.02 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Rosalind + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY713_POLE_RA = ( 257.31 0. 0. ) + BODY713_POLE_DEC = ( -15.18 0. 0. ) + BODY713_PM = ( 314.90 -644.6311260 0. ) + BODY713_LONG_AXIS = ( 0. ) + + BODY713_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. -0.29 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY713_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0.28 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY713_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. -0.08 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Belinda + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY714_POLE_RA = ( 257.31 0. 0. ) + BODY714_POLE_DEC = ( -15.18 0. 0. ) + BODY714_PM = ( 297.46 -577.3628170 0. ) + BODY714_LONG_AXIS = ( 0. ) + + BODY714_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. -0.03 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY714_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0.03 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY714_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. -0.01 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + \begintext + + + + Puck + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY715_POLE_RA = ( 257.31 0. 0. ) + BODY715_POLE_DEC = ( -15.18 0. 0. ) + BODY715_PM = ( 91.24 -472.5450690 0. ) + BODY715_LONG_AXIS = ( 0. ) + + BODY715_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. -0.33 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY715_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0.31 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY715_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. -0.09 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + +Satellites of Neptune + + + Triton + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY801_POLE_RA = ( 299.36 0. 0. ) + BODY801_POLE_DEC = ( 41.17 0. 0. ) + BODY801_PM = ( 296.53 -61.2572637 0. ) + BODY801_LONG_AXIS = ( 0. ) + + + BODY801_NUT_PREC_RA = ( 0. 0. 0. 0. + 0. 0. 0. -32.35 + 0. -6.28 -2.08 -0.74 + -0.28 -0.11 -0.07 -0.02 + -0.01 ) + + + BODY801_NUT_PREC_DEC = ( 0. 0. 0. 0. + 0. 0. 0. 22.55 + 0. 2.10 0.55 0.16 + 0.05 0.02 0.01 0. + 0. ) + + + BODY801_NUT_PREC_PM = ( 0. 0. 0. 0. + 0. 0. 0. 22.25 + 0. 6.73 2.05 0.74 + 0.28 0.11 0.05 0.02 + 0.01 ) + + \begintext + + + + + Nereid + + Old values: + + Values are from the 1988 IAU report [10]. Note that this + rotation model pre-dated the 1989 Voyager 2 Neptune + encounter. + + + body802_pole_ra = ( 273.48 0. 0. ) + body802_pole_dec = ( 67.22 0. 0. ) + body802_pm = ( 237.22 0.9996465 0. ) + body802_long_axis = ( 0. ) + + + The report seems to have a typo: in the nut_prec_ra expression, + where the report gives -0.51 sin 3N3, we use -0.51 3N2. + + body802_nut_prec_ra = ( 0. -17.81 + 0. 0. 0. 0. + 0. 0. 0. + 2.56 -0.51 0.11 -0.03 ) + + body802_nut_prec_dec = ( 0. -6.67 + 0. 0. 0. 0. + 0. 0. 0. + 0.47 -0.07 0.01 ) + + body802_nut_prec_pm = ( 0. 16.48 + 0. 0. 0. 0. + 0. 0. 0. + -2.57 0.51 -0.11 0.02 ) + + + + Current values: + + The 2006 report [1] states that values for Nereid are not + given because Nereid is not in synchronous rotation with Neptune + (p. 167). + + + + Naiad + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY803_POLE_RA = ( 299.36 0. 0. ) + BODY803_POLE_DEC = ( 43.36 0. 0. ) + BODY803_PM = ( 254.06 +1222.8441209 0. ) + BODY803_LONG_AXIS = ( 0. ) + + + BODY803_NUT_PREC_RA = ( 0.70 -6.49 0. 0. + 0. 0. 0. 0. + 0.25 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY803_NUT_PREC_DEC = ( -0.51 -4.75 0. 0. + 0. 0. 0. 0. + 0.09 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY803_NUT_PREC_PM = ( -0.48 4.40 0. 0. + 0. 0. 0. 0. + -0.27 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + + Thalassa + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY804_POLE_RA = ( 299.36 0. 0. ) + BODY804_POLE_DEC = ( 43.45 0. 0. ) + BODY804_PM = ( 102.06 1155.7555612 0. ) + BODY804_LONG_AXIS = ( 0. ) + + + BODY804_NUT_PREC_RA = ( 0.70 0. -0.28 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + + BODY804_NUT_PREC_DEC = ( -0.51 0. -0.21 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY804_NUT_PREC_PM = ( -0.48 0. 0.19 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + Despina + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY805_POLE_RA = ( 299.36 0. 0. ) + BODY805_POLE_DEC = ( 43.45 0. 0. ) + BODY805_PM = ( 306.51 +1075.7341562 0. ) + BODY805_LONG_AXIS = ( 0. ) + + + BODY805_NUT_PREC_RA = ( 0.70 0. 0. -0.09 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY805_NUT_PREC_DEC = ( -0.51 0. 0. -0.07 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY805_NUT_PREC_PM = ( -0.49 0. 0. 0.06 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + + Galatea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY806_POLE_RA = ( 299.36 0. 0. ) + BODY806_POLE_DEC = ( 43.43 0. 0. ) + BODY806_PM = ( 258.09 839.6597686 0. ) + BODY806_LONG_AXIS = ( 0. ) + + + BODY806_NUT_PREC_RA = ( 0.70 0. 0. 0. + -0.07 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY806_NUT_PREC_DEC = ( -0.51 0. 0. 0. + -0.05 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY806_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0.05 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + Larissa + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY807_POLE_RA = ( 299.36 0. 0. ) + BODY807_POLE_DEC = ( 43.41 0. 0. ) + BODY807_PM = ( 179.41 +649.0534470 0. ) + BODY807_LONG_AXIS = ( 0. ) + + + BODY807_NUT_PREC_RA = ( 0.70 0. 0. 0. + 0. -0.27 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY807_NUT_PREC_DEC = ( -0.51 0. 0. 0. + 0. -0.20 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY807_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0. 0.19 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + + Proteus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY808_POLE_RA = ( 299.27 0. 0. ) + BODY808_POLE_DEC = ( 42.91 0. 0. ) + BODY808_PM = ( 93.38 +320.7654228 0. ) + BODY808_LONG_AXIS = ( 0. ) + + + BODY808_NUT_PREC_RA = ( 0.70 0. 0. 0. + 0. 0. -0.05 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY808_NUT_PREC_DEC = ( -0.51 0. 0. 0. + 0. 0. -0.04 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY808_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0. 0. 0.04 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + + +Satellites of Pluto + + Charon + + Old values: + + Values are from the 2003 IAU report. + + body901_pole_ra = ( 313.02 0. 0. ) + body901_pole_dec = ( 9.09 0. 0. ) + body901_pm = ( 56.77 -56.3623195 0. ) + body901_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY901_POLE_RA = ( 312.993 0. 0. ) + BODY901_POLE_DEC = ( 6.163 0. 0. ) + BODY901_PM = ( 57.305 -56.3625225 0. ) + BODY901_LONG_AXIS = ( 0. ) + + \begintext + + + +Orientation constants for Selected Comets and Asteroids +-------------------------------------------------------- + + + +19P/Borrelly + + + Current values: + + \begindata + + BODY1000005_POLE_RA = ( 218.5 0. 0. ) + BODY1000005_POLE_DEC = ( -12.5 0. 0. ) + BODY1000005_PM = ( 000. 390.0 0. ) + BODY1000005_LONG_AXIS = ( 0. ) + + \begintext + + + +9P/Tempel 1 + + + Current values: + + \begindata + + BODY1000093_POLE_RA = ( 294. 0. 0. ) + BODY1000093_POLE_DEC = ( 73. 0. 0. ) + BODY1000093_PM = ( 252.63 212.064 0. ) + BODY1000093_LONG_AXIS = ( 0. ) + + \begintext + + +Vesta + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2000004_POLE_RA = ( 301. 0. 0. ) + BODY2000004_POLE_DEC = ( 41. 0. 0. ) + BODY2000004_PM = ( 292. 1617.332776 0. ) + BODY2000004_LONG_AXIS = ( 0. ) + + \begintext + +Eros + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2000433_POLE_RA = ( 11.35 0. 0. ) + BODY2000433_POLE_DEC = ( 17.22 0. 0. ) + BODY2000433_PM = ( 326.07 1639.38864745 0. ) + BODY2000433_LONG_AXIS = ( 0. ) + + \begintext + + +Itokawa + + + Current values: + + \begindata + + BODY2025143_POLE_RA = ( 90.53 0. 0. ) + BODY2025143_POLE_DEC = ( -66.30 0. 0. ) + BODY2025143_PM = ( 000.0 712.143 0. ) + BODY2025143_LONG_AXIS = ( 0. ) + + \begintext + + + +Ida + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2431010_POLE_RA = ( 168.76 0. 0. ) + BODY2431010_POLE_DEC = ( -2.88 0. 0. ) + BODY2431010_PM = ( 265.95 +1864.6280070 0. ) + BODY2431010_LONG_AXIS = ( 0. ) + + \begintext + +Gaspra + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY9511010_POLE_RA = ( 9.47 0. 0. ) + BODY9511010_POLE_DEC = ( 26.70 0. 0. ) + BODY9511010_PM = ( 83.67 1226.9114850 0. ) + BODY9511010_LONG_AXIS = ( 0. ) + + \begintext + + + + + + + + + + +Radii of Sun and Planets +-------------------------------------------------------- + + +Sun + + Value for the Sun is from the [3], page K7. + + \begindata + + BODY10_RADII = ( 696000. 696000. 696000. ) + + \begintext + + +Mercury + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY199_RADII = ( 2439.7 2439.7 2439.7 ) + + \begintext + + +Venus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY299_RADII = ( 6051.8 6051.8 6051.8 ) + + \begintext + + +Earth + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + \begintext + + +Mars + + + Old values: + + body499_radii = ( 3397. 3397. 3375. ) + + Current values: + + + The IAU report gives separate values for the north and south + polar radii: + + north: 3373.19 + south: 3379.21 + + We use the average of these values as the polar radius for + the triaxial model. + + \begindata + + BODY499_RADII = ( 3396.19 3396.19 3376.20 ) + + \begintext + + + +Jupiter + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY599_RADII = ( 71492 71492 66854 ) + + \begintext + + + +Saturn + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY699_RADII = ( 60268 60268 54364 ) + + \begintext + + + +Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY799_RADII = ( 25559 25559 24973 ) + + \begintext + + + +Neptune + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + (Values are for the 1 bar pressure level.) + + \begindata + + BODY899_RADII = ( 24764 24764 24341 ) + + \begintext + + + +Pluto + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY999_RADII = ( 1195 1195 1195 ) + + \begintext + + + + +Radii of Satellites +-------------------------------------------------------- + + +Moon + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY301_RADII = ( 1737.4 1737.4 1737.4 ) + + \begintext + + + +Satellites of Mars + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY401_RADII = ( 13.4 11.2 9.2 ) + BODY402_RADII = ( 7.5 6.1 5.2 ) + + \begintext + + + +Satellites of Jupiter + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY501_RADII = ( 1829.4 1819.3 1815.7 ) + BODY502_RADII = ( 1564.13 1561.23 1560.93 ) + BODY503_RADII = ( 2632.4 2632.29 2632.35 ) + BODY504_RADII = ( 2409.4 2409.2 2409.3 ) + BODY505_RADII = ( 125 73 64 ) + + \begintext + + Only mean radii are available in the 2003 IAU report for bodies + 506-513. + + \begindata + + BODY506_RADII = ( 85 85 85 ) + BODY507_RADII = ( 40 40 40 ) + BODY508_RADII = ( 18 18 18 ) + BODY509_RADII = ( 14 14 14 ) + BODY510_RADII = ( 12 12 12 ) + BODY511_RADII = ( 15 15 15 ) + BODY512_RADII = ( 10 10 10 ) + BODY513_RADII = ( 5 5 5 ) + BODY514_RADII = ( 58 49 42 ) + BODY515_RADII = ( 10 8 7 ) + + \begintext + + The value for the second radius for body 516 is not given in + 2003 IAU report. The values given are: + + BODY516_RADII = ( 30 --- 20 ) + + For use within the SPICE system, we use only the mean radius. + \begindata + + BODY516_RADII = ( 21.5 21.5 21.5 ) + + \begintext + + + +Satellites of Saturn + + + Old values: + + Values are from the 2003 IAU report. + + body601_radii = ( 209.1 196.2 191.4 ) + body602_radii = ( 256.3 247.3 244.6 ) + body603_radii = ( 535.6 528.2 525.8 ) + body604_radii = ( 560 560 560 ) + body605_radii = ( 764 764 764 ) + body606_radii = ( 2575 2575 2575 ) + body607_radii = ( 164 130 107 ) + body608_radii = ( 718 718 718 ) + body609_radii = ( 115 110 105 ) + body610_radii = ( 97.0 95.0 77.0 ) + body611_radii = ( 69.0 55.0 55.0 ) + + + Only the first equatorial radius for Helene (body 612) was given in the + 2003 IAU report: + + body612_radii = ( 17.5 --- --- ) + + The mean radius was 16km; we used this radius for all three axes, as + we do for the satellites for which only the mean radius is available. + + + body612_radii = ( 16 16 16 ) + body613_radii = ( 15 12.5 7.5 ) + body614_radii = ( 15.0 8.0 8.0 ) + body615_radii = ( 18.5 17.2 13.5 ) + body616_radii = ( 74.0 50.0 34.0 ) + body617_radii = ( 55.0 44.0 31.0 ) + + + + Current values: + + \begindata + + BODY601_RADII = ( 207.4 196.8 190.6 ) + BODY602_RADII = ( 256.6 251.4 248.3 ) + BODY603_RADII = ( 540.4 531.1 527.5 ) + BODY604_RADII = ( 563.8 561.0 560.3 ) + BODY605_RADII = ( 767.2 762.5 763.1 ) + BODY606_RADII = ( 2575 2575 2575 ) + BODY607_RADII = ( 164 130 107 ) + BODY608_RADII = ( 747.4 747.4 712.4 ) + BODY609_RADII = ( 108.6 107.7 101.5 ) + BODY610_RADII = ( 97.0 95.0 77.0 ) + BODY611_RADII = ( 69.0 55.0 55.0 ) + + \begintext + + Only the first equatorial radius for Helene (body 612) is given in the + 2006 IAU report: + + BODY612_RADII = ( 17.5 --- --- ) + + The mean radius is 16km; we use this radius for all three axes, as + we do for the satellites for which only the mean radius is available. + + + \begindata + + BODY612_RADII = ( 17.5 17.5 17.5 ) + BODY613_RADII = ( 15 12.5 7.5 ) + BODY614_RADII = ( 15.0 8.0 8.0 ) + BODY615_RADII = ( 18.5 17.2 13.5 ) + BODY616_RADII = ( 74.0 50.0 34.0 ) + BODY617_RADII = ( 55.0 44.0 31.0 ) + + \begintext + + + For Pan, only a mean radius is given in the 2006 report. + + \begindata + + BODY618_RADII = ( 10 10 10 ) + + \begintext + + + +Satellites of Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY701_RADII = ( 581.1 577.9 577.7 ) + BODY702_RADII = ( 584.7 584.7 584.7 ) + BODY703_RADII = ( 788.9 788.9 788.9 ) + BODY704_RADII = ( 761.4 761.4 761.4 ) + BODY705_RADII = ( 240.4 234.2 232.9 ) + + \begintext + + The 2000 report gives only mean radii for satellites 706--715. + + \begindata + + BODY706_RADII = ( 13 13 13 ) + BODY707_RADII = ( 15 15 15 ) + BODY708_RADII = ( 21 21 21 ) + BODY709_RADII = ( 31 31 31 ) + BODY710_RADII = ( 27 27 27 ) + BODY711_RADII = ( 42 42 42 ) + BODY712_RADII = ( 54 54 54 ) + BODY713_RADII = ( 27 27 27 ) + BODY714_RADII = ( 33 33 33 ) + BODY715_RADII = ( 77 77 77 ) + + \begintext + + + + +Satellites of Neptune + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + The 2000 report gives mean radii only for bodies 801-806. + + \begindata + + BODY801_RADII = ( 1352.6 1352.6 1352.6 ) + BODY802_RADII = ( 170 170 170 ) + BODY803_RADII = ( 29 29 29 ) + BODY804_RADII = ( 40 40 40 ) + BODY805_RADII = ( 74 74 74 ) + BODY806_RADII = ( 79 79 79 ) + + \begintext + + + The second equatorial radius for Larissa is not given in the 2000 + report. The available values are: + + BODY807_RADII = ( 104 --- 89 ) + + For use within the SPICE system, we use only the mean radius. + \begindata + + BODY807_RADII = ( 96 96 96 ) + BODY808_RADII = ( 218 208 201 ) + + \begintext + + + + +Satellites of Pluto + + + Old values: + + Values are from the 2003 IAU report. + + BODY901_RADII = ( 593 593 593 ) + + Current values: + + \begindata + + BODY901_RADII = ( 605 605 605 ) + + \begintext + + + +Radii for Selected Comets and Asteroids +-------------------------------------------------------- + + +19P/Borrelly + + + Current values: + + + The value in the data assignment below is the + "effective radius." + + The first principal axis length is + + 3.5 km + + The lengths of the other semi-axes are not provided + by [1]. + + \begindata + + BODY1000005_RADII = ( 4.22 4.22 4.22 ) + + \begintext + + + +Halley + + + Current values: + + \begindata + + BODY1000036_RADII = ( 8.0 4.0 4.0 ) + + \begintext + + + +9P/Tempel 1 + + + Current values: + + + The value in the data assignment below is the + "effective radius." + + According to [1]: + + The maximum and minimum radii are not properly + the values of the principal semi-axes, they + are half the maximum and minimum values of the + diameter. Due to the large deviations from a + simple ellipsoid, they may not correspond with + measurements along the principal axes, or be + orthogonal to each other. + + \begindata + + BODY1000093_RADII = ( 3.0 3.0 3.0 ) + + \begintext + + +81P/Wild 2 + + + Current values: + + + \begindata + + BODY1000107_RADII = ( 2.7 1.9 1.5 ) + + \begintext + + +Ceres + + + Current values: + + + \begindata + + BODY2000001_RADII = ( 487.3 487.3 454.7 ) + + \begintext + + +Vesta + + + Current values: + + + \begindata + + BODY2000004_RADII = ( 289. 280. 229. ) + + \begintext + + +Toutatis + + + Current values: + + + \begindata + + BODY2004179_RADII = ( 2.13 1.015 0.85 ) + + \begintext + + +Kleopatra + + + Old values: + + Values are from the 2003 report. + + + body2000216_radii = ( 108.5 47 40.5 ) + + + Current values: + + + No values are provided in the 2006 report. + + +Mathilde + + + Current values: + + + \begindata + + BODY2000253_RADII = ( 33. 24. 23. ) + + \begintext + +Eros + + + Current values: + + + \begindata + + BODY2000433_RADII = ( 17.0 5.5 5.5 ) + + \begintext + + +Itokawa + + + Current values: + + + \begindata + + BODY2025143_RADII = ( 0.535 0.294 0.209 ) + + \begintext + + + +Gaspra + + + Current values: + + + \begindata + + BODY9511010_RADII = ( 9.1 5.2 4.4 ) + + \begintext + + + + +Ida + + + Current values: + + + \begindata + + BODY2431010_RADII = ( 26.8 12.0 7.6 ) + + \begintext + + + +=========================================================================== +End of file pck00009.tpc +=========================================================================== + + + diff --git a/tests/pytests/test_mex_drivers.py b/tests/pytests/test_mex_drivers.py new file mode 100644 index 000000000..283bc5b3b --- /dev/null +++ b/tests/pytests/test_mex_drivers.py @@ -0,0 +1,687 @@ +import pytest +import os +import numpy as np +import spiceypy as spice +import json +from unittest.mock import patch, PropertyMock +import unittest +from conftest import get_image_label, get_image_kernels, convert_kernels, compare_dicts +import ale +from ale.drivers.mex_drivers import MexHrscPds3NaifSpiceDriver, MexHrscIsisLabelNaifSpiceDriver +from ale.formatters.usgscsm_formatter import to_usgscsm + +@pytest.fixture() +def usgscsm_compare_dict(): + return { + "h5270_0000_ir2" : { + "usgscsm" : { + "radii": { + "semimajor": 3396.19, + "semiminor": 3376.2, + "unit": "km" + }, + "sensor_position": { + "positions": [ + [ + 711902.968354, + 3209827.60790571, + 1748326.86116295 + ], + [ + 727778.89367768, + 3287885.02005966, + 1594882.70156054 + ], + [ + 743098.34408384, + 3361360.97987664, + 1439236.15929773 + ], + [ + 757817.60768561, + 3430175.96634995, + 1281609.7397002 + ], + [ + 771895.91691839, + 3494268.82029183, + 1122231.09675971 + ], + [ + 785295.6426853, + 3553596.86562762, + 961331.02292412 + ] + ], + "velocities": [ + [ + 396.19391017, + 1971.70523609, + -3738.08862116 + ], + [ + 383.09225613, + 1860.35892297, + -3794.8312507 + ], + [ + 368.88320115, + 1746.8383078, + -3846.19171074 + ], + [ + 353.63635876, + 1631.58973504, + -3892.0182367 + ], + [ + 337.42645506, + 1515.06674438, + -3932.20958309 + ], + [ + 320.33289561, + 1397.72243165, + -3966.71239887 + ] + ], + "unit": "m" + }, + "sun_position": { + "positions": [ + [ + 2.05222074E+11, + 1.19628335E+11, + 5.02349719E+10 + ] + ], + "velocities": [ + [ + 8468758.54, + -14528713.8, + 8703.55212 + ] + ], + "unit": "m" + }, + "sensor_orientation": { + "quaternions": [ + [ + -0.09146728, + -0.85085751, + 0.51357522, + 0.06257586 + ], + [ + -0.09123532, + -0.83858882, + 0.53326329, + 0.0638371 + ], + [ + -0.09097193, + -0.82586685, + 0.55265188, + 0.06514567 + ], + [ + -0.09050679, + -0.81278131, + 0.57165363, + 0.06638667 + ], + [ + -0.08988786, + -0.79935128, + 0.59024631, + 0.06757961 + ], + [ + -0.08924306, + -0.78551905, + 0.60849234, + 0.06879366 + ] + ] + }, + "detector_sample_summing": 1, + "detector_line_summing": 1, + "focal_length_model": { + "focal_length": 174.82 + }, + "detector_center": { + "line": 0.0, + "sample": 2592.0 + }, + "starting_detector_line": 1, + "starting_detector_sample": 80, + "focal2pixel_lines": [ + -7113.11359717265, + 0.062856784318668, + 142.857129028729 + ], + "focal2pixel_samples": [ + -0.778052433438109, + -142.857129028729, + 0.062856784318668 + ], + "optical_distortion": { + "radial": { + "coefficients": [ + 0.0, + 0.0, + 0.0 + ] + } + }, + "image_lines": 400, + "image_samples": 1288, + "name_platform": "MARS EXPRESS", + "name_sensor": "HIGH RESOLUTION STEREO CAMERA", + "reference_height": { + "maxheight": 1000, + "minheight": -1000, + "unit": "m" + }, + "name_model": "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL", + "interpolation_method": "lagrange", + "line_scan_rate": [ + [ + 0.5, + -94.88182842731476, + 0.012800790786743165 + ], + [ + 1.5, + -94.8690276145935, + 0.012800790786743165 + ], + [ + 15086.5, + 101.82391116023064, + 0.013227428436279297 + ] + ], + "starting_ephemeris_time": 255744592.07217148, + "center_ephemeris_time": 255744693.90931007, + "t0_ephemeris": -101.83713859319687, + "dt_ephemeris": 40.734855437278746, + "t0_quaternion": -101.83713859319687, + "dt_quaternion": 40.734855437278746 + }, + + "isis" : + { + "CameraVersion": 1, + "NaifKeywords": { + "BODY499_RADII": [ + 3396.19, + 3396.19, + 3376.2 + ], + "BODY_FRAME_CODE": 10014, + "BODY_CODE": 499, + "INS-41210_FOV_FRAME": "MEX_HRSC_HEAD", + "FRAME_-41210_NAME": "MEX_HRSC_HEAD", + "INS-41210_CK_TIME_TOLERANCE": 1.0, + "TKFRAME_-41210_AXES": [ + 1.0, + 2.0, + 3.0 + ], + "TKFRAME_-41210_SPEC": "ANGLES", + "FRAME_-41210_CLASS": 4.0, + "INS-41210_FOV_ANGULAR_SIZE": [ + 0.2, + 0.659734 + ], + "INS-41210_OD_K": [ + 0.0, + 0.0, + 0.0 + ], + "INS-41210_F/RATIO": 5.6, + "INS-41210_PLATFORM_ID": -41000.0, + "TKFRAME_-41210_ANGLES": [ + -0.334, + 0.0101, + 0.0 + ], + "INS-41210_SPK_TIME_BIAS": 0.0, + "FRAME_-41210_CENTER": -41.0, + "TKFRAME_-41210_UNITS": "DEGREES", + "INS-41210_BORESIGHT": [ + 0.0, + 0.0, + 175.0 + ], + "INS-41210_CK_TIME_BIAS": 0.0, + "FRAME_-41210_CLASS_ID": -41210.0, + "INS-41210_IFOV": 4e-05, + "INS-41210_FOV_BOUNDARY_CORNERS": [ + 18.187, + 60.0641, + 175.0, + 18.1281, + -60.0399, + 175.0, + -18.1862, + -60.0435, + 175.0, + -18.142 + ], + "INS-41210_FOV_SHAPE": "RECTANGLE", + "TKFRAME_-41210_RELATIVE": "MEX_HRSC_BASE", + "INS-41210_PIXEL_PITCH": 0.007, + "INS-41210_FOCAL_LENGTH": 175.0, + "BODY499_POLE_DEC": [ + 52.8865, + -0.0609, + 0.0 + ], + "BODY499_POLE_RA": [ + 317.68143, + -0.1061, + 0.0 + ], + "BODY499_PM": [ + 176.63, + 350.89198226, + 0.0 + ] + }, + "InstrumentPointing": { + "TimeDependentFrames": [ + -41001, + 1 + ], + "CkTableStartTime": 255744599.02748, + "CkTableEndTime": 255744635.91477, + "CkTableOriginalSize": 3, + "EphemerisTimes": [ + 255744599.02748, + 255744623.61901, + 255744635.91477 + ], + "Quaternions": [ + [ + -0.34147103206303764, + 0.46006200041554185, + -0.48264106492774883, + -0.6624183666542334 + ], + [ + -0.34862899148129517, + 0.4555408857335137, + -0.47327265910130095, + -0.668545673735942 + ], + [ + -0.3521802679309037, + 0.45323805476596757, + -0.46855266563769715, + -0.6715673637959837 + ] + ], + "AngularVelocity": [ + [ + 0.00035176331113592204, + 0.0010154650024473105, + 0.0003877175924478187 + ], + [ + 0.0003524285580283372, + 0.001014970147047595, + 0.0003878218830533074 + ], + [ + 0.00035026208236974156, + 0.001017194110775444, + 0.000384764361044439 + ] + ], + "ConstantFrames": [ + -41210, + -41200, + -41000, + -41001 + ], + "ConstantRotation": [ + -0.9999999844629888, + 1.027590578527487e-06, + 0.00017627525841189352, + 1.2246232944813223e-16, + -0.9999830090976747, + 0.00582936668603668, + 0.0001762782535384808, + 0.0058293665954657434, + 0.9999829935609271 + ] + }, + "BodyRotation": { + "TimeDependentFrames": [ + 10014, + 1 + ], + "CkTableStartTime": 255744599.02748, + "CkTableEndTime": 255744635.91477, + "CkTableOriginalSize": 3, + "EphemerisTimes": [ + 255744599.02748, + 255744623.61901, + 255744635.91477 + ], + "Quaternions": [ + [ + -0.6525755651363002, + -0.023151423913928198, + 0.31744150842891783, + -0.6876336467074379 + ], + [ + -0.6531746247480361, + -0.022874748805603497, + 0.31746156550431237, + -0.6870646329712322 + ], + [ + -0.6534739684048749, + -0.022736404778153124, + 0.3174715036099805, + -0.6867799304803299 + ] + ], + "AngularVelocity": [ + [ + 3.162398161513711e-05, + -2.880303177599155e-05, + 5.65207273177886e-05 + ], + [ + 3.162398161506756e-05, + -2.8803031776763114e-05, + 5.652072731743428e-05 + ], + [ + 3.162398161503279e-05, + -2.8803031777148904e-05, + 5.6520727317257115e-05 + ] + ] + }, + "InstrumentPosition": { + "SpkTableStartTime": 255744599.02748, + "SpkTableEndTime": 255744635.91477, + "SpkTableOriginalSize": 3, + "EphemerisTimes": [ + 255744599.02748, + 255744623.61901, + 255744635.91477 + ], + "Positions": [ + [ + 3508.7678822054836, + -1180.090578774873, + -404.6580659358623 + ], + [ + 3509.6584138014186, + -1143.4324359500306, + -502.6029463204845 + ], + [ + 3509.4431532823473, + -1124.8866548757126, + -551.4851113671581 + ] + ], + "Velocities": [ + [ + 0.0720400832434136, + 1.478737567336345, + -3.9872650791431576 + ], + [ + 0.0003930097221540194, + 1.502497160864039, + -3.978142968407851 + ], + [ + -0.03540185319234352, + 1.5140837760694028, + -3.972834676104136 + ] + ] + }, + "SunPosition": { + "SpkTableStartTime": 255744697.39357847, + "SpkTableEndTime": 255744697.39357847, + "SpkTableOriginalSize": 1, + "EphemerisTimes": [ + 255744697.39357847 + ], + "Positions": [ + [ + 97397666.49661356, + -201380879.84291452, + -94392949.8261708 + ] + ], + "Velocities": [ + [ + 21.260857263715938, + 7.173395648419857, + 2.73958955646446 + ] + ] + } +} +}} + +@pytest.fixture(scope="module") +def test_kernels(): + kernels = get_image_kernels('h5270_0000_ir2') + updated_kernels, binary_kernels = convert_kernels(kernels) + yield updated_kernels + for kern in binary_kernels: + os.remove(kern) + +# Eventually all label/formatter combinations should be tested. For now, isis3/usgscsm and +# pds3/isis will fail. +@pytest.mark.parametrize("label,formatter", [('isis3','isis'), ('pds3', 'usgscsm'), + pytest.param('isis3','usgscsm', marks=pytest.mark.xfail), + pytest.param('pds3','isis', marks=pytest.mark.xfail),]) +def test_mex_load(test_kernels, formatter, usgscsm_compare_dict, label): + label_file = get_image_label('h5270_0000_ir2', label) + + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_ephemeris_times', \ + new_callable=PropertyMock) as binary_ephemeris_times, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_exposure_durations', \ + new_callable=PropertyMock) as binary_exposure_durations, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_lines', \ + new_callable=PropertyMock) as binary_lines, \ + patch('ale.drivers.mex_drivers.MexHrscIsisLabelNaifSpiceDriver.ephemeris_time', \ + new_callable=PropertyMock) as ephemeris_time, \ + patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \ + patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \ + 'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \ + 'LineStart': [1, 6665, 6666]}) as parse_table: + + ephemeris_time.return_value = [255744599.02748, 255744623.61901, 255744635.91477] + binary_ephemeris_times.return_value = [255744599.02748165, 255744599.04028246, 255744795.73322123] + binary_exposure_durations.return_value = [0.012800790786743165, 0.012800790786743165, 0.013227428436279297] + binary_lines.return_value = [0.5, 1.5, 15086.5] + + usgscsm_isd = ale.load(label_file, props={'kernels': test_kernels}, formatter=formatter, verbose='true') + assert compare_dicts(usgscsm_isd, usgscsm_compare_dict['h5270_0000_ir2'][formatter]) == [] + +# ========= Test mex pds3label and naifspice driver ========= +class test_mex_pds3_naif(unittest.TestCase): + + def setUp(self): + label = get_image_label("h5270_0000_ir2", "pds3") + self.driver = MexHrscPds3NaifSpiceDriver(label) + + def test_short_mission_name(self): + assert self.driver.short_mission_name=='mex' + + def test_odtk(self): + assert self.driver.odtk == [0.0, 0.0, 0.0] + + def test_ikid(self): + with patch('ale.drivers.mex_drivers.spice.bods2c', return_value=12345) as bods2c: + assert self.driver.ikid == 12345 + bods2c.assert_called_with('MEX_HRSC_HEAD') + + def test_fikid(self): + with patch('ale.drivers.mex_drivers.spice.bods2c', return_value=12345) as bods2c: + assert self.driver.fikid == 12345 + bods2c.assert_called_with('MEX_HRSC_IR') + + def test_instrument_id(self): + assert self.driver.instrument_id == 'MEX_HRSC_IR' + + def test_spacecraft_name(self): + assert self.driver.spacecraft_name =='MEX' + + def test_focal_length(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.fikid', \ + new_callable=PropertyMock) as fikid: + fikid.return_value = -41218 + assert self.driver.focal_length == 174.82 + + def test_focal2pixel_lines(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.fikid', \ + new_callable=PropertyMock) as fikid: + fikid.return_value = -41218 + np.testing.assert_almost_equal(self.driver.focal2pixel_lines, + [-7113.11359717265, 0.062856784318668, 142.857129028729]) + + def test_focal2pixel_samples(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.fikid', \ + new_callable=PropertyMock) as fikid: + fikid.return_value = -41218 + np.testing.assert_almost_equal(self.driver.focal2pixel_samples, + [-0.778052433438109, -142.857129028729, 0.062856784318668]) + + def test_pixel2focal_x(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.fikid', \ + new_callable=PropertyMock) as fikid: + fikid.return_value = -41218 + np.testing.assert_almost_equal(self.driver.pixel2focal_x, + [0.016461898406507, -0.006999999322408, 3.079982431615e-06]) + + def test_pixel2focal_y(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.fikid', \ + new_callable=PropertyMock) as fikid: + fikid.return_value = -41218 + np.testing.assert_almost_equal(self.driver.pixel2focal_y, + [49.7917927568053, 3.079982431615e-06, 0.006999999322408]) + + def test_detector_start_line(self): + assert self.driver.detector_start_line == 1 + + def test_detector_start_sample(self): + assert self.driver.detector_start_sample == 80 + + def test_detector_center_line(self): + assert self.driver.detector_center_line == 0.0 + + def test_detector_center_sample(self): + assert self.driver.detector_center_sample == 2592.0 + + def test_center_ephemeris_time(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_ephemeris_times', \ + new_callable=PropertyMock) as binary_ephemeris_times, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_exposure_durations', \ + new_callable=PropertyMock) as binary_exposure_durations, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.ephemeris_start_time', + new_callable=PropertyMock) as ephemeris_start_time: + binary_ephemeris_times.return_value = [255744795.73322123] + binary_exposure_durations.return_value = [0.013227428436279297] + ephemeris_start_time.return_value = 255744592.07217148 + assert self.driver.center_ephemeris_time == 255744693.90931007 + + def test_ephemeris_stop_time(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_ephemeris_times', \ + new_callable=PropertyMock) as binary_ephemeris_times, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_exposure_durations', \ + new_callable=PropertyMock) as binary_exposure_durations : + binary_ephemeris_times.return_value = [255744795.73322123] + binary_exposure_durations.return_value = [0.013227428436279297] + assert self.driver.ephemeris_stop_time == 255744795.74644867 + + def test_line_scan_rate(self): + with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_ephemeris_times', \ + new_callable=PropertyMock) as binary_ephemeris_times, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_exposure_durations', \ + new_callable=PropertyMock) as binary_exposure_durations, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_lines', \ + new_callable=PropertyMock) as binary_lines, \ + patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.ephemeris_start_time', + new_callable=PropertyMock) as ephemeris_start_time: + binary_ephemeris_times.return_value = [255744599.02748165, 255744599.04028246] + binary_exposure_durations.return_value = [0.012800790786743165, 0.012800790786743165] + binary_lines.return_value = [0.5, 1.5] + ephemeris_start_time.return_value = 255744592.07217148 + assert self.driver.line_scan_rate == ([0.5, 1.5], + [3.464854270219803, 3.4776550829410553], + [0.012800790786743165, 0.012800790786743165]) + + def test_sensor_model_version(self): + assert self.driver.sensor_model_version == 1 + +# ========= Test mex pds3label and naifspice driver ========= +class test_mex_isis3_naif(unittest.TestCase): + + def setUp(self): + label = get_image_label("h5270_0000_ir2", "isis3") + self.driver = MexHrscIsisLabelNaifSpiceDriver(label) + + def test_instrument_id(self): + assert self.driver.instrument_id == 'HRSC' + + def test_ikid(self): + with patch('ale.drivers.mex_drivers.spice.bods2c', return_value=12345) as bods2c: + assert self.driver.ikid == 12345 + bods2c.assert_called_with('MEX_HRSC_HEAD') + + def test_fikid(self): + with patch('ale.drivers.mex_drivers.spice.bods2c', return_value=12345) as bods2c: + assert self.driver.fikid == 12345 + bods2c.assert_called_with('HRSC') + + def test_ephemeris_start_time(self): + with patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \ + patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \ + 'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \ + 'LineStart': [1, 6665, 6666]}) as parse_table: + + assert self.driver.ephemeris_start_time == 255744599.02748165 + + def test_line_scan_rate(self): + with patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \ + patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \ + 'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \ + 'LineStart': [1, 6665, 6666]}) as parse_table: + + assert self.driver.line_scan_rate == ([1, 6665, 6666], [255744599.02748165, 255744684.33197814, 255744684.34504557], [0.012800790786743165, 0.012907449722290038, 0.013227428436279297]) + + def test_ephemeris_stop_time(self): + with patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \ + patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \ + 'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \ + 'LineStart': [1, 6665, 6666]}) as parse_table: + + assert self.driver.ephemeris_stop_time == 255744684.34504557 + ((15088 - 6666 + 1) * 0.013227428436279297) + + def test_ephemeris_center_time(self): + with patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \ + patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \ + 'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \ + 'LineStart': [1, 6665, 6666]}) as parse_table: + + assert self.driver.center_ephemeris_time == (255744599.02748165 + 255744684.34504557 + ((15088 - 6666 + 1) * 0.013227428436279297)) / 2 + + def test_sensor_model_version(self): + assert self.driver.sensor_model_version == 1