Frame by linxiaoqin

VIEWS: 5 PAGES: 56

									N IF
       Navigation and Ancillary Information Facility




   Dynamic Reference Frames


                          March 2006
     N IF                                               Topics
                          Navigation and Ancillary Information Facility

         •   Introduction to Dynamic Reference Frames
         •   Terminology
         •   Parameterized Dynamic Reference Frames
         •   Defining Dynamic Reference Frames
                 –   Two-Vector Frame Concepts
                 –   Two-Vector Frame Examples
                 –   "Of-Date" Frames
                 –   Euler Frames
                 –   Frozen Dynamic Frames
                 –   Inertial Dynamic Frames
         • Generic Dynamic Reference Frame Kernel
         • Backup


Dynamic Frames                                                            2
     N IF              Introduction to Dynamic Frames - 1
                        Navigation and Ancillary Information Facility

          • The Dynamic Reference Frames capability is a new
            extension to the SPICE Frames system.
                 – First introduced in the N0058 SPICE Toolkit, released in
                   January 2005.
          • What are "dynamic reference frames"?
                 – Dynamic reference frames ("dynamic frames" for short)
                   have time-dependent orientation.
                 – Dynamic frames are specified via a frame kernel (FK).
                 – CK and PCK frames are not considered to be dynamic
                   frames (although they are time-varying).
          • The Dynamic Frames capability enables the SPICE
            system to conveniently use a wide variety of frames
            that are not "built in" to SPICE. Examples include:
                 – Nadir-oriented frame for planetary orbiter
                 – Geocentric Solar Ecliptic (GSE)
                 – Solar Magnetic (SM)
Dynamic Frames                                                                3
     N IF                Introduction to Dynamic Frames - 2
                          Navigation and Ancillary Information Facility

                 – Spacecraft-centered roll-celestial frame
                 – Geocentric Solar Magnetospheric (GSM)
                 – Geomagnetic (MAG)
                      » Using constant north centered geomagnetic dipole
                      » Using dipole direction defined by time-dependent Euler
                        angles
                 –   Geocentric Solar Equatorial (GSEQ)
                 –   Solar Equatorial frame for any ephemeris object
                 –   Orbital frame for any ephemeris object
                 –   Earth mean equator and equinox of date
                 –   Earth true equator and equinox of date
                 –   Earth mean ecliptic and equinox of date
                 –   RTN ("radial, tangential, normal") frames
                 –   And many more…

Dynamic Frames                                                                   4
     N IF              Introduction to Dynamic Frames - 3
                        Navigation and Ancillary Information Facility

          • Using dynamic frames in a SPICE-based program is
            straightforward:
                 – At program initialization:
                     » Load one or more dynamic frame kernels to make
                       frame definitions known to SPICE.
                     » Load any kernels on which the dynamic frames
                       depend.
                        • Some dynamic frames are defined using data from SPK,
                          FK, PCK, CK or other SPICE kernels.
                 – Then, refer to the dynamic frame or frames by name in calls
                   to SPICE routines:
                     » Just as you would do with built-in frames such as
                       J2000.




Dynamic Frames                                                                   5
     N IF            Introduction to Dynamic Frames - 4
                      Navigation and Ancillary Information Facility

                 » For example, find the 6x6 matrix to transform states from
                   the J2000 frame to the Geocentric Solar Ecliptic (GSE)
                   frame at the TDB epoch given by ET.
                     CALL SXFORM( 'J2000', 'GSE', ET, XFORM )
                 » Or look up the state of Jupiter relative to the earth in the
                   GSE frame:
                     CALL SPKEZR( 'JUPITER', ET,                  'GSE',
                                      'NONE',        'EARTH', STATE, LT )
      • You can refer to dynamic frames in SPK or CK files,
        for example:
            – When you create an SPK file, you can have an SPK segment
              reference its ephemeris data to the true earth equator and
              equinox of date reference frame.
                » However, some restrictions apply to use of dynamic
                  frames in SPICE kernels (see Backup slides).

Dynamic Frames                                                                    6
     N IF              Introduction to Dynamic Frames - 5
                       Navigation and Ancillary Information Facility

          • Defining Dynamic Frames:
                 – To define dynamic frames via a frame kernel, a fairly
                   detailed understanding of the SPICE dynamic frame
                   capability is required.
                 – A good understanding of the basic SPICE system (in
                   particular, the SPK and Frame systems) is also a
                   prerequisite for defining dynamic frames.
                 – See the Frames Required Reading for the most detailed
                   documentation available.
                 – The rest of this tutorial is concerned with
                     » Explaining the SPICE dynamic frames capability.
                     » Showing how to create dynamic frame kernels.
                         • We present many frame definition examples.



Dynamic Frames                                                             7
     N IF                                   Terminology - 1
                        Navigation and Ancillary Information Facility

          • Terms involving reference frames and vectors:
                 – "Frame" is short for "reference frame."
                 – A frame can be thought of as a set of three mutually
                   orthogonal, unit-length vectors.
                     » These vectors are called "basis vectors." The lines
                       containing the basis vectors are the "axes" of the
                       frame.
                     » The basis vectors indicate the "positive" axis
                       directions; we label these vectors +X, +Y, and +Z. The
                       negatives of these vectors are labeled -X, -Y, and -Z.
                     » We number the axes as follows:
                        X = axis 1; Y = axis 2; Z = axis 3
                 – All of the frames we'll deal with are "right-handed":
                   equivalently, +Z is the cross product +X x +Y.
                 – A reference frame's orientation is always defined relative to
                   another specified frame: the "base frame."
Dynamic Frames                                                                     8
     N IF                                   Terminology - 2
                        Navigation and Ancillary Information Facility

                 – When we say that a frame is "time-dependent" or "time-
                   varying," we mean:
                     » The orientation of the frame is time-dependent.
                     » Equivalently, the rotation between the frame and its
                        base frame is time-dependent.
                 – By "evaluating" a frame or "evaluating the orientation of a
                   frame," we mean computing the rotation between the frame
                   and its base frame.
                     » An epoch is required in order to evaluate a dynamic
                        frame.
                 – In the SPICE system, frames are considered to have
                   "centers."
                     » The center of a frame is always an ephemeris object.
                     » Frame centers come into play when light time
                        corrections are used: the apparent orientation of a
                        time-dependent frame as seen by an observer is
                        affected by the one-way light time between the frame's
                        center and the observer.
Dynamic Frames                                                                   9
     N IF                                   Terminology - 3
                        Navigation and Ancillary Information Facility

                 – When we say that a vector is "aligned" with another vector,
                   we mean that the angular separation between the two
                   vectors is zero.
                 – We use the terms "defining a frame" and "specifying a
                   frame" interchangeably. Both refer to creating a frame
                   definition in a frame kernel.
          • Other definitions:
                 – The term "API" stands for "Application Programming
                   Interface." This term refers to the set of SPICE routines
                   that are intended to be called directly by SPICE-based
                   programs.
                 – The notation

                    [theta]n
                  indicates a frame rotation of theta radians about axis n,
                  where n is one of {1, 2, 3}. This transformation rotates
                  vectors by –theta radians about axis n.

Dynamic Frames                                                                   10
     N IF           Parameterized Dynamic Frames - 1
                     Navigation and Ancillary Information Facility
       • Parameterized dynamic frames
             – This is the only frame definition style currently supported by
               the dynamic frame system.
                 » Future versions of SPICE might support additional styles.
             – Frames are defined via parameterized formulas
                 » The code implementing the formulas themselves is built
                   into SPICE.
                 » The parameters are specified in a frame kernel.
             – Parameterized dynamic frames are grouped into frame
               "families". Each family corresponds to a distinct,
               parameterized geometric formula providing a frame
               definition. The families are:
                 » Two-Vector Frames
                 » Mean Equator and Equinox of Date Frames
                 » True Equator and Equinox of Date Frames
                 » Mean Ecliptic and Equinox of Date Frames
                 » Euler Frames
Dynamic Frames                                                                  11
     N IF               Parameterized Dynamic Frames - 2
                        Navigation and Ancillary Information Facility

         • Defining Parameterized Dynamic Frames
                 – Parameterized Dynamic frames are defined using
                   "keyword=value" assignments in a frame kernel. The
                   following items must be specified in the frame definition:
                     » Frame name
                     » Frame ID code
                        • The range 1400000-2000000 is reserved for SPICE users
                    » Class (=5 for dynamic frames)
                    » Class ID code (=frame ID code for dynamic frames)
                    » Frame center (=NAIF ID code for central body)
                    » Frame definition style (='PARAMETERIZED')
                    » Base frame
                        • Frame definition specifies mapping from dynamic
                          frame to the base frame.
                    » Frame family
                    » Family-specific assignments
Dynamic Frames                                                                    12
     N IF               Parameterized Dynamic Frames - 3
                         Navigation and Ancillary Information Facility
                 » Rotation state
                    • Possible states are 'ROTATING' and 'INERTIAL'.
                        – Frame is treated as rotating or inertial for the purpose
                          of velocity transformations.
                     • The default dynamic frame rotation state is 'ROTATING'.
                     • For rotating two-vector and Euler frames, the rotation state
                       assignment can be omitted from the frame definition.
                     • For "of-date" frames, the frame definition must either
                       specify the rotation state or designate the frame as
                       "frozen" at a specified epoch.
                 » Freeze epoch.
                     • Presence of this optional assignment in a frame kernel
                       indicates that the frame orientation, relative to the base
                       frame, is held constant ("frozen") at the specified epoch.
                     • Most dynamic frames are not frozen.

Dynamic Frames                                                                       13
     N IF               Two-Vector Frame Concepts - 1
                      Navigation and Ancillary Information Facility

      • Two-vector frames are defined using two time-
        dependent vectors: the "primary" and
        "secondary" vectors.
             – Each of the primary and secondary vectors may be defined by
               a variety of geometric means. Each vector may be a
                 » Position vector
                 » Target near point vector
                 » Velocity vector
                 » Constant vector
      • The user associates specified positive or
        negative axes of the two-vector frame with the
        primary and secondary vectors.
             – Two-vector frames are always right-handed and have
               orthogonal axes, so two non-parallel vectors and associations
               of axes with these vectors suffice to define the orientation of a
               frame.
Dynamic Frames                                                                     14
     N IF                  Two-Vector Frame Concepts - 2
                         Navigation and Ancillary Information Facility
        • Primary Vector
                 – A specified positive or negative axis of the two-vector
                   frame is aligned with this vector.
                     » The frame kernel creator assigns to this vector one of
                       the axis designations { +X, -X, +Y, -Y, +Z, -Z }.
                 – Two degrees of freedom of the frame orientation are
                   removed by association of an axis with the primary vector.
                   The third degree of freedom is the frame's rotation about
                   the primary vector.
                 – Example: a frame's -X axis is aligned with the primary
                   vector:
                                                             Y
                                                   -X
                      Primary Vector
                                          Z

                                                                         X

Dynamic Frames                                                                  15
     N IF              Two-Vector Frame Concepts - 3
                     Navigation and Ancillary Information Facility
    • Secondary Vector
           – A specified positive or negative axis of the two-vector frame is
             aligned with the component of the secondary vector
             orthogonal to the primary vector.
               » The frame kernel creator associates with this vector one of
                 the axis designations { +X, -X, +Y, -Y, +Z, -Z }, where the
                 axis is orthogonal to that associated with the primary
                 vector.
           – Example, continued: the frame's +Y axis is associated with the
             secondary vector. The component of the secondary vector
             orthogonal to the primary vector is aligned with the frame's +Y
             axis. The secondary vector thus lies in the frame's X-Y plane.
                                 -X         Y
        Primary Vector
                                                Secondary Vector
                        Z
                                                             Component of secondary
                                                  X          vector orthogonal to primary
                                                             vector
Dynamic Frames                                                                          16
     N IF                Two-Vector Frame Concepts - 4
                       Navigation and Ancillary Information Facility

     • Secondary Vector, continued
           – Typically the secondary vector itself is not orthogonal to the
             primary vector.
           – The secondary vector must be linearly independent of the
             primary vector.
                 » Near-degenerate geometry can lead to extreme loss of precision.
                     • This problem can be difficult to diagnose.
                 » SPICE enforces independence using a default angular separation
                   tolerance of 1 milliradian. The angular separation of the primary
                   and secondary vectors may not differ from 0 or Pi radians by less
                   than this tolerance.
                 » A frame kernel creator can specify a different tolerance value.
                   The frame kernel assignment for this is:
                      FRAME_<frame_ID>_ANGLE_SEP_TOL = <tolerance>

                   where the tolerance is given in radians.
           – Designers of two-vector frames should ensure that the primary
             and secondary vectors can't become nearly parallel for any
             realistic evaluation epoch.
Dynamic Frames                                                                         17
     N IF                 Two-Vector Frame Concepts - 5
                        Navigation and Ancillary Information Facility

         • Position Vector
                 – Is defined by the position of one ephemeris object relative
                   to another. The frame kernel creator specifies:
                     » the target
                     » the observer
                     » the aberration correction
                        • The vector may optionally be corrected for light time and
                          stellar aberration.
                 – The epoch at which the position vector is computed is
                   supplied via a call to a SPICE API routine:
                     » as an input to an SPK routine, e.g. SPKEZR, SPKPOS.
                     » as an input to a frame system routine, e.g. SXFORM,
                       PXFORM.
                 – The reference frame relative to which the vector is
                   expressed is not specified by the frame kernel creator.
                     » SPICE automatically selects this frame.
Dynamic Frames                                                                        18
     N IF                 Two-Vector Frame Concepts - 6
                        Navigation and Ancillary Information Facility

    • Target Near Point Vector
          – Is defined as the vector from an observer to the nearest point
            on a specified extended target body to that observer. The frame
            kernel creator specifies:
              » the target
              » the observer
              » the aberration correction
                     • The vector may optionally be corrected for light time and
                       stellar aberration.
                     • When light time correction is used, both the position and
                       orientation of the target body are corrected for light time.
          – The extended target body is modeled as a triaxial ellipsoid.
                 » Size and shape data are given by a PCK.
          – The epoch is supplied via a SPICE API call, as for position
            vectors.
          – The reference frame relative to which the vector is expressed is
            not specified by the frame kernel creator.
                 » SPICE automatically selects this frame.
Dynamic Frames                                                                        19
     N IF               Two-Vector Frame Concepts - 7
                      Navigation and Ancillary Information Facility
     • Velocity Vector
            – Is defined by the velocity of a target ephemeris object relative
              to an observing ephemeris object. The frame kernel creator
              specifies:
                » the target
                » the observer
                » the velocity reference frame
                    • This frame may be distinct from the base frame.
                    • Different velocity frame choices can lead to radically different
                      two-vector frame definitions.
                 » the aberration correction
                    • The velocity vector may optionally be corrected for light time
                      and stellar aberration.
                    • Use of light time correction also implies evaluation of the
                      velocity vector's frame at a light-time corrected epoch: the
                      epoch is corrected for light time between the velocity frame's
                      center and the observer, if the velocity frame is non-inertial.
            – The epoch is supplied via a SPICE API call, as for position
              vectors.
Dynamic Frames                                                                           20
     N IF               Two-Vector Frame Concepts - 8
                      Navigation and Ancillary Information Facility

      • Constant Vector
             – The vector is constant in a frame specified by the kernel
               creator.
                 » The constant vector's frame may be time-dependent.
                 » This frame may be distinct from the base frame.
             – The vector may be specified in a variety of coordinate
               systems.
                 » Cartesian
                 » Latitudinal
                 » Right ascension/declination (RA/DEC)
             – An observer may optionally be associated with a constant
               vector for the purpose of defining aberration corrections.
                 » The orientation of the constant vector's frame may
                   optionally be corrected for light time between the frame's
                   center and the observer: if the frame is non-inertial, it is
                   evaluated at a light-time corrected epoch.
Dynamic Frames                                                                    21
     N IF                 Two-Vector Frame Concepts - 9
                        Navigation and Ancillary Information Facility


                    » A constant vector may optionally be corrected for
                      stellar aberration due to motion of observer relative to
                      solar system barycenter.
                        • Stellar aberration can be specified without light time
                          correction; the string indicating stellar aberration
                          correction alone is
                             'S'
                        • This correction specification is not supported elsewhere
                          in the SPICE Toolkit API.
                 – The epoch is supplied via a SPICE API call, as for position
                   vectors.
                     » If the constant vector's frame is time-dependent, that
                       frame is evaluated at this epoch, optionally adjusted
                       for light time.



Dynamic Frames                                                                       22
     N IF                  Two-Vector Frame Examples - 1
                        Navigation and Ancillary Information Facility


           Nadir-Oriented Spacecraft-Centered Frame
                                           Primary vector: spacecraft nadir direction
     Y = Z x X, completing the             vector. Associated with nadir frame's -Z axis in
     right-handed frame.                   frame kernel.
                                                                           Nadir vector can be
                       Y                                                   defined to point to
                                                                           either:
                                                                            • closest point to spacecraft
                                                                            on ellipsoid
                                                                            • center of mass of orbited
                                                                            body

                                                         Secondary vector: spacecraft velocity
                 Z                                       relative to center of motion in J2000
                                X                        frame. Associated with nadir frame's
                                                         +X axis in frame kernel.

                     Normalized component of secondary
                     vector orthogonal to primary vector.
                     This vector is aligned with the nadir
                     frame's +X axis.

Dynamic Frames                                                                                              23
     N IF                Two-Vector Frame Examples - 2
                       Navigation and Ancillary Information Facility

     Nadir-Oriented Spacecraft-Centered Frame:       Frame kernel specification.

         The -Z axis points from the spacecraft toward the closest point on Mars.

         The component of inertially referenced spacecraft velocity
         vector orthogonal to Z is aligned with the +X axis.

         The +Y axis is the cross product of the +Z axis and the +X axis.

     \begindata                                                        <frame_name>      = user-specified
                                                                                           frame name
         FRAME_<frame_name>                =   <frame_ID>              <frame_ID>        = integer frame ID
         FRAME_<frame_ID>_NAME             =   <frame_name>                                code
         FRAME_<frame_ID>_CLASS            =   5                       <orbiter_ID>      = NAIF ID code of
         FRAME_<frame_ID>_CLASS_ID         =   <frame_ID>                                  spacecraft
         FRAME_<frame_ID>_CENTER           =   <orbiter_ID>            <orbiter_ID/name> = NAIF ID code or
         FRAME_<frame_ID>_RELATIVE         =   'J2000'                                     name of spacecraft
         FRAME_<frame_ID>_DEF_STYLE        =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY           =   'TWO-VECTOR'
         FRAME_<frame_ID>_PRI_AXIS         =   '-Z'
         FRAME_<frame_ID>_PRI_VECTOR_DEF   =   'TARGET_NEAR_POINT'
         FRAME_<frame_ID>_PRI_OBSERVER     =   <orbiter_ID/name>
         FRAME_<frame_ID>_PRI_TARGET       =   'MARS'
         FRAME_<frame_ID>_PRI_ABCORR       =   'NONE'
         FRAME_<frame_ID>_SEC_AXIS         =   'X'
         FRAME_<frame_ID>_SEC_VECTOR_DEF   =   'OBSERVER_TARGET_VELOCITY'
         FRAME_<frame_ID>_SEC_OBSERVER     =   'MARS'
         FRAME_<frame_ID>_SEC_TARGET       =   <orbiter_ID/name>
         FRAME_<frame_ID>_SEC_ABCORR       =   'NONE'
         FRAME_<frame_ID>_SEC_FRAME        =   'J2000'

Dynamic Frames                                                                                              24
     N IF                  Two-Vector Frame Examples - 3
                        Navigation and Ancillary Information Facility


                         Spacecraft "View Frame"
                                             Secondary vector:
                                             spacecraft position relative to center of motion.
                                             Associated with view frame's +Y axis in frame
     X = Y x Z, completing the               kernel.
     right-handed frame.                 X
     ("Out of plane" direction)




                                                    Z             Primary vector: spacecraft
                                   Y                              velocity relative to center of
                                                                  motion in J2000 frame.
           Normalized component of secondary
                                                                  Associated with view frame's
           vector orthogonal to primary vector.
                                                                  +Z axis in frame kernel.
           This vector is aligned with the view
                                                                  ("Down track" direction)
           frame's +Y axis. ("In plane" direction)



Dynamic Frames                                                                                     25
     N IF                Two-Vector Frame Examples - 4
                       Navigation and Ancillary Information Facility

     Spacecraft "View Frame":   Frame kernel specification.

         The +Z axis is aligned with the J2000-referenced velocity of the
         spacecraft relative to Mars.

         The component of the spacecraft position orthogonal to +Z is aligned
         with the +Y axis.

         The +X axis is the cross product of the +Y axis and the +X axis.

     \begindata                                                        <frame_name>      = user-specified
                                                                                           frame name
         FRAME_<frame_name>                =   <frame_ID>              <frame_ID>        = integer frame ID
         FRAME_<frame_ID>_NAME             =   <frame_name>                                code
         FRAME_<frame_ID>_CLASS            =   5                       <orbiter_ID>      = NAIF ID code of
         FRAME_<frame_ID>_CLASS_ID         =   <frame_ID>                                  spacecraft
         FRAME_<frame_ID>_CENTER           =   <orbiter_ID>            <orbiter_ID/name> = NAIF ID code or
         FRAME_<frame_ID>_RELATIVE         =   'J2000'                                     name of spacecraft
         FRAME_<frame_ID>_DEF_STYLE        =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY           =   'TWO-VECTOR'
         FRAME_<frame_ID>_PRI_AXIS         =   'Z'
         FRAME_<frame_ID>_PRI_VECTOR_DEF   =   'OBSERVER_TARGET_VELOCITY'
         FRAME_<frame_ID>_PRI_OBSERVER     =   'MARS'
         FRAME_<frame_ID>_PRI_TARGET       =   <orbiter_ID/name>
         FRAME_<frame_ID>_PRI_ABCORR       =   'NONE'
         FRAME_<frame_ID>_PRI_FRAME        =   'J2000'
         FRAME_<frame_ID>_SEC_AXIS         =   'Y'
         FRAME_<frame_ID>_SEC_VECTOR_DEF   =   'OBSERVER_TARGET_POSITION'
         FRAME_<frame_ID>_SEC_OBSERVER     =   'MARS'
         FRAME_<frame_ID>_SEC_TARGET       =   <orbiter_ID/name>
         FRAME_<frame_ID>_SEC_ABCORR       =   'NONE'
Dynamic Frames                                                                                              26
     N IF                Two-Vector Frame Examples - 5
                        Navigation and Ancillary Information Facility


                 Geocentric Solar Ecliptic Frame (GSE)

                  Primary vector: position of sun relative to earth
                  Associated with GSE frame's +X axis in frame kernel.

                                                                                Z = X x Y,
                                                                                completing the
                                                                                right-handed frame
                                                                X



                                                                            Y
                                                                        Y = normalized component
                      Secondary vector: velocity of sun                 of secondary vector
                      relative to earth in J2000 frame.                 orthogonal to primary
                      Associated with GSE frame's +Y axis in            vector
                      frame kernel.
Dynamic Frames                                                                                       27
     N IF                 Two-Vector Frame Examples - 6
                        Navigation and Ancillary Information Facility
      Geocentric Solar Ecliptic (GSE) frame:

          +X is parallel to the geometric earth-sun position vector.

          +Y axis is the normalized component of the geometric earth-sun velocity
             vector orthogonal to the GSE +X axis.

          +Z axis is parallel to the cross product of the GSE +X axis
             and the GSE +Y axis.

      \begindata

          FRAME_GSE                         =    <frame_ID>
          FRAME_<frame_ID>_NAME             =   'GSE'                      <frame_ID> = integer frame
          FRAME_<frame_ID>_CLASS            =    5                                      ID code
          FRAME_<frame_ID>_CLASS_ID         =    <frame_ID>
          FRAME_<frame_ID>_CENTER           =    399
          FRAME_<frame_ID>_RELATIVE         =   'J2000'
          FRAME_<frame_ID>_DEF_STYLE        =   'PARAMETERIZED'
          FRAME_<frame_ID>_FAMILY           =   'TWO-VECTOR'
          FRAME_<frame_ID>_PRI_AXIS         =   'X'
          FRAME_<frame_ID>_PRI_VECTOR_DEF   =   'OBSERVER_TARGET_POSITION'
          FRAME_<frame_ID>_PRI_OBSERVER     =   'EARTH'
          FRAME_<frame_ID>_PRI_TARGET       =   'SUN'
          FRAME_<frame_ID>_PRI_ABCORR       =   'NONE'
          FRAME_<frame_ID>_SEC_AXIS         =   'Y'
          FRAME_<frame_ID>_SEC_VECTOR_DEF   =   'OBSERVER_TARGET_VELOCITY'
          FRAME_<frame_ID>_SEC_OBSERVER     =   'EARTH'
          FRAME_<frame_ID>_SEC_TARGET       =   'SUN'
          FRAME_<frame_ID>_SEC_ABCORR       =   'NONE'
          FRAME_<frame_ID>_SEC_FRAME        =   'J2000'

Dynamic Frames                                                                                          28
     N IF                   Two-Vector Frame Examples - 7
                          Navigation and Ancillary Information Facility


       Geocentric Solar Magnetospheric Frame (GSM)
                                                Secondary vector: North geomagnetic centered
                                                dipole in IAU_EARTH frame. Associated with
                                                GSM frame's +Z axis in frame kernel.



                                                                              Z = normalized
                                                                              component of
                                                                              secondary vector
                                                                              orthogonal to
                                                                              primary vector

                 Primary vector: position of sun relative to earth
                 Associated with GSM frame's +X axis in frame kernel.

                                                                          Y = Z x X,
                                                                          completing the
                                                                          right-handed frame



Dynamic Frames                                                                                   29
     N IF                 Two-Vector Frame Examples - 8
                        Navigation and Ancillary Information Facility
      Geocentric Solar Magnetospheric (GSM) frame:

          +X is parallel to the geometric earth-sun position vector.

          +Z axis is normalized component of north centered geomagnetic dipole
             vector orthogonal to GSM +X axis.

          +Y completes the right-handed frame.

      \begindata

          FRAME_GSM                         =    <frame_ID>
          FRAME_<frame_ID>_NAME             =   'GSM'
          FRAME_<frame_ID>_CLASS            =    5                         <frame_ID> = integer frame
          FRAME_<frame_ID>_CLASS_ID         =    <frame_ID>                             ID code
          FRAME_<frame_ID>_CENTER           =    399
          FRAME_<frame_ID>_RELATIVE         =   'J2000'
          FRAME_<frame_ID>_DEF_STYLE        =   'PARAMETERIZED'
          FRAME_<frame_ID>_FAMILY           =   'TWO-VECTOR'
          FRAME_<frame_ID>_PRI_AXIS         =   'X'
          FRAME_<frame_ID>_PRI_VECTOR_DEF   =   'OBSERVER_TARGET_POSITION'
          FRAME_<frame_ID>_PRI_OBSERVER     =   'EARTH'
          FRAME_<frame_ID>_PRI_TARGET       =   'SUN'
          FRAME_<frame_ID>_PRI_ABCORR       =   'NONE'
          FRAME_<frame_ID>_SEC_AXIS         =   'Z'
          FRAME_<frame_ID>_SEC_VECTOR_DEF   =   'CONSTANT'
          FRAME_<frame_ID>_SEC_FRAME        =   'IAU_EARTH'
          FRAME_<frame_ID>_SEC_SPEC         =   'LATITUDINAL'
          FRAME_<frame_ID>_SEC_UNITS        =   'DEGREES'
          FRAME_<frame_ID>_SEC_LONGITUDE    =    288.43
          FRAME_<frame_ID>_SEC_LATITUDE     =      79.54

Dynamic Frames                                                                                          30
     N IF               Two-Vector Frame Examples - 9
                      Navigation and Ancillary Information Facility


                 Spacecraft-Centered Roll-Celestial Frame
                       Secondary vector: Lock star direction in J2000 frame, corrected
                       for stellar aberration due to spacecraft motion. Associated with
                       Roll-Celestial frame's +X axis in frame kernel.




                                                                         X = normalized
                                                                         component of
                                                                         secondary vector
                                                                         orthogonal to
                                                                         primary vector

     Primary vector: position of earth relative to spacecraft.
     Associated with Roll-Celestial frame's +Z axis
     in frame kernel.                                                 Y = Z x X,
                                                                      completing the
                                                                      right-handed frame
Dynamic Frames                                                                              31
     N IF               Two-Vector Frame Examples - 10
                        Navigation and Ancillary Information Facility
       Spacecraft-centered roll-celestial frame:

          +Z is parallel to the geometric earth-sun position vector.

          +X axis is normalized component of star direction orthogonal to Z axis. The star
             direction is corrected for stellar aberration due to motion of the spacecraft.

          +Y completes the right-handed frame.
                                                                    <frame_name>        = user-specified
      \begindata                                                                           frame name
          FRAME_<frame_name>                =    <frame_ID>         <frame_ID>           = integer frame ID
          FRAME_<frame_ID>_NAME             =    <frame_name>                              code
          FRAME_<frame_ID>_CLASS            =    5                  <spacecraft_ID>      = NAIF ID code of
          FRAME_<frame_ID>_CLASS_ID         =    <frame_ID>                                spacecraft
          FRAME_<frame_ID>_CENTER           =    <spacecraft_ID>    <spacecraft_ID/name> = NAIF ID code or
          FRAME_<frame_ID>_RELATIVE         =   'J2000'                                   name of spacecraft
          FRAME_<frame_ID>_DEF_STYLE        =   'PARAMETERIZED'
          FRAME_<frame_ID>_FAMILY           =   'TWO-VECTOR'
          FRAME_<frame_ID>_PRI_AXIS         =   'Z'
          FRAME_<frame_ID>_PRI_VECTOR_DEF   =   'OBSERVER_TARGET_POSITION'
          FRAME_<frame_ID>_PRI_OBSERVER     =   <spacecraft_ID/name>
          FRAME_<frame_ID>_PRI_TARGET       =   'EARTH'
          FRAME_<frame_ID>_PRI_ABCORR       =   'NONE'
          FRAME_<frame_ID>_SEC_AXIS         =   'X'
          FRAME_<frame_ID>_SEC_VECTOR_DEF   =   'CONSTANT'
          FRAME_<frame_ID>_SEC_FRAME        =   'J2000'
          FRAME_<frame_ID>_SEC_SPEC         =   'RA/DEC'
          FRAME_<frame_ID>_SEC_UNITS        =   'DEGREES'
          FRAME_<frame_ID>_SEC_RA           =   <star right ascension in degrees>
          FRAME_<frame_ID>_SEC_DEC          =   <star declination in degrees>
          FRAME_<frame_ID>_SEC_OBSERVER     =   <spacecraft_ID/name>
          FRAME_<frame_ID>_SEC_ABCORR       =   'S'
Dynamic Frames                                                                                             32
     N IF                         "Of-Date" Frames - 1
                    Navigation and Ancillary Information Facility


      • Of-date frames are associated with user-
        specified bodies and are based on user-
        selected dynamical models.
            – Implementations of models are built into SPICE.
      • The currently supported "of-date" frame
        families are
            – Mean Equator and Equinox of Date
            – True Equator and Equinox of Date
            – Mean Ecliptic and Equinox of Date
      • The earth is the only currently supported
        body.

Dynamic Frames                                                      33
     N IF                             "Of-Date" Frames - 2
                        Navigation and Ancillary Information Facility

         • The currently supported types of models
           are
                 – Precession
                 – Nutation
                 – Mean obliquity
         • The of-date frame implementation is
           intended to be flexible:
                 – The set of supported bodies can grow over time.
                 – The set of supported models can grow over time.
                    » SPICE is not forever locked into using a
                      single hard-coded implementation, such as
                      the 1976 IAU precession model
                 – The set of supported frame families can grow, if
                   necessary.
Dynamic Frames                                                          34
     N IF                            "Of-Date" Frames - 3
                       Navigation and Ancillary Information Facility

         • Mean Equator and Equinox of Date Family
                 – For all reference frames in this family:
                    » The frame's relationship to the J2000 frame
                      is given by a precession model.
                    » The frame kernel creator selects a
                      precession model from those built into the
                      SPICE software.
                       • Currently supported only for the earth
                       • 1976 IAU precession model (aka Lieske model)
                    » The frame kernel creator must either specify
                      the frame's rotation state or must designate
                      the frame "frozen" at a specified "freeze
                      epoch."

Dynamic Frames                                                          35
     N IF                             "Of-Date" Frames - 4
                        Navigation and Ancillary Information Facility



       Earth mean equator and equinox of date frame:

             +Z axis is perpendicular to mean equator of date and points north.

             +X axis is parallel to the cross product of the +Z axis and
                the north-pointing vector normal to the mean ecliptic of date.

             +Y axis completes the right-handed frame.

     \begindata
                                                                      <frame_name>   = user-specified
         FRAME_<frame_name>                   =    <frame_ID>                          frame name
         FRAME_<frame_ID>_NAME                =    <frame_name>       <frame_ID>     = integer frame ID
         FRAME_<frame_ID>_CLASS               =    5                                   code
         FRAME_<frame_ID>_CLASS_ID            =    <frame_ID>
         FRAME_<frame_ID>_CENTER              =    399
         FRAME_<frame_ID>_RELATIVE            =   'J2000'
         FRAME_<frame_ID>_DEF_STYLE           =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY              =   'MEAN_EQUATOR_AND_EQUINOX_OF_DATE'
         FRAME_<frame_ID>_PREC_MODEL          =   'EARTH_IAU_1976'
         FRAME_<frame_ID>_ROTATION_STATE      =   'ROTATING'




Dynamic Frames                                                                                            36
     N IF                            "Of-Date" Frames - 5
                       Navigation and Ancillary Information Facility

         • True Equator and Equinox of Date Family
                 – For all reference frames in this family:
                    » The frame's relationship to the J2000 frame
                      is given by a precession model and a
                      nutation model.
                    » The frame kernel creator selects models
                      from those built into the SPICE software.
                       • Currently supported only for the earth
                       • 1976 IAU precession model (aka Lieske model)
                       • 1980 IAU nutation model
                    » The frame kernel creator must either specify
                      the frame's rotation state or must designate
                      the frame "frozen" at a specified "freeze
                      epoch."
Dynamic Frames                                                          37
     N IF                             "Of-Date" Frames - 6
                        Navigation and Ancillary Information Facility



       Earth true equator and equinox of date frame:

             +Z axis is perpendicular to true equator of date and points north.

             +X axis is parallel to the cross product of the +Z axis and
                the north-pointing vector normal to mean ecliptic of date.

             +Y axis completes the right-handed frame.

     \begindata
                                                                      <frame_name>   = user-specified
         FRAME_<frame_name>                   =    <frame_ID>                          frame name
         FRAME_<frame_ID>_NAME                =    <frame_name>       <frame_ID>     = integer frame ID
         FRAME_<frame_ID>_CLASS               =    5                                   code
         FRAME_<frame_ID>_CLASS_ID            =    <frame_ID>
         FRAME_<frame_ID>_CENTER              =    399
         FRAME_<frame_ID>_RELATIVE            =   'J2000'
         FRAME_<frame_ID>_DEF_STYLE           =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY              =   'TRUE_EQUATOR_AND_EQUINOX_OF_DATE'
         FRAME_<frame_ID>_PREC_MODEL          =   'EARTH_IAU_1976'
         FRAME_<frame_ID>_NUT_MODEL           =   'EARTH_IAU_1980'
         FRAME_<frame_ID>_ROTATION_STATE      =   'ROTATING'




Dynamic Frames                                                                                            38
     N IF                            "Of-Date" Frames - 7
                       Navigation and Ancillary Information Facility

         • Mean Ecliptic and Equinox of Date Family
                 – For all reference frames in this family:
                    » The frame's relationship to the J2000 frame
                      is given by a precession model and an
                      obliquity model.
                    » The frame kernel creator selects models
                      from those built into the SPICE software.
                    » Currently supported only for the earth
                       • 1976 IAU precession model (aka Lieske model)
                       • 1980 IAU mean obliquity model
                    » The frame kernel creator must either specify
                      the frame's rotation state or must designate
                      the frame "frozen" at a specified "freeze
                      epoch."

Dynamic Frames                                                          39
     N IF                             "Of-Date" Frames - 8
                        Navigation and Ancillary Information Facility



       Earth mean ecliptic and equinox of date frame:

             +Z axis is perpendicular to mean ecliptic of date and points toward
                ecliptic north.

             +X axis is parallel to the cross product of +Z axis and
                the north-pointing vector normal to mean ecliptic of date.

             +Y axis completes the right-handed frame.

     \begindata                                                         <frame_name>   = user-specified
                                                                                         frame name
         FRAME_<frame_name>                   =    <frame_ID>         <frame_ID>       = integer frame ID
         FRAME_<frame_ID>_NAME                =    <frame_name>                          code
         FRAME_<frame_ID>_CLASS               =    5
         FRAME_<frame_ID>_CLASS_ID            =    <frame_ID>
         FRAME_<frame_ID>_CENTER              =    399
         FRAME_<frame_ID>_RELATIVE            =   'J2000'
         FRAME_<frame_ID>_DEF_STYLE           =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY              =   'MEAN_ECLIPTIC_AND_EQUINOX_OF_DATE'
         FRAME_<frame_ID>_PREC_MODEL          =   'EARTH_IAU_1976'
         FRAME_<frame_ID>_OBLIQ_MODEL         =   'EARTH_IAU_1980'
         FRAME_<frame_ID>_ROTATION_STATE      =   'ROTATING'




Dynamic Frames                                                                                              40
     N IF                                   Euler Frames - 1
                         Navigation and Ancillary Information Facility

       • Euler frames are defined by a time-
         dependent rotation relative to a base frame.
                 – The rotation from an Euler frame to its base frame is given
                   by three Euler angles.
                 – Each angle is given by a separate polynomial.
                     » The polynomials may have different degrees.
                     » The independent variable is a time offset, in TDB
                       seconds, from an epoch specified by the frame kernel
                       creator.
                     » The units associated with the angles are specified by the
                       frame kernel creator. Angles are converted to radians
                       internally by SPICE.
                     » The sequence of rotation axes is specified by the frame
                       kernel creator.
                        • The central axis must differ from the other two.
                        • The rotation from the Euler frame to the base frame is
                        [angle_1]axis_1 [angle_2]axis_2 [angle_3]axis_3 (units are radians)

Dynamic Frames                                                                                41
     N IF                               Euler Frames - 2
                     Navigation and Ancillary Information Facility

       • Examples of applications:
             – Dynamic version of earth magnetospheric frame (MAG)
                » Latitude and longitude of the north centered geomagnetic
                  dipole are given by polynomials.
             – Spinning spacecraft frame
                » The base frame could be a:
                    • Built-in inertial frame
                    • C-kernel frame
                    • Roll-celestial frame (using lock star)
                    • Nadir frame
             – Topocentric frames for tracking stations for which plate
               motion is modeled
                » The frame rotation keeps the frame orientation consistent
                  with the changing station location.

Dynamic Frames                                                                42
     N IF                                  Euler Frames - 3
                        Navigation and Ancillary Information Facility

                 – Mean or true body equator and earth equinox of date
                   frame, where the body is a planet or satellite other than
                   the earth
                     » The base frame is an IAU_<body> frame.
                     » The Euler frame "removes" the body's rotation about
                       the spin axis.
                 – Variation on supported "of date" frame
                     » An existing supported "of date" frame is used as the
                       base frame.
                     » Perturbations to the "of date" frame are expressed
                       using Euler angles.




Dynamic Frames                                                                 43
     N IF                                   Euler Frames - 4
                         Navigation and Ancillary Information Facility
         As an example, we construct an Euler frame called IAU_MARS_EULER. Frame
         IAU_MARS_EULER is mathematically identical to the PCK frame named IAU_MARS.
         The PCK data defining the underlying IAU_MARS frame are:

             BODY499_POLE_RA = ( 317.68143 -0.1061 0.     )
             BODY499_POLE_DEC = ( 52.88650 -0.0609 0.     )
             BODY499_PM       = ( 176.630 350.89198226 0. )

         Relative to the angles used to define the IAU_MARS frame, the angles for our
         Euler frame definition are reversed and the signs negated. Angular units are
         degrees. Rate units are degrees/second, unlike the PCK units of degrees/day.

                  angle_3 is   90 + RA                         angle_1 is -90 - RA
           PCK:   angle_2 is   90 - Dec         Euler Frame:   angle_2 is -90 + Dec
                  angle_1 is        PM                         angle_3 is     - PM

     \begindata
        FRAME_IAU_MARS_EULER                =   <frame_ID>
        FRAME_<frame_ID>_NAME               =   'IAU_MARS_EULER'
        FRAME_<frame_ID>_CLASS              =   5                       <frame_ID>    = integer frame ID
        FRAME_<frame_ID>_CLASS_ID           =   <frame_ID>                              code
        FRAME_<frame_ID>_CENTER             =   499
        FRAME_<frame_ID>_RELATIVE           =   'J2000'
        FRAME_<frame_ID>_DEF_STYLE          =   'PARAMETERIZED'
        FRAME_<frame_ID>_FAMILY             =   'EULER'
        FRAME_<frame_ID>_EPOCH              =   @2000-JAN-1/12:00:00
        FRAME_<frame_ID>_AXES               =   ( 3 1 3 )
        FRAME_<frame_ID>_UNITS              =   'DEGREES'
        FRAME_<frame_ID>_ANGLE_1_COEFFS     =   ( -47.68143 0.33621061170684714E-10 )
        FRAME_<frame_ID>_ANGLE_2_COEFFS     =   ( -37.1135 -0.19298045478743630E-10 )
        FRAME_<frame_ID>_ANGLE_3_COEFFS     =   ( -176.630 -0.40612497946759260E-02 )

Dynamic Frames                                                                                             44
     N IF                       Frozen Dynamic Frames - 1
                         Navigation and Ancillary Information Facility


       • A frozen dynamic frame is a "Snapshot" of a
         dynamic frame at a specified epoch.
                 – The frame is frozen relative to the base frame specified by
                   the frame kernel creator in the frame kernel definition.
                 – The rotation from the frozen frame to the base frame is
                   constant.
                 – The rotation is not frozen with respect to inertial frames
                   unless the base frame is inertial.
                 – A frame is designated frozen by the presence of a "freeze
                   epoch" specification in the frame definition, for example:
                      FRAME_<FRAME_ID>_FREEZE_EPOCH = @1949-DEC-31/22:09:46.861901

                 – The freeze epoch is given in SPICE text kernel format, as is
                   used in a leapseconds kernel.



Dynamic Frames                                                                       45
     N IF                      Frozen Dynamic Frames - 2
                        Navigation and Ancillary Information Facility



       Frozen version of Earth mean equator and equinox of date frame:

             +Z axis is perpendicular to mean equator of date.

             +X axis is parallel to cross product of +Z axis and
                vector normal to mean ecliptic of date.

             +Y axis completes the right-handed frame.

     \begindata
                                                                      <frame_name>   = user-specified
         FRAME_<frame_name>                   =    <frame_ID>                          frame name
         FRAME_<frame_ID>_NAME                =    <frame_name>       <frame_ID>     = integer frame ID
         FRAME_<frame_ID>_CLASS               =    5                                   code
         FRAME_<frame_ID>_CLASS_ID            =    <frame_ID>
         FRAME_<frame_ID>_CENTER              =    399
         FRAME_<frame_ID>_RELATIVE            =   'J2000'
         FRAME_<frame_ID>_DEF_STYLE           =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY              =   'MEAN_EQUATOR_AND_EQUINOX_OF_DATE'
         FRAME_<frame_ID>_PREC_MODEL          =   'EARTH_IAU_1976'
         FRAME_<frame_ID>_FREEZE_EPOCH        =   @1949-DEC-31/22:09:46.861901




Dynamic Frames                                                                                            46
     N IF                      Inertial Dynamic Frames - 1
                        Navigation and Ancillary Information Facility

         • Inertial dynamic frames are specified by
           setting the rotation state to 'INERTIAL' in
           the rotation state assignment:
                        FRAME_<FRAME_ID>_ROTATION_STATE = 'INERTIAL'
                 – The 'INERTIAL' state implies the frame is treated as
                   inertial for the purpose of velocity transformations.
                 – The state transformation between any inertial frame and
                   "inertial dynamic frame" has zero derivative block: the
                   state transformation matrix has the form
                    R(t) |    0
                   -------|------
                     0    | R(t)
                  where R(t) is a time-dependent rotation.




Dynamic Frames                                                               47
     N IF                      Inertial Dynamic Frames - 2
                        Navigation and Ancillary Information Facility

                 – In contrast, for any rotating frame R(t), the state
                   transformation between any inertial frame and R(t) has a
                   corresponding matrix of the form
                          R(t)   |   0
                          -------|------
                         dR(t)/dt| R(t)
                 – The inertial rotation state
                    » Simplifies velocity transformations: velocities are
                      transformed by a rotation.
                    » May be useful for maintaining consistency with other
                      dynamic frame implementations.
                    » Only makes sense if the "inertial" dynamic frame
                      actually rotates very slowly!


Dynamic Frames                                                                48
     N IF                      Inertial Dynamic Frames - 3
                        Navigation and Ancillary Information Facility



       Inertial version of Earth true equator and equinox of date frame:

             +Z axis is perpendicular to true equator of date.

             +X axis is parallel to cross product of +Z axis and
                vector normal to mean ecliptic of date.

             +Y axis completes the right-handed frame.

     \begindata
                                                                      <frame_name>   = user-specified
         FRAME_<frame_name>                   =    <frame_ID>                          frame name
         FRAME_<frame_ID>_NAME                =    <frame_name>       <frame_ID>     = integer frame ID
         FRAME_<frame_ID>_CLASS               =    5                                   code
         FRAME_<frame_ID>_CLASS_ID            =    <frame_ID>
         FRAME_<frame_ID>_CENTER              =    399
         FRAME_<frame_ID>_RELATIVE            =   'J2000'
         FRAME_<frame_ID>_DEF_STYLE           =   'PARAMETERIZED'
         FRAME_<frame_ID>_FAMILY              =   'TRUE_EQUATOR_AND_EQUINOX_OF_DATE'
         FRAME_<frame_ID>_PREC_MODEL          =   'EARTH_IAU_1976'
         FRAME_<frame_ID>_NUT_MODEL           =   'EARTH_IAU_1980'
         FRAME_<frame_ID>_ROTATION_STATE      =   'INERTIAL'




Dynamic Frames                                                                                            49
     N IF                Generic Dynamic Frames Kernel
                        Navigation and Ancillary Information Facility



         • NAIF is developing a "generic" dynamic
           frames kernel.
                 – Will contain widely applicable dynamic frame
                   definitions.
                 – Analogous to generic PCK file.
                 – Examples of included frames:
                    » GSE, GSE, MAG
                    » Earth mean equator and equinox of date, 1976
                      version
                    » Earth mean equator and equinox of date, 1980
                      version



Dynamic Frames                                                          50
     N IF                                     Backup
                 Navigation and Ancillary Information Facility




         • Rationale
         • Numerical Issues
         • Limitations




Dynamic Frames                                                   51
     N IF                                          Rationale
                        Navigation and Ancillary Information Facility

         • Why provide dynamic frames?
                 – User could build C-kernel for *any* frame.
                 – SPICE could provide a limited number of "built-in" dynamic
                   frames which wouldn't require a frame kernel.
                 – Users can (and do) create their own routines to implement
                   dynamic frames.
         • Benefits
                 – Convenience: using a formula rather than a C-kernel
                   avoids C-kernel creation, dissemination, storage, and
                   consistency issues
                 – Flexibility: the dynamic frame mechanism enables creation
                   of a vast variety of reference frames
                 – Integration: once defined, and once supporting kernels are
                   loaded, dynamic frames may be referenced in SPICE API
                   calls.

Dynamic Frames                                                                  52
     N IF                               Numerical Issues - 1
                         Navigation and Ancillary Information Facility

         • Two-vector frame derivatives may be inaccurate.
           Let R(t) represent a time-dependent rotation:
                 – If R(t) depends on CK data, dR(t)/dt may be inaccurate because
                   CK rates frequently have low accuracy.
                 – If R(t) depends on velocity vectors, then dR(t)/dt depends on
                   acceleration determined via numerical differentiation. Typically
                   such derivatives suffer loss of accuracy.
                      » However, if velocities are "well-behaved," numerically derived
                        acceleration can be quite good. Example: GSE frame.
                 – If R(t) depends on position vectors, the velocities associated with
                   those vectors by the SPK system may not be mathematically
                   consistent with the positions. This can happen for SPK types
                   with separate polynomials for position and velocity, such as
                   types 3, 8, 9, and 14.
                 – If R(t) depends on aberration-corrected vectors, the associated
                   velocities may be inaccurate due to accuracy limitations of the
                   aberration corrections applied to velocities by the SPK system.


Dynamic Frames                                                                           53
     N IF                              Numerical Issues - 2
                        Navigation and Ancillary Information Facility



         • Recommendations
                 – Avoid using aberration corrections in two-vector frame
                   definitions, if accurate velocity transformations are required.
                 – Be aware of the accuracy of the data on which two-vector frames
                   are based.




Dynamic Frames                                                                       54
     N IF                                      Limitations - 1
                         Navigation and Ancillary Information Facility

         • Simulated recursion:
                 – ANSI Fortran 77 doesn't support recursion, so the SPICE dynamic
                   frame system implements limited, simulated recursion.
                      » Basically, two levels of recursion are supported for selected
                        SPK and Frame System routines.
                 – Users must avoid requesting "deeper" recursion than the SPICE
                   dynamic frame system can support.
                      » When defining dynamic frames:
                         • Choose J2000 as the base frame for two-vector frames.
                         • Except for Euler frames, avoid using dynamic frames as base
                           frames.
                         • Try to avoid choosing a dynamic frame as the frame associated
                           with a velocity or constant vector.
                     » In SPK, CK, or PCK kernels, don't use two-vector frames as
                       the base frame relative to which ephemeris or attitude data
                       are specified.
                         • "Of-date" or Euler frames are OK for this purpose.


Dynamic Frames                                                                             55
     N IF                                      Limitations - 2
                         Navigation and Ancillary Information Facility

         • Run-time efficiency:
                 – Dynamic frame evaluation typically requires more computation
                   than is needed for CK or PCK frames.
                     » For example, evaluation of a two-vector frame may involve
                       several SPK calls.
                     » Euler frames are an exception: these are fairly efficient as
                       long as they don't have a base frame that requires a lot of
                       computation to evaluate.
                 – To minimize the performance penalty:
                     » Use J2000 as the base frame for two-vector frames.
                     » Use the simplest frames possible for association with
                       velocity or constant vectors in two-vector frame definitions.
                         • Prefer non-dynamic frames to dynamic frames and inertial
                           frames to non-inertial frames where there is a choice.




Dynamic Frames                                                                         56

								
To top