One document matched: draft-thomson-geopriv-grip-gps-00.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3688 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY W3C.REC-xmlschema-1-20010502 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlschema-1-20010502.xml">
<!ENTITY I-D.singh-geopriv-pidf-lo-dynamic PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.singh-geopriv-pidf-lo-dynamic.xml">
]>
<?rfc rfcedstyle="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="no"?>
<?rfc iprnotified="yes"?>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<rfc category="exp" ipr="trust200902">
<front>
<title abbrev="GRIP GPS">
Global Navigation Satellite System (GNSS) Reference Information Protocol (GRIP) - Global Positioning System (GPS) Assistance Data
</title>
<author initials="M." surname="Thomson"
fullname="Martin Thomson">
<organization>Andrew Corporation</organization>
<address>
<postal>
<street>PO Box U40</street>
<city>Wollongong University Campus</city>
<region>NSW</region>
<code>2500</code>
<country>AU</country>
</postal>
<phone>+61 2 4221 2915</phone>
<email>martin.thomson@andrew.com</email>
<uri>http://www.andrew.com/</uri>
</address>
</author>
<date month="July" year="2009"/>
<area>RAI</area>
<workgroup>GEOPRIV</workgroup>
<keyword>Internet-Draft</keyword>
<keyword>GRIP</keyword>
<keyword>GPS</keyword>
<keyword>GNSS</keyword>
<keyword>A-GPS</keyword>
<keyword>A-GNSS</keyword>
<keyword>Assistance</keyword>
<abstract>
<t>This document defines assistance data formats for the Global Positioning System (GPS). These formats can be used with the Global Navigation Satellite System (GNSS) Reference Information Protocol (GRIP) by a GPS receiver to acquire assistance data.
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>The Global Positioning System (GPS) is a navigation system that provides the means to determine the location of a receiver in space and time with high accuracy. With a large number of satellites, it is the most widely use Global Navigation Satellite System (GNSS).
</t>
<t>Server-assisted GPS provides a number of advantages including reducing the time required to measure satellites and the time required to obtain the information necessary to calculate a position.
</t>
<t>This document defines a series of XML elements that, in combination with the <xref target="I-D.thomson-geopriv-grip">GNSS Reference Information Protocol (GRIP) protocol</xref>, can be used to provide a receiver with assistance data.
</t>
<t>Readers of this document are warned that detailed knowledge of GPS is likely necessary to understand this document. It is intended that this document be read in conjunction with the <xref target="GPS-ICD">GPS Interface Control Document (ICD)</xref>, which defines all the significant parameters.
</t>
</section>
<section anchor="conventions" title="Conventions used in this document">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.
</t>
<t>The <xref target="GPS-ICD">GPS Interface Control Document (ICD)</xref> describes the navigation message and the parameters contained therein. This document does not repeat definitions and it cannot be interpreted without reference to the GPS ICD. Only enough information is provided to unambiguously identify the corresponding variable in the ICD.
</t>
<section title="Notational Conventions">
<t>In naming parameters, the GPS ICD frequently uses mathematical symbols and characters that cannot be represented in this document format. In particular, Greek characters are used to represent many parameters. The following conventions are used in this document to aid in correlating the two texts:
<list style="symbols">
<t>This document uses the full English name of the character (for instance, the argument of periapsis is represented by the Greek letter "omega").
</t>
<t>The case of English names follows the case of the Greek character. Uppercase Greek characters are represented in full uppercase (e.g., the longitude of the ascending node is represented by the Greek letter "OMEGA").
</t>
<t>Difference variables, which are represented as a character preceded by the Greek letter delta, are expressed in the same manner, with a hypen separating the delta from the variable definition (e.g., the mean motion difference from computed value is represented as "DELTA-n").
</t>
<t>Subscripts on symbols are represented using square brackets (e.g., the reference time used in satellite clock correction is represented by "t[ot]").
</t>
<t>Variables that represent a time rate of change, shown in the ICD with a small dot above the character are succeeded by the string "dot" using consistent case (e.g., the rate of right ascension is represented by "OMEGADOT").
</t>
<t>The following mathematical operators are used: add "+", subtract "-", multiply "*", divide "/", and power "^". Spaces are used to separate these from identifiers in cases where it might otherwise be ambiguous.
</t>
<t>The following mathematical functions are represented by common abbreviations: square root "sqrt", sine "sin", and cosine "cos".
</t>
</list></t>
</section>
<section title="Angular Measures">
<t>The formats described in this document are expressed in units of radians, not semi-circles. When converting, it is important to use the same approximation for the mathematical constant pi as is used by all GPS systems. Using this approximation ensures that the assistance data is generated and applied using the same values.
</t>
<t>The fixed approximation for pi used in GPS is 3.1415926535898 <xref target="GPS-ICD"/>.
</t>
</section>
<section title="Polynomial Expressions">
<t>The GPS navigation message is updated infrequently, but it models values that change over time. Thus, the message includes values that model how values change over time.
</t>
<t>Many values in GPS assistance data are expressed with a base value that is set at a particularly point in time, plus a value for therate of change of that value in time. Some values are further expressed with coefficients for the rate of change of the rate of change. In other words, values are expressed as a polynomial function in terms of time.
</t>
<t>This extends to other values, such as those in the Ionosphere Model that change depending on longitude. In the GPS navigation message, the Ionosphere model has four polynomial terms, allowing for a more complex model of ionosphere effects across different longitudes.
</t>
<t>This document uses a generalized model for univariate polynomial expressions. These expressions are used extensively. Each element that includes a polynomial expression rather than a fixed value includes the definition of the target value (and its units) plus the input variable (and its units).</t>
<t>Polynomial expressions are expressed as simple lists in XML schema, or a space-separated sequence of numbers. The first value in the list is the constant express; the second value is the first order term; the nth value is the coefficient of the (n-1)th power of the input, giving:
<list style="empty"><t>value(x) = sum from i=1..n of p[i]*x^(i-1)
</t></list>
</t>
<t>Polynomials can be any length, but since every term needs to be considered when the input variable is anything other than zero, receivers MAY limit their support to as many coefficients as are included in the GPS navigation message. The mandatory number of supported coefficients is included in the definition of polynomials.
</t>
<t><list style="empty"><t>For instance, the polynomial expression <spanx style="verb">4 5 6</spanx> with an input value of 2 produces: 4 + 5 * 2 + 6 * 2 ^ 2 = 38.</t></list></t>
</section>
<section anchor="tow" title="Reference Time">
<t>Where the input variable to a polynomial expression is time, a reference value is commonly used. The input to the polynomial expression is the difference between the current (or applicable) time and the reference time. The value for reference time is usually provided as a separate element in these cases and this element is identified in the definition of the polynomial expression.
</t>
<t>The <spanx style="verb">tow</spanx> element provides a reference time for assistance data that requires a reference. This element includes the GPS time of week in milliseconds to use as a reference. The input variable to time-based polynomials is the difference between the current time and the reference time.
</t>
<t>A GPS week has 604800000 (6.048e8) milliseconds. Unless specified explicitly, reference time is specified within half a week (3.024e8ms) of the time that assistance data is created. The <xref target="GPS-ICD">GPS ICD</xref> describes how to accomodate week rollovers into calculations of time differences.
</t>
<t>Alternatively, an explicit GPS week number can be indicated in the <spanx style="verb">week</spanx> attribute of the <spanx style="verb">tow</spanx> element. Note that GPS week rollovers also occur ever 1024 weeks (approximately 20 years).
</t>
</section>
</section>
<section title="GPS Assistance Data Types">
<t>This section defines assistance data types for GPS. The following definitions are provided:
<list style="symbols">
<t><xref target="utc">UTC Model</xref></t>
<t><xref target="navigation">Navigation Model</xref></t>
<t><xref target="ionosphere">Ionosphere Model</xref></t>
<t><xref target="acqAssist">Acquisition Assistance</xref></t>
<t><xref target="dgps">Differential GPS Corrections</xref></t>
<t><xref target="almanac">Almanac</xref></t>
<t><xref target="extNavigation">Extended Navigation Model</xref></t>
</list>
</t>
<section anchor="utc" title="UTC Model">
<t>The UTC model contains information on the relationship between Coordinated Universal Time (UTC) time and GPS time. The UTC model is always global.
<list style="hanging">
<t hangText="tow:">The <xref target="tow">tow</xref> element includes a the reference time value (t[ot]).
</t>
<t hangText="offset:">A polynomial in time for the time offset between GPS time and UTC time. This produces a value in seconds. Two values are required, which correspond to A[0] and A[1].
</t>
<t hangText="leapsec:">UTC occasionally introduces a leap second. GPS time does not. The <spanx style="verb">leapsec</spanx> element without attributes indicates the current number of leap seconds difference between the two time systems.
<vspace blankLines="1"/>
Additional instances of the <spanx style="verb">leapsec</spanx> element may be provided to indicate when new leap seconds come into effect. The <spanx style="verb">week</spanx> and <spanx style="verb">day</spanx> attributes respectively indicate the week and day that the included value is introduced.
</t>
</list>
</t>
<figure>
<preamble>The following example shows an instance of the UTC model in XML form, including information on the introduction of a new leap second:
</preamble>
<artwork><![CDATA[
<utc xmlns="urn:ietf:params:xml:ns:grip:gps">
<tow week="477">436559</tow>
<offset>0.76014e-4 -0.21722e-12</offset>
<leapsec>14</leapsec>
<leapsec week="2" day="3">15</leapsec>
</utc>
]]></artwork>
</figure>
</section>
<section anchor="navigation" title="Navigation Model">
<t>The <spanx style="verb">navigation</spanx> element contains the navigation model, information on the clock and position of each satellite. The navigation model is specific to a satellite and forms the bulk of the information transmitted by a satellite.
</t>
<t>Navigation model data can be global or local. Global data contains information for all satellites; local data contains on those satellites that can be seen from the input location.
</t>
<t>Multiple <spanx style="verb">satellite</spanx> elements are included in the navigation model, each containing the information for a single satellite. If the information is local, only relevant satellites are included. Each satellite included in the set is identified by number in the <spanx style="verb">number</spanx> attribute.
</t>
<t>The <spanx style="verb">satellite</spanx> element for navigation model has the following elements:
<list style="hanging">
<t hangText="ura:">User Range Accuracy (URA) includes an estimation of the net error in pseudorange measurements from this satellite, in meters. This value MAY be set to <spanx style="verb">INF</spanx>, indicating that no accuracy prediction is available and that the satellite is not suitable for use. INF corresponds to a value of 15 in the transmitted navigation message.
</t>
<t hangText="health:">The health of the satellite and the signals that it transmits. The bit map from the ICD is represented in the value of this element and the value of the <spanx style="verb">bad</spanx> and <spanx style="verb">signals</spanx> attributes.
</t>
<t>The following values for the <spanx style="verb">bad</spanx> attribute relate to all of the navigation data:
<list style="hanging">
<t hangText="none:">No data is bad (default value)</t>
<t hangText="parity:">Some or all of the parity is bad</t>
<t hangText="tlm-how:">The TLM or HOW is bad, apart from the Z-count</t>
<t hangText="z-count:">The Z-count is bad</t>
<t hangText="sf123:">Some or all data in subframes 1 through 3 is bad</t>
<t hangText="sf45:">Some or all data in subframes 4 and 5 is bad</t>
<t hangText="most:">Some or all data in any subframe is bad, excluding the TLM/HOW</t>
<t hangText="all:">Some or all data in any subframe is bad, including TLM/HOW</t>
</list>
</t>
<t>The <spanx style="verb">signals</spanx> attribute identifies specific signals that might be affected:
<list style="hanging">
<t hangText="L1P:">The L1P signal</t>
<t hangText="L1C:">The L1C signal</t>
<t hangText="L1:">Both L1P and L1C signals</t>
<t hangText="L2P:">The L2P signal</t>
<t hangText="L2C:">The L2C signal</t>
<t hangText="L2:">Both L2P and L2C signals</t>
<t hangText="all:">All signals</t>
</list>
</t>
<t>The following values for the element describe problems with the identified signals, or with the entire satellite:
<list style="hanging">
<t hangText="ok:">All signals are OK</t>
<t hangText="weak:">The identified signal is weak</t>
<t hangText="dead:">The identified signal is dead</t>
<t hangText="nodata:">The identified signal has no data modulation</t>
<t hangText="out:">The entire satellite is temporarily out of service</t>
<t hangText="soonout:">The entire satellite will soon be out of service</t>
<t hangText="spare:">Unknown, reserved value</t>
<t hangText="combination:">Multiple errors that require a combination of indications</t>
</list>
</t>
<t hangText="l2codes:">A space separated list identifying which codes (C/A or P) are transmitted on the L2 signal. This MAY be empty. The <spanx style="verb">pdata</spanx> flag is set to <spanx style="verb">true</spanx> if the L2P signal contains data (note that this is indicated with a bit value of 0 in the GPS navigation message).
</t>
<t hangText="sf1reserved:">A hexadecimal representation of the 87 reserved bits from subframe 1. This value is padded with a zero bit at the start of the sequence.
</t>
<t hangText="aodo:">The age of data offset, in seconds. A value of <spanx style="verb">INF</spanx> corresponds to the maximum value from the GPS signal (27900) and indicates that the navigation message correction table (NMCT) cannot be used.
</t>
<t hangText="clock:">Parameters that model the satellite clock. These are described below.
</t>
<t hangText="ephemeris:">Satellite orbital parameters, or ephemeris. These are described below.
</t>
</list>
</t>
<t>The<spanx style="verb">iod</spanx> attribute contains the Issue Of Data, Clock (IODC) value from the navigation message. The lower 8 bits of this 10 bit value indicate the Issue of Data, Ephemeris (IODE). This is only included if the information is derived from the navigation message broadcast by the satellite.
</t>
<t>Servers MAY choose not to include navigation model information for satellites that have a URA of <spanx style="verb">INF</spanx> or bad health when providing local assistance data.
</t>
<t>The <spanx style="verb">health</spanx>, <spanx style="verb">l2codes</spanx>, <spanx style="verb">sf1reserved</spanx> and <spanx style="verb">aodo</spanx> elements contain information that might not be relevant to some receivers. These elements are optional, and MUST be omitted if the information provided is not directly taken from the navigation message broadcast by the satellite. This ensures that when present these values can be used by a receiver to compansate for the effect of navigation message modulation on the signal it receives.
</t>
<section anchor="clock" title="Navigation Model Clock Model">
<t>The <spanx style="verb">clock</spanx> element of the satellite navigation model contains information on the clock in the satellite.
<list style="hanging">
<t hangText="tow:">The <xref target="tow">tow</xref> element includes a the reference time value (t[oc]).
</t>
<t hangText="groupdelay:">The group delay differential (T[GD]), used in calculating time offsets in single frequency receivers. This is a value in seconds.
</t>
<t hangText="offset:">A polynomial expression in time, modelling the difference between the satellite time and GPS time. This produces a value in seconds. Three values are required, which correspond to a[f0] a[f1] and a[f2].
</t>
</list>
</t>
</section>
<section anchor="ephemeris" title="Navigation Model Orbital Model">
<t>The <spanx style="verb">ephemeris</spanx> element of the satellite navigation model contains information on the orbit of the satellite.
<list style="hanging">
<t hangText="tow:">The <xref target="tow">tow</xref> element includes the epehemeris reference time (t[oe]).
</t>
<t hangText="semiMajor:">The size of the semi-major axis of the satellite orbit, in meters (A). The navigation message includes the square root of this value in A^(1/2).
</t>
<t hangText="eccentricity:">The eccentricity of the satellite orbit (e), which is dimensionless.
</t>
<t hangText="longitude:">A polynomial espression in time for the longitude of the ascending node. This produces a value in radians. Two values are required, which correspond to OMEGA[g] and OMEGADOT[g].
<vspace blankLines="1"/>
Note that this deviates from the navigation message, which includes the longitude of the ascending node at weekly epoch (OMEGA[0]) and the rate of right ascension (OMEGADOT). The values used are derived as follows:
<figure>
<artwork><![CDATA[
OMEGA[g] = OMEGA[0] - OMEGADOT[e] * t[oe]
OMEGADOT[g] = OMEGADOT - OMEGADOT[e]
]]></artwork>
</figure>
Where the constant OMEGADOT[e] is 7.2921151467e-5 radians/second. This polynomial expression is applied using:
<figure>
<artwork><![CDATA[
OMEGA[k] = OMEGA + OMEGADOT[g] * t[k]
]]></artwork>
</figure>
</t>
<t hangText="inclination:">A polynomial espression in time for the angle of inclination. This produces a value in radians. Two values are required, which correspond to i[0] and idot.
</t>
<t hangText="periapsis:">A polynomial espression in time for the argument of periapsis. This produces a value in radians. One value is required, which corresponds to omega.
</t>
<t hangText="anomaly:">A polynomial espression in time for the mean Keplerian anomaly. This produces a value in radians. Two values are required, which correspond to M[0] and n.
<vspace blankLines="1"/>
The value of n is derived from DELTA-n using the following expression:
<figure>
<artwork><![CDATA[
n = n[0] + DELTA-n
]]></artwork>
</figure>
</t>
<t hangText="harmonicCorrection:">This element contains harmonic correction values for the argument of latitude, the orbit radius and the angle of inclination. Each is expressed as a list with two terms. The first term contains the amplitude of the cosine harmonic correction; the second term contains the amplitude of the sine harmonic correction.
</t>
<t>The following harmonic correction values are provided:
<list style="hanging">
<t hangText="latitude:">The amplitude of harmonic correction for the argument of latitude, corresponding to C[uc] and C[us].
</t>
<t hangText="radius:">The amplitude of harmonic correction for the orbit radius, corresponding to C[rc] and C[rs].
</t>
<t hangText="inclination:">The amplitude of harmonic correction for the angle of inclination, corresponding to C[ic] and C[is].
</t>
</list>
</t>
</list>
</t>
<t>The <spanx style="verb">fit4hr</spanx> indicates whether the model is fit over the standard period of 4 hours. If false, the model is based on a longer time frame.
</t>
</section>
<section title="Example Navigation Model">
<figure>
<preamble>The following example shows an instance of the navigation model in XML form, including a single satellite only:
</preamble>
<artwork><![CDATA[
<navigation xmlns="urn:ietf:params:xml:ns:grip:gps">
<satellite number="12" iod="75">
<ura>4.85</ura>
<health bad="none" signals="all">ok</health>
<l2codes pdata="true">p</l2codes>
<sf1reserved>180f7e3aaa2a7062c8d3a2</sf1reserved>
<aodo>7200</aodo>
<clock>
<tow week="477">436559</tow>
<groupdelay>3.949e-9</groupdelay>
<offset>8.034e-9 -2.209e-10 9.17e-14</offset>
</clock>
<ephemeris fit4hr="true">
<tow week="477">436559</tow>
<semiMajor>6.15861e5</semiMajor>
<eccentricity>0.98519</eccentricity>
<longitude>2.10554 -4.674e-9</longitude>
<inclination>0.02469827347 -1.265e-9</inclination>
<periapsis>0.978932</periapsis>
<anomaly>0.122742 0.366697e-8</anomaly>
<harmonicCorrection>
<latitude>-0.6958e-4 -0.7828e-4</latitude>
<radius>0.7604e-4 0.3125e-4</radius>
<inclination>0.437e-4 0.6893e-4</inclination>
</harmonicCorrection>
</ephemeris>
</satellite>
</navigation>
]]></artwork>
</figure>
</section>
</section>
<section anchor="ionosphere" title="Ionosphere Model">
<t>The <spanx style="verb">ionosphere</spanx> contains a model of the signal transmission delays introduced by the Earths ionosphere. The ionosphere model is always global.
<list style="hanging">
<t hangText="vdelay:">A polynomial expression in latitude for the vertical delay imposed by the ionosphere. This produces a value in seconds. Four values are required, which correspond to alpha[0] through alpha[3].
</t>
<t hangText="period:">A polynomial expression in latitude for the period of the ionosphere model. This produces a value in seconds. Four values are required, which correspond to beta[0] through beta[3].
</t>
</list>
</t>
<figure>
<preamble>The following example shows an instance of the ionosphere model in XML form:
</preamble>
<artwork><![CDATA[
<ionosphere xmlns="urn:ietf:params:xml:ns:grip:gps">
<vdelay>1.23e-7 1.1819e-6 1.167e-5 1.16e-6</vdelay>
<period>7.445e4 3.188e6 1.34e7 1.188e7</period>
</ionosphere>
]]></artwork>
</figure>
</section>
<section anchor="acqAssist" title="Acquisition Assistance">
<t>The <spanx style="verb">acqAssist</spanx> element contains an estimate of the measurement a receiver is expected to make at a specified location. Acquisition assistance is always local.
</t>
<t>The <spanx style="verb">tow</spanx> element includes the reference time used in constructing the acquisition assistance.
</t>
<t>The <spanx style="verb">satellite</spanx> element for acquisition assistance has the following elements:
<list style="hanging">
<t hangText="rtow:">An estimate of satellite time as seen by the receiver at the reference time. This can be used to gain an estimate of the range.
</t>
<t hangText="codephase:">An estimate of the code phase at the receiver at the given time. The <spanx style="verb">uncertainty</spanx> element includes an estimate of the error in this estimate, at 95% confidence.
</t>
<t hangText="doppler:">An estimate of the frequency shift due to the Doppler effect at the receiver at the given time. The <spanx style="verb">uncertainty</spanx> element includes an estimate of the error in this estimate, at 95% confidence.
</t>
<t hangText="direction:">The direction of the satellite from the receiver, using the directional notation from <xref target="I-D.singh-geopriv-pidf-lo-dynamic"/>. The first value is horizontal azimuth from Northing to Easting, the optional second value is elevation above (or below) the plane of the horizontal.
</t>
</list>
</t>
<figure>
<preamble>The following example shows an instance of acquisition assistance in XML form, including a single satellite only:
</preamble>
<artwork><![CDATA[
<acqAssist xmlns="urn:ietf:params:xml:ns:grip:gps">
<tow week="477">436559</tow>
<satellite number="12">
<rtow>436480</rtow>
<codephase uncertainty="56">147</codephase>
<doppler uncertainty="25">1020 0.309</doppler>
<direction>28 38.71</direction>
</satellite>
</acqAssist>
]]></artwork>
</figure>
</section>
<section anchor="dgps" title="Differential GPS Corrections">
<t>The <spanx style="verb">dgps</spanx> element contains an estimate of the pseudorage measurement error. Differential GPS corrections are generated by fixed receivers, which are able to compensate for errors that are not accounted for in other GPS data. Because this information degrades quickly as the distance from the fixed receiver increases, differential GPS corrections are always local.</t>
<t>The <spanx style="verb">tow</spanx> element includes the reference time used in the differential GPS corrections.
</t>
<t>The <spanx style="verb">satellite</spanx> element for acquisition assistance has a single <spanx style="verb">range</spanx> element. This contains a polynomial expression in time for the range correction. At least two coefficients are required. The <spanx style="verb">uncertainty</spanx> element includes an estimate of the remaining error in this estimate, at 95% confidence.
</t>
<figure>
<preamble>The following example shows an instance of differential GPS corrections in XML form, including a single satellite only:
</preamble>
<artwork><![CDATA[
<dgps xmlns="urn:ietf:params:xml:ns:grip:gps">
<tow week="477">436559</tow>
<satellite number="12">
<range uncertainty="0.2">0.623 0.5e-3</range>
</satellite>
</dgps>
]]></artwork>
</figure>
</section>
<section anchor="almanac" title="Almanac">
<t>The <spanx style="verb">almanac</spanx> element contains long term information about satelite clock and orbit. Almanac data is always global.
</t>
<t>In the navigation message, almanac data is a simplified, low accuracy version of the navigation model. In this XML representation, the data MAY include additional information in the provided fields, providing that the model remains usable over a period equivalent to that of the almanac in the navigation message (182 days).
</t>
<t>Almanac is of limited use when a navigation model is available. All satellites transmit this information, so global information is available even where the region covered by the server is not global. Receivers use almanac to provide a rough indication of satellite location after a long period where the receiver does not update other data.
</t>
<t>The <spanx style="verb">satellite</spanx> element contains per-satellite almanac data. The <spanx style="verb">healthy</spanx> attribute identifies whether the satellite is currently fit for use; a value of <spanx style="verb">false</spanx> indicates the presence of a problem. The <spanx style="verb">healthy</spanx> attribute can be omitted if the satellite is healthy.
</t>
<t>The <spanx style="verb">satellite</spanx> element contains the following elements:
<list style="hanging">
<t hangText="tow:">The reference time for the almanac data.
</t>
<t hangText="clockOffset:">A polynomial expression for clock offset, containing information identical to that in the <spanx style="verb">offset</spanx> element from <xref target="clock"/>.
</t>
<t hangText="semiMajor:">The semi-major axis of the orbit. Identical in definition to the same element in <xref target="ephemeris"/>.
</t>
<t hangText="eccentricity:">The eccentricity of the orbit. Identical in definition to the same element in <xref target="ephemeris"/>.
</t>
<t hangText="longitude:">The longitude of the ascending node. Similar to the same element in <xref target="ephemeris"/>, with the exception that only one coefficient is required.
</t>
<t hangText="inclination:">The inclination angle. Similar to the same element in <xref target="ephemeris"/>, with the exception that only one coefficient is required.
</t>
<t hangText="periapsis:">The argument of periapsis. Similar to the same element in <xref target="ephemeris"/>, with the exception that only one coefficient is required.
</t>
<t hangText="anomaly:">The mean Keplerian anomaly. Similar to the same element in <xref target="ephemeris"/>, with the exception that only one coefficient is required.
</t>
</list>
</t>
<figure>
<preamble>The following example shows an instance of the almanac in XML form, including a single satellite only:
</preamble>
<artwork><![CDATA[
<almanac xmlns="urn:ietf:params:xml:ns:grip:gps">
<satellite number="12" healthy="true">
<tow week="477">436559</tow>
<clockOffset>8.034e-9 -2.209e-10</clockOffset>
<semiMajor>6.15861e5</semiMajor>
<eccentricity>0.98519</eccentricity>
<longitude>2.10554</longitude>
<inclination>0.02469827347</inclination>
<periapsis>0.978932</periapsis>
<anomaly>0.122742</anomaly>
</satellite>
</almanac>
]]></artwork>
</figure>
</section>
<section anchor="extNavigation" title="Extended Navigation Model">
<t>The extended navigation model allows for predictions of ephemeris over a longer period of time than might be allowed for with the basic navigation model. For many parameters, a curve fit using a polynomial with a limited number of coefficients only works for a short time. While data might be sufficiently accurate within the curve fit interval, outside this interval the data becomes increasingly inaccurate.
</t>
<t>Extended navigation model data is always global.</t>
<t>The <spanx style="verb">extNavigation</spanx> element includes multiple predictions for satellite clock and ephemeris. These are predictions of future state, based on more elaborate models that the server might maintain. Each prediction has a specific period of time that it is valid for. Thus, a receiver is able to use a new model as the previous model expires.
</t>
<t>The <spanx style="verb">extNavigation</spanx> element contains multiple <spanx style="verb">estimate</spanx> elements, each of which contains the a complete model, plus an indication of when the model is predicted to be valid.
</t>
<t>The <spanx style="verb">validity</spanx> element includes two GPS <xref target="tow">time of week</xref> elements, <spanx style="verb">start</spanx> and <spanx style="verb">end</spanx>, that respectively indicate when the estimate becomes valid and when it becomes invalid.
</t>
<t>Each <spanx style="verb">satellite</spanx> element then contains a <xref target="clock">clock model</xref> and an <xref target="ephemeris">orbit model</xref>.
</t>
<t>Scheduled events might occur that cause predictions about certain satellites to become invalid. The server MUST omit predictions for affected satellite from the affected period onwards.
</t>
<figure>
<preamble>The following example shows an instance of extended navigation model data in XML form, including a single estimate and a single satellite only:
</preamble>
<artwork><![CDATA[
<extNavigation xmlns="urn:ietf:params:xml:ns:grip:gps">
<estimate>
<validity>
<start week="477">872465</start>
<end week="477">1066134</end>
</validity>
<satellite number="12">
<clock>
<tow week="477">872465</tow>
<groupdelay>3.949e-9</groupdelay>
<offset>8.034e-9 -2.209e-10 9.17e-14</offset>
</clock>
<ephemeris>
<tow week="477">872465</tow>
<semiMajor>6.15861e5</semiMajor>
<eccentricity>0.98519</eccentricity>
<longitude>2.10554 -4.674e-9</longitude>
<inclination>0.02469827347 -1.265e-9</inclination>
<periapsis>0.978932</periapsis>
<anomaly>0.122742 0.366697e-8</anomaly>
<harmonicCorrection>
<latitude>-0.6958e-4 -0.7828e-4</latitude>
<radius>0.7604e-4 0.3125e-4</radius>
<inclination>0.437e-4 0.6893e-4</inclination>
</harmonicCorrection>
</ephemeris>
</satellite>
</estimate>
</extNavigation>
]]></artwork>
</figure>
</section>
</section>
<section anchor="schema" title="XML Schema">
<figure>
<artwork><![CDATA[
<xs:schema
targetNamespace="urn:ietf:params:xml:ns:grip:gps"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gps="urn:ietf:params:xml:ns:grip:gps"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:annotation>
<xs:appinfo
source="urn:ietf:params:xml:schema:grip:gps">
Global Positioning System (GPS) Schema for GRIP
</xs:appinfo>
<xs:documentation source="http://www.ietf.org/rfc/rfcXXXX.txt">
<!-- [[NOTE TO RFC-EDITOR: Please replace above URL with URL of
published RFC and remove this note.]] -->
This document defines assistance data for GPS.
</xs:documentation>
</xs:annotation>
<!-- Common types -->
<xs:element name="tow" type="gps:towType"/>
<xs:complexType name="towType">
<xs:simpleContent>
<xs:extension base="gps:towBaseType">
<xs:attribute name="week" type="gps:weekType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="towBaseType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:maxExclusive value="604800000"/> <!-- 7*24*60*60*1000 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="weekType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:maxExclusive value="1024"/> <!-- 10 bits -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dayType">
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="7"/> <!-- starts at 1 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nonNegativeDouble">
<xs:restriction base="xs:double">
<xs:minInclusive value="0.0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="polyType">
<xs:restriction base="gps:polyBaseType">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="polyBaseType">
<xs:list itemType="xs:double"/>
</xs:simpleType>
<xs:complexType name="polyUncType">
<xs:simpleContent>
<xs:extension base="gps:polyType">
<xs:attribute name="uncertainty"
type="gps:nonNegativeDouble"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="perSatelliteBaseType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="satellite" type="gps:satelliteBaseType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="perSatelliteTowType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="satellite" type="gps:satelliteBaseType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="satelliteBaseType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:any namespace="##any" processContents="strict"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="number" type="xs:nonNegativeInteger"
use="required"/>
<xs:anyAttribute namespace="##any" processContents="strict"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- UTC -->
<xs:element name="utc" type="gps:utcType"/>
<xs:complexType name="utcType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="offset" type="gps:polyType"/>
<xs:element name="leapsec" type="gps:leapsecType"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="leapsecType">
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="week" type="gps:weekType"/>
<xs:attribute name="day" type="gps:weekType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Navigation Model -->
<xs:element name="navigation" type="gps:navigationType"/>
<xs:complexType name="navigationType">
<xs:complexContent>
<xs:restriction base="gps:perSatelliteBaseType">
<xs:sequence>
<xs:element name="satellite"
type="gps:navigationSatelliteType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="navigationSatelliteType">
<xs:complexContent>
<xs:restriction base="gps:satelliteBaseType">
<xs:sequence>
<xs:element name="ura" type="gps:nonNegativeDouble"/>
<xs:element name="health" type="gps:healthType"
minOccurs="0"/>
<xs:element name="l2codes" type="gps:l2codesType"
minOccurs="0"/>
<xs:element name="sf1reserved" type="gps:sf1reservedType"
minOccurs="0"/>
<xs:element name="aodo" type="gps:nonNegativeDouble"
minOccurs="0"/>
<xs:element ref="gps:clock"/>
<xs:element ref="gps:ephemeris"/>
</xs:sequence>
<xs:attribute name="iod" type="gps:iodType"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="healthType">
<xs:simpleContent>
<xs:extension base="gps:healthBaseType">
<xs:attribute name="bad" type="gps:healthBadType"
default="none"/>
<xs:attribute name="signals" type="gps:healthSignalsType"
default="all"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="healthBaseType">
<xs:restriction base="xs:token">
<xs:enumeration value="ok"/>
<xs:enumeration value="weak"/>
<xs:enumeration value="dead"/>
<xs:enumeration value="nodata"/>
<xs:enumeration value="out"/>
<xs:enumeration value="soonout"/>
<xs:enumeration value="spare"/>
<xs:enumeration value="combination"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="healthBadType">
<xs:restriction base="xs:token">
<xs:enumeration value="none"/>
<xs:enumeration value="some"/>
<xs:enumeration value="parity"/>
<xs:enumeration value="tlm-how"/>
<xs:enumeration value="all"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="healthSignalsType">
<xs:restriction base="xs:token">
<xs:enumeration value="L1"/>
<xs:enumeration value="L1P"/>
<xs:enumeration value="L1C"/>
<xs:enumeration value="L2"/>
<xs:enumeration value="L2P"/>
<xs:enumeration value="L2C"/>
<xs:enumeration value="all"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="l2codesType">
<xs:simpleContent>
<xs:extension base="gps:l2codesBaseType">
<xs:attribute name="pdata" type="xs:boolean" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="l2codesBaseType">
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="p"/>
<xs:enumeration value="c/a"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:simpleType name="sf1reservedType">
<xs:restriction base="xs:hexBinary">
<xs:pattern value="[0-7][\da-fA-F]{21}"/> <!-- 87 bits -->
</xs:restriction>
</xs:simpleType>
<xs:element name="clock" type="gps:clockType"/>
<xs:complexType name="clockType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="groupdelay" type="xs:double"/>
<xs:element name="offset" type="gps:polyType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ephemeris" type="gps:ephemerisType"/>
<xs:complexType name="ephemerisType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:group ref="gps:keplerianOrbitBase"/>
<xs:element name="harmonicCorrection"
type="gps:harmonicCorrectionType"/>
</xs:sequence>
<xs:attribute name="fit4hr" type="xs:boolean"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:group name="keplerianOrbitBase">
<xs:sequence>
<xs:element name="semiMajor" type="gps:nonNegativeDouble"/>
<xs:element name="eccentricity" type="gps:nonNegativeDouble"/>
<xs:element name="longitude" type="gps:polyType"/>
<xs:element name="inclination" type="gps:polyType"/>
<xs:element name="periapsis" type="gps:polyType"/>
<xs:element name="anomaly" type="gps:polyType"/>
</xs:sequence>
</xs:group>
<xs:complexType name="harmonicCorrectionType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="latitude" type="gps:harmonicType"/>
<xs:element name="radius" type="gps:harmonicType"/>
<xs:element name="inclination" type="gps:harmonicType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="harmonicType">
<xs:restriction base="gps:polyType">
<xs:length value="2"/> <!-- cosine sine -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="iodType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:maxExclusive value="1024"/>
</xs:restriction>
</xs:simpleType>
<!-- Almanac -->
<xs:element name="almanac" type="gps:almanacType"/>
<xs:complexType name="almanacType">
<xs:complexContent>
<xs:restriction base="gps:perSatelliteBaseType">
<xs:sequence>
<xs:element name="satellite"
type="gps:almanacSatelliteType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="almanacSatelliteType">
<xs:complexContent>
<xs:restriction base="gps:satelliteBaseType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="clockOffset" type="gps:polyType"/>
<xs:group ref="gps:keplerianOrbitBase"/>
</xs:sequence>
<xs:attribute name="healthy" type="xs:boolean"
default="true"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- Extended Navigation -->
<xs:element name="extNavigation" type="gps:extNavigationType"/>
<xs:complexType name="extNavigationType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="estimate" type="gps:estimateType"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="estimateType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="validity" type="gps:validityType"/>
<xs:element name="satellite"
type="gps:extNavigationSatelliteType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="validityType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="start" type="gps:towType"/>
<xs:element name="end" type="gps:towType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="extNavigationSatelliteType">
<xs:complexContent>
<xs:restriction base="gps:satelliteBaseType">
<xs:sequence>
<xs:element ref="gps:clock"/>
<xs:element ref="gps:ephemeris"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- Acquisition Assistance -->
<xs:element name="acqAssist" type="gps:acqAssistType"/>
<xs:complexType name="acqAssistType">
<xs:complexContent>
<xs:restriction base="gps:perSatelliteTowType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="satellite"
type="gps:acqAssistSatelliteType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="acqAssistSatelliteType">
<xs:complexContent>
<xs:restriction base="gps:satelliteBaseType">
<xs:sequence>
<xs:element name="rtow" type="gps:towType"/>
<xs:element name="codephase" type="gps:polyUncType"/>
<xs:element name="doppler" type="gps:polyUncType"/>
<xs:element name="direction" type="gps:directionType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="directionType">
<xs:restriction base="gps:polyType">
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
<!-- DGPS Corrections -->
<xs:element name="dgps" type="gps:dgpsType"/>
<xs:complexType name="dgpsType">
<xs:complexContent>
<xs:restriction base="gps:perSatelliteTowType">
<xs:sequence>
<xs:element ref="gps:tow"/>
<xs:element name="satellite" type="gps:dgpsSatelliteType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="dgpsSatelliteType">
<xs:complexContent>
<xs:restriction base="gps:satelliteBaseType">
<xs:sequence>
<xs:element name="range" type="gps:polyUncType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- Ionosphere Model -->
<xs:element name="ionosphere" type="gps:ionosphereType"/>
<xs:complexType name="ionosphereType">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:element name="vdelay" type="gps:polyType"/>
<xs:element name="period" type="gps:polyType"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
]]></artwork>
</figure>
</section>
<section anchor="security" title="Security Considerations">
<t>This document is subject to the security considerations described in <xref target="I-D.thomson-geopriv-grip"/>.
</t>
</section>
<section anchor="iana" title="IANA Considerations">
<t>The XML namespace used for GPS assistance data is registered in <xref target="iana-ns"/>, the corresponding schema definition is registered in <xref target="iana-schema"/>.
</t>
<section anchor="iana-ns" title="URN Sub-Namespace Registration for 'urn:ietf:params:xml:ns:grip:gps'">
<t>This section registers a new XML namespace, <spanx style="verb">urn:ietf:params:xml:ns:grip:gps</spanx>, per the guidelines in <xref target="RFC3688"/>.
<list style="empty">
<t>URI: urn:ietf:params:xml:ns:grip:gps</t>
<t>Registrant Contact: IETF, GEOPRIV working group, (geopriv@ietf.org), Martin Thomson (martin.thomson@andrew.com).</t>
<t>XML: <figure>
<artwork><![CDATA[
BEGIN
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GPS Assistance Data</title>
</head>
<body>
<h1>Namespace for GPS Assistance Data Definitions</h1>
<h2>urn:ietf:params:xml:ns:grip:gps</h2>
[NOTE TO IANA/RFC-EDITOR: Please replace XXXX
with the RFC number for this specification.]
<p>See RFCXXXX</p>
</body>
</html>
END
]]></artwork>
</figure></t>
</list></t>
</section>
<section anchor="iana-schema" title="XML Schema Registration">
<t>This section registers an XML schema as per the guidelines in <xref target="RFC3688"></xref>.
<list style="hanging">
<t hangText="URI:">urn:ietf:params:xml:schema:grip:gps</t>
<t hangText="Registrant Contact:">IETF, GEOPRIV working group, (geopriv@ietf.org), Martin Thomson (martin.thomson@andrew.com).
</t>
<t hangText="Schema:">
The XML for this schema can be found as the entirety of <xref target="schema"></xref> of this document.
</t>
</list></t>
</section>
</section>
<section title="Acknowledgements">
<t>This document is part of the definition of GRIP. The original GRIP protocol was developed by the University of New South Wales through the OSGRS project <eref target="http://osgrs.sourceforge.net/"/>. The GPS expertise of Neil Harper was invaluable in assembling this document.
</t>
</section>
<!--
<appendix title="Change Log">
<t>[[The RFC Editor is requested to remove this section at publication.]]</t>
<t>Changes since -0-1:
<list style="symbols">
<t>Document created.</t>
</list>
</t>
</appendix>
-->
</middle>
<back>
<references title="Normative References">
&RFC2119;
&RFC3688;
<reference anchor="GPS-ICD">
<front>
<title abbrev="GPS-ICD">Navstar GPS Space Segment / Navigation User Interfaces</title>
<author>
<organization/>
</author>
<date month="April" day="12" year="2000"/>
</front>
<seriesInfo name="" value="ICD-GPS-200c"/>
<format type="PDF" target="http://www.navcen.uscg.gov/pubs/gps/icd200/"/>
</reference>
&I-D.singh-geopriv-pidf-lo-dynamic;
</references>
<references title="Informative References">
<reference anchor="I-D.thomson-geopriv-grip">
<front>
<title>Global Position System (GPS) Assistance Data for GRIP</title>
<author initials="M" surname="Thomson" fullname="Martin Thomson">
<organization>Andrew</organization>
</author>
<date month="Jul" year="2009"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-thomson-geopriv-grip-gps-00"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-thomson-geopriv-grip-gps-00.txt"/>
</reference>
&W3C.REC-xmlschema-1-20010502;
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 04:27:44 |