KPL/IK CaSSIS Instrument Kernel =============================================================================== This instrument kernel (I-kernel) contains the ExoMars-2016 Trace Gas Orbiter (TGO) Colour and Stereo Surface Imaging System (CaSSIS) instrument optics, detector and field-of-view (FOV) parameters definitions. Version and Date ------------------------------------------------------------------------------- Version 0.7 -- May 11, 2018 -- Stepanov Tulyakov, EPFL Marc Costa Sitja, ESAC/ESA Updated distortion model and focal length (all depended values, like field of view, boresight are also updated). Version 0.6 -- October 16, 2017 -- Jeannie Backer, USGS Marc Costa Sitja, ESAC/ESA Added description and keywords for distortion model. Version 0.5 -- July 20, 2017 -- Marc Costa Sitja, ESAC/ESA Antoine Pommerol, SPACE/UNIBE Corrected typo as specified in [6]. Added FoV names and performed minor decription data updates. Version 0.4 -- January 31, 2017 -- Marc Costa Sitja, ESAC/ESA Antoine Pommerol, SPACE/UNIBE Corrected CaSSIS Filters' (TGO_CASSIS_*) FoVs boresights and the corresponding diagram for since the +Yfsa axis was flipped as indicated in [6]. Version 0.3 -- September 8, 2016 -- Marc Costa Sitja, ESAC/ESA Jorge Diaz del Rio, ODC Space Corrected cross angle values for CaSSIS Filters' (TGO_CASSIS_*) FoVs since they were full angle instead of half angle. Corrected minor text typos. Version 0.2 -- August 2, 2016 -- Marc Costa Sitja, ESAC/ESA Updated the NAIF IDs for CASSIS definitions. Corrected all INS_*_FOV_REF_ANGLE from 1.333 deg (full-angle) to 0.6665 (half-angle). Corrected minor typos. Preliminary version. Pending review by the CaSSIS instrument team. Version 0.1 -- May 24, 2016 -- Jorge Diaz del Rio, ODC Space Improved FoV definition comments by adding reference to the instrument name on the definitions section header. Version 0.0 -- May 22, 2016 -- Jorge Diaz del Rio, ODC Space Preliminary version. Pending review by the TGO Science Operations and CaSSIS instrument teams. References ------------------------------------------------------------------------------- 1. ``Frames Required Reading'' 2. ``Kernel Pool Required Reading'' 3. ``C-kernel Required Reading'' 4. ExoMars-2016 Frames Definition Kernel (FK), latest version. 5. ``Colour and Stereo Surface Imaging System - CaSSIS,'' experiment overview: http://www.cassis.unibe.ch/instrument/experiment_overview 6. E-mail "CaSSIS kernel error?" from Antoine Pommerol (antoine.pommerol@space.unibe.ch), 2017-01-25 7. E-mail ``I-kernel. Follow-up on meeting'' from Nicholas Thomas (nicolas.thomas@space.unibe.ch), 2017-09-18. 8. E-mail ``CaSSIS IK update'' from Jeannie Backer (jwbacker@usgs.gov), 2017-09-27. Contact Information ------------------------------------------------------------------------------- If you have any questions regarding this file contact SPICE support at ESA: Marc Costa Sitja (+34) 91-8131-457 mcosta@sciops.esa.int, esa_spice@sciops.esa.int or SPICE support at IKI: Alexander Abbakumov +7 (495) 333-40-13 aabbakumov@romance.iki.rssi.ru or NAIF at JPL: Boris Semenov (818) 354-8136 Boris.Semenov@jpl.nasa.gov Implementation Notes ------------------------------------------------------------------------------ Applications that need SPICE I-kernel data must ``load'' the I-kernel file, normally during program initialization. The SPICE routine FURNSH loads a kernel file into the pool as shown below. CALL FURNSH ( 'frame_kernel_name' ) -- FORTRAN furnsh_c ( "frame_kernel_name" ); -- C cspice_furnsh, frame_kernel_name -- IDL cspice_furnsh( 'frame_kernel_name' ) -- MATLAB furnsh( frame_kernel_name ) -- PYTHON* Loading the kernel using the SPICELIB routine FURNSH causes the data items and their associated values present in the kernel to become associated with a data structure called the ``kernel pool''. Once the file has been loaded, the SPICE routine GETFOV (getfov_c in C, cspice_getfov in IDL and MATLAB and cspice.getfov in PYTHON) can be used to retrieve FOV parameters for a given instrument or structure. The application program may obtain the value(s) for any other IK data item using the SPICELIB routines GDPOOL, GIPOOL, GCPOOL (gdpool_c, gipool_c, gcpool_c in C, cspice_gdpool, cspice_gipool, cspice_gcpool in IDL and MATLAB, cspice.gcpool in PYTHON). See [2] for details. This file was created with, and can be updated with a text editor or word processor. * SPICEPY is a non-official, community developed Python wrapper for the NAIF SPICE toolkit. Its development is managed on Github. It is available at: https://github.com/AndrewAnnex/SpiceyPy Naming Conventions and Conventions for Specifying Data ---------------------------------------------------------------------------- Data items are specified using ``keyword=value'' assignments [2]. All keywords referencing values in this I-kernel start with the characters `INS' followed by the NAIF TGO instrument ID code, constructed using the spacecraft ID number (-143) followed by the NAIF three digit ID number for CaSSIS module. These IDs are defined in [4] as follows: Name NAIF ID --------------------- --------- TGO_CASSIS -143400 TGO_CASSIS_PAN -143421 TGO_CASSIS_RED -143422 TGO_CASSIS_NIR -143423 TGO_CASSIS_BLU -143424 The remainder of the keyword name is an underscore character followed by the unique name of the data item. For example, the CaSSIS camera boresight direction in the TGO_CASSIS frame is specified by: INS-143400_BORESIGHT The upper bound on the length of the name of any data item is 32 characters. If the same item is included in more than one file, or if the same item appears more than once within a single file, the latest value supersedes any earlier values. Instrument Description ---------------------------------------------------------------------------- CaSSIS (Colour and Stereo Surface Imaging System) is a high resolution imaging system designed to complement the data acquired by the other payload on the ExoMars-2016 TGO. The instrument comprises a number of sub-elements (see [5]): Telescope: ---------- The CaSSIS telescope was originally conceived as a three-mirror anastigmat system (off-axis) with a fold mirror. The absence of a central obscuration reduces the straylight by allowing simplified baffling. The primary mirror is around 13.5 cm in diameter. The mirrors are held in a carbon fiber reinforced polymer (CFRP) structure. The focal plane will comprise a single silicon hybrid detector with 4 colour filters mounted on it following the push-frame technique. Focal Plane System: ------------------- The system is based upon a Raytheon Osprey 2048x2048 hybrid CMOS detector. The detector can be read-out extremely quickly with 14 bit digital resolution. However, it remains a framing device meaning that acquiring an un-smeared image along a rapidly moving ground-track requires short exposures and a rapid imaging sequence. The along-track dimension of the image is then built up and put together on ground. To avoid mechanisms the detector is covered with a single monolithic rad-hard fused silica substrate with filters deposited on it. Different coatings with different transmission properties cover the substrate to produce the CaSSIS Filter Strip Assembly (FSA). The transmissions are relatively broad because of signal to noise considerations. Between the filters are small dark bands needed to reduce spectral cross-talk. Rotation mechanism: ------------------- The telescope and focal plane are mounted on a rotation mechanism. This solves two key problems. Firstly, the rotation of the spacecraft about the nadir direction can be compensated for. Prior to image acquisition, the imager can be rotated so that the lines are orthogonal to the direction of motion. (In case of rotation mechanism failure, the system would be able to acquire data but at reduced resolution and lower signal to noise) Secondly, the rotation mechanism can be swiveled by ~180 degrees to acquire a stereo image. Hence, the imager has been designed to look 10 degrees ahead of the spacecraft for the first image and 10 degrees behind to acquire the stereo pair. The time necessary to complete the rotation drives the design of the rotation mechanism. The rotation mechanism consists of a hollow shaft supported by two ceramic bearings and driven by a worm gear, whereby the worm wheel is integral part of the hollow shaft. The reduction ratio is ca. 200:1. High-strength titanium alloys are used for the gear component, which are hard coated to provide durability. The housing is made of AlBeMet. A stepper motor (modified Port Escap P430) is connected to the worm shaft via a bellow coupling. End switches are used for zeroing; backlash is compensated by software and is calibrated in-flight. A cable management system (the twist capsule) has been implemented to support cables which go from the rotating part of the instrument to fixed electronics box. The following table provides the CaSSIS camera main parameters: -------------------------------------------------- Parameter Value --------------------------------- --------------- Focal length, mm 874.9 Aperture diameter, mm 135.0 Nominal F# 6.48 Pixel size, microns 10.00x10.00 FoV, degrees Full 1.341x1.341 Used 1.339x0.845 IFOV, micro-radians 114.31x114.31 Time between stereo images, s 46.91 Bits/px 14 Detector size, px 2048x2048 Image size, px 2048x256 #images/exposure 4 Filter center wavelength/bw, nm PAN 675/250 Blue-Green 485/165 Red 840/100 IR 985/220 ------------------------------------------------- Mounting Alignment ---------------------------------------------------------------------------- Refer to the latest version of the ExoMars-2016 Frames Definition Kernel (FK) [4] for the CaSSIS reference frame definitions and mounting alignment information. CaSSIS Camera and Filters Apparent Field-of-View Layouts ---------------------------------------------------------------------------- This diagram illustrates the CaSSIS Camera and Filters apparent FOV layouts in the CaSSIS Filter Strip Assembly (TGO_CASSIS_FSA) reference frame. (1,1) (1,2048) .-------------------------------------. ------------ | | ^ :=====================================: 354 | : PAN Filter : | :=====================================: 633 | | | | :=====================================: 712 | : RED Filter : | :=====================================: 967 | <--------------------------o | 1.3330 deg +Xfsa :==================|==================:1048 | : NIR Filter : | :==================|==================:1303 | | | | | :==================|==================:1389 | : BLU Filter : | :==================|==================:1644 | | | | v '------------------|------------------' ------------ (2048,1) v (2048,2048) +Yfsa | | |<----------------------------------->| | 1.341 deg | The Filters FoV angles are as follows: ------------------------------------------------------------------------ Filter Size (Px) Bsight offset,px(deg) FoV dim (x,y) -------- ----------- ------------------------ -------------------- PAN 2048x280 -530px (-0.347073 deg) 1.3413 x 0.1834 deg RED 2048x256 -184px (-0.120493 deg) 1.3413 x 0.1677 deg NIR 2048x256 +152px (+0.099538 deg) 1.3413 x 0.1677 deg BLU 2048x256 +493px (+0.322843 deg) 1.3413 x 0.1677 deg ------------------------------------------------------------------------ FOV Definition --------------------------------------------------------------------------- This section contains assignments defining the CaSSIS camera and its filters FOVs. These definitions are based on the camera parameters provided in the previous sections and are provided in a format consistent with/required by the SPICE TOOLKIT function GETFOV. CaSSIS Full (TGO_CASSIS) FoV: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The CaSSIS FOV is defined as a square pyramid with a full angle of 1.340 degrees. It is defined with respect to the TGO_CASSIS_FSA frame. The boresight and the cross-reference vectors are unit along the +Z axis and the +X axis of the frame, respectively. Please note that the FOV reference and cross angles are defined with half angle values. The FoV definition corresponds to the NAIF Body Name: TGO_CASSIS. \begindata INS-143400_NAME = 'TGO_CASSIS' INS-143400_BORESIGHT = ( 0.000000 0.000000 1.000000 ) INS-143400_FOV_FRAME = 'TGO_CASSIS_FSA' INS-143400_FOV_SHAPE = 'RECTANGLE' INS-143400_FOV_CLASS_SPEC = 'ANGLES' INS-143400_FOV_REF_VECTOR = ( 1.000000 0.000000 0.000000 ) INS-143400_FOV_REF_ANGLE = ( 0.670570 ) INS-143400_FOV_CROSS_ANGLE = ( 0.670570 ) INS-143400_FOV_ANGLE_UNITS = 'DEGREES' \begintext CaSSIS Filters' (TGO_CASSIS_*) FoVs: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The CaSSIS Filters (PAN, RED, NIR, BLU) FOVs are defined as rectangular pyramids with respect to the TGO_CASSIS_FSA frame. The full-angle along the cross-reference vector is the same for all filters and corresponds to the full CaSSIS Field-of-View in that direction, 1.333000 degrees. On the +Y direction, the Field-of-View is defined by the filter's size in pixels. See the ``CaSSIS Camera and Filters Apparent Field-of-View Layouts'' for further information. The boresight of each filter is defined by the direction of the center pixel of the given filter. Based on the offset in pixels (given in the ``CaSSIS Camera and Filters Apparent Field-of-View Layouts'' section), the required rotation angle, along the +X TGO_CASSIS_FSA axis is computed, from which the filter's boresight is obtained: Filter NAIF ID Angle, deg Bsight (x,y,z) in TGO_CASSIS_FSA -------- ------- ------------ ---------------------------------- PAN -143421 -0.347073 ( 0.00000, -0.00606, 1 ) RED -143422 -0.120493 ( 0.00000, -0.00210, 1 ) NIR -143423 +0.099538 ( 0.00000, 0.00174, 1 ) BLU -143424 +0.322843 ( 0.00000, 0.00563, 1 ) Please note that the FoV reference and cross angles are defined with half angle values. The FoV definitions correspond to the NAIF Body Names: TGO_CASSIS_PAN, TGO_CASSIS_RED, TGO_CASSIS_NIR and TGO_CASSIS_BLU. \begindata INS-143421_NAME = 'TGO_CASSIS_PAN' INS-143421_BORESIGHT = ( 0.0000000000 -0.0060578352 1.0000000000 ) INS-143421_FOV_FRAME = 'TGO_CASSIS_FSA' INS-143421_FOV_SHAPE = 'RECTANGLE' INS-143421_FOV_CLASS_SPEC = 'ANGLES' INS-143421_FOV_REF_VECTOR = ( 1.0000000000 0.0000000000 0.0000000000 ) INS-143421_FOV_REF_ANGLE = ( 0.6705703437 ) INS-143421_FOV_CROSS_ANGLE = ( 0.0916795392 ) INS-143421_FOV_ANGLE_UNITS = 'DEGREES' INS-143422_NAME = 'TGO_CASSIS_RED' INS-143422_BORESIGHT = ( 0.0000000000 -0.0021030975 1.0000000000 ) INS-143422_FOV_FRAME = 'TGO_CASSIS_FSA' INS-143422_FOV_SHAPE = 'RECTANGLE' INS-143422_FOV_CLASS_SPEC = 'ANGLES' INS-143422_FOV_REF_VECTOR = ( 1.0000000000 0.0000000000 0.0000000000 ) INS-143422_FOV_REF_ANGLE = ( 0.6705703437 ) INS-143422_FOV_CROSS_ANGLE = ( 0.0838212930 ) INS-143422_FOV_ANGLE_UNITS = 'DEGREES' INS-143423_NAME = 'TGO_CASSIS_NIR' INS-143423_BORESIGHT = ( 0.0000000000 0.0017373414 1.0000000000 ) INS-143423_FOV_FRAME = 'TGO_CASSIS_FSA' INS-143423_FOV_SHAPE = 'RECTANGLE' INS-143423_FOV_CLASS_SPEC = 'ANGLES' INS-143423_FOV_REF_VECTOR = ( 1.000000 0.000000 0.000000 ) INS-143423_FOV_REF_ANGLE = ( 0.6705703437 ) INS-143423_FOV_CROSS_ANGLE = ( 0.0838212930 ) INS-143423_FOV_ANGLE_UNITS = 'DEGREES' INS-143424_NAME = 'TGO_CASSIS_BLU' INS-143424_BORESIGHT = ( 0.0000000000 0.0056349297 1.0000000000 ) INS-143424_FOV_FRAME = 'TGO_CASSIS_FSA' INS-143424_FOV_SHAPE = 'RECTANGLE' INS-143424_FOV_CLASS_SPEC = 'ANGLES' INS-143424_FOV_REF_VECTOR = ( 1.0000000000 0.0000000000 0.0000000000 ) INS-143424_FOV_REF_ANGLE = ( 0.6705703437 ) INS-143424_FOV_CROSS_ANGLE = ( 0.0838212930 ) INS-143424_FOV_ANGLE_UNITS = 'DEGREES' \begintext Optical Distortion -------------------------------------------------------- From [7] and [8]: Given ideal image coordinates (x, y) and parameters of rational distortion model A1, A2, A3 returns distorted image coordinates (i, j). Correcting distorted coordinates: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Converting from distorted (i,j) to ideal (x,y). Rational correction model provided by Stepan Tulyakov and Anoton Ivanov, EPFL (Ecole Polytechnique Federale de Lausanne). Model is described by following equations: chi = [ i*i i*j, j*j, i, j, 1] A1_corr * chi' x = ---------------------- A3_corr * chi' A2_corr * chi' y = ---------------------- A3_corr * chi' where (i, j) are distorted focal plane coordinates in millimeters, (x, y) are ideal focal plane coordinates in millimeters, and A1_corr, A2_corr, A3_corr are 1x6 vectors, parameters of the \rational correction model. \begindata INS-143400_OD_A1_CORR = ( 0.00544124551618559, 0.00242058700718023, -2.48577907043558e-05, 0.999359573639265, -0.000130945991526083, 0.00161016464782889 ) INS-143400_OD_A2_CORR = ( 9.8077090575503e-05, 0.00543196976741689, 0.00248552506455258, -0.000360689689268798, 0.997230456361333, -0.01765423906529 ) INS-143400_OD_A3_CORR = ( -2.66362211929368e-05, -4.18111444381442e-06, -2.60434019407289e-05, 0.00542860345347002, 0.00164668822925175, 1 ) \begintext From this equation it follows that for every distorted coordinates (i, j), there is a unique pair of undistorted coordinates (x, y). However, converse is not true. To find distorted coordinates from ideal coordinates we need to solve system of equations, that potentially has several solutions. Distorting ideal coordinates: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Converting from ideal (x,y) to distorted (i,j). Rational correction model provided by Stepan Tulyakov and Anoton Ivanov, EPFL (Ecole Polytechnique Federale de Lausanne). Model is described by following equations: chi = [ x*x, x*y, y*y, x, y, 1] A1_dist * chi' i = ---------------------- A3_dist * chi' A2_dist * chi' j = ---------------------- A3_dist * chi' where (i, j) are distorted focal plane coordinates in millimeters, (x, y) are ideal focal plane coordinates in millimeters, and A1_dist, A2_dist, A3_dist are 1x6 vectors, parameters of the rational distortion model, derived by Stepan Tulyakov and Anoton Ivanov, EPFL (Ecole Polytechnique Federale de Lausanne). \begindata INS-143400_OD_A1_DIST = ( 0.0030962215897376, 0.00193659543570966, 1.43799661742481e-05, 0.575732495892843, 7.45445812599102e-05, -0.000924338558685123 ) INS-143400_OD_A2_DIST = ( -5.61600987759384e-05, 0.0031016957502374, 0.00190053792058327, 0.000208146838499972, 0.576977522640326, 0.010177651661487) INS-143400_OD_A3_DIST = ( 1.52240896709669e-05, 2.40452524963973e-06, 1.5382711014407e-05, 0.00310362726634607, 0.00238330278037335, 0.575374652906421 ) \begintext Platform ID --------------------------------------------------------------------------- This number is the NAIF instrument ID of the platform on which the instrument mounted. For all CaSSIS components it is the spacecraft. \begindata INS-143421_PLATFORM_ID = ( -143000 ) INS-143422_PLATFORM_ID = ( -143000 ) INS-143423_PLATFORM_ID = ( -143000 ) INS-143424_PLATFORM_ID = ( -143000 ) \begintext End of IK file.