KPL/IK \beginlabel PDS_VERSION_ID = PDS3 RECORD_TYPE = STREAM RECORD_BYTES = "N/A" ^SPICE_KERNEL = "sdu_navcam_v23.ti" MISSION_NAME = NEXT SPACECRAFT_NAME = STARDUST DATA_SET_ID = "SDU-C-SPICE-6-V1.0" KERNEL_TYPE_ID = IK PRODUCT_ID = "sdu_navcam_v23.ti" PRODUCT_CREATION_TIME = 2011-08-11T17:40:42 PRODUCER_ID = "NAIF/JPL" MISSION_PHASE_NAME = "N/A" PRODUCT_VERSION_TYPE = ACTUAL PLATFORM_OR_MOUNTING_NAME = "STARDUST SPACECRAFT BUS" START_TIME = "N/A" STOP_TIME = "N/A" SPACECRAFT_CLOCK_START_COUNT = "N/A" SPACECRAFT_CLOCK_STOP_COUNT = "N/A" TARGET_NAME = "9P/TEMPEL 1 (1867 G1)" INSTRUMENT_NAME = "NAVIGATION CAMERA" NAIF_INSTRUMENT_ID = -29010 SOURCE_PRODUCT_ID = "N/A" NOTE = "See comments in the file for details" OBJECT = SPICE_KERNEL INTERCHANGE_FORMAT = ASCII KERNEL_TYPE = INSTRUMENT DESCRIPTION = "SDU Navigation Camera instrument (NAVCAM) parameters SPICE I-Kernel file. " END_OBJECT = SPICE_KERNEL \endlabel NAVCAM Instrument Kernel =========================================================================== This Stardust Navigation Camera (NAVCAM) instrument kernel (I-kernel) contains the instrument optics, FOV and other geometry parameters. Version and Date -------------------------------------------------------- Version 2.3 -- August 10, 2011 -- Boris Semenov, NAIF/JPL Added a reference to distortion model in calibration materials provided in the NAVCAM science archives. Version 2.2 -- March 7, 2005 -- Boris Semenov, NAIF/JPL Fixed comments based on 2004 peer-review feedback. Version 2.1 -- January 13, 2004 -- Boris Semenov, NAIF/JPL "Stretched" OPNAV correction table boundaries a bit more as some of the post Wild 2 images rolled over the previously adjusted values. Version 2.0 -- January 24, 2003 -- Boris Semenov, NAIF/JPL Added section illustrating conversions from the image line/sample coordinates to 3d coordinates in the camera frame and back. Added section describing transformation required to project archived images as "as seen" images. Filled/corrected a number of other sections. Version 1.5 -- November 25, 2002 -- Boris Semenov, NAIF/JPL Updated pointing correction table based on Mike Wang's and Shyam Bhaskaran's input. Version 1.4 -- August 25, 2000 -- Boris Semenov, NAIF/JPL Added pixel size keyword. Version 1.3 -- May 24, 2000 -- Boris Semenov, NAIF/JPL Added FOV definition keywords. Version 1.2 -- May 23, 2000 -- Boris Semenov, NAIF/JPL "Stretched" OPNAV correction table boundaries to cover possibility of small negative mirror angle values. Version 1.1 -- February 2, 1999 -- Boris Semenov, NAIF/JPL Added 200 mm optics and CCD parameters. Version 1.0 -- December 29, 1998 -- Boris Semenov, NAIF/JPL Initial Release. References -------------------------------------------------------- 1. ``NAVCAM ICD'', Document SD-62200-220, Revision B, February 19, 1998; 2. ``Kernel Pool Required Reading'' 3. Stardust Frames Kernel (FK) File, latest revision 4. ``Autonomous Nucleus Tracking for Comet / Asteroid Encounters: Stardust example.'', S.Bhaskaran et al. 5. JPL IOM ``Test Report; Stardust Camera Alignment measurement'', by E. Motts, May 7, 1998 6. JPL IOM ``Addendum to Test Report; Stardust Camera Alignment measurement'', by E. Motts/M. Schwochert, September 19, 1998 7. Stardust document (SD-7-7001) "Navigation Camera (NC) Subsystem Description Document", 13 January 1997 8. Updated pointing correction table, e-mail from Mike Wang, November 8, 2002; comments about the table from Shyam Bhaskaran, November 11-23, 2002 9. NAVCAM distortion model documented in calibration materials provided in the NAVCAM science archives. Implementation Notes -------------------------------------------------------- This file is used by the SPICE system as follows: programs that make use of this I-kernel must `load' the kernel, normally during program initialization. Loading the kernel associates data items with their names in a data structure called the `kernel pool'. The SPICELIB routine FURNSH loads a kernel file into the pool as shown below. CALL FURNSH ( I_kernel_name ) In order for a program or subroutine to extract data from the pool, the SPICELIB routines GDPOOL and GIPOOL are used. See [2] for more details. This file was created and may be updated with a text editor or word processor. Naming Conventions -------------------------------------------------------- All names referencing values in this I-kernel start with the characters `INS' followed by the NAIF Stardust spacecraft ID number (-29) followed by the NAIF three digit NAVCAM instrument reference number (010). The remainder of the name is an underscore character followed by the unique name of the data item. For example, the boresight direction in the NAVCAM image frame (``SDU_NAVCAM'' -- see [3]) is specified by INS-29010_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 then one file, or if the same item appears more than once within a single file, the latest value supersedes any earlier values. Optics Characteristics -------------------------------------------------------- From Table 1 "Optics Characteristics" in reference [7]: Focal length 200 mm Relative aperture f/3.5 Spectral Range 380-1100 nm Resolution 60 microradian/pixel Field of view 3.5 x 3.5 deg These are nominal values. Actual calibrated values for these parameters are provided in [9]. The values are provided in the keywords below using the same units as in the table above: \begindata INS-29010_FOCAL_LENGTH = ( 200.00 ) \begintext CCD Characteristics -------------------------------------------------------- From Table 1 "Sensor Characteristics" in reference [7]: Format 1024 x 1024 pixels Pixel size 12 x 12 micrometers Full well 100,000 electrons Dark current < 0.1 electrons/pixel/sec at operating temperature Charge transfer efficiency 0.99996 at operating temperature Read Noise 15 electrons rms These are nominal values. Actual calibrated values for some of these parameters (K) are provided in [9]. The values are provided in the keywords below using the same units as in the table above: \begindata INS-29010_K = ( 83.3333 ) INS-29010_S0 = ( 512.5 ) INS-29010_L0 = ( 512.5 ) INS-29010_S_MAX = ( 1024 ) INS-29010_L_MAX = ( 1024 ) INS-29010_ALPHA0 = ( 0.0 ) INS-29010_PIXEL_SIZE = ( 0.012 ) \begintext Distortion Model -------------------------------------------------------- This IK does not include any parameters describing camera distortion. Such parameters are provided in [9]. FOV definition -------------------------------------------------------- The FOV corners are computed from nominal angular FOV size -- 3.5 degrees -- assuming that the boresight is exactly along the central axis of the 3.5 x 3.5 degree pyramid. The FOV boundary vector X and Y coordinates are computed as tan( 3.5/2 ). The FOV is defined in the 'SDU_NC_IMAGE_OPNAV' frame (which is a left hand frame! -- see SDU Frames kernel, [3], for more details about this frame.) That's why the boundary vector order is clockwise as seen from the +Z axis. \begindata INS-29010_FOV_FRAME = 'SDU_NC_IMAGE_OPNAV' INS-29010_FOV_SHAPE = 'RECTANGLE' INS-29010_BORESIGHT = ( 0.0 0.0 1.0 ) INS-29010_FOV_BOUNDARY_CORNERS = ( 0.030552763299 0.030552763299 1.0 -0.030552763299 0.030552763299 1.0 -0.030552763299 -0.030552763299 1.0 0.030552763299 -0.030552763299 1.0 ) \begintext Converting Line/Sample to/from 3D Vector -------------------------------------------------------- This FORTRAN example illustrates how archived PDS image line/sample coordinates can be mapped to a 3D vector in either of the SDU_NC_IMAGE* frames (see [3]) assuming that the camera has no optical distortions: C C Load NAVCAM IK file. C CALL FURNSH( 'navcamXX.ti' ) C C Retrieve necessary IK variables -- focal length, central pixel C line/sample coordinates, and pixel size. (Checking FOUND is C ommited for compactness.) C CALL GDPOOL ( 'INS-29010_FOCAL_LENGTH', 1, 1, N, FL, FOUND ) CALL GDPOOL ( 'INS-29010_S0', 1, 1, N, S0, FOUND ) CALL GDPOOL ( 'INS-29010_L0', 1, 1, N, L0, FOUND ) CALL GDPOOL ( 'INS-29010_PIXEL_SIZE', 1, 1, N, PIXSIZ, FOUND ) C C Read in image line/sample coordinates. Normally these C coordinates would be measured in the image. C READ (*,*) IMGLIN, IMGSAM C C Convert image sample/line to mm coordinates in focal plane. C XMM = ( S0 - IMGSAM ) * PIXSIZ YMM = ( L0 - IMGLIN ) * PIXSIZ C C Package 3D pointing vector, IMGVEC, in the image frame, C SDU_NC_IMAGE*. C CALL VPACK( XMM, YMM, FL, IMGVEC ) This FORTRAN example illustrates how a 3D vector in either of the SDU_NC_IMAGE* frames can be mapped to archived PDS image line/sample coordinates assuming that the camera has no optical distortions: C C Load NAVCAM IK file. C CALL FURNSH( 'navcamXX.ti' ) C C Retrieve necessary IK variables -- focal length, central pixel C line/sample coordinates, and pixel size. (Checking FOUND is C ommited for compactness.) C CALL GDPOOL ( 'INS-29010_FOCAL_LENGTH', 1, 1, N, FL, FOUND ) CALL GDPOOL ( 'INS-29010_S0', 1, 1, N, S0, FOUND ) CALL GDPOOL ( 'INS-29010_L0', 1, 1, N, L0, FOUND ) CALL GDPOOL ( 'INS-29010_PIXEL_SIZE', 1, 1, N, PIXSIZ, FOUND ) C C Read in and package a vector, IMGVEC, in the SDU_NC_IMAGE* frame. C Normally this vector would be computed by rotating a known C inertial vector into SDU_NC_IMAGE* frame using matrix returned C by PXFORM routine. C READ (*,*) X, Y, Z CALL VPACK ( X, Y, Z, IMGVEC ) IF ( IMGVEC(3) .GT. 0 ) THEN C C Convert image vector components to mm coordinates in the C image plane. C XMM = ( FL / IMGVEC(3) ) * IMGVEC(1) YMM = ( FL / IMGVEC(3) ) * IMGVEC(2) C C Convert mm coordinates in focal plane to sample/line C (IMGSAM/IMGLIN.) C IMGSAM = S0 - XMM / PIXSIZ IMGLIN = L0 - YMM / PIXSIZ END IF Flip Required to Achieve ``As Seen By Observer'' Display -------------------------------------------------------- Since the optical path of the camera includes a mirror and the flight and image production s/w do not compensate for the flip that this mirror introduces, the images displayed in normal left-to-right sample, top-to-bottom line fashion have to be transposed (flipped about left-top/right-bottom diagonal) in order to appear ``as observer located on the s/c would see it''. Note that the examples provided in the section above illustrate conversion to/from archived, "not flipped" image coordinates. Alignment/Pointing Related Parameters -------------------------------------------------------- The parameters described in this section are provided for reference only; most of them are NOT even included in the data sections of the file. These parameters do not need to be retrieved/used in order to compute the camera pointing. Instead the pointing can be retrieved by loading the FK and CKs for the s/c and camera and calling high level SPICE interfaces (SXFORM/PXFORM) to compute transformation to one of the defined images frames (see [3] for more details.) Base Mounting Alignment The NAVCAM mounting mirror normal nominally points along -Y axis of the spacecraft frame. The NAVCAM mounting mirror normal as measured during pre-flight ground calibrations was found have an offset of 0.208 degrees from spacecraft -Y axis in the spacecraft X-Y plane and an offset of -0.190 degrees from spacecraft -Y axis in the spacecraft Y-Z plane. Since during these calibrations misalignment of other NAVCAM parts was measured with respect to the spacecraft axes rather than to the mounting mirror, the NAVCAM mounting mirror misalignment can be taken out of consideration in the any computation of the NAVCAM pointing geometry. Optics Mounting Alignment The boresight of the optics is nominally parallel to the spacecraft -Y axis. The CCD assembly vertical direction (columns) is nominally along S/C +Z axis. The CCD assembly horizontal direction (rows) is nominally along S/C +X axis. Actual optical axis direction as measured during pre-flight ground calibrations was found have an offset of -0.102 degrees from spacecraft -Y axis in the Y-X spacecraft plane [see 5,6]. Scan Mirror Axis Mounting Alignment Nominal NAVCAM scan mirror rotation axis direction is parallel to the Y axis of the spacecraft frame. Actual rotation axis direction as measured during pre-flight ground calibrations was found to be equivalent to nominal within accuracy of the measurements [see 5,6]. Scan Mirror Rotation Characteristics NAVCAM scan mirror can nominally rotate 180 degrees about its rotation axis. Nominally, in zero angle position it points the boresight along the s/c +X axis, in 90 degree position along the s/c -Z axis, and in 180 degree position along the s/c -X axis. Scan Mirror Tilt Nominal NAVCAM mirror tilt is 45 degrees with respect to its rotation axis. Actual mirror tilt as measured during pre-flight ground calibrations is 45.216 degrees [see 5,6]. Pointing Correction Approach Due to insufficient accuracy of the mounting alignment measurements performed on the ground during spacecraft-NAVCAM assembly, calculation of the actual NAVCAM pointing in the on-board OPNAV software and ground software was done by applying pointing correction to the ideal transformation described in [3,4]. The pointing correction has been determined by the Stardust OPNAV team by carrying out a series of star imaging sessions, processing obtained images, and deriving additional rotation to be take into account to compensate for all misalignment described above. On the ground the correction table provided below has been used to make the NAVCAM CK file, storing correction rotations for each individual image. The data from CK can be made available to SPICE toolkit by loading it into the program. Pointing Correction Table Implementation Let x y and z be the components of a vector expressed in the spacecraft frame, then X Y and Z will be the components of the same vector expressed in the NAVCAM image frame: [ X ] [correc-] [ ideal ] [ x ] | Y | = [ tion ] [ rot. ] | y | [ Z ] [ rot. ] [(see 4)] [ z ] This correction rotation is represented by three independent rotation angles -- PSI, CHI, OMEGA -- constructing rotation matrix as follows: [correc-] [ ] [ ] [ ] [ tion ] = [ OMEGA ] [ -CHI ] [ PSI ] [ rot. ] [ ] [ ] [ ] Z X Y where each of three matrixes on the right side represent a coordinate frame rotation by the given angle around the indicated axis. See the SPICELIB routine EUL2M for more information about constructing a rotation matrix from a set of rotation angles. The angles were computes at 10 degrees step through 180 degrees NAVCAM rotation range and stored in a table containing total of 18 records. Each angle had to be linearly interpolated to get values for mirror angles falling between table records. Correction table stored below in the INS-29010_CORRECTION_TABLE keyword contains N set of four numbers grouped together in the following way: INS-29010_CORRECTION_VERSION = ( ANGLE_1, OMEGA_1, CHI_1, PSI_1, ... ... ... ... ANGLE_N, OMEGA_N, CHI_N, PSI_N ) All angles in the table are given in degrees. The keyword INS-29010_CORRECTION_VERSION contain version date of the correction table. Pointing Correction Table: "No correction" Version This table contains zero correction angles for testing purposes: INS-29010_CORRECTION_VERSION = ( @1998-DEC-04 ) INS-29010_CORRECTION_TABLE = ( 0.00000000, 0.0, 0.0, 0.0, 10.00000000, 0.0, 0.0, 0.0, 20.00000000, 0.0, 0.0, 0.0, 30.00000000, 0.0, 0.0, 0.0, 40.00000000, 0.0, 0.0, 0.0, 50.00000000, 0.0, 0.0, 0.0, 60.00000000, 0.0, 0.0, 0.0, 70.00000000, 0.0, 0.0, 0.0, 80.00000000, 0.0, 0.0, 0.0, 90.00000000, 0.0, 0.0, 0.0, 100.00000000, 0.0, 0.0, 0.0, 110.00000000, 0.0, 0.0, 0.0, 120.00000000, 0.0, 0.0, 0.0, 130.00000000, 0.0, 0.0, 0.0, 140.00000000, 0.0, 0.0, 0.0, 150.00000000, 0.0, 0.0, 0.0, 160.00000000, 0.0, 0.0, 0.0, 170.00000000, 0.0, 0.0, 0.0, 180.00000000, 0.0, 0.0, 0.0 ) Pointing Correction Table: Pre-Launch Analytical Fit Version This version of the table contains correction angles provided by Shyam Bhaskaran on December 29, 1998. It contains preliminary value derived on the ground before launch: mirror angle psi chi omega ------------ ----- --- ----- 0.0000000e+00 -4.1459993e-01 1.6089999e-01 1.6201866e-01 1.0000000e+01 -3.8774894e-01 2.3016827e-01 1.6287647e-01 2.0000000e+01 -3.4954554e-01 2.9189528e-01 1.5872556e-01 3.0000000e+01 -3.0207978e-01 3.4442729e-01 1.4968204e-01 4.0000000e+01 -2.4759145e-01 3.8669451e-01 1.3602165e-01 5.0000000e+01 -1.8830572e-01 4.1818029e-01 1.1816941e-01 6.0000000e+01 -1.2629668e-01 4.3884423e-01 9.6683643e-02 7.0000000e+01 -6.3391276e-02 4.4901294e-01 7.2235945e-02 8.0000000e+01 -1.1205284e-03 4.4925487e-01 4.5588154e-02 9.0000000e+01 5.9281156e-02 4.4025701e-01 1.7567433e-02 1.0000000e+02 1.1683415e-01 4.2272021e-01 -1.0959785e-02 1.1000000e+02 1.7074008e-01 3.9728613e-01 -3.9114410e-02 1.2000000e+02 2.2029128e-01 3.6450461e-01 -6.6031378e-02 1.3000000e+02 2.6477996e-01 3.2484390e-01 -9.0885927e-02 1.4000000e+02 3.0342341e-01 2.7874014e-01 -1.1291889e-01 1.5000000e+02 3.3531901e-01 2.2667703e-01 -1.3146037e-01 1.6000000e+02 3.5943906e-01 1.6928189e-01 -1.4595093e-01 1.7000000e+02 3.7466907e-01 1.0742185e-01 -1.5595951e-01 1.8000000e+02 3.7988780e-01 4.2283272e-02 -1.6119701e-01 The angle value in the first record of this table was decreased by 0.05 degrees to account for possible negative angle values due to backlash. This table was "active" in the data section of the file in the period from launch through August 2002 as the following keywords (note that second, PSI, and fourth, OMEGA, columns in the keyword assignment are swapped to correspond to the keyword specification above): INS-29010_CORRECTION_VERSION = ( @2000-MAY-23 ) INS-29010_CORRECTION_TABLE = ( -0.0500000e+00, 1.6201866e-01, 1.6089999e-01, -4.1459993e-01, 1.0000000e+01, 1.6287647e-01, 2.3016827e-01, -3.8774894e-01, 2.0000000e+01, 1.5872556e-01, 2.9189528e-01, -3.4954554e-01, 3.0000000e+01, 1.4968204e-01, 3.4442729e-01, -3.0207978e-01, 4.0000000e+01, 1.3602165e-01, 3.8669451e-01, -2.4759145e-01, 5.0000000e+01, 1.1816941e-01, 4.1818029e-01, -1.8830572e-01, 6.0000000e+01, 9.6683643e-02, 4.3884423e-01, -1.2629668e-01, 7.0000000e+01, 7.2235945e-02, 4.4901294e-01, -6.3391276e-02, 8.0000000e+01, 4.5588154e-02, 4.4925487e-01, -1.1205284e-03, 9.0000000e+01, 1.7567433e-02, 4.4025701e-01, 5.9281156e-02, 1.0000000e+02, -1.0959785e-02, 4.2272021e-01, 1.1683415e-01, 1.1000000e+02, -3.9114410e-02, 3.9728613e-01, 1.7074008e-01, 1.2000000e+02, -6.6031378e-02, 3.6450461e-01, 2.2029128e-01, 1.3000000e+02, -9.0885927e-02, 3.2484390e-01, 2.6477996e-01, 1.4000000e+02, -1.1291889e-01, 2.7874014e-01, 3.0342341e-01, 1.5000000e+02, -1.3146037e-01, 2.2667703e-01, 3.3531901e-01, 1.6000000e+02, -1.4595093e-01, 1.6928189e-01, 3.5943906e-01, 1.7000000e+02, -1.5595951e-01, 1.0742185e-01, 3.7466907e-01, 1.8000000e+02, -1.6119701e-01, 4.2283272e-02, 3.7988780e-01 ) Pointing Correction Table: Pre-Annefrank Version This version of the table contains correction angles provided by Tseng-Chan "Mike" Wang, SDU OPNAV team, on November 8, 2002. It contains values determined by processing NAVCAM images from launch through the end of September 2002: ========================================================= NAVCAM Misalignment Correction Table used for the flight configuration file (based on Shyam Bhaskaran's 3/19/01 calibration & Tseng-Chan Wang's 1/28/02 calibration) Mirror PSI CHI OMEGA Angle (deg) (deg) (deg) ------ ----------------- ----------------- -------- 0.0 0.45670000000000 -0.25060000000000 0.107662 10.0 0.44522244902976 -0.13189786726224 0.143974 20.0 0.43621703923919 -0.06777346603119 0.202485 30.0 0.41395739544780 0.03920860649282 0.256741 40.0 0.37911986566828 0.08520933733487 0.280500 50.0 0.33276297061434 0.12062102558001 0.350000 60.0 0.27629524108447 0.15236770500009 0.398976 70.0 0.21143242046639 0.17948476880551 0.420000 80.0 0.14014533274240 0.20114827873446 0.450000 90.0 0.06460000000000 0.21670000000000 0.460000 100.0 -0.01290817105323 0.22566740142103 0.465000 110.0 -0.09002413386085 0.22777801304310 0.470000 120.0 -0.16440475891553 0.22296770500009 0.475000 130.0 -0.23379002856337 0.21138263606775 0.480000 140.0 -0.29607170649678 0.19337481270327 0.485000 150.0 -0.34935739544780 0.16949139350718 0.490000 160.0 -0.39202803672151 0.14045806408616 0.495000 170.0 -0.42278710447520 0.10715698746309 0.497500 180.0 -0.44070000000000 0.07060000000000 0.500000 ========================================================= While this version provided substantial pointing estimation improvement for most image sequences, it provided worse (but still better than no correction at all) results for other image sequences. The reasons of this discrepancy were not determined at the time when this table was included into the IK. This table is currently active and is present in the keyword below. Note that Mike's angles, while represented the same correction as implemented by FK and "NAVCAMCK" process, did NOT follow the same rotation order/sign pattern. In order to make them match the SPICE models, the second, PSI, and fourth, OMEGA, columns were switched and the values in them were negated. \begindata INS-29010_CORRECTION_VERSION = ( @2002-NOV-25 ) INS-29010_CORRECTION_TABLE = ( -0.2 -0.107662 -0.25060000000000 -0.45670000000000 10.0 -0.143974 -0.13189786726224 -0.44522244902976 20.0 -0.202485 -0.06777346603119 -0.43621703923919 30.0 -0.256741 0.03920860649282 -0.41395739544780 40.0 -0.280500 0.08520933733487 -0.37911986566828 50.0 -0.350000 0.12062102558001 -0.33276297061434 60.0 -0.398976 0.15236770500009 -0.27629524108447 70.0 -0.420000 0.17948476880551 -0.21143242046639 80.0 -0.450000 0.20114827873446 -0.14014533274240 90.0 -0.460000 0.21670000000000 -0.06460000000000 100.0 -0.465000 0.22566740142103 0.01290817105323 110.0 -0.470000 0.22777801304310 0.09002413386085 120.0 -0.475000 0.22296770500009 0.16440475891553 130.0 -0.480000 0.21138263606775 0.23379002856337 140.0 -0.485000 0.19337481270327 0.29607170649678 150.0 -0.490000 0.16949139350718 0.34935739544780 160.0 -0.495000 0.14045806408616 0.39202803672151 170.0 -0.497500 0.10715698746309 0.42278710447520 180.05 -0.500000 0.07060000000000 0.44070000000000 ) \begintext Platform ID -------------------------------------------------------- This number is the NAIF instrument ID of the platform on which the instrument is mounted. The NAVCAM in mounted on the Stardust spacecraft body. \begindata INS-29010_PLATFORM_ID = ( -29000 ) \begintext