<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Architecture, Design and Implementation of Carrier Phase Vector Tracking in GNSS RTK Receiver</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nikolay Mikhaylov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Valery Chistyakov</string-name>
          <email>vchistyakov@softnav.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>David Oertel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Bosch GmbH</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hildesheim</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Germany</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>BORA Ltd</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>St. Petersburg</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Russia</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>GNSS, PLL</institution>
          ,
          <addr-line>Vector PLL, Differential PLL, Extended Kalman Filter, Multipath Mitigation</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <abstract>
        <p>Navigation in GNSS denied environment is a great challenge for GNSS receivers because of such effects as signal blockage, multipath and non-line of sign reception. A promising approach for reducing these effects is vector tracking, which is well-known for its robustness against poor signal-to-noise levels, fast changing environments and temporary signal blockage. In this paper we consider architecture, design and implementation of carrier phase vector tracking in GNSS receiver able to receive GNSS measurements from a base station, i.e. a real-time kinematic (RTK) receiver. We discuss a concept of vector tracking in a differential phase lock loop (PLL), requirements to be satisfied for Vector PLL to start and how to fulfil these requirements in a high precision navigation engine. We provide architecture of software that implements a high precision navigation engine including Vector PLL. Kalman Filter-based algorithm of Vector PLL is described in detail. We also analyze the performance of carrier phase vector tracking. In the time of submission of the paper the testing was not yet completed. Nonetheless the first results obtained in a controlled environment provided promising results and indicate that the implemented vector PLL provides better results in terms of carrier phase tracking sensitivity and accuracy. More results are anticipated.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>improve ground tracks is vector tracking loop (VTL), [1], [2], [3].</p>
      <sec id="sec-1-1">
        <title>The approach assumes the</title>
        <p>replacement of lock loops used for code/carrier tracking in each channel with an extended Kalman Filter
(EKF) that both tracks the GNSS signals and calculates the user position [4]. This approach is based
upon the fact that all received signals are spatially correlated . The receiver motion projects onto
received signals according to their corresponding locations. This property is used in VTL to enhance
robustness [5].</p>
        <p>The main drawback of the receivers using Vector DLL (VDLL) is that navigation solution is based
on the code measurements only and, therefore, it has meters-level accuracy [5]. In order to increase the
accuracy the phase measurements should be used. For pure Vector PLL (VPLL) to be viable, the errors
that affect the carrier phase must be mitigated. For this reason VTL techniques for single frequency
receivers use VDLL with scalar FLL/PLL and obtain navigation solution based on code measurements
only. One of the ways to use carrier phase measurements in the navigation solution in that case is
differential mode [1]. In this mode the base station measurements can be used in VPLL in the same way
as they are used in scalar PLL of carrier phase differential GNSS receivers. Use of phase measurements
of the base station allows obtaining a position solution directly in the VTL of a rover receiver with the
same accuracy as in integer-resolved carrier phase differential GNSS receivers.</p>
        <p>2020 Copyright for this paper by its authors.</p>
        <p>In this work we describe architecture, design and implementation of the differential vector PLL
(DVPLL). The concept of DVPLL is presented in Section II. In section III a high-level software
architecture is described. Section IV provides details of DVPLL navigation filter. Results of DVPLL
testing are given in Section V. Finally, the conclusions are given in the last section. Appendices A and
B contain mathematical details of common knowledge: model of GNSS measurements, relative
positioning algorithm and system model used</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. DVPLL Concept</title>
      <p>As stated above use of phase measurements of the base station allows obtaining a position solution
directly in the VTL of a rover receiver with the same accuracy as in integer-resolved carrier phase
differential GNSS receivers. The block diagram of such differential VPLL (DVPLL) is shown in Figure
1.</p>
      <p>IF
signal</p>
      <p>Carrier
correlator
sin cos
Carrier
generator
Carrier NCO</p>
      <p>Code
correlator
− ∆ 0 +∆</p>
      <p>Code
generator</p>
      <p>PLL</p>
      <p>ELP discBraimnkinoaftors DDDcfφ</p>
      <p>Code NCO</p>
      <p>Channel 1
Channel 2
Channel N</p>
      <p>VDLL
Navigation</p>
      <p>Filter
Code NCO
control</p>
      <p>DVPLL
Navigation</p>
      <p>Filter
RTK Lib</p>
      <p>PVT</p>
      <p>High
precision</p>
      <p>PVT</p>
      <p>Base
station
data
User’s data</p>
      <p>Each channel in Figure 1 does not differ from a canonic scheme and includes code and carrier
generators with associated NCOs, code and carrier correlators and discriminators. As in canonic scheme
E, P and L in Figure 1 denote early, prompt and late correlator channel correspondingly. Dc, Df and Dϕ
are outputs of the discriminators and denote differences between input and locally generated signals
code, frequency and phase correspondingly.</p>
      <p>DVPLL requires initialization. For this initialization a high precision relative position vector is
needed. In Figure 1 dashed lines connect the blocks that are required to calculate the initial receiver
position and form an initial high precision relative position vector. The calculation of the vector is done
according to standard differential GNSS scheme. First, the receiver position is calculated with code
measurements from VDLL (Doppler measurements can be used in the VDLL to improve the velocity
and clock drift state estimates, like carrier smoothing or Doppler aiding in traditional scalar receivers).
Then carrier phase measurements from the scalar PLL and carrier phase measurements from the base
station are used to resolve phase ambiguities and to calculate the high precision relative position vector.
During the initialization the scalar PLLs control the carrier NCOs and provide the carrier phase
measurements in each channel. After the initialization, once the high precision relative position vector
is calculated, DVPLL starts and takes over the control of NCO and production of carrier phase
measurements. Initialization of DVPLL must be started every time when cycle slip or carrier phase
tracking fault is detected. In this scheme VDLL drives the code NCO, and DVPLL drives the carrier
NCO. Such approach prevents the less accurate code measurements from degrading the accuracy of the
carrier phase based navigation solution.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Software Architecture</title>
      <p>Development and testing of DVPLL is performed on the basis of SX3 receiver by IFEN. This is the
software receiver which provides convenient API enabling the user to add, replace or expand the
capabilities of the SX3 receiver (including integration of another navigation solution into SX3 software)
via interface functions provided by SX3.</p>
      <p>The core part is the High Precision Navigation Engine (HPNE), which implements VTL. HPNE SW
architecture is defined by SX3 API provisions. The SX3 API concept is based on the usage of dynamic
link library (DLL) files. Therefore part of HPNE modules is implemented as DLL. Such a library will
be loaded seamlessly into SX3 at runtime and contain predefined function names to be called.
Implementation of HPNE requires of using at least two SX3 API libraries: Baseband API and
Navigation API. HPNE SW components, as well as main modules and main data flows are presented
in Figure 2. Main call flows are noted by dashed lines, main C-functions are marked with ordinary “()”
notation.</p>
      <p>The software consists of two components: Interface and HPNE. The Interface component uses IFEN
APIs to obtain Code and Doppler measurements from IFEN software receiver. The Code and Doppler
measurements are used in single point positioning modules of HPNE denoted SPP in Figure 2 to
calculate standard precision PVT.</p>
      <p>The Interface Component also receives signal accumulations in sinphase and quadrature channels
denoted as I and Q in Figure 2. It calculates phase measurements and provides them to HPNE. The
Interface Component calculates carrier NCO too. It should be noted that on the first step of this project
code NCO is controlled by IFEN Software.</p>
      <p>RTCM handler, also a part of the Interface Component does a routine processing of RTCM data.</p>
      <p>HPNE includes library modules, SPP modules to provide standard precision PVT and directive
cosines to relative positioning modules. The relative positioning modules implement float and integer
ambiguity resolution and compute accurate PVT based on the single differences between phase
measurements of the rover receiver and those of the base station. The accurate PVT is used by the</p>
      <sec id="sec-3-1">
        <title>Interface Component to control NCOs in each channel.</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. DVPLL Algorithm</title>
      <p>DVPLL navigation filter estimates relative PVT, which is used to predict carrier phase for each
tracked signal. Initialization of the relative PVT is performed on the basis of fixed (relative position and
clock bias) and float (relative velocity and clock drift) solutions.</p>
      <p>DVPLL navigation filter is implemented as an error state Kalman filter (ErKF), which estimates
the error in the states, rather than the states themselves. In our case the filter estimates the errors in the
relative coordinates, relative clock bias and corresponding derivatives. Error state vector is modelled as
zero mean Gaussian process. This has the effect of resetting the predicted error at each time instant, i.e.
the instantaneous error is more important than error history.</p>
      <p>In Appendix A one can find the algorithm for relative positioning. It is shown there that the single
differences of phase measurements are given by
 
where
=

1
(−  ×3 
+    
 ×1)+</p>
      <p>+   , ,
–
–
–
–
–
–
=
–
–
difference of carrier measurements between user u and base station b, m
carrier wavelength, m
 
= ( 
 


  

)
matrix of directive cosines (M is the number of measurements)
components and clock bias between user u and base station b, m
velocity of light, m/s
user clock bias relatively base station receiver, s</p>
      <p>State vector consisting of differences of position
vector of integer ambiguities
noise of the difference of carrier phase measurements between user u and base station

 
 
 

 
  ,
  ×3</p>
      <p>c
 ×1
∆ 
∆ 
 ′ ,</p>
      <p>where
∆</p>
      <p>where
∆ 
(1)
(2)
(3)
(4)
(5)
∆ 
=  
−  ̂</p>
      <p>=   −   − ( ̂  −  ̂  )=   −  ̂  − (  −  ̂  ),
where  ̂  and  ̂  denote predictions of the carrier phase in base station and in rover receiver.</p>
      <p>Taking into account that carrier phase error for base station is significantly less than for rover
receiver, the equation (2) can be rewritten as:
 ∆  = −  ×3∆ 
+  ∆</p>
      <p>×1 +  ′ , ,
– carrier phase error of the rover receiver (PLL discriminator).</p>
      <p>Equation for the error in relative velocity can be obtained by differentiating (4):
 ∆  = −  ×3∆ ̇ 
+  ∆ ̇</p>
      <p>×1 +  ′ , ,
– carrier frequency error of the rover receiver (FLL discriminator).</p>
      <sec id="sec-4-1">
        <title>Let’s define state vector and dynamic model as follows:</title>
        <p>The equation (2) below can be obtained by differencing (1), connects errors of the carrier phase
single differences with error in relative position:
∆ 
where
=

1
(−  ×3∆ 
+  ∆</p>
        <p>×1)+  ′ , ,
–
–
–
relative position error,
relative clock bias error,
noise of the carrier phase single differences.
∆  = (∆ 
∆ 
∆</p>
        <p>∆ 
∆  , +1 =   , +1∆  , ,
where   , +1 = ( 4×4 ∆   4×4), ∆  =   +1 −   ,
∆  , denotes state vector in time   , and ∆  , +1 denotes state prediction from   to   +1.
different channels generally do not match. Because the range between a satellite and a user varies from
satellite to satellite, different channels receive the same navigation symbol at different time.</p>
        <p>Let’s define the measurements vector and measurement matrix as follows:
  = (
−</p>
        <p>0
current channel.</p>
        <p>∆  = 21
  =  (∆  ∆  ) ,</p>
        <p>arctg (  ),
∆  = 2 1∆ arctg (    − −    − ),
    − +    −


−</p>
        <p>0
state vector at beginning of kth integration interval:</p>
        <p>=   (  , −  ′ − ,   − , − ), where
prediction   , at time   .
have measurement in the following form:
 ∗ =   (  , −  ′ −1,   −1, −1).</p>
        <p>− 
0
1
0 − 
0</p>
        <p>0
−</p>
        <p>0
− 
0
1
), where
∆ – I&amp;Q accumulation time (20 ms);   ,   ,   are the directive cosines for the satellite on the
Note that   corresponds to the difference between received signal and predicted one based on the
 ′ − , =  +   − , is the matrix of state transition from state   − , − at time   − to state
However, for implementation of the DVPLL navigation filter in a standard form it is required to
Note that equation (11) was obtained for the Channel 1. Let’s determine adjustment vector   for ith
(8)
(9)
(10)
(11)
(12)
(13)</p>
      </sec>
      <sec id="sec-4-2">
        <title>These measurements are related as follows:</title>
        <p>′ −1,   −1, −1 =
 ′ −1, (  −2, −1 + ∆  −1, −1)=  ′ −2,   −2, −2 +  ′ −1, ∆  −1, −1 = ⋯
 ′ −N,   − , − +  ′ −N+1, ∆  − +1, − +1 + ⋯ +  ′ −1, ∆  −1, −1.</p>
      </sec>
      <sec id="sec-4-3">
        <title>In (10) we used the equation for updated state estimate. Therefore,</title>
        <p>∗ =   −   ∑ = − +1  ′ , ∆  , .
 −1
channel as follows:
 + −2
 = + −  ′ , ∆  , .
  = ∑</p>
      </sec>
      <sec id="sec-4-4">
        <title>Then,</title>
        <p>∗+ −1 =   + −1 −   + −1  .</p>
        <p>Computation of the adjustment vectors is performed iteratively each time when new measurement
is available. After adjustment is applied the corresponding vector is zeroed.</p>
        <p>Let’s define estimated relative vector as follows:
  = (</p>
      </sec>
      <sec id="sec-4-5">
        <title>The algorithm of navigation filter consists of the following steps:</title>
        <sec id="sec-4-5-1">
          <title>Step 1 (initialization)</title>
          <p>0 =  
; ∆ 0 = 0,  0 =  
;   =  ,  = 1…</p>
        </sec>
        <sec id="sec-4-5-2">
          <title>Step 2 (prediction)</title>
          <p>−1, =   −1, −1 +   −1,   −1, −1,
  =  ′ −1,   ,  = 1…  .</p>
          <p>Step 3 (measurement update)
∆  −1, =   −1, ∆  −1, −1,
  −1, =  −1,   −1, −1  −1, +   ,   – see Appendix B,
  =   −1,   (    −1,   +   )−1,   = (
 ∗ =   −    ,
∆  , = ∆  −1, +   ( ∗ −   ∆  −1, ),
  ,
= ( −     )  −1, ,
 2</p>
          <p>0
  , =   −1, + ∆  , .</p>
          <p>where  is the corresponding adjustment vector
  =   + ∆  , ,  = 1…  , excepting the channel corresponding to  .</p>
          <p>Propagate   , to the end of next integration period and compute predicted carrier frequency for the
corresponding channel.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Performance Analysis</title>
      <p>At the moment only the first test results are obtained. The results basically show that the DVPLL
implementation provides anticipated results.
PLL has higher accuracy than scalar PLL, especially for low levels of signal power. One can see from
in ±1Hz range. Further tests will follow soon.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>The paper provides a detail analysis of a DVPLL including, concept, design, implementation and
first test results. It is planned to present the results of full DVPLL testing in ION conference in
September 2020.
7. References
additionally:</p>
      <p>S. M. Martin, D. M. Bevly, R. G. Keegan and S. F. Rounds, "RTK Vector Phase Locked Loop</p>
      <p>A. Shafaati, T. Lin, A. Broumandan and G. Lachapelle, "Design and Implementation of an RTK-based
[4] M. Lashley and D. M. Bevly, "Comparison in the Performance of the Vector Delay/Frequency Lock Loop
and Equivalent Scalar Tracking Loops in Dense Foliage and Urban Canyon," in Proceedings of the 24-th</p>
      <p>ITM of the Satellite Division of the Institute of Navigation, Portland, OR, 2011.</p>
      <p>M. Lashley, "Modelling and Performance Analysis of GPS Vector Tracking Algorithms. Ph.D. Thesis.,"</p>
      <p>Auburn University, Auburn, 2009.
[6] P. Teunissen, "A least-squares ambiguity decorrelation adjustment: a method for fast GPS integer ambuity
estimation," Journal of Geodesy, pp. 65-82, 1985.</p>
      <p>Y. Bar-Shalom, R. L. X. and T. Kirubarajan, Estimation with Application to Tracking and Navigation:</p>
      <p>Theory Algorithms and Software, New York: John Wiley &amp; Sons, 2001.</p>
      <p>M. Scott, "GPS Carrier Phase Tracking in Difficult Environments Using Vector Tracking for Precise
Positioning and Vehicle Attitude Estimation Tracking in GNSS. Ph.D. Thesis," Auburn University,</p>
      <p>Auburn, USA, 2017.</p>
    </sec>
    <sec id="sec-7">
      <title>8. Appendix A: Relative Positioning Algorithm</title>
      <p>For the basic relative positioning algorithm, the pseudorange and carrier phase measurements are
  =   + 
 +   +   +  (  +   )+   , ,</p>
      <p>=
(  −  

 +    +   +  (  +   ))+    +   , ,

where the notation is analogue to the one given in section Error! Reference source not found. and
ionospheric delay, m
tropospheric delay, m
multipath error, m.
pseudorange differences</p>
      <p>Neglecting the multipath error we use the measurement differences  
from eq. (1) and the</p>
      <p>=  
+   
+    ,
in a Kalman filter to, at first, estimate the state vector
 = (    
   
 ̇
 ̇
 ̇</p>
      <p>Here, the ambiguities    are contained with relaxed float constraints. Using a system transition
model as in eq. (7) with additional identity transition on the ambiguities, the measurement vector  ,
observation matrix  and measurement noise matrix  for this filter are as follows:


   
=  ( 
−</p>
      <p>),
− 1 − 1 − 1 1
  = (
−</p>
      <p>⋮
−</p>
      <p>).</p>
      <p>−  1
 = ( 1
 2
…     1   2
…   

)
= (</p>
      <p>.</p>
      <p>Variances   2 and   2 are determined for each channel on the basis of signal to noise ratio and
DLL/PLL parameters. The default Kalman filter equations apply for generating a float ambiguity
solution.
ambiguity resolution.</p>
      <p>In a follow-up step, the float solution is refined using the LAMBDA method [6] for an integer
The known integer ambiguities  
are then forwarded to estimate  
through the equations:</p>
      <p>Here, an ordinary least-squares estimation yields the fixed solution, i.e. the solution with resolved
integer ambiguities providing the foundation and initialization for the DVPLL computations.</p>
    </sec>
    <sec id="sec-8">
      <title>9. Appendix B: System Dynamic Model</title>
      <p>The system dynamics are based on [7] which provides a detailed discussion and deduction including
the transformation of the continuous to the discrete system representation. In short, a continuous white
noise acceleration model (CWNA) transformed into discrete time is employed in this work. The
resulting system transition is given in equation (7). The respective noise matrix   as a result from the
discretization is composed of a motion dynamic part  
and a clock dynamic influence  
:
=</p>
      <p>+  
 
=
(
  2 ∆ 3</p>
      <p>3
  2 ∆ 2</p>
      <p>2
0   2 ∆ 2
0</p>
      <p>The noise constants need to reflect the respective motion behavior of the receiver. In this work, the
acceleration parameters are fixed to</p>
      <p>=   =   = 10.</p>
      <p>The terms   2 and   2 in</p>
      <p>can be approximated by [4] :
  2 =  2 ℎ0</p>
      <p>,
2
  2 =  22 2ℎ−2,
oscillator:
where the parameters ℎ</p>
      <p>0 and ℎ−2 are the power spectral density coefficients for the clock’s
  ( )=  2 (ℎ0 +</p>
      <p>is the ratio the frequency of interest (for example, GPS L1) to the nominal frequency of oscillator.
Power spectral density coefficients can be obtained using polynomial fit of the data from the oscillator
specifications. For TCXO the following coefficients can be used [4]:</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>Electronic Systems</source>
          , pp.
          <fpage>1046</fpage>
          -
          <lpage>1055</lpage>
          ,
          <year>June 2016</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>