## 3 Kalman Filtering for GPS/BDS Float Ambiguity Estimation  
Kalman filtering can be used to estimate the baseline vector and the float ambiguities with a full utilization of the _a priori_ knowledge of historical measurements. In this work, we select the three components of the baseline vector and the SD ambiguities as system states. It should be noted that the reason for selecting SD ambiguities rather than their DD counterparts is to avoid the handovers when the reference satellite changes, which is similar to the method in [13]. Of course, as an alternative, DD ambiguities can also be used as states to be estimated, and the reader can refer to Equations (36-39) in [14] to handle the changes of the reference satellite. If there are \(m\) satellites observed at a certain epoch, then the system states are expressed as follows:  
\[\mathbf{X}=\left[x_{\mathrm{e}+},y_{\mathrm{e}},z_{\mathrm{e}+},N_{1, \mathrm{e}+},N_{2,\mathrm{e}+},\cdots,N_{m,\mathrm{e}+}\right]^{T} \tag{13}\]  
where \(x\), \(y\) and \(z\) are the Cartesian components of the baseline vector. One thing to note here is that the tracked satellite signal may disappear and new satellite may rise into view due to the receiver's dynamics, attitude change and environmental factors which may cause the number of ambiguities in the system states to vary. Measures including storing the rising and setting satellite indices should be taken to handle this situation and the reader can refer to [14]. If a receiver outputs both GPS and BDS measurements, jointly processing them with a Kalman filter may be beneficial for better positioning solutions. We should note that there is only one baseline at a certain epoch no matter which constellation is adopted. This fact produces correlations between the measurements of the two constellations that may not be fully exploited by handling GPS and BDS respectively. For this reason, we include all the SD measurements of both GPS and BDS as well as the baseline elements as the states of the Kalman filter as follows:  
\[\mathbf{X}=\left[\mathbf{b}_{\mathrm{e}+}^{T},\left(\mathbf{N}_{\mathrm{ float}}^{\mathrm{GPS}}\right)^{T},\left(\mathbf{N}_{\mathrm{float}}^{ \mathrm{BDS}}\right)^{T}\right]=\left[x_{\mathrm{e}+},y_{\mathrm{e}+},z_{ \mathrm{e}+},N_{1,\mathrm{e}+}^{\mathrm{GPS}},N_{2,\mathrm{e}+}^{\mathrm{GPS}}, \cdots,N_{m,\mathrm{e}+}^{\mathrm{GPS}},N_{1,\mathrm{e}+}^{\mathrm{BDS}},N_{2,\mathrm{e}+}^{\mathrm{BDS}},\cdots,N_{n,\mathrm{e}+}^{\mathrm{BDS}}\right]^{T} \tag{14}\]  
where \(\mathbf{N}_{\mathrm{float}}\) is the SD float ambiguity vector of GPS/BDS, the rover and the base have \(m\) common GPS satellites and \(n\) common BDS respectively, and \(\mathbf{X}\) has \(m+n+3\) elements in total. The baseline at \(k+1\) th epoch is modeled as the sum of the baseline components at \(k\)th epoch and a normally distributed random vector \(\mathbf{W}_{b,k}\) as given in Equation (15):  
\[\mathbf{b}_{n,k+1}=\left[x_{\mathrm{e}+k+1},y_{\mathrm{e}+k+1},z_{\mathrm{e} +k+1}\right]^{T}=\mathbf{b}_{\mathrm{e}+k}+\mathbf{W}_{\mathrm{e},k} \tag{15}\]  
The ambiguities remain consistent between epochs unless cycle slip or/and satellite rising/setting happen. Therefore, the ambiguities at \(k+1\) th epoch equal that of the \(k\)th epoch:  
\[N_{j,\mathrm{e}+k+1}^{*}=N_{j,\mathrm{e}+k,k}^{*} \tag{16}\]  
where the superscript \"*\" represents an arbitrary constellation.