KPL/IK ORX NAVCAM Instrument Kernel =============================================================================== This Instrument Kernel (IK) file contains Field-Of-View (FOV) and other geometric parameter definitions for the NAVCAM instruments. Version and Date ------------------------------------------------------------------------------- Version 0.2 -- April 24, 2019 -- Boris Semenov, NAIF Brian Carcich, KinetX and Latchmoor Services, LLC Add distortion model for NAVCAM1 (NavCam) and NAVCAM2 (NFTCam) Update INS-6408x_CCD_CENTER* KPVs Update INS-6408x_FOCAL_LENGTH KPVs Update INS-6408x_IFOV KPVs Update INS-6408x_F/NUMBER KPVs Version 0.1 -- September 16, 2015 -- Coralie Jackman, KinetX; Boris Semenov, NAIF Corrected full CCD center center pixel coordinates for both NAVCAMs: INS-64081_CCD_CENTER_DARK, INS-64082_CCD_CENTER_DARK were ( 1311.5, 1025.5 ), now ( 1439.5, 1025.5 ) Version 0.0 -- August 24, 2015 -- Boris Semenov, NAIF Placeholder version. Based on orx_aux_v03_draft_150817.ti by Jackman, Carcich, Hammond, Kidd; 8/7/15-8/14/15 References ------------------------------------------------------------------------------- 1. Kernel Pool Required Reading 2. GETFOV, getfoc_c, cspice_getfov headers 3. ORX FK file, latest version 4. OIA_ORX_112_Distortion_Boresight_Memo_revB.pdf, John Pelgrift and Derek Nelson, "FDS-Derived Geometric Distortion Model Results and Boresight Pointing Solutions for OCAMS and TAGCAMS," Technical Memorandum SNAFD.B / TM 001-18, 09-AUG-2018. 5. orex_tagcams_addendum_v06.ti, ISIS Addendum IK from Kris Becker 6. Bos, B.J., Ravine, M.A., Caplinger, M. et al. Space Sci Rev (2018) 214: 37. https://doi.org/10.1007/s11214-017-0465-2 7. The OpenCV library, Camera Calibration and 3D Reconstruction: https://docs.opencv.org/2.4.13.7/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html 8. Dave L. Shupe and Richard N. Hook, "The SIP Convention for Representing Distortion in FITS Image Headers," Astronomical Data Analysis Software and Systems XIV ASP Conference Series, Vol. XXX, 2005. https://fits.gsfc.nasa.gov/registry/sip/shupeADASS.pdf also September 16, 2008 https://fits.gsfc.nasa.gov/registry/sip/SIP_distortion_v1_0.pdf Contact Information ------------------------------------------------------------------------------- Boris V. Semenov, NAIF/JPL, (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 kernel must ``load'' the kernel, 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 Once the file has been loaded, the SPICE routine GETFOV (getfov_c in C, cspice_getfov in IDL and MATLAB) can be used to retrieve FOV parameters for a given instrument or structure. This file was created and may be updated with a text editor or word processor. Naming Conventions ---------------------------------------------------------- All names referencing values in this IK file start with the characters `INS' followed by the NAIF ORX ID number (-64) followed by a NAIF three digit ID code for one of NAVCAMs: ORX_NAVCAM1 -64081 ORX_NAVCAM2 -64082 The remainder of the keyword name is an underscore character followed by the unique name of the data item. For example, the boresight direction of ORX_NAVCAM1 is specified by: INS-64081_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 --------------------------------------------------------- Mounting Alignment -------------------------------------------------------- Refer to the latest version of the ORX Frames Definition Kernel (FK) [3] for the instrument reference frame definitions and mounting alignment information. Instrument Detector/Sensor Layout ---------------------------------------------------------- Instrument Pixel-to-3D Coordinate Mapping ---------------------------------------------------------- Instrument Detector/Sensor Parameters ---------------------------------------------------------- NAVCAM CCD Detector Parameters: ----------------------------------------------------------------- parameter 1x1 binning mode ----------------------------------------------------------------- Pixel size (microns) 2.2 x 2.2 Visible detector array size 2592 x 1944 Visible CCD center (zero-based) ( 1295.5, 971.5 ) Full detector array size 2752 x 2004 (Includes dark pixels) Full CCD center (zero-based) ( 1439.5, 1025.5 ) ----------------------------------------------------------------- - This table in the comments contains nominal values from pre-launch calibrations; refer to the Kernel Pool Values (KPVs) in this IK for the current best values. These parameters are captured in the following keywords in the same units as in the table. The _CCD_CENTER KPVs are zero-based; refer to the description of the _CCD_FIRST_PIXEL KPV below; these values differ from the equivalent _OPENCV_OD_C values below as the latter are one-based. \begindata INS-64081_PIXEL_SIZE = ( 2.2 ) INS-64081_PIXEL_SAMPLES = ( 2592 ) INS-64081_PIXEL_LINES = ( 1944 ) INS-64081_CCD_CENTER = ( 1268.083, 949.747 ) INS-64082_PIXEL_SIZE = ( 2.2 ) INS-64082_PIXEL_SAMPLES = ( 2592 ) INS-64082_PIXEL_LINES = ( 1944 ) INS-64082_CCD_CENTER = ( 1309.530, 968.487 ) \begintext SPOC INGEST-specific NavCam1 items: - additional PIXEL_SAMPLES_ and PIXEL_LINES_ values, to account for images packaged with dark pixels included around the border of the 2592x1944 visible pixels - _CCD_FIRST_PIXEL to define starting point for _CCD_CENTER - _SPOC_FITS_NAXIS1/2 to define direction of increasing NAXIS1 and NAXIS2 in SPOC FITS images CCD_FIRST_PIXEL keyword defines first pixel base, - i.e. first pixel as (0,0) or (1,1) - Necessary to properly interpret CCD_CENTER - Currently (2015-08-17) it is (0.,0.), because CCD_CENTER is zero-based \begindata INS-64081_PIXEL_SAMPLES_DARK = ( 2752 ) INS-64081_PIXEL_LINES_DARK = ( 2004 ) INS-64081_CCD_CENTER_DARK = ( 1412.083, 1003.747 ) INS-64081_SPOC_FITS_NAXIS1 = ( 1.0, 0.0, 0.0 ) INS-64081_SPOC_FITS_NAXIS2 = ( 0.0, -1.0, 0.0 ) INS-64081_CCD_FIRST_PIXEL = ( 0., 0. ) INS-64082_PIXEL_SAMPLES_DARK = ( 2752 ) INS-64082_PIXEL_LINES_DARK = ( 2004 ) INS-64082_CCD_CENTER_DARK = ( 1453.530, 1022.487 ) INS-64082_SPOC_FITS_NAXIS1 = ( 1.0, 0.0, 0.0 ) INS-64082_SPOC_FITS_NAXIS2 = ( 0.0, -1.0, 0.0 ) INS-64082_CCD_FIRST_PIXEL = ( 0., 0. ) \begintext Instrument Optical Parameters ---------------------------------------------------------- NAVCAM Optics Parameters: ----------------------------------------------- parameter 1x1 binning mode ----------------------------------------------- Focal length (meters) 0.00764 f-number 5.6 IFOV (microRadian/pixel) 287.96 Aperture diameter (cm) 4.28 ----------------------------------------------- - This table in the comments contains nominal values from pre-launch calibrations; refer to the Kernel Pool Values (KPVs) in this IK for the current best values These parameters are captured in the following keywords in the same units as in the table. N.B. KPVs INS-6408x_OPENCV_OD_F contain separate focal lengths for the X (NAXIS1; sample; column) and Y (NAXIS2; line; row) axes' directions; further, those focal lengths are dependent on camera head temperature. The values in _FOCAL_LENGTH and _IFOV KPVs here are nominal flight values based on mean focal lengths at a temperature of zero Celsius. Refer to the distortion model description for details of the separate focal lengths and their temperature dependence. \begindata INS-64081_FOCAL_LENGTH = ( 0.0076412391 ) INS-64081_F/NUMBER = ( 5.6 ) INS-64081_IFOV = ( 287.911420 ) INS-64081_APERTURE_DIAMETER = ( 4.28 ) INS-64082_FOCAL_LENGTH = ( 0.0076175682 ) INS-64082_F/NUMBER = ( 5.6 ) INS-64082_IFOV = ( 288.806079 ) INS-64082_APERTURE_DIAMETER = ( 4.28 ) \begintext Instrument Optical Distortion ---------------------------------------------------------- NavCam1 and NavCam2 (NavCam and NFTCam) WCS SIP precursor coefficients ---------------------------------------------------------------------- Summary ------- The coefficients INS-64xxx_SIPPCC_A/_AP/_B/_BP here are WCS SIP PreCursor coefficients, derived from the OpenCV distortion model coefficents INS-64xxx_OPENCV_OD_[KPFC], as implemented by SNAFD/FDS, cf. SNAFD Technical Memorandum SNAFD.B / TM 001-18 [4]. Details ------- The OpenCV distortion coefficients work in tangent-like coordinate units, X/|Z| and Y/|Z|, where [X,Y,Z] is the Cartesian vector to a given target (e.g. star), and where +X => RIGHT => +NAXIS1 +Y => UP => +NAXIS2 -Z is the boresight So X and Y are offsets perpendicular to the boresight. The result of the basic model is in the same coordinate units, which are then converted to distorted pixel coordinates by scaling with the X or Y focal length, as appropriate, which focal length is in units of pixels. The bulk of the work to derive the WCS SIP precursor coefficients was algebraic, specifically expanding the OpenCV expressions to simple SUM[Kp_q u**p v**q] polynomials suitable for conversion to the WCS SIP model. WCS SIP coefficients work in pixel units for both independent and dependent variables, so each simple polynomial coefficient derived from the OpenCV model needs to be divided by the focal lengths raised to their respective powers for the independent variables' (X and Y) scaling, then multiplied by the focal length of the dependent variable's focal length (X or Y). This has all be done in the WCS SIP PreCursor Coefficients above, for a temperature of zero Celsius; note that additional per-image, temperature-dependent scaling will be done when these data are used. Extended details of the SNAFD/OpenCV and FITS WCS SIP optical distortion models are below. FITS WCS Distortion Model KPV Naming ------------------------------------ For each detector, the SIP PreCursor Coefficient (SIPPC) model comprises eight Kernel Pool Variable names (KPVs): INS-64xxx_SIPPCC_A_ORDER - max order, NAXIS1 detector-to-sky model INS-64xxx_SIPPCC_A - SIPPCs, NAXIS1 detector-to-sky model INS-64xxx_SIPPCC_AP_ORDER - max order, NAXIS1 sky-to-detector model INS-64xxx_SIPPCC_AP - SIPPCs, NAXIS1 sky-to-detector model INS-64xxx_SIPPCC_B_ORDER - max order, NAXIS2 detector-to-sky model INS-64xxx_SIPPCC_B - SIPPCs, NAXIS2 detector-to-sky model INS-64xxx_SIPPCC_BP_ORDER - max order, NAXIS2 sky-to-detector model INS-64xxx_SIPPCC_BP - SIPPCs, NAXIS2 sky-to-detector model The _A, _AP, _B, and _BP SIPPCs are arrays of values. organized in triples; each triple-tuple comprises exponents p and q, and the coefficient for that pq pair: p => (NAXIS1value - cx) exponent (u or U) q => (NAXIS2value - cy) exponent (v or V) coeff => coefficient Kp_q in polynomial term [Kp_q u**p v**q] For example, in the KPV assignment INS-64082_SIPPCC_BP += ( 4 3 -3.5306026974349838D-22 ) sets SIP precursor coefficient K4_3 to -3.5306026974349838D-22 in the NAXIS2 sky-to-camera polynomial model, so that section of the polynomial will look like this: v = ... + (-3.5306026974349838D-22 * U**4 * V**3) + ... using the naming conventions of equation (6) in Shupe and Hook [8]. SNAFD/OpenCV Distortion Model KPV Naming ---------------------------------------- All of the OpenCV distortion model KPVs start are of the form INS-64xxx_OPENCV_OD_z where the final z is a single letter; further information is provided in the OpenCV model details below. Caveats ------- * Direct conversion to the WCS SIP model from the OpenCV model requires that OpenCV coefficients k4, k5, and k6 are all zero. * The OpenCV model is "sky-to-detector," which means that the direct conversion coefficients will be scaled to become AP_p_p and BP_p_q coefficients in WCS SIP, which is called the "reverse transformation" in Shupe and Hook [8]. The forward, per [8], transformation SIPPCCs in this IK are derived via least-squares and are accurate to a fraction, around a seventh, of a pixel. Further, at least one library (WCSlib) considers the forward transformation to be "definitive," and by default implements the reverse transformation via an iterative solution to the inverse of the forward transformation, in the process ignoring any reverse tranformation SIP coefficients that may be in any given FITS header. * Focal lengths are temperature-dependent, per the formula fi(T) = FNOMi * (1 + aT) where fi(T) = Temperature-corrected focal length, pixels; i=0/1 for NAXIS1/2 FNOMi = Nominal focal length at T=0C, INS-64xxx_OPENCV_OD_F[i] a = INS-64xxx_OPENCV_OD_A, Celsius**-1 T = NavCam camera head temperature, from TCCHTEMP sensor, Celsius * The temperature parameter of any given observation wasn't known at the time this file was created. Before being placed in a FITS header, the coefficients need to be scaled by the temperature factor (1 + aT)**-1 raised to a power one less than the sum of the exponents minus 1. * The CDi_j matrix may also need to be adjusted for the differing and temperature-dependent focal lengths. * SIP model coefficients A_1_0, AP_1_0, B_0_1, and BP_0_1 are all near, or equal to, unity in the general sense and will be unaffected by temperature scaling, but need to have 1.0 subtracted from them before inserting them into a FITS header. The reason is that the SIP model starts from a 1:1 linear relationship between a distorted pixel location and its corresponding undistorted pixel location, and vice versa. * The INS-6408x_CCD_CENTER KPVs are off by one with respect to the centers of INX-6408x_OPENCV_OD_C because the latter are one-based and the former are zero based (see INS-6408x_CCD_FIRST_PIXEL). OpenCV Optical Distortion Model (INS-64xxx_OPENCV_OD_*) ------------------------------------------------------- The OpenCV model, as implemented here, comprises four equations [4]: i. Rotation of vInertial, vector in inertial reference frame to vImage, vector in image reference frame (-Z => +Boresight; +X => RIGHT => FITS +NAXIS1; +Y = UP => FITS +NAXIS2). [ vImage,x ] [ Inertial ]T [ vImage,y ] = vImage = [ C ] vInertial [ vImage,z ] [ Image ] ii. Scale vImage to image plane coordinates (x0,y0) [ x0 ] 1 [ vImage,x ] [ ] = ---------- [ ] [ y0 ] |vImage,z| [ vImage,y ] iii. Apply optical distortion to distorted coordinates (x,y) [ x ] [ x0 2x0y0 r**2+2x0**2 ] [ KFACTOR ] [ ] = [ ] [ p1 ] [ y ] = [ y0 r**2+2y0**2 2x0y0 ] [ p2 ] where r**2 = x0**2 + y0**2 p1,p2 => Model coefficients => KPV names ending in _OPENCV_OD_P 1 + k1*r**2 + k2*r**4 + k3*r**6 KFACTOR = ------------------------------- 1 + k4*r**2 + k5*r**4 + k6*r**6 k1 through k6 = distortion model parameters => KPV names ending in _OPENCV_OD_K ***N.B. 0 = k4 = k5 = k6 in the ORX case iv. Convert distorted coordinates to on-CCD pixel location (u,v) [ u ] [ fx(1 + aT)x ] [ cx ] [ ] = [ ] + [ ] [ v ] [ fy(1 + aT)y ] [ cy ] where cx,cy = 1-based pixel location of boresight and model center => KPV names ending in _OPENCV_OD_C fx,fy = camera focal length, in pixels, at zero Celsius => KPV names ending in _OPENCV_OD_F a = Temperature dependency coefficient of focal length, C**-1 => KPV names ending in _OPENCV_OD_A T = Temperature of camera at time of observation N.B. The distortion parameters in this file are for a camera head temperature of zero Celsius; the parameters need to be adjusted for observations made at other temperatures. In this IK file, the models comprise the following KPVs: * INS-64xxx_OPENCV_OD_K (six values, k1 through k6, with k4=k5=k6=0) * INS-64xxx_OPENCV_OD_P (two values, p1 and p2) * INS-64xxx_OPENCV_OD_F (two values, fx and fy; focal lengths) * INS-64xxx_OPENCV_OD_C (two values, cx and cy; 1-based centers) * INS-64xxx_OPENCV_OD_A (one value, a; C**-1) In addition, two more KPVs are provided indicating the expected size (dimension) of the image to which the cx and cy values apply. * INS-64xxx_OPENCV_OD_NL (one value; line count = FITS NAXIS2) * INS-64xxx_OPENCV_OD_NS (one value; sample count = FITS NAXIS1) If an image has different dimensions, then it is likely that either non-visibile calibration pixels have been added around the image or that the image is a sub-window of the visible pixels, in which case the cx and cy values are invalid for that image. FITS WCS SIP Optical Distortion Model (INS-64xxx_SIPPCC_*) ---------------------------------------------------------- With adjustments for units and other scalings, there is a 1:1 relationship between coordinates in the OpenCV distortion model above and the coordinates in the SIP distortion model (Shupe and Hook, [5]): OpenCV distortion model SIP model [5] vImage,x and vImage,y x, y, and CDi_j matrix x0 and y0 U and V x and y u and v u-cx and v-cy u and v Model equations above F(U,V) and G(U,V) fx and fy, a, and T CDi_i matrix row magnitudes That being the case, and as the k4, k5 and k6 coefficients are all zero setting to unity the denominator of KFACTOR, the OpenCV distortion model can be exactly represented by simple polynomials in the SIP distortion model. Specifically, the OpenCV equations above can be reduced to AP_p_q and BP_p_q coefficients in the SIP model. One wrinkle in this approach is that the OpenCV model works in tangent-like ratios (x0,y0) and (x,y), while the SIP model works in pixels, and the scalings between the two are temperature-dependent focal lengths. Therefore any calculation of SIP coefficents cannot include the unknown temperature of a future observation. So, the coefficients in this IK are called SIP PreCursor Coefficients, and the KPV names will have the form INX-64xxx_SIPPCC_*. Start of SIP PreCursor Coefficients (SIPPCC) instrument ID -64081 ------------------------------------------------------------------------ \begindata INS-64081_SIPPCC_A_ORDER = 7 INS-64081_SIPPCC_A = ( 0, 1, 4.7548020709940794D-06 ) INS-64081_SIPPCC_A += ( 0, 2, -3.3787611212671251D-07 ) INS-64081_SIPPCC_A += ( 0, 3, -2.2854742484050815D-11 ) INS-64081_SIPPCC_A += ( 0, 5, 3.4860036767547063D-17 ) INS-64081_SIPPCC_A += ( 0, 7, -1.5968820396209735D-23 ) INS-64081_SIPPCC_A += ( 1, 0, 0.99996396145120481 ) INS-64081_SIPPCC_A += ( 1, 1, -2.2731845227707316D-07 ) INS-64081_SIPPCC_A += ( 1, 2, 4.4809343121254448D-08 ) INS-64081_SIPPCC_A += ( 1, 4, 3.0814227850124196D-15 ) INS-64081_SIPPCC_A += ( 1, 6, 3.7189140414026078D-22 ) INS-64081_SIPPCC_A += ( 2, 0, -1.2040780222756677D-06 ) INS-64081_SIPPCC_A += ( 2, 1, -2.0244480232481474D-11 ) INS-64081_SIPPCC_A += ( 2, 3, 3.4893661645080781D-17 ) INS-64081_SIPPCC_A += ( 2, 5, -1.9433641483517421D-23 ) INS-64081_SIPPCC_A += ( 3, 0, 4.4717513569368212D-08 ) INS-64081_SIPPCC_A += ( 3, 2, 6.1302562094026298D-15 ) INS-64081_SIPPCC_A += ( 3, 4, 1.1910657860989499D-21 ) INS-64081_SIPPCC_A += ( 4, 1, 2.3408433515426462D-17 ) INS-64081_SIPPCC_A += ( 4, 3, -1.0968897214173156D-23 ) INS-64081_SIPPCC_A += ( 5, 0, 3.1911253213494573D-15 ) INS-64081_SIPPCC_A += ( 5, 2, 1.1559840815435212D-21 ) INS-64081_SIPPCC_A += ( 6, 1, -7.7494117034275858D-24 ) INS-64081_SIPPCC_A += ( 7, 0, 3.4640024031815993D-22 ) INS-64081_SIPPCC_AP_ORDER = 7 INS-64081_SIPPCC_AP = ( 0, 2, 2.6163261044126609D-07 ) INS-64081_SIPPCC_AP += ( 1, 0, 1 ) INS-64081_SIPPCC_AP += ( 1, 1, 1.3492562305643503D-07 ) INS-64081_SIPPCC_AP += ( 1, 2, -4.456746000987371D-08 ) INS-64081_SIPPCC_AP += ( 1, 4, 2.5784136149981755D-15 ) INS-64081_SIPPCC_AP += ( 1, 6, -1.0461460943104884D-22 ) INS-64081_SIPPCC_AP += ( 2, 0, 7.8492540149600092D-07 ) INS-64081_SIPPCC_AP += ( 3, 0, -4.4569025478012441D-08 ) INS-64081_SIPPCC_AP += ( 3, 2, 5.1570083677305577D-15 ) INS-64081_SIPPCC_AP += ( 3, 4, -3.1385485231187279D-22 ) INS-64081_SIPPCC_AP += ( 5, 0, 2.5785947559136866D-15 ) INS-64081_SIPPCC_AP += ( 5, 2, -3.1386587671782659D-22 ) INS-64081_SIPPCC_AP += ( 7, 0, -1.0462563383700723D-22 ) INS-64081_SIPPCC_B_ORDER = 7 INS-64081_SIPPCC_B = ( 0, 1, 0.99997003124081041 ) INS-64081_SIPPCC_B += ( 0, 2, -2.7688055243713551D-07 ) INS-64081_SIPPCC_B += ( 0, 3, 4.4681676788122043D-08 ) INS-64081_SIPPCC_B += ( 0, 5, 3.2387188868159831D-15 ) INS-64081_SIPPCC_B += ( 0, 7, 3.2396417039155607D-22 ) INS-64081_SIPPCC_B += ( 1, 0, 3.640797374385624D-06 ) INS-64081_SIPPCC_B += ( 1, 1, -8.8171254326572899D-07 ) INS-64081_SIPPCC_B += ( 1, 2, -2.0858565865465877D-11 ) INS-64081_SIPPCC_B += ( 1, 4, 3.6306277699205359D-17 ) INS-64081_SIPPCC_B += ( 1, 6, -1.874211139365522D-23 ) INS-64081_SIPPCC_B += ( 2, 0, -9.8780198295209662D-08 ) INS-64081_SIPPCC_B += ( 2, 1, 4.4797824283825063D-08 ) INS-64081_SIPPCC_B += ( 2, 3, 6.19877411865829D-15 ) INS-64081_SIPPCC_B += ( 2, 5, 1.1204766631571929D-21 ) INS-64081_SIPPCC_B += ( 3, 0, -1.182695285278783D-11 ) INS-64081_SIPPCC_B += ( 3, 2, 2.4930624958146652D-17 ) INS-64081_SIPPCC_B += ( 3, 4, -1.2620273468574689D-23 ) INS-64081_SIPPCC_B += ( 4, 1, 3.0702727134142815D-15 ) INS-64081_SIPPCC_B += ( 4, 3, 1.1660859285525595D-21 ) INS-64081_SIPPCC_B += ( 5, 0, 1.1632066605327377D-17 ) INS-64081_SIPPCC_B += ( 5, 2, -8.4644821776446485D-24 ) INS-64081_SIPPCC_B += ( 6, 1, 3.8688765217099733D-22 ) INS-64081_SIPPCC_B += ( 7, 0, -3.3518826793508977D-24 ) INS-64081_SIPPCC_BP_ORDER = 7 INS-64081_SIPPCC_BP = ( 0, 1, 1 ) INS-64081_SIPPCC_BP += ( 0, 2, 2.0238843458465254D-07 ) INS-64081_SIPPCC_BP += ( 0, 3, -4.456746000987371D-08 ) INS-64081_SIPPCC_BP += ( 0, 5, 2.5784136149981759D-15 ) INS-64081_SIPPCC_BP += ( 0, 7, -1.0461460943104883D-22 ) INS-64081_SIPPCC_BP += ( 1, 1, 5.2328360099733391D-07 ) INS-64081_SIPPCC_BP += ( 2, 0, 6.7465181214126776D-08 ) INS-64081_SIPPCC_BP += ( 2, 1, -4.4569025478012448D-08 ) INS-64081_SIPPCC_BP += ( 2, 3, 5.1570083677305577D-15 ) INS-64081_SIPPCC_BP += ( 2, 5, -3.1385485231187274D-22 ) INS-64081_SIPPCC_BP += ( 4, 1, 2.578594755913687D-15 ) INS-64081_SIPPCC_BP += ( 4, 3, -3.1386587671782668D-22 ) INS-64081_SIPPCC_BP += ( 6, 1, -1.0462563383700723D-22 ) INS-64081_OPENCV_OD_K = -0.53766 INS-64081_OPENCV_OD_K += 0.37526 INS-64081_OPENCV_OD_K += -0.18368 INS-64081_OPENCV_OD_K += 0 INS-64081_OPENCV_OD_K += 0 INS-64081_OPENCV_OD_K += 0 INS-64081_OPENCV_OD_P = 0.00023432 INS-64081_OPENCV_OD_P += 0.00090875 INS-64081_OPENCV_OD_F = 3473.26 INS-64081_OPENCV_OD_F += 3473.321 INS-64081_OPENCV_OD_C = 1269.083 INS-64081_OPENCV_OD_C += 950.747 INS-64081_OPENCV_OD_A = 2.2933D-05 INS-64081_OPENCV_OD_NL = 1944 INS-64081_OPENCV_OD_NS = 2592 \begintext Start of SIP PreCursor Coefficients (SIPPCC) instrument ID -64082 ------------------------------------------------------------------------ \begindata INS-64082_SIPPCC_A_ORDER = 7 INS-64082_SIPPCC_A = ( 0, 1, 1.6544307242200203D-06 ) INS-64082_SIPPCC_A += ( 0, 2, 4.5763864101920723D-08 ) INS-64082_SIPPCC_A += ( 0, 3, -8.2290670844103933D-12 ) INS-64082_SIPPCC_A += ( 0, 5, 1.3001948422094673D-17 ) INS-64082_SIPPCC_A += ( 0, 7, -6.1695529108408065D-24 ) INS-64082_SIPPCC_A += ( 1, 0, 0.99993400283246714 ) INS-64082_SIPPCC_A += ( 1, 1, 6.0043590951431293D-07 ) INS-64082_SIPPCC_A += ( 1, 2, 4.5268464689574467D-08 ) INS-64082_SIPPCC_A += ( 1, 4, 2.9212070283314083D-15 ) INS-64082_SIPPCC_A += ( 1, 6, 4.4950706368439798D-22 ) INS-64082_SIPPCC_A += ( 2, 0, 1.6368936499069683D-07 ) INS-64082_SIPPCC_A += ( 2, 1, -7.1558214339172058D-12 ) INS-64082_SIPPCC_A += ( 2, 3, 1.2724942466404046D-17 ) INS-64082_SIPPCC_A += ( 2, 5, -7.335073680499249D-24 ) INS-64082_SIPPCC_A += ( 3, 0, 4.5179942763585067D-08 ) INS-64082_SIPPCC_A += ( 3, 2, 5.8606307960417514D-15 ) INS-64082_SIPPCC_A += ( 3, 4, 1.3586823949109474D-21 ) INS-64082_SIPPCC_A += ( 4, 1, 8.4289554380405208D-18 ) INS-64082_SIPPCC_A += ( 4, 3, -4.0573016504489028D-24 ) INS-64082_SIPPCC_A += ( 5, 0, 3.0400329212766216D-15 ) INS-64082_SIPPCC_A += ( 5, 2, 1.3216724451479335D-21 ) INS-64082_SIPPCC_A += ( 6, 1, -2.8398109886243924D-24 ) INS-64082_SIPPCC_A += ( 7, 0, 4.0817195691810783D-22 ) INS-64082_SIPPCC_AP_ORDER = 7 INS-64082_SIPPCC_AP = ( 0, 2, -3.5777266013838032D-08 ) INS-64082_SIPPCC_AP += ( 1, 0, 1 ) INS-64082_SIPPCC_AP += ( 1, 1, -3.5949992664327727D-07 ) INS-64082_SIPPCC_AP += ( 1, 2, -4.4899846484998687D-08 ) INS-64082_SIPPCC_AP += ( 1, 4, 2.6585652038539514D-15 ) INS-64082_SIPPCC_AP += ( 1, 6, -1.176864846722749D-22 ) INS-64082_SIPPCC_AP += ( 2, 0, -1.0733192203388848D-07 ) INS-64082_SIPPCC_AP += ( 3, 0, -4.4899898354423016D-08 ) INS-64082_SIPPCC_AP += ( 3, 2, 5.3171365501897787D-15 ) INS-64082_SIPPCC_AP += ( 3, 4, -3.5305986187992604D-22 ) INS-64082_SIPPCC_AP += ( 5, 0, 2.658571346339376D-15 ) INS-64082_SIPPCC_AP += ( 5, 2, -3.5306026974349833D-22 ) INS-64082_SIPPCC_AP += ( 7, 0, -1.1768689253584731D-22 ) INS-64082_SIPPCC_B_ORDER = 7 INS-64082_SIPPCC_B = ( 0, 1, 0.99995882696836025 ) INS-64082_SIPPCC_B += ( 0, 2, 7.3216634338257116D-07 ) INS-64082_SIPPCC_B += ( 0, 3, 4.5050676143317631D-08 ) INS-64082_SIPPCC_B += ( 0, 5, 3.2082103096696141D-15 ) INS-64082_SIPPCC_B += ( 0, 7, 3.4244274784708243D-22 ) INS-64082_SIPPCC_B += ( 1, 0, 1.2532324438204223D-06 ) INS-64082_SIPPCC_B += ( 1, 1, 1.19505250094936D-07 ) INS-64082_SIPPCC_B += ( 1, 2, -7.3782227874301D-12 ) INS-64082_SIPPCC_B += ( 1, 4, 1.3280033296714563D-17 ) INS-64082_SIPPCC_B += ( 1, 6, -7.0906032762042986D-24 ) INS-64082_SIPPCC_B += ( 2, 0, 2.6153010933836585D-07 ) INS-64082_SIPPCC_B += ( 2, 1, 4.5225942365396023D-08 ) INS-64082_SIPPCC_B += ( 2, 3, 6.0223963684208741D-15 ) INS-64082_SIPPCC_B += ( 2, 5, 1.2372752860656854D-21 ) INS-64082_SIPPCC_B += ( 3, 0, -4.1499713517936833D-12 ) INS-64082_SIPPCC_B += ( 3, 2, 8.9757330212740502D-18 ) INS-64082_SIPPCC_B += ( 3, 4, -4.6881216936238232D-24 ) INS-64082_SIPPCC_B += ( 4, 1, 2.9388465289470587D-15 ) INS-64082_SIPPCC_B += ( 4, 3, 1.3076726880852315D-21 ) INS-64082_SIPPCC_B += ( 5, 0, 4.1605101938607032D-18 ) INS-64082_SIPPCC_B += ( 5, 2, -3.098901695619927D-24 ) INS-64082_SIPPCC_B += ( 6, 1, 4.4556510348553777D-22 ) INS-64082_SIPPCC_B += ( 7, 0, -1.2207187986353416D-24 ) INS-64082_SIPPCC_BP_ORDER = 7 INS-64082_SIPPCC_BP = ( 0, 1, 1 ) INS-64082_SIPPCC_BP += ( 0, 2, -5.3924988996491578D-07 ) INS-64082_SIPPCC_BP += ( 0, 3, -4.4899846484998693D-08 ) INS-64082_SIPPCC_BP += ( 0, 5, 2.6585652038539514D-15 ) INS-64082_SIPPCC_BP += ( 0, 7, -1.1768648467227492D-22 ) INS-64082_SIPPCC_BP += ( 1, 1, -7.1554614689259003D-08 ) INS-64082_SIPPCC_BP += ( 2, 0, -1.7975017097328664D-07 ) INS-64082_SIPPCC_BP += ( 2, 1, -4.4899898354423016D-08 ) INS-64082_SIPPCC_BP += ( 2, 3, 5.3171365501897787D-15 ) INS-64082_SIPPCC_BP += ( 2, 5, -3.530598618799259D-22 ) INS-64082_SIPPCC_BP += ( 4, 1, 2.6585713463393757D-15 ) INS-64082_SIPPCC_BP += ( 4, 3, -3.5306026974349838D-22 ) INS-64082_SIPPCC_BP += ( 6, 1, -1.1768689253584731D-22 ) INS-64082_OPENCV_OD_K = -0.53831 INS-64082_OPENCV_OD_K += 0.38214 INS-64082_OPENCV_OD_K += -0.20281 INS-64082_OPENCV_OD_K += 0 INS-64082_OPENCV_OD_K += 0 INS-64082_OPENCV_OD_K += 0 INS-64082_OPENCV_OD_P = -0.00062239 INS-64082_OPENCV_OD_P += -0.00012388 INS-64082_OPENCV_OD_F = 3462.53 INS-64082_OPENCV_OD_F += 3462.532 INS-64082_OPENCV_OD_C = 1310.53 INS-64082_OPENCV_OD_C += 969.487 INS-64082_OPENCV_OD_A = 1.9876D-05 INS-64082_OPENCV_OD_NL = 1944 INS-64082_OPENCV_OD_NS = 2592 \begintext Provenance of the source of the SIP PreCursor Coefficient data ------------------------------------------------------------------------ Any SPICE kernels or JSON files, along with the Python script opencv3.py that generated this SIPPCC IK, are listed below, along with its MD5 checksum in hexadecimal and the type of input. Types of 'JSON' and 'PY' indicate JSON files and Python scripts, respectively; all other values indicate SPICE kernel types, typically TEXT. \begindata WCS_SIPPCC_PROVENANCE = ( 'orex_tagcams_addendum_v06.ti', '3dc6a94a1371c6bb2969303221883a79', 'TEXT', 'opencv3.py', '5af0bec73308da444af983def16f2b0f', 'PY' ) \begintext Instrument FOV Definition(s) ---------------------------------------------------------- This section defines the following FOVs: ID SHAPE FRAME SIZE BSIGHT ------- -------- ------------- --------------- ------ -64081 RECTANGLE ORX_NAVCAM1 21.382 x 16.037 +Z -64082 RECTANGLE ORX_NAVCAM2 21.382 x 16.037 +Z - This table in the comments contains nominal values from pre-launch calibrations; the derivate KPVs below (_FOV_REF_*) were not updated for adjustments to _FOCAL_LENGTH and _IFOV ca. April, 2019. All sizes are half-extents given in degrees, consistent optical and detector parameter values given earlier in this IK. The FOVs are defined in this data block. \begindata INS-64081_FOV_CLASS_SPEC = 'ANGLES' INS-64081_FOV_SHAPE = 'RECTANGLE' INS-64081_FOV_FRAME = 'ORX_NAVCAM1' INS-64081_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-64081_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 ) INS-64081_FOV_REF_ANGLE = ( 21.382 ) INS-64081_FOV_CROSS_ANGLE = ( 16.037 ) INS-64081_FOV_ANGLE_UNITS = ( 'DEGREES' ) INS-64082_FOV_CLASS_SPEC = 'ANGLES' INS-64082_FOV_SHAPE = 'RECTANGLE' INS-64082_FOV_FRAME = 'ORX_NAVCAM2' INS-64082_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-64082_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 ) INS-64082_FOV_REF_ANGLE = ( 21.382 ) INS-64082_FOV_CROSS_ANGLE = ( 16.037 ) INS-64082_FOV_ANGLE_UNITS = ( 'DEGREES' ) \begintext End of the IK file.