KPL/IK TTCAM Instrument Kernel ============================================================================== This instrument kernel (I-kernel) contains Lucy Terminal Tracking Camera (TTCAM) optics, detector, and field-of-view parameters. Version and Date ---------------------------------------------------------- Version 0.4 -- June 25, 2025 -- Matt Barnes, NAIF Eric Sahr, KinetX -- Per [12], added two new instruments, LUCY_TTCAM1_CAL/-49512 and LUCY_TTCAM2_CAL/-49522 to capture parameters for the instruments' calibration readout mode. Parameters per [11]. -- Added OpenCV distortion model parameters per [8]. -- Added SIP distortion model parameters per [7]. Version 0.3 -- Mar 1, 2023 -- Erik Lessac-Chenen, KinetX -- Updated with values from the OpNav TTCams Optical Distortion File V3 [7]. Specifically updated the values for IFOV, FOV_REFERENCE_ANGLE, FOV_CROSS_ANGLE, FOCAL_LENGTH, and F/NUMBER. Updated incorrect PIXEL_SIZE to value from [5]. Added CCD_CENTER and CCD_CENTER_DARK values for both TTCams. Version 0.2 -- Jan 31, 2022 -- Ernest Cisneros, ASU -- Updated with values from M50 calibration report (revision D, dated 29 January 2021). Specifically updated the values for IFOV, FOV_REFERENCE_ANGLE, FOV_CROSS_ANGLE, FOCAL_LENGTH, and F/NUMBER. Version 0.1 -- July 12, 2021 -- Ernest Cisneros, ASU -- Updated with values from M50 calibration report (revision D, dated 04 June 2020). Specifically updated the values for IFOV, FOV_REFERENCE_ANGLE, FOV_CROSS_ANGLE, FOCAL_LENGTH, and F/NUMBER. Version 0.0 -- October 15, 2019 -- Boris Semenov, NAIF References ---------------------------------------------------------- 1. Kernel Pool Required Reading 2. Frames Required Reading 3. Lucy Frames Kernel, latest version 4. http://www.msss.com/brochures/xfov.pdf, information for C50 5. http://www.msss.com/brochures/c50.pdf 6. M50 Calibration Test Report Lucy TTCam, MSSS-TTC-DOC-7510 7. Lucy OpNav TTCams Optical Distortion File Version 4, ttcams_optical_distortion_coefficients_v04.txt 8. Zhao, Y., Bell, J.F., et. al., Pre-Flight and In-Flight Calibration and Performance of the Terminal Tracking Cameras (TTCams) on the NASA Lucy Mission, Space Science Reviews, 219, 8, (2023), https://doi.org/10.1029/2024EA003576 9. The OpenCV library, Camera Calibration and 3D Reconstruction, https://doi.org/10.1007/978-3-030-42378-0_7 10. Shupe, David L, et. al. "The SIP Convention for Representing Distortion in FITS Image Headers", Astronomical Data Analysis Software and Systems XIV, ASP Conference, Vol 347, 2005, P. L. Shopbell, M. C. Britton, and R. Ebert, eds. 11. Bell, J.F., Zhao, Y., Cisneros, E., et. al. "The Terminal Tracking Camera System on the NASA Lucy Trojan Asteroid Discovery Mission", Space Sci Rev 219, 86 (2023). https://doi.org/10.1007/s11214-023-01030-5 12. Update TTCam Instrument Kernel IK TCR #3847, Emma Birath, SWRI, May 2025 Contact Information ---------------------------------------------------------- Matt Barnes, NAIF/JPL, (818)-354-5942, matthew.j.barnes@jpl.nasa.gov Boris Semenov, NAIF/JPL, (818)-354-8136, Boris.Semenov@jpl.nasa.gov Ernest Cisneros, ASU, (480)-965-6187, ecisneros@asu.edu 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. Loading the kernel associates the data items with their names in a data structure called the "kernel pool". The SPICE API FURNSH loads a kernel into the pool as shown below: FORTRAN (SPICELIB): CALL FURNSH ( 'frame_kernel_name' ) C (CSPICE): furnsh_c ( "frame_kernel_name" ); IDL (ICY): cspice_furnsh, 'frame_kernel_name' MATLAB (MICE): cspice_furnsh ( 'frame_kernel_name' ) PYTHON (SPICEYPY): spiceypy.furnsh( 'frame_kernel_name' ) 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 Lucy spacecraft ID number (-49) followed by a NAIF three digit ID code for one of the TTCAM instruments, defined in [3] as: LUCY_TTCAM1 -49510 LUCY_TTCAM2 -49520 LUCY_TTCAM1_CAL -49512 LUCY_TTCAM2_CAL -49522 The remainder of the name is an underscore character followed by the unique name of the data item. For example, the TTCAM1 boresight direction in the TTCAM1 frame (``LUCY_TTCAM1'' -- see [3]) is specified by: INS-49510_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. The instruments with names ending in _CAL were added per [12] and refer to the TTCAMs' calibration readout mode. TTCAM description ---------------------------------------------------------- From [8]: The Terminal Tracking Camera (TTCam) imaging system on the NASA Lucy Discovery mission consists of a pair of cameras that are being used mainly as a navigation and target acquisition system for the mission's asteroid encounters. However, a secondary science-focused function of the TTCam system is to provide wide-angle broadband images over a large range of phase angles around close approach during each asteroid flyby. The scientific data acquired by TTCam can be used for shape modeling and topographic and geologic analyses. TTCAM Field of View Parameters ---------------------------------------------------------- TTCAM FOV Definitions The TTCAM frames are defined such that the boresight is the frame's +Z axis. Per the IFOV and readout sizes in [8], the TTCAM FOV angular size in X is 10.97 degrees (half extent 5.49 degrees) for TTCAM1 and 10.93 degrees (half extent 5.47 degrees) for TTCAM2. Looking down at the Y axis in the instrument frame we have: (Note we are arbitrarily choosing vectors that terminate in the Z=1 plane.) X ^ ttcam* | | | | | _.-| | _.-' o| |_.-' 5.49 | (5.47 for TTCAM2) o--------------> Y (out)`~._ | Z ttcam* `~._ | ttcam* `~.| |--- 1.0 ---| Plane Y = 0 Per [8], the TTCAM FOV angular size in Y for Tracking/Encounter mode is 8.23 degrees (half extent 4.12 degrees) for TTCAM1 and 8.20 degrees (half extent 4.10 degrees) for TTCAM2. Looking down at the X axis in the instrument frame we have: (Note we are arbitrarily choosing vectors that terminate in the Z=1 plane.) Y ^ ttcam* | | | | | _.-| | _.-' o| |_.-' 4.12 | (4.10 for TTCAM2) x--------------> X (in)`~._ | Z ttcam* `~._ | ttcam* `~.| |--- 1.0 ---| Plane X = 0 Per [11], the TTCAM Calibration mode instruments, IDs -49512 and -49522, read out 2000 lines rather than the 1944 lines of the tracking/encounter mode. Because of this, its angular size in Y is a slightly larger 8.46 degrees for TTCAM1 and 8.43 degrees for TTCAM 2. This extent is not centered on the boresight, since there are 56 additional lines, only two of which are in the +Y direction. Because of this, the FOV of the calibration mode extends 4.12 degrees in the +Y direction and 4.35 degrees in the -Y direction for TTCAM1 and 4.11 degrees in the +Y direction and 4.33 degrees in the -Y direction for TTCAM2. Y ^ ttcam | | | | | _.-| | _.-' o| |_.-' 4.12 | (4.11 for TTCAM2) x--------------> X (in)`~._ o| Z ttcam ` 4.35 | ttcam `~.| (4.33 for TTCAM2) |--- 1.0 ---| Plane X = 0 Polygon corner vectors were derived for the calibration modes by taking the tangent of the half extents as follows. For TTCAM1: < tan(5.49), tan(4.12), 1.0 > < -tan(5.49), tan(4.12), 1.0 > +-----------------------+ | +Yttc | | ^ | | | | | | | | <----x | | +Xttc +Zttc | | | | | | | | | +-----------------------+ < tan(5.49), -tan(4.35), 1.0 > < -tan(5.49), -tan(4.35), 1.0 > For TTCAM2: < tan(5.47), tan(4.11), 1.0 > < -tan(5.47), tan(4.11), 1.0 > +-----------------------+ | +Yttc | | ^ | | | | | | | | <----x | | +Xttc +Zttc | | | | | | | | | +-----------------------+ < tan(5.47), -tan(4.33), 1.0 > < -tan(5.47), -tan(4.33), 1.0 > The calibrated FOV half extent or boundary corner values for the TTCAM FOVs are given in the keywords below: \begindata INS-49510_FOV_CLASS_SPEC = 'ANGLES' INS-49510_FOV_SHAPE = 'RECTANGLE' INS-49510_FOV_FRAME = 'LUCY_TTCAM1_SENSOR' INS-49510_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-49510_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 ) INS-49510_FOV_REF_ANGLE = ( 5.487 ) INS-49510_FOV_CROSS_ANGLE = ( 4.116 ) INS-49510_FOV_ANGLE_UNITS = ( 'DEGREES' ) INS-49520_FOV_CLASS_SPEC = 'ANGLES' INS-49520_FOV_SHAPE = 'RECTANGLE' INS-49520_FOV_FRAME = 'LUCY_TTCAM2_SENSOR' INS-49520_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-49520_FOV_REF_VECTOR = ( 1.0, 0.0, 0.0 ) INS-49520_FOV_REF_ANGLE = ( 5.465 ) INS-49520_FOV_CROSS_ANGLE = ( 4.099 ) INS-49520_FOV_ANGLE_UNITS = ( 'DEGREES' ) INS-49512_FOV_CLASS_SPEC = 'ANGLES' INS-49512_FOV_SHAPE = 'RECTANGLE' INS-49512_FOV_FRAME = 'LUCY_TTCAM1_SENSOR' INS-49512_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-49512_FOV_CLASS_SPEC = 'CORNERS' INS-49512_FOV_BOUNDARY_CORNERS = ( 0.096068316206 0.072066021243 1.000000000000 -0.096068316206 0.072066021243 1.000000000000 -0.096068316206 -0.076004194400 1.000000000000 0.096068316206 -0.076004194400 1.000000000000 ) INS-49522_FOV_CLASS_SPEC = 'ANGLES' INS-49522_FOV_SHAPE = 'RECTANGLE' INS-49522_FOV_FRAME = 'LUCY_TTCAM2_SENSOR' INS-49522_BORESIGHT = ( 0.0, 0.0, 1.0 ) INS-49522_FOV_CLASS_SPEC = 'CORNERS' INS-49522_FOV_BOUNDARY_CORNERS = ( 0.095675942559 0.071772460649 1.000000000000 -0.095675942559 0.071772460649 1.000000000000 -0.095675942559 -0.075694472724 1.000000000000 0.095675942559 -0.075694472724 1.000000000000 ) \begintext TTCAM Detector Parameters ---------------------------------------------------------- From [6] section 2.5, the TTCAM CCD has 2592 (H) x 1944 (V) active pixels in Tracking/Encounter mode. From [5], the individual pixels are 2.2 microns in size. Given these values and the calibrated focal length, TTCam 1&2 have IFOVs of approx. 73.9 and 73.6 microradians respectively, per [8]. These values are captured for each of the two TTCAMs in the keywords below. The TTCAM instruments are also sometimes used in Calibration mode, which reads out 2592 (H) x 2000 (V) pixels, which includes active boundary and dark pixels per [11]. \begindata INS-49510_PIXEL_SIZE = ( 2.2 ) INS-49510_IFOV = ( 73.9 ) INS-49510_PIXEL_SAMPLES = ( 2592 ) INS-49510_PIXEL_LINES = ( 1944 ) INS-49520_PIXEL_SIZE = ( 2.2 ) INS-49520_IFOV = ( 73.6 ) INS-49520_PIXEL_SAMPLES = ( 2592 ) INS-49520_PIXEL_LINES = ( 1944 ) INS-49512_PIXEL_SIZE = ( 2.2 ) INS-49512_IFOV = ( 73.9 ) INS-49512_PIXEL_SAMPLES = ( 2592 ) INS-49512_PIXEL_LINES = ( 2000 ) INS-49522_PIXEL_SIZE = ( 2.2 ) INS-49522_IFOV = ( 73.6 ) INS-49522_PIXEL_SAMPLES = ( 2592 ) INS-49522_PIXEL_LINES = ( 2000 ) \begintext TTCAM Optics Parameters ---------------------------------------------------------- From the OpenCV parameters from [8], the fx, fy focal length values for TTCAM 1 and 2 in pixels are: fx fy TTCAM1 13448.168 13447.850 TTCAM2 13498.412 13497.884 Taking the mean of each pair of values and coverting to mm by multiplying by 2.2 microns and dividing by 1000 microns per mm, the values for the focal lengths for each TTCAM are: TTCAM1: 29.5856 TTCAM2: 29.6959 F number of each camera is 2.99. These values are provided in the keywords below. \begindata INS-49510_FOCAL_LENGTH = ( 29.5856 ) INS-49510_FOCAL_LENGTH_UNITS = 'mm' INS-49510_F/NUMBER = ( 2.99 ) INS-49520_FOCAL_LENGTH = ( 29.6959 ) INS-49520_FOCAL_LENGTH_UNITS = 'mm' INS-49520_F/NUMBER = ( 2.99 ) INS-49512_FOCAL_LENGTH = ( 29.5856 ) INS-49512_FOCAL_LENGTH_UNITS = 'mm' INS-49512_F/NUMBER = ( 2.99 ) INS-49522_FOCAL_LENGTH = ( 29.6959 ) INS-49522_FOCAL_LENGTH_UNITS = 'mm' INS-49522_F/NUMBER = ( 2.99 ) \begintext TTCAM Optical Distortion Parameters ---------------------------------------------------------- From [11], CCD_CENTER is 0-indexed to active image array of each of the tracking/encounter and calibration modes. CCD_CENTER_DARK is 0-indexed to full sensor array. Note that the full sensor array is indexed from a different corner of the array than the tracking and calibration mode arrays. Note that the full array is a larger 2752 by 2004 pixels. \begindata INS-49510_CCD_CENTER = ( 1295.5, 971.5 ) INS-49520_CCD_CENTER = ( 1295.5, 971.5 ) INS-49512_CCD_CENTER = ( 1295.5, 973.5 ) INS-49522_CCD_CENTER = ( 1295.5, 973.5 ) INS-49510_CCD_CENTER_DARK = ( 1311.5, 1025.5 ) INS-49520_CCD_CENTER_DARK = ( 1311.5, 1025.5 ) \begintext OpenCV Optical Distortion Model (INS-495xx_OPENCV_OD_*) ---------------------------------------------------------- All of the OpenCV distortion model Kernel Pool Values (KPVs) that follow below are of the form INS-495xx_OPENCV_OD_z where the final z is a single letter; further information is provided in the OpenCV model details below. Note that the parameters for LUCY_TTCAM1/-49510 are provided in duplicate for LUCY_TTCAM1_CAL/-49512 with the number of lines updated to the larger value of 2000. Similarly for LUCY_TTCAM2/-49520 and LUCY_TTCAM2_CAL/-49522. OpenCV Distortion Model Description ---------------------------------------------------------- OpenCV is a standardized model widely used for various applications to characterize the distortion across the imager field. The OpenCV model uses a variety of terms to represent both the radial and tangential distortion of a given optical system. The analytical formulation for the OpenCV model is constructed using the following equations. A vector in inertial space, vI, is first transformed into the frame of the image using the rotation matrix CI_image such that: v_image = [CI_image]^T * vI where v_image is the resulting vector in the image frame with origin at the OpNav-defined intersection of the boresight and of the imager. This boresight location serves as the origin of the image frame axes within the OpNav process. The resulting vector is then projected into the image plane using the equation: [x0] 1 [ v_image, x] [ ] = --------------- * [ ] [y0] abs(v_image, z) [ v_image, y] where x0 and y0 are the resulting image plane coordinates in the x- and y- dimensions, relative to an origin at the boresight intersection. The geometric optical distortion is then applied using the equations: r^2 = x0^2 + y0^2 [ ] [ ][1+k1*r^2+k2*r^4+k3*r^6] [ x ] [x0 2*x0*y0 r^2+2*x0^2][----------------------] [ ] [ ][1+k4*r^2+k5*r^4+k6*r^6] [ ] = [ ][ p1 ] [ y ] [y0 r^2+2*y0^2 2*x0*y0][ p2 ] [ ] [ ][ ] where x and y are the distorted image plane coordinates. The k1...k6 coefficients correspond to the radial distortion of the optical system, and the p1, p2 coefficients correspond to the tangential distortion. The final distorted sample and line coordinates are then calculated using the equation: [ u ] [fx(1+a_1*T)*x)][cx] [ ] = [ ][ ] [ v ] = [fy(1+a_1*T)*y)][cy] Where T is the camera temperature in degrees Celsius, and u and v are the distorted sample and line coordinates in units of pixels. The values fx and fy refer to the focal lengths of the imager along with the x- and y- dimensions in units of pixels at a camera temperature of 0 degrees C. The value a_1 is a parameter to model the temperature dependence of the focal lengths. The k1,k2,k3,fx, and fy values are estimated parameters in the calibration solution. The values cx and cy refer to the sample and line coordinates of the OpNav- defined boresight of the system in units of pixels. In this IK file, the models comprise the following KPVs: * INS-495xx_OPENCV_OD_K (six values, k1 through k6, with k4=k5=k6=0) * INS-495xx_OPENCV_OD_P (two values, p1 and p2) * INS-495xx_OPENCV_OD_F (two values, fx and fy; focal lengths) * INS-495xx_OPENCV_OD_C (two values, cx and cy; 1-based centers) * INS-495xx_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-495xx_OPENCV_OD_NL (one value; line count) * INS-495xx_OPENCV_OD_NS (one value; sample count) Values for TTCAM1, per [8]: \begindata INS-49510_OPENCV_OD_K = 0.1075 INS-49510_OPENCV_OD_K += 0.3641 INS-49510_OPENCV_OD_K += 0.05287 INS-49510_OPENCV_OD_K += 0.0 INS-49510_OPENCV_OD_K += 0.0 INS-49510_OPENCV_OD_K += 0.0 INS-49510_OPENCV_OD_P = -0.0004641 INS-49510_OPENCV_OD_P += -0.0003310 INS-49510_OPENCV_OD_F = 13448.168 INS-49510_OPENCV_OD_F += 13447.850 INS-49510_OPENCV_OD_C = 1296.5 INS-49510_OPENCV_OD_C += 972.5 INS-49510_OPENCV_OD_A = 0.0 INS-49510_OPENCV_OD_NL = 1944 INS-49510_OPENCV_OD_NS = 2592 \begintext Values for TTCAM2, per [8]: \begindata INS-49520_OPENCV_OD_K = 0.07760 INS-49520_OPENCV_OD_K += 2.275 INS-49520_OPENCV_OD_K += 0.02566 INS-49520_OPENCV_OD_K += 0.0 INS-49520_OPENCV_OD_K += 0.0 INS-49520_OPENCV_OD_K += 0.0 INS-49520_OPENCV_OD_P = 0.0005841 INS-49520_OPENCV_OD_P += 0.0008625 INS-49520_OPENCV_OD_F = 13498.412 INS-49520_OPENCV_OD_F += 13497.884 INS-49520_OPENCV_OD_C = 1296.5 INS-49520_OPENCV_OD_C += 972.5 INS-49520_OPENCV_OD_A = 0.0 INS-49520_OPENCV_OD_NL = 1944 INS-49520_OPENCV_OD_NS = 2592 \begintext Values for TTCAM1_CAL, duplicated from above. \begindata INS-49512_OPENCV_OD_K = 0.1075 INS-49512_OPENCV_OD_K += 0.3641 INS-49512_OPENCV_OD_K += 0.05287 INS-49512_OPENCV_OD_K += 0.0 INS-49512_OPENCV_OD_K += 0.0 INS-49512_OPENCV_OD_K += 0.0 INS-49512_OPENCV_OD_P = -0.0004641 INS-49512_OPENCV_OD_P += -0.0003310 INS-49512_OPENCV_OD_F = 13448.168 INS-49512_OPENCV_OD_F += 13447.850 INS-49512_OPENCV_OD_C = 1296.5 INS-49512_OPENCV_OD_C += 974.5 INS-49512_OPENCV_OD_A = 0.0 INS-49512_OPENCV_OD_NL = 2000 INS-49512_OPENCV_OD_NS = 2592 \begintext Values for TTCAM2_CAL, duplicated from above: \begindata INS-49522_OPENCV_OD_K = 0.07760 INS-49522_OPENCV_OD_K += 2.275 INS-49522_OPENCV_OD_K += 0.02566 INS-49522_OPENCV_OD_K += 0.0 INS-49522_OPENCV_OD_K += 0.0 INS-49522_OPENCV_OD_K += 0.0 INS-49522_OPENCV_OD_P = 0.0005841 INS-49522_OPENCV_OD_P += 0.0008625 INS-49522_OPENCV_OD_F = 13498.412 INS-49522_OPENCV_OD_F += 13497.884 INS-49522_OPENCV_OD_C = 1296.5 INS-49522_OPENCV_OD_C += 974.5 INS-49522_OPENCV_OD_A = 0.0 INS-49522_OPENCV_OD_NL = 2000 INS-49522_OPENCV_OD_NS = 2592 \begintext Simple Imaging Polynomial (SIP) Distortion Model ---------------------------------------------------------- This section provides Simple Image Polynomial (SIP) distortion model parameters for the TTCAM1 and TTCAM2 cameras. The use of the Simple Imaging Polynomial (SIP) distortion model is prevalent in the astronomy community and is supported by a large number of freely available software packages. It extends the World Coordinate System standard for FITS images to provide non-linear geometric distortion using polynomials in FITS headers and is described in [10], from which most of the following description is taken. The (SIP) Model relates a set of distorted (observed) positions ( u , v ) in relative pixel coordinates with origin at CRPIX1, CRPIX2 to the equivalent set of coordinates ( x , y ) in the "intermediate world coordinates" in degrees with origin at CRVAL1, CRVAL2. The axes of the "intermediate world coordinates" frame lie in the image plane and align with the projections of the World Frame onto that plane. The World Frame is any other set of coordinates "that serve to locate a measurement in some multidimensional parameter space." For TTCAMs the standard World Frame is that of Right Ascension (RA) and Declination (Dec). The transformation between these two frames is then represented by the CD Matrix and the polynomials f(u,v) and g(u,v): ( x ) = ( CD1_1 CD1_2 ) ( u + f(u,v) ) ( y ) ( CD2_1 CD2_2 ) ( v + g(u,v) ) A_p_q an B_p_q are defined as the polynomial coefficients for polynomial terms u^p * v^q, respectively. From this: ---- \ f(u, v) = / A_p_q * u^p * v^q, p + q <= A_ORDER ---- p,q ---- \ g(u, v) = / B_p_q * u^p * v^q, p + q <= B_ORDER ---- p,q For example, for a third order polynomial: f(u,v) = A_2_0 * u^2 + A_0_2 * v^2 + A_1_1 * u * v + A_2_1 * u^2 * v + A_1_2 * u * v^2 + A_3_0 * u^3 + A_0_3 * v^3 By Convention, constant and linear terms are not included in the forward tranformation polynomials. The values for u and v represent the distorted (observed) pixel location resulting from the effects caused by the optics, measured relative to the center of the detector. The CDi_j keywords encode skew as well as rotation and scaling. The CD matrix values together with the higher-order distortion polynomials define a unique transformation from pixel coordinates to the plane-of-projection. The polynomials for the reverse transformation are also provided for fast inversion. Pixel coordinates U,V (the "corrected" coordinates) are the location if the optics didn't cause any distortion and can be found from: ( U ) = -1 ( x ) ( V ) CD ( y ) then the distorted pixel coordinates (u,v) can be computed from the undistorted pixel coordinates (U,V) by: ---- \ u = U + F(U,V) = U + / AP_p_q * U^p * V^q, p + q <= AP_ORDER ---- p,q ---- \ v = V + G(U,V) = V + / BP_p_q * U^p * V^q, p + q <= BP_ORDER ---- p,q Lucy TTCAMs SIP Implementation Notes: ------------------------------------------------------ Lucy OPNAV generated the TTCAMs reverse SIP polynomial coefficients (APs and BPs) from Lucy in-flight calibration data. The focal length was fixed to the value arrived at from the OpNav generated OpenCV distortion modelling of TTCAMs. Because the focal length is encoded in the CD Matrix, this fixed the value of the scaling of the CD Matrix. The forward SIP polynomial coefficients were determined by conjugating the coefficients' signs as per a low-distortion approximation. Definition of SIP Distortion Model Coefficients: ------------------------------------------------------ In the list of keywords below, all unlisted polynomial coefficients, of any order, are equal to 0. Note that the parameters for LUCY_TTCAM1/-49510 are provided in duplicate for LUCY_TTCAM1_CAL/-49512. Similarly, the parameters for LUCY_TTCAM2/-49520 are duplicated for LUCY_TTCAM2_CAL/-49522. The SIP coefficients for TTCAM1 are captured in variables below, per [7]: \begindata INS-49510_SIP_A_ORDER = 3 INS-49510_SIP_A_2_0 = 7.008620497828971e-08 INS-49510_SIP_A_1_1 = -9.691424830263503e-08 INS-49510_SIP_A_0_2 = 1.3265543934242972e-09 INS-49510_SIP_A_3_0 = -6.079428195659791e-10 INS-49510_SIP_A_2_1 = 1.5143131748873683e-11 INS-49510_SIP_A_1_2 = -7.226465972780691e-10 INS-49510_SIP_A_0_3 = 7.857710271425878e-11 INS-49510_SIP_B_ORDER = 3 INS-49510_SIP_B_2_0 = -1.1410406783046712e-08 INS-49510_SIP_B_1_1 = 6.218211803040143e-08 INS-49510_SIP_B_0_2 = -1.0311319273857467e-07 INS-49510_SIP_B_3_0 = 3.2272470198398417e-11 INS-49510_SIP_B_2_1 = -6.904528511889518e-10 INS-49510_SIP_B_1_2 = 1.6707995969190314e-11 INS-49510_SIP_B_0_3 = -6.17786977399759e-10 INS-49510_SIP_AP_ORDER = 3 INS-49510_SIP_AP_2_0 = -7.008620497828971e-08 INS-49510_SIP_AP_1_1 = 9.691424830263503e-08 INS-49510_SIP_AP_0_2 = -1.3265543934242972e-09 INS-49510_SIP_AP_3_0 = 6.079428195659791e-10 INS-49510_SIP_AP_2_1 = -1.5143131748873683e-11 INS-49510_SIP_AP_1_2 = 7.226465972780691e-10 INS-49510_SIP_AP_0_3 = -7.857710271425878e-11 INS-49510_SIP_BP_ORDER = 3 INS-49510_SIP_BP_2_0 = 1.1410406783046712e-08 INS-49510_SIP_BP_1_1 = -6.218211803040143e-08 INS-49510_SIP_BP_0_2 = 1.0311319273857467e-07 INS-49510_SIP_BP_3_0 = -3.2272470198398417e-11 INS-49510_SIP_BP_2_1 = 6.904528511889518e-10 INS-49510_SIP_BP_1_2 = -1.6707995969190314e-11 INS-49510_SIP_BP_0_3 = 6.17786977399759e-10 \begintext The SIP coefficients for TTCAM2 are captured in variables below, per [7]: \begindata INS-49520_SIP_A_ORDER = 3 INS-49520_SIP_A_2_0 = -1.8721320224167736e-07 INS-49520_SIP_A_1_1 = 7.69217946562808e-08 INS-49520_SIP_A_0_2 = -1.657625878970515e-08 INS-49520_SIP_A_3_0 = -5.913881653652147e-10 INS-49520_SIP_A_2_1 = 1.3165940374099888e-11 INS-49520_SIP_A_1_2 = -6.875943133558235e-10 INS-49520_SIP_A_0_3 = -8.182033381090162e-11 INS-49520_SIP_B_ORDER = 3 INS-49520_SIP_B_2_0 = 8.403540440032833e-08 INS-49520_SIP_B_1_1 = -2.001789761152734e-07 INS-49520_SIP_B_0_2 = 1.2518105112439517e-07 INS-49520_SIP_B_3_0 = -2.2448198700356445e-11 INS-49520_SIP_B_2_1 = -6.347106477147947e-10 INS-49520_SIP_B_1_2 = 2.0857912151789203e-11 INS-49520_SIP_B_0_3 = -6.280696445784693e-10 INS-49520_SIP_AP_ORDER = 3 INS-49520_SIP_AP_2_0 = 1.8721320224167736e-07 INS-49520_SIP_AP_1_1 = -7.69217946562808e-08 INS-49520_SIP_AP_0_2 = 1.657625878970515e-08 INS-49520_SIP_AP_3_0 = 5.913881653652147e-10 INS-49520_SIP_AP_2_1 = -1.3165940374099888e-11 INS-49520_SIP_AP_1_2 = 6.875943133558235e-10 INS-49520_SIP_AP_0_3 = 8.182033381090162e-11 INS-49520_SIP_BP_ORDER = 3 INS-49520_SIP_BP_2_0 = -8.403540440032833e-08 INS-49520_SIP_BP_1_1 = 2.001789761152734e-07 INS-49520_SIP_BP_0_2 = -1.2518105112439517e-07 INS-49520_SIP_BP_3_0 = 2.2448198700356445e-11 INS-49520_SIP_BP_2_1 = 6.347106477147947e-10 INS-49520_SIP_BP_1_2 = -2.0857912151789203e-11 INS-49520_SIP_BP_0_3 = 6.280696445784693e-10 \begintext Values for LUCY_TTCAM1_CAL are duplicated from the values for LUCY_TTCAM1 above. \begindata INS-49512_SIP_A_ORDER = 3 INS-49512_SIP_A_2_0 = 7.008620497828971e-08 INS-49512_SIP_A_1_1 = -9.691424830263503e-08 INS-49512_SIP_A_0_2 = 1.3265543934242972e-09 INS-49512_SIP_A_3_0 = -6.079428195659791e-10 INS-49512_SIP_A_2_1 = 1.5143131748873683e-11 INS-49512_SIP_A_1_2 = -7.226465972780691e-10 INS-49512_SIP_A_0_3 = 7.857710271425878e-11 INS-49512_SIP_B_ORDER = 3 INS-49512_SIP_B_2_0 = -1.1410406783046712e-08 INS-49512_SIP_B_1_1 = 6.218211803040143e-08 INS-49512_SIP_B_0_2 = -1.0311319273857467e-07 INS-49512_SIP_B_3_0 = 3.2272470198398417e-11 INS-49512_SIP_B_2_1 = -6.904528511889518e-10 INS-49512_SIP_B_1_2 = 1.6707995969190314e-11 INS-49512_SIP_B_0_3 = -6.17786977399759e-10 INS-49512_SIP_AP_ORDER = 3 INS-49512_SIP_AP_2_0 = -7.008620497828971e-08 INS-49512_SIP_AP_1_1 = 9.691424830263503e-08 INS-49512_SIP_AP_0_2 = -1.3265543934242972e-09 INS-49512_SIP_AP_3_0 = 6.079428195659791e-10 INS-49512_SIP_AP_2_1 = -1.5143131748873683e-11 INS-49512_SIP_AP_1_2 = 7.226465972780691e-10 INS-49512_SIP_AP_0_3 = -7.857710271425878e-11 INS-49512_SIP_BP_ORDER = 3 INS-49512_SIP_BP_2_0 = 1.1410406783046712e-08 INS-49512_SIP_BP_1_1 = -6.218211803040143e-08 INS-49512_SIP_BP_0_2 = 1.0311319273857467e-07 INS-49512_SIP_BP_3_0 = -3.2272470198398417e-11 INS-49512_SIP_BP_2_1 = 6.904528511889518e-10 INS-49512_SIP_BP_1_2 = -1.6707995969190314e-11 INS-49512_SIP_BP_0_3 = 6.17786977399759e-10 \begintext Values for LUCY_TTCAM2_CAL are duplicated from the values for LUCY_TTCAM2 above. \begindata INS-49522_SIP_A_ORDER = 3 INS-49522_SIP_A_2_0 = -1.8721320224167736e-07 INS-49522_SIP_A_1_1 = 7.69217946562808e-08 INS-49522_SIP_A_0_2 = -1.657625878970515e-08 INS-49522_SIP_A_3_0 = -5.913881653652147e-10 INS-49522_SIP_A_2_1 = 1.3165940374099888e-11 INS-49522_SIP_A_1_2 = -6.875943133558235e-10 INS-49522_SIP_A_0_3 = -8.182033381090162e-11 INS-49522_SIP_B_ORDER = 3 INS-49522_SIP_B_2_0 = 8.403540440032833e-08 INS-49522_SIP_B_1_1 = -2.001789761152734e-07 INS-49522_SIP_B_0_2 = 1.2518105112439517e-07 INS-49522_SIP_B_3_0 = -2.2448198700356445e-11 INS-49522_SIP_B_2_1 = -6.347106477147947e-10 INS-49522_SIP_B_1_2 = 2.0857912151789203e-11 INS-49522_SIP_B_0_3 = -6.280696445784693e-10 INS-49522_SIP_AP_ORDER = 3 INS-49522_SIP_AP_2_0 = 1.8721320224167736e-07 INS-49522_SIP_AP_1_1 = -7.69217946562808e-08 INS-49522_SIP_AP_0_2 = 1.657625878970515e-08 INS-49522_SIP_AP_3_0 = 5.913881653652147e-10 INS-49522_SIP_AP_2_1 = -1.3165940374099888e-11 INS-49522_SIP_AP_1_2 = 6.875943133558235e-10 INS-49522_SIP_AP_0_3 = 8.182033381090162e-11 INS-49522_SIP_BP_ORDER = 3 INS-49522_SIP_BP_2_0 = -8.403540440032833e-08 INS-49522_SIP_BP_1_1 = 2.001789761152734e-07 INS-49522_SIP_BP_0_2 = -1.2518105112439517e-07 INS-49522_SIP_BP_3_0 = 2.2448198700356445e-11 INS-49522_SIP_BP_2_1 = 6.347106477147947e-10 INS-49522_SIP_BP_1_2 = -2.0857912151789203e-11 INS-49522_SIP_BP_0_3 = 6.280696445784693e-10 \begintext End of IK file.