Architecture, Design and Implementation of Carrier Phase Vector Tracking in GNSS RTK Receiver Nikolay Mikhaylova, Valery Chistyakovb and David Oertela a Robert Bosch GmbH, Hildesheim, Germany b BORA Ltd, St. Petersburg, Russia Abstract 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. Keywords 1 GNSS, PLL, Vector PLL, Differential PLL, Extended Kalman Filter, Multipath Mitigation 1. Introduction A known and promising approach to minimize the effect of GNSS multipath interference and to improve ground tracks is vector tracking loop (VTL), [1], [2], [3]. The approach assumes the 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]. 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. ICL-GNSS 2020 WiP Proceedings, June 02–04, 2020, Tampere, Finland EMAIL: nikolay.mikhaylov@de.bosch.com (A. 1); vchistyakov@softnav.ru; david.oertel@de.bosch.com ORCID: 0000-0001-9184-3465 (A. 1) ©️ 2020 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). CEUR Workshop Proceedings (CEUR-WS.org) Proceedings 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 2. DVPLL Concept 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. E Dc IF Carrier Code Bank of Df VDLL P PVT signal correlator correlator discriminators Dφ Navigation L Filter sin cos −∆ 0 +∆ Carrier Code Code NCO Code NCO generator generator control High precision PLL DVPLL Carrier NCO PVT Navigation Filter Base station Channel 1 data Channel 2 RTK Lib User’s data Channel N Figure 1. DVPLL Concept 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. 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. 3. Software Architecture 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. 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. Figure 2. High-level software architecture 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. 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. RTCM handler, also a part of the Interface Component does a routine processing of RTCM data. 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 Interface Component to control NCOs in each channel. 4. DVPLL Algorithm 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. 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. 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 1 𝝋𝑢𝑏 = 𝜆 (−𝑨𝑀×3 𝑿𝑢𝑏 + 𝑐𝑏𝑢𝑏 𝑰𝑀×1 ) + 𝑵𝑢𝑏 + 𝜺𝜑,𝑢𝑏 , (1) where 𝝋𝑢𝑏 – difference of carrier measurements between user u and base station b, m 𝜆 – carrier wavelength, m 𝑨𝑀×3 – matrix of directive cosines (M is the number of measurements) 𝑿𝑢𝑏 = (𝑥𝑢𝑏 𝑦𝑢𝑏 𝑧𝑢𝑏 𝑐𝑏𝑢𝑏 )𝑇 State vector consisting of differences of position 𝑿𝑢𝑏 – components and clock bias between user u and base station b, m c – velocity of light, m/s 𝑏𝑢𝑏 – user clock bias relatively base station receiver, s 𝑰𝑀×1 = (1 1 … 1)𝑇 𝑵𝑢𝑏 – vector of integer ambiguities noise of the difference of carrier phase measurements between user u and base station 𝜺𝜑,𝑢𝑏 – b, cycles The equation (2) below can be obtained by differencing (1), connects errors of the carrier phase single differences with error in relative position: 1 ∆𝝋𝑢𝑏 = 𝜆 (−𝑨𝑀×3 ∆𝑿𝑢𝑏 + 𝑐∆𝑏𝑢𝑏 𝑰𝑀×1 ) + 𝜺′𝜑,𝑢𝑏 , (2) where ∆𝑿𝑢𝑏 – relative position error, ∆𝑏𝑢𝑏 – relative clock bias error, 𝜺′𝜑,𝑢𝑏 – noise of the carrier phase single differences. ∆𝝋𝑢𝑏 = 𝝋𝑢𝑏 − 𝝋 ̂ 𝑢𝑏 = 𝝋𝑢 − 𝝋𝑏 − (𝝋 ̂𝑢 − 𝝋 ̂ 𝑏 ) = 𝝋𝑢 − 𝝋̂ 𝑢 − (𝝋𝑏 − 𝝋 ̂ 𝑏 ), (3) where 𝝋 ̂ 𝑏 and 𝝋 ̂ 𝑢 denote predictions of the carrier phase in base station and in rover receiver. 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 ∆𝑿𝑢𝑏 + 𝑐∆𝑏𝑢𝑏 𝑰𝑀×1 + 𝜺′𝜑,𝑢𝑏 , (4) where ∆𝝋𝑢 – carrier phase error of the rover receiver (PLL discriminator). Equation for the error in relative velocity can be obtained by differentiating (4): 𝜆∆𝒇𝑢 = −𝑨𝑀×3 ∆𝑿̇𝑢𝑏 + 𝑐∆𝑏̇𝑢𝑏 𝑰𝑀×1 + 𝜺′𝑓,𝑢𝑏 , (5) where ∆𝒇𝑢 – carrier frequency error of the rover receiver (FLL discriminator). Let’s define state vector and dynamic model as follows: ∆𝑿𝑘 = (∆𝑥𝑢𝑏𝑘 ∆𝑦𝑢𝑏𝑘 𝑘 ∆𝑧𝑢𝑏 𝑐∆𝑏𝑢𝑏𝑘 ∆𝑥̇𝑢𝑏 𝑘 ∆𝑦̇𝑢𝑏 𝑘 ∆𝑧̇𝑢𝑏 𝑘 𝑐∆𝑏̇𝑢𝑏 𝑘 𝑇 ) , (6) ∆𝑿𝑘,𝑘+1 = 𝑭𝑘,𝑘+1 ∆𝑿𝑘,𝑘 , (7) 𝟎4×4 ∆𝑡𝑘 𝑬4×4 where 𝑭𝑘,𝑘+1 = ( ) , ∆𝑡𝑘 = 𝑡𝑘+1 − 𝑡𝑘 , 𝟎4×4 𝟎4×4 ∆𝑿𝑘,𝑘 denotes state vector in time 𝑡𝑘 , and ∆𝑿𝑘,𝑘+1 denotes state prediction from 𝑡𝑘 to 𝑡𝑘+1 . Measurements update for the DVPLL navigation filter is performed at the end of integration period in each channel. If navigation symbol location is found then integration interval is usually equal to the navigation symbol length. Neglecting the impact of Doppler on the code frequency we will assume that integration intervals for all channels are the same. However the ends of the integration intervals for 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. Let’s define the measurements vector and measurement matrix as follows: 𝒁𝑘 = 𝜆(∆𝜑𝑘 ∆𝑓𝑘 )𝑇 , 1 𝑄 ∆𝜑𝑘 = arctg ( 𝑘 ), 2𝜋 𝐼𝑘 1 𝑄 𝐼 −𝐼 𝑄 ∆𝑓𝑘 = 2𝜋∆𝑡 arctg (𝐼 𝑘𝐼 𝑘−𝑁+𝑄𝑘 𝑄𝑘−𝑁), 𝑘 𝑘−𝑁 𝑘 𝑘−𝑁 −𝑎𝑥𝑘 −𝑎𝑦𝑘 −𝑎𝑧𝑘 1 0 0 0 0 𝑯𝑘 = ( ), where 0 0 0 0 −𝑎𝑥𝑘 𝑘 −𝑎𝑦 −𝑎𝑧 1 𝑘 ∆𝑡 – I&Q accumulation time (20 ms); 𝑎𝑥𝑘 , 𝑎𝑦𝑘 , 𝑎𝑧𝑘 are the directive cosines for the satellite on the current channel. Note that 𝒁𝒌 corresponds to the difference between received signal and predicted one based on the state vector at beginning of kth integration interval: 𝒁𝑘 = 𝑯𝑘 (𝑿𝑘,𝑘 − 𝑭′𝑘−𝑁,𝑘 𝑿𝑘−𝑁,𝑘−𝑁 ), where (8) 𝑭′𝑘−𝑁,𝑘 = 𝑬 + 𝑭𝑘−𝑁,𝑘 is the matrix of state transition from state 𝑿𝑘−𝑁,𝑘−𝑁 at time 𝑡𝑘−𝑁 to state prediction 𝑿𝑘,𝑘 at time 𝑡𝑘 . However, for implementation of the DVPLL navigation filter in a standard form it is required to have measurement in the following form: 𝒁∗𝑘 = 𝑯𝑘 (𝑿𝑘,𝑘 − 𝑭′𝑘−1,𝑘 𝑿𝑘−1,𝑘−1 ). (9) These measurements are related as follows: 𝑭′𝑘−1,𝑘 𝑿𝑘−1,𝑘−1 = 𝑭′𝑘−1,𝑘 (𝑿𝑘−2,𝑘−1 + ∆𝑿𝑘−1,𝑘−1 ) = 𝑭′𝑘−2,𝑘 𝑿𝑘−2,𝑘−2 + 𝑭′𝑘−1,𝑘 ∆𝑿𝑘−1,𝑘−1 = ⋯ 𝑭′𝑘−N,𝑘 𝑿𝑘−𝑁,𝑘−𝑁 + 𝑭′𝑘−N+1,𝑘 ∆𝑿𝑘−𝑁+1,𝑘−𝑁+1 + ⋯ + 𝑭′𝑘−1,𝑘 ∆𝑿𝑘−1,𝑘−1 . (10) In (10) we used the equation for updated state estimate. Therefore, 𝒁∗𝑘 = 𝒁𝑘 − 𝑯𝑘 ∑𝑘−1 ′ 𝑚=𝑘−𝑁+1 𝑭𝑚,𝑘 ∆𝑿𝑚,𝑚 . (11) Note that equation (11) was obtained for the Channel 1. Let’s determine adjustment vector 𝒆𝑖 for ith channel as follows: 𝒆𝑖 = ∑𝑘+𝑖−2 ′ 𝑚=𝑘+𝑖−𝑁 𝑭𝑚,𝑘 ∆𝑿𝑚,𝑚 . (12) Then, 𝒁∗𝑘+𝑖−1 = 𝒁𝑘+𝑖−1 − 𝑯𝑘+𝑖−1 𝒆𝑖 . (13) Computation of the adjustment vectors is performed iteratively each time when new measurement is available. After adjustment is applied the corresponding vector is zeroed. Let’s define estimated relative vector as follows: 𝑿𝑘 = (𝑥𝑢𝑏𝑘 𝑘 𝑦𝑢𝑏 𝑘 𝑧𝑢𝑏 𝑘 𝑐𝑏𝑢𝑏 𝑘 𝑥̇ 𝑢𝑏 𝑘 𝑦̇ 𝑢𝑏 𝑘 𝑧̇𝑢𝑏 𝑐𝑏̇𝑢𝑏 𝑘 𝑇 ) . The algorithm of navigation filter consists of the following steps: Step 1 (initialization) 𝑿0 = 𝑿𝑓𝑖𝑥𝑒𝑑 ; ∆𝑿0 = 0, 𝑷0 = 𝑷𝑓𝑙𝑜𝑎𝑡 ; 𝒆𝑖 = 𝟎, 𝑖 = 1 … 𝑁 Step 2 (prediction) 𝑿𝑘−1,𝑘 = 𝑿𝑘−1,𝑘−1 + 𝑭𝑘−1,𝑘 𝑿𝑘−1,𝑘−1, ∆𝑿𝑘−1,𝑘 = 𝑭𝑘−1,𝑘 ∆𝑿𝑘−1,𝑘−1 , 𝑷𝑘−1,𝑘 =𝑭𝑘−1,𝑘 𝑷𝑘−1,𝑘−1 𝑭𝑇𝑘−1,𝑘 + 𝑸𝑘 , 𝑸𝑘 – see Appendix B, 𝒆𝑖 = 𝑭′𝑘−1,𝑘 𝒆𝑖 , 𝑖 = 1 … 𝑁. Step 3 (measurement update) 𝑇 𝑇 −1 𝜎𝜑2 0 𝑮𝑘 = 𝑷𝑘−1,𝑘 𝑯𝑘 (𝑯𝑘 𝑷𝑘−1,𝑘 𝑯𝑘 + 𝑹𝑘 ) , 𝑹𝑘 = ( ), 0 𝜎𝑓2 𝒁∗𝑘 = 𝒁𝑘 − 𝑯𝑘 𝒆, ∆𝑿𝑘,𝑘 = ∆𝑿𝑘−1,𝑘 + 𝑮𝑘 (𝒁∗𝑘 − 𝑯𝑘 ∆𝑿𝑘−1,𝑘 ), 𝑷𝑘,𝑘 = (𝑬 − 𝑮𝑘 𝑯𝑘 )𝑷𝑘−1,𝑘 , 𝒆 = 𝟎, where 𝒆 is the corresponding adjustment vector 𝒆𝑖 = 𝒆𝑖 + ∆𝑿𝑘,𝑘 , 𝑖 = 1 … 𝑁, excepting the channel corresponding to 𝒆. 𝑿𝑘,𝑘 = 𝑿𝑘−1,𝑘 + ∆𝑿𝑘,𝑘 . Step 4 Propagate 𝑿𝑘,𝑘 to the end of next integration period and compute predicted carrier frequency for the corresponding channel. 5. Performance Analysis At the moment only the first test results are obtained. The results basically show that the DVPLL implementation provides anticipated results. Figure 1 below shows a carrier-to-noise density for a static user. Figure 2 demonstrates that vector PLL has higher accuracy than scalar PLL, especially for low levels of signal power. One can see from Figure 3 that the accuracy of vector PLL for the simulated scenario, i.e. down to about 24 dBHz remains in ±1Hz range. Further tests will follow soon. Figure 1 Carrier-to-noise density as a function of time in a static user scenario 8 6 4 Doppler error , Hz 2 0 Scalar PLL -2 Vector PLL -4 -6 -8 43.5 40.7 37.7 34.7 31.7 28.0 25.6 C/No, dBHz Figure 2 Doppler frequency error as a function of carrier-to-noise density for scalar and vector PLLs 1.5 1 0.5 Doppler error, Hz 0 -0.5 -1 -1.5 1 101 201 301 401 501 601 701 801 901 1001 1101 1201 1301 Time,s Figure 3 Doppler frequency error as a function of carrier-to-noise density for vector PLL 6. Conclusions 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 [1] J. Brewer and J. Raquet, "Differential Vector Phase Locked Loop," IEEE Transactions on Aerospace and Electronic Systems, pp. 1046-1055, June 2016. [2] S. M. Martin, D. M. Bevly, R. G. Keegan and S. F. Rounds, "RTK Vector Phase Locked Loop Architecture". USA Patent 20190120973, 11 10 2019. [3] A. Shafaati, T. Lin, A. Broumandan and G. Lachapelle, "Design and Implementation of an RTK-based Vector Phase Locked Loop," Sensors, March 2018. [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 ITM of the Satellite Division of the Institute of Navigation, Portland, OR, 2011. [5] M. Lashley, "Modelling and Performance Analysis of GPS Vector Tracking Algorithms. Ph.D. Thesis.," 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. [7] Y. Bar-Shalom, R. L. X. and T. Kirubarajan, Estimation with Application to Tracking and Navigation: Theory Algorithms and Software, New York: John Wiley & Sons, 2001. [8] 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, Auburn, USA, 2017. 8. Appendix A: Relative Positioning Algorithm For the basic relative positioning algorithm, the pseudorange and carrier phase measurements are modelled as: 𝝆𝒌𝒖 = 𝒓𝒌𝒖 + 𝑰𝒌𝒖 + 𝑻𝒌𝒖 + 𝑴𝒌𝒖 + 𝒄(𝒃𝒖 + 𝒃𝒌 ) + 𝜺𝒌𝝆,𝒖 , 1 𝜑𝑢𝑘 = 𝜆 (𝑟𝑢𝑘 − 𝐼𝑢𝑘 + 𝑇𝑢𝑘 + 𝑀𝑢𝑘 + 𝑐(𝑏𝑢 + 𝑏 𝑘 )) + 𝑁𝑢𝑘 + 𝜀𝜑,𝑢 𝑘 , where the notation is analogue to the one given in section Error! Reference source not found. and additionally: 𝐼𝑢𝑘 – ionospheric delay, m 𝑇𝑢 𝑘 – tropospheric delay, m multipath error, m. 𝑀𝑢𝑘 – Neglecting the multipath error we use the measurement differences 𝝋𝑢𝑏 from eq. (1) and the pseudorange differences 𝑘 𝑘 𝑘 𝜌𝑢𝑏 = 𝑟𝑢𝑏 + 𝑐𝑏𝑢𝑏 + 𝜀𝜌,𝑢𝑏 in a Kalman filter to, at first, estimate the state vector 𝑿 = (𝑥𝑢𝑏 𝑦𝑢𝑏 𝑧𝑢𝑏 𝑐𝑏𝑢𝑏 𝑥̇ 𝑢𝑏 𝑦̇ 𝑢𝑏 𝑧̇𝑢𝑏 𝑐𝑏̇𝑢𝑏 𝑁𝑢𝑏 1 𝑀 𝑇 … 𝑁𝑢𝑏 ) . 𝑖 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: 1 2 𝑀 1 2 𝑀 𝑇 𝒁 = (𝜌𝑢𝑏 𝜌𝑢𝑏 … 𝜌𝑢𝑏 𝜆𝜑𝑢𝑏 𝜆𝜑𝑢𝑏 … 𝜆𝜑𝑢𝑏 ) −𝑨 𝑰 𝟎 𝟎 𝑯 = ( 𝑀×3 𝑀×1 𝑀×4 𝑀×𝑀 ). −𝑨𝑀×3 𝑰𝑀×1 𝟎𝑀×4 𝜆𝑬𝑀×𝑀 𝜎𝜌2𝑖 + 𝜎𝜌2𝑖 , 𝑖 ≤ 𝑀 𝑏 𝑢 𝑹 = diag(𝑅1 , … , 𝑅2𝑀 ), 𝑅𝑖 = { 2 2 . 𝜎𝜑𝑖 + 𝜎𝜑𝑖 , 𝑖 > 𝑀 𝑢 𝑏 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. In a follow-up step, the float solution is refined using the LAMBDA method [6] for an integer ambiguity resolution. The known integer ambiguities 𝑵𝑢𝑏 are then forwarded to estimate 𝑿𝑢𝑏 through the equations: 𝑯𝒓 𝑿𝑢𝑏 = 𝜆(𝝋𝑢𝑏 − 𝑵𝑢𝑏 ), −𝑎1𝑥 −𝑎1𝑦 −𝑎1𝑧 1 𝑯𝒓 = ( ⋮ ). 𝑀 𝑀 𝑀 −𝑎𝑥 −𝑎𝑦 −𝑎𝑧 1 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. 9. Appendix B: System Dynamic Model 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 𝑸𝑐𝑙𝑘 : 𝑸 = 𝑸𝑑𝑦𝑛 + 𝑸𝑐𝑙𝑘 , ∆𝑡 3 ∆𝑡 2 𝜎𝑥2 3 0 0 0 𝜎𝑥2 2 0 0 0 ∆𝑡 3 ∆𝑡 2 0 𝜎𝑦2 3 0 0 0 𝜎𝑦2 2 0 0 ∆𝑡 3 ∆𝑡 2 0 0 𝜎𝑧2 0 0 0 𝜎𝑧2 0 3 2 𝑸𝒅𝒚𝒏 = 0 0 0 0 0 0 0 0 ∆𝑡 2 𝜎𝑥2 0 0 0 𝜎𝑥2 ∆𝑡 0 0 0 2 ∆𝑡 2 0 𝜎𝑦2 2 0 0 0 𝜎𝑦2 ∆𝑡 0 0 ∆𝑡 2 0 0 𝜎𝑧2 2 0 0 0 𝜎𝑧2 ∆𝑡 0 ( 0 0 0 0 0 0 0 0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ∆𝑡 3 ∆𝑡 2 0 0 0 𝜎𝑏2 ∆𝑡 + 𝜎𝑑2 0 0 0 𝜎𝑑2 𝑸𝒄𝒍𝒌 = 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ∆𝑡 2 (0 0 0 𝜎𝑑2 0 0 0 𝜎𝑑2 ∆𝑡 ) 2 The noise constants need to reflect the respective motion behavior of the receiver. In this work, the acceleration parameters are fixed to 𝜎𝑥 = 𝜎𝑦 = 𝜎𝑧 = 10. The terms 𝜎𝑏2 and 𝜎𝑑2 in 𝑸𝒄𝒍𝒌 can be approximated by [4] : ℎ 𝜎𝑏2 = 𝑐 2 20, 𝜎𝑑2 = 𝑐 2 2𝜋 2 ℎ−2, where the parameters ℎ0 and ℎ−2 are the power spectral density coefficients for the clock’s oscillator: ℎ ℎ ℎ−3 ℎ−4 𝑆𝜙 (𝑓) = 𝑁 2 (ℎ0 + 𝑓−1 + 𝑓−2 2 + 𝑓 3 + 𝑓 4 ). 𝑁 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]: ℎ0 = 2 × 10-19, ℎ−1 = 7 × 10-21, ℎ−2 = 2 × 10-20.