# GNSS Code Multipath Mitigation by Cascading Measurement Monitoring Techniques
## 3 Measurement Monitoring Techniques for Multipath Mitigation
### Multipath Error Estimation and Measurement Correction  
This approach is generally based on a direct measure of code range multipath error, thereby offering the possibility of pseudorange correction. As discussed before, CMC is one of the well-known monitoring metrics commonly used in the literature as a basic measure of code multipath error estimation and correction.  
* Code-Minus-Carrier (CMC) for multipath estimation and correction  
CMC is computed by subtracting the carrier phase measurements from the corresponding pseudoranges to remove the effect of non-dispersive systematic errors such as receiver and satellite clock errors, orbital errors and tropospheric delays. By doing so, the CMC metric for the \(i\)th satellite at \(k\)th measurement epoch is calculated as [8; 9; 10]:  
\[\begin{array}{rl}CMC_{i}(k)&=P_{i}(k)-\phi_{i}(k)\\ &=MP_{P,i}(k)+\left(2d_{ion,i}(k)-\lambda N_{i}(k)\right)+\left(\eta_{P,i}(k)- MP_{\phi,i}(k)-\eta_{\phi,i}(k)\right),\end{array} \tag{8}\]  
where \(P_{i}(k)\) and \(\phi_{i}(k)\) are the corresponding code and carrier phase measurements (both converted to units of length). \(d_{ion,i}(k)\) is ionospheric delay, \(\lambda\) and \(N_{i}(k)\) are wavelength and ambiguity, and \(MP_{P,i}(k)\), \(\eta_{P,i}(k)\), \(MP_{\phi,i}(k)\), \(\eta_{\phi,i}(k)\) are code and carrier multipath and noise errors respectively. When a carrier-phase measurement is not available, an accumulated delta range based on Dopplermeasurements can be used although it will be noisier [28]. It is shown that in addition to a code multipath error, the result includes carrier phase ambiguities and twice the ionospheric errors (due to ionospheric code delay and phase advance) plus (code and carrier) noise and carrier phase multipath. Considering that the integer ambiguity is constant during a cycle slip-free period and ionosphere changes are low frequency, their effects can be removed based on a simple or cumulative moving average (see Appendix A) sufficiently short to avoid biases due to changing geometry. Therefore, the pseudorange multipath error can be extracted by a CMC-based monitoring metric as  
\[m_{cmc,i}(k)=CMC_{i}(k)-\left\langle CMC_{i}\right\rangle_{k}, \tag{9}\]  
where \(\left\langle CMC_{i}\right\rangle_{k}\) denotes the mean value of the CMC metric at the \(k\)th epoch computed by a moving average (see Appendix A). The output of the CMC metric is a direct measure of the code multipath error which can be directly used for pseudorange correction without geometry degradation, which is the case when excluding or de-weighting measurements:  
\[\hat{P}_{i}(k)=P_{i}(k)-m_{cmc,i}(k), \tag{10}\]  
where \(\hat{P}_{i}(k)\) is the corrected pseudorange. Assuming a cumulative moving average, Equation (10) is another form of carrier-smoothing of code pseudoranges (proof in Appendix B). Due to the dependency of the CMC on carrier phase measurements, the major limitation is the need to restart the time averaging process in the event of a cycle slip. Using pre-defined modeling or a reference receiver to remove the mean value is not possible since the effect of integer ambiguity differs from receiver to receiver.