If you wish to contribute or participate in the discussions about articles you are invited to contact the Editor

Carrier-smoothing of code pseudoranges: Difference between revisions

From Navipedia
Jump to navigation Jump to search
(Created page with "{{Article Infobox2 |Category=Fundamentals |Title={{PAGENAME}} |Authors= J. Sanz Subirana, JM. Juan Zornoza and M. Hernandez-Pajares, University of Catalunia, Spain. |Level=Medium...")
 
No edit summary
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Article Infobox2
{{Article Infobox2
|Category=Fundamentals
|Category=Fundamentals
|Authors=J. Sanz Subirana, J.M. Juan Zornoza and M. Hernández-Pajares, Technical University of Catalonia, Spain.
|Level=Advanced
|YearOfPublication=2011
|Title={{PAGENAME}}
|Title={{PAGENAME}}
|Authors= J. Sanz Subirana, JM. Juan Zornoza and M. Hernandez-Pajares, University of Catalunia, Spain.
|Level=Medium
|YearOfPublication=2011
|Logo=gAGE
}}
}}
The noisy (but unambiguous) code pseudorange measurements can be smoothed with the precise (but ambiguous) carrier phase measurements. A simple algorithm (the Hatch filter) is given as follows:
The noisy (but unambiguous) code pseudorange measurements can be smoothed with the precise (but ambiguous) carrier phase measurements. A simple algorithm (the Hatch filter) is given as follows:


Line 13: Line 11:


::<math>
::<math>
\begin{array}{l}
\widehat{R}(s;k)=  \frac{1}{n} R(s;k)+ \frac{n-1}{n} \left [\widehat{R}(s;k-1)+ \left( \Phi(s;k)-\Phi(s;k-1) \right) \right ]
\widehat{R}(s;k)=  \frac{1}{n} R(s;k)+ \frac{n-1}{n} \left [\widehat{R}(s;k-1)+ \left( \Phi(s;k)-\Phi(s;k-1) \right) \right ]\\[0.3cm]
\qquad \mbox{(1)}
\mbox{The algorithm is initialised with:}\\
</math>
 
: The algorithm is initialised with:
::<math>
\widehat{R}(s;1)= R(s;1)
\widehat{R}(s;1)= R(s;1)
\end{array} \qquad \mbox{(1)}
</math>
</math>




where, <math>n=k</math> when <math>k<N</math> and <math>n=N</math> when <math>k \geq N</math>.\\[0.2cm]
where, <math>n=k</math> when <math>k<N</math> and <math>n=N</math> when <math>k \geq N.</math>
 
This algorithm must be initialised every time that a carrier phase cycle-slip occurs.
This algorithm must be initialised every time that a carrier phase cycle-slip occurs.


The previous algorithm can be interpreted as a real-time alignment of the carrier phase to the code measurement. That is:
The previous algorithm can be interpreted as a real-time alignment of the carrier phase to the code measurement. That is:


::<math>
::<math>
\begin{array}{ll}
\begin{array}{ll}
\widehat{R}_k&=\Phi_k +  \left < R - \Phi \right >_k=\\[0.3cm]
\widehat{R}(k)&= \frac{1}{n} R(k)+ \frac{n-1}{n} \left [ \widehat{R}(k-1)+ \left( \Phi(k) - \Phi(k-1) \right) \right ]=\\[0.3cm]
& =\Phi_k + \frac{n-1}{n} \left< R - \Phi \right >_{k-1} + \frac{1}{n} \left ( R_k - \Phi_k \right )=\\[0.3cm]
&= \Phi(k) +\frac{n-1}{n} \left (\widehat{R}(k-1)-\Phi(k-1)\right )+  \frac{1}{n} \left( R(k)-\Phi(k) \right)=\\[0.3cm]
&= \Phi_k +\frac{n-1}{n} \left (\widehat{R}_{k-1}-\Phi_{k-1} \right )+  \frac{1}{n} \left( R_k-\Phi_k \right)=\\[0.3cm]
& =\Phi(k) + \frac{n-1}{n} <R - \Phi>_{(k-1)} + \frac{1}{n} \left ( R(k) - \Phi(k) \right )=\\[0.3cm]
&= \frac{1}{n} R_k+ \frac{n-1}{n} \left [\widehat{R}_{k-1}+ \left( \Phi_k-\Phi_{k-1} \right) \right ]\\
&= \Phi(k) +  < R - \Phi >_{(k)}
\end{array} \qquad \mbox{(2)}
\end{array} \qquad \mbox{(2)}
</math>
</math>


 
where the mean bias <ref group="footnotes">The mean value of a set of measurements <math>\{x_1,\cdots,x_n\}</math> can be computed recursively as:  <math><x>_k= \frac{1}{k} x_k+ \frac{k-1}{k}<x>_{k-1}</math>. The equation (2) is a variant of previous expression, that provides an estimate of a moving average over a <math>N</math> samples window. Notice that, when <math>k \geq N</math>, the weighting factors <math>\frac{1}{N}</math> and <math>\frac{N-1}{N}</math> are used instead of <math>\frac{1}{k}</math> and <math>\frac{k-1}{k}</math>.</ref> <math> < R - \Phi > </math> between the code and carrier phase is estimated in real time and used to align the carrier phase with the code.
where the mean bias <ref group="footnotes">The mean value of a set of measurements \{<math>x_1,\cdots,x_n\}</math> can be computed recursively as:  <math><x>_k= \frac{1}{k} x_k+ \frac{k-1}{k}<x>_{k-1}</math>. The equation (2) is a variant of previous expression, that provides an estimate of a moving average over a <math>N</math> samples window. Notice that, when <math>k \geq N</math>, the weighting factors <math>\frac{1}{N}</math> and <math>\frac{N-1}{N}</math> are used instead of <math>\frac{1}{k}</math> and <math>\frac{k-1}{k}</math>.</ref> <math> \left < R - \Phi \right ></math> between the code and carrier phase is estimated in real time and used to align the carrier phase with the code.


For more information, please go to the article:
For more information, please go to the article:
* [[Single Frequency Measurements Smoothing]]
* [[Code-Carrier Divergence Effect]]




Line 47: Line 48:


[[Category:Fundamentals]]
[[Category:Fundamentals]]
[[Category:GNSS Measurements and Data Preprocessing]]

Latest revision as of 11:25, 23 February 2012


FundamentalsFundamentals
Title Carrier-smoothing of code pseudoranges
Author(s) J. Sanz Subirana, J.M. Juan Zornoza and M. Hernández-Pajares, Technical University of Catalonia, Spain.
Level Advanced
Year of Publication 2011

The noisy (but unambiguous) code pseudorange measurements can be smoothed with the precise (but ambiguous) carrier phase measurements. A simple algorithm (the Hatch filter) is given as follows:

Let's [math]\displaystyle{ R(s;n) }[/math] and [math]\displaystyle{ \Phi(s;n) }[/math] the code and carrier measurement of a given satellite [math]\displaystyle{ s }[/math] at the time [math]\displaystyle{ n }[/math]. Thence, the smoothed code [math]\displaystyle{ \hat{R}(s;n) }[/math] can be computed as:

[math]\displaystyle{ \widehat{R}(s;k)= \frac{1}{n} R(s;k)+ \frac{n-1}{n} \left [\widehat{R}(s;k-1)+ \left( \Phi(s;k)-\Phi(s;k-1) \right) \right ] \qquad \mbox{(1)} }[/math]
The algorithm is initialised with:
[math]\displaystyle{ \widehat{R}(s;1)= R(s;1) }[/math]


where, [math]\displaystyle{ n=k }[/math] when [math]\displaystyle{ k\lt N }[/math] and [math]\displaystyle{ n=N }[/math] when [math]\displaystyle{ k \geq N. }[/math]

This algorithm must be initialised every time that a carrier phase cycle-slip occurs.

The previous algorithm can be interpreted as a real-time alignment of the carrier phase to the code measurement. That is:


[math]\displaystyle{ \begin{array}{ll} \widehat{R}(k)&= \frac{1}{n} R(k)+ \frac{n-1}{n} \left [ \widehat{R}(k-1)+ \left( \Phi(k) - \Phi(k-1) \right) \right ]=\\[0.3cm] &= \Phi(k) +\frac{n-1}{n} \left (\widehat{R}(k-1)-\Phi(k-1)\right )+ \frac{1}{n} \left( R(k)-\Phi(k) \right)=\\[0.3cm] & =\Phi(k) + \frac{n-1}{n} \lt R - \Phi\gt _{(k-1)} + \frac{1}{n} \left ( R(k) - \Phi(k) \right )=\\[0.3cm] &= \Phi(k) + \lt R - \Phi \gt _{(k)} \end{array} \qquad \mbox{(2)} }[/math]

where the mean bias [footnotes 1] [math]\displaystyle{ \lt R - \Phi \gt }[/math] between the code and carrier phase is estimated in real time and used to align the carrier phase with the code.

For more information, please go to the article:


Notes

  1. ^ The mean value of a set of measurements [math]\displaystyle{ \{x_1,\cdots,x_n\} }[/math] can be computed recursively as: [math]\displaystyle{ \lt x\gt _k= \frac{1}{k} x_k+ \frac{k-1}{k}\lt x\gt _{k-1} }[/math]. The equation (2) is a variant of previous expression, that provides an estimate of a moving average over a [math]\displaystyle{ N }[/math] samples window. Notice that, when [math]\displaystyle{ k \geq N }[/math], the weighting factors [math]\displaystyle{ \frac{1}{N} }[/math] and [math]\displaystyle{ \frac{N-1}{N} }[/math] are used instead of [math]\displaystyle{ \frac{1}{k} }[/math] and [math]\displaystyle{ \frac{k-1}{k} }[/math].