## 2 Velocity Estimation
### TDCP-Based Velocity  
CP is, together with pseudorange and Doppler, one of the main GNSS observables, and its equation is  
\[\lambda\phi=d+b_{u}-b_{S}+\lambda N+\delta O-\delta I+BGD+\delta T+\delta R+ \delta mp+\delta n+\epsilon_{\phi} \tag{9}\]  
\(\lambda\phi\) is the CP measurement expressed in length units and is the product between the CP measurement in cycles, \(\phi\), and the signal wavelength, \(\lambda\). \(b_{u}\) and \(b_{S}\) are the receiver and the satellite clock biases, respectively; \(N\) is the integer ambiguity; \(\delta O\) is the orbital error; \(\delta I\) and \(\delta T\) are the ionospheric and tropospheric errors, respectively; \(BGD\) is the Broadcast Group. Delay; \(\delta R\) is the relativistic error; \(\delta mp\) and \(\delta n\) are the errors related to multipath phenomenon and to receiver noise, respectively; and \(\epsilon_{\phi}\) includes the unmodeled error sources. The TDCP observation is obtained by differencing two consecutive CP measurements from the same satellite, thus reducing the common errors. If any cycle slip occurs, \(\lambda N\) is constant in two consecutive CPs, so it can be eliminated. \(b_{S}\), \(\delta O\), \(\delta I\), \(BGD\), \(\delta T\), and \(\delta R\) are time-correlated error sources, so they are strongly reduced in the difference, especially if the sampling interval is small, e.g., 1 s or smaller. Assuming that \(T_{0}\) and \(T_{1}\) are two consecutive epochs, the TDCP measurement equation is  
\[\lambda\Delta\phi-\Delta D+\Delta g=-\hat{\underline{\varepsilon}}(T_{1})\cdot \Delta\underline{t}_{u}+\Delta b_{u}+\epsilon_{\Delta\phi} \tag{10}\]  
\(\lambda\Delta\phi=\lambda\phi(T_{1})-\lambda\phi(T_{0})\) is the difference between CPs at \(T_{0}\) and \(T_{1}\). \(\Delta D=\hat{\underline{\varepsilon}}(T_{1})\cdot\underline{\varepsilon}_{S }(T_{1})-\hat{\underline{\varepsilon}}(T_{0})\cdot\underline{\varepsilon}_{S }(T_{0})\) is the range variation proportional to the average Doppler frequency shift due to satellite motion along the receiver-satellite direction. \(\Delta g=\hat{\underline{\varepsilon}}(T_{1})\cdot\underline{t}_{u}(T_{0})- \hat{\underline{\varepsilon}}(T_{0})\cdot\underline{\varepsilon}_{u}(T_{0})\) is a term taking into account the changes in the receiver-satellite geometry. \(\underline{\Delta r}_{u}=\underline{r}_{u}(T_{1})-\underline{r}_{u}(T_{0})\) is the receiver displacement between epochs \(T_{0}\) and \(T_{1}\). \(\Delta b_{u}=b_{u}(T_{1})-b_{u}(T_{0})\) is the receiver clock bias variation between epochs \(T_{0}\) and \(T_{1}\). \(\epsilon_{\Delta\phi}\) contains the residual and the unmodeled errors. Considering the expression of \(\hat{\underline{\varepsilon}}\) components, Equation (10) becomes  
\[\Delta\phi-\Delta D+\Delta g=-\left[\frac{x_{S}(T_{1})-x_{u}(T_{1})}{d(T_{1})} \Delta r_{ux}+\frac{y_{S}(T_{1})-y_{u}(T_{1})}{d(T_{1})}\Delta r_{uy}+\frac{z_ {S}(T_{1})-z_{u}(T_{1})}{d(T_{1})}\Delta r_{uz}\right]+\Delta b_{u}+\epsilon_ {\Delta\phi} \tag{11}\]The corrected TDCP measurements are located on the left side of (11), while the unknowns \(\underline{\Delta r}_{u}=\left[\Delta r_{ux},\Delta r_{uy},\Delta r_{uz}\right]\) and \(\Delta b_{u}\) are on the right side. The average receiver velocity between epochs \(T_{0}\) and \(T_{1}\), \(\underline{v}_{u}\), can be easily computed as  
\[\underline{v}_{u}=\frac{\Delta r_{u}}{T_{1}-T_{0}} \tag{12}\]  
Similar to the case of Doppler-based velocity, at least four equations like (10) are necessary for unknown estimation, in both single and multiple GNSS cases. A system of \(m\) equations like (11) is shown in (13):  
\[\underline{y}_{T}=H_{T} \begin{bmatrix}\Delta r_{ux}\\ \Delta r_{uy}\\ \Delta r_{uz}\\ \Delta b_{u}\end{bmatrix}