1 Introduction

In low-cost land vehicle applications, the navigation system needs not only accurate position and velocity information, but precise heading information. In recent decades, the two most common types of heading indicators have been the magnetic compass and the gyrocompass—the accuracy of the magnetic compass is affected by magnetic field intensity nearby the equipment, however, and the gyroscope suffers from error drift (King 1998). More recently, the global positioning system (GPS) compass has been widely used in attitude determination, favored for advantages such as long-term and stable accuracy (Tu et al. 1997; Park et al. 1997). To realize this technique, two antennas are attached to a vehicle, then the baseline between two antennas is estimated with a differential approach. As such, there are no natural directional constraints. In order to make differenced carrier phase measurements act as high-precision relative distance measurements, the carrier phase integer ambiguity must be successfully resolved thus allowing a baseline solution with a comparably high precision as well as highly precise attitude determination (Teunissen et al. 2011a). Parameterizing the phase ambiguities when there are cycle slips (Shirazian et al. 2011), however, poses a significant challenge during GPS data processing. For most land vehicle navigation applications, due to lock loss and noise disturbance, cycle slips rather often occur and, if repaired incorrectly, affect all subsequent observations (Kim and Langley 2002; Leick 2004; Karaim et al. 2013; Gao et al. 2015). To this effect, they may decrease the continuity of the entire attitude determination system in difficult environments.

Attitude determination in single epoch may be a way to effectively address this problem, because it uses only instantaneous carrier-phase measurements with ambiguity function values that are insensitive to changes in the entire cycle of the carrier phase. Single-frequency GPS receivers already are commonly used in this type of application, as well, because they are low in cost and readily available. Successfully and efficiently performing integer ambiguity resolution for single-frequency single-epoch cases is of considerable practical significance, as it can improve continuity in difficult environments.

In general, the reliability of ambiguity resolution is defined by the probability of correct integer ambiguity estimation, i.e., the so-called ambiguity success rate (Teunissen and Odijk 1997), which is, in essence, determined by the strength of the underlying GNSS model; the stronger the model, the higher the success rate. Recently proposed approaches have made use of the Constrained (C-) LAMBDA method to improve the strength of the single-epoch GNSS model (Teunissen 2007; Buist 2007; Park and Teunissen 2009; Teunissen et al. 2011a; Chen and Qin 2012; Buist 2013), because as it applies to nonlinear constrained models, it is therefore nearly optimal for the GPS attitude determination problem because baseline length is typically known in advance (Teunissen 2010). The rigorous inclusion of the baseline length constraint into the ambiguity objective function has resulted in dramatic improvements in success rates.

In fact, to further improve ambiguity resolution success rate, any other baseline constraint in addition to length can be exploited to directly aid the ambiguity resolution process and decrease the ambiguity search space. For example, in any multiple-antenna attitude determination scheme, the geometrical constraint of multiple baselines provides a very strong constraint for augmenting the weak baseline model (Hide et al. 2007; Giorgi et al. 2010; Teunissen et al. 2011b; Giorgi et al. 2012). The necessary multiple auxiliary receivers and antennas increase system cost, however, limiting the use of this type of scheme in land vehicle applications. Recent studies have integrated inertial and magnetic field sensor measurements into the GPS attitude determination model in order to utilize multiple constraints to decrease the ambiguity search space (Gebre-Egziabher et al. 1998; Li et al. 2006, 2012; Roth et al. 2012; Eling et al. 2013; Zhu et al. 2013, 2014). For example, Zhu et al. (2013) applied rate-gyro-constraints to filter the candidates in the ambiguity search stage, resulting in high ambiguity search success rates after efficiently shrinking the search space.

The MEMS-based inclinometer, a relatively simple inertial sensor used in land vehicle applications, can also provide elevation measurements with very high sampling rate. Assuming that the measuring axis of the sensing element is parallel to the mounting plane and the GPS baseline vector, the real-time elevation of the baseline vector can consistently obtained independent of GPS carrier phase measurements; the vector then serves as a constraint that effectively shrinks the ambiguity search space. The MEMS-based inclinometer also is a cheap, readily available, and relatively small device that can be easily equipped to the GPS compass system to provide real-time elevation constraint. To make the best of this additional auxiliary information, we fully integrated the constraint into the ambiguity resolution estimation process with a proper weight so that the ambiguity fixed solution could be obtained by weighted constrained integer least squares (ILSs) (Teunissen 2010). Compared to the augmenting scheme with rate gyros and IMU, the proposed method is theoretically cheaper and more easily implemented; further, both static and dynamic experiments verified its effectiveness and feasibility.

2 Single-epoch ambiguity estimation with real-time elevation constraint

2.1 Model using approximate geodetic horizon plane constraint and inclinometer measurements

For two nearby antennas A and B, the single-differenced (SD) carrier phase and code observation equations on band L 1 of GPS satellite i can be modeled as follows:

$$ \begin{aligned} \lambda_{ 1} \left( {\phi_{AB}^{i} + a_{AB}^{i} } \right) = r_{AB}^{i} + c\left( {\delta t_{A} - \delta t_{B} } \right) + c\left( {\delta d_{A} - \delta d_{B} } \right) + v_{AB}^{i} \hfill \\ \rho_{AB}^{i} = r_{AB}^{i} + c\left( {\delta t_{A} - \delta t_{B} } \right) + c\left( {\delta d_{A} - \delta d_{B} } \right) + \mu_{AB}^{i} \hfill \\ \end{aligned} $$
(1)

where \( \lambda_{ 1}^{{}} \) is the wavelength of L 1 carrier, \( \phi_{AB}^{i} \) and \( a_{AB}^{i} \) denote the SD fractional phase and integer ambiguity, respectively, \( \rho_{AB}^{i} \) denotes the observable SD code, \( v_{AB}^{i} \) and \( \mu_{AB}^{i} \) respectively denote the SD phase and code observable noise, \( r_{AB}^{i} \) is the SD geometric range of two receivers for satellite i, δt A and δt B are clock biases of receiver A and B, δd A and δd B are hardware delay biases of receiver A and B on band L 1 (Buist 2013), and c is the velocity of light.

The baseline length is very short, as it is assumed to have a sufficiently small size (e.g., <100 m) in relation to the high altitudes of GPS satellites (about 20,000 km), and the lines of sight (LOSs) are approximately parallel for both antennas (Cohen 1992). Thus, the SD geometric range of two antennas for satellite i can be considered a projection of the baseline in the LOS direction:

$$ r_{AB}^{i} = \left( {{\mathbf{s}}^{i} } \right)^{\text{T}} {\varvec{b}} $$
(2)

where \( {\varvec{s}}^{i} = \left( {\begin{array}{*{20}c} {s_{E}^{i} } & {s_{N}^{i} } & {s_{U}^{i} } \\ \end{array} } \right)^{\text{T}} \) is the normalized line-of-sight vector and b is the baseline vector, which in the local east-north-up frame can be expressed using the heading ψ, elevation θ, and baseline length l as follows:

$$ {\varvec{b}} = \left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ {b_{U} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}l} {l\cos \theta \sin \psi } \hfill \\ {l\cos \theta \cos \psi } \hfill \\ {l\sin \theta } \hfill \\ \end{array} } \right] $$
(3)

With (2), the SD carrier phase and code measurement equations can be modeled as:

$$ \begin{aligned} \lambda_{ 1} \left( {\phi_{AB}^{i} + a_{AB}^{i} } \right) = s_{E}^{i} b_{E} + s_{N}^{i} b_{N} + s_{U}^{i} b_{U} + \beta + v_{AB}^{i} \hfill \\ \rho_{AB}^{i} = s_{E}^{i} b_{E} + s_{N}^{i} b_{E} + s_{U}^{i} b_{U} + \beta + \mu_{AB}^{i} \hfill \\ \end{aligned} $$
(4)

where \( \beta = c \cdot \left[ {\left( {\delta t_{A} - \delta t_{B} } \right) + \left( {\delta d_{A} - \delta d_{B} } \right)} \right] \). Note that the baseline coordinate b U can be parameterized with baseline length l and elevation angle θ, which can be measured by the MEMS-based inclinometer. Measurement angle α is given as:

$$ \alpha = \theta + \varDelta + w_{\alpha } ,w_{\alpha } \sim N\left( {0,\sigma_{\alpha }^{2} } \right) $$
(5)

where \( \sigma_{\alpha }^{2} \) denotes the variance of measurement white noise \( w_{\alpha } \) and Δ denotes install error and non-linearity error. Assuming that the measurement axis of the MEMS-based inclinometer is parallel to both the mounting plane and the baseline, install error can be neglected; non-linearity error size is dependent on the extent of tilt, i.e., the smaller the tilt angle, the smaller the non-linearity error.

For land vehicle applications, the baseline approximately lies in the plane of the local geodetic horizon (Chen and Qin 2012) meaning that elevation angle θ is often close to zero, so \( \sin \theta \approx \theta ,\;\cos \theta \approx 1 \). In this case, the non-linearity error of the MEMS-based inclinometer is small enough for most land vehicle applications (<0.1° for SCA-100T, for example.) The expectation of output measurements α is thus equal to elevation θ. See the following equation:

$$ \alpha = \theta + w_{\alpha } ,w_{\alpha } \sim N\left( {0,\sigma_{\alpha }^{2} } \right) $$
(6)

In addition, for a land vehicle equipped with a high-accuracy inclinometer, the following expression is essentially correct:

$$ \sin w_{\alpha } \approx w_{\alpha } ,\cos w_{\alpha } \approx 1 $$
(7)

and the next two approximate mathematical expressions can be obtained by exploiting Eqs. (3) and (7):

$$ l\sin \alpha = l\sin \left( {\theta + w_{\alpha } } \right) = l\sin \theta \cos w_{\alpha } + l\cos \theta \sin w_{\alpha } \approx b_{U} + lw_{\alpha } $$
(8)
$$ l\cos \alpha = l\cos \left( {\theta + w_{\alpha } } \right) = l\cos \theta \cos w_{\alpha } - l\sin \theta \sin w_{\alpha } \approx \left\| {{\mathbf{b}}_{H} } \right\| - l\theta w_{\alpha } $$
(9)

where \( {\varvec{b}}_{H} = \left( {\begin{array}{*{20}c} {l\cos \theta \sin \psi } & {l\cos \theta \cos \psi } \\ \end{array} } \right)^{\text{T}} \) denotes the baseline projection in the local geodetic horizon plane and its length \( \left\| {{\varvec{b}}_{H} } \right\| \) is equal to \( l\cos \theta \). With Eq. (8), the SD carrier phase measurement equation and SD code measurement equation can be modeled as follows:

$$ \begin{aligned} \left( {\phi_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \sin \alpha } \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] - a_{AB}^{k} + \left( {\frac{1}{{\lambda_{ 1} }}v_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}s_{U}^{k} lw_{\alpha } } \right) \hfill \\ \left( {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \sin \alpha } \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] + \left( {\frac{1}{{\lambda_{ 1} }}\mu_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}s_{U}^{k} lw_{\alpha } } \right) \hfill \\ \end{aligned} $$
(10)

For n satellites in view, there are n independent SD phase measurements and SD code measurement equations, respectively. Note that the SD code observation term is also expressed in units of cycles in order to obtain similar expression as the carrier phase. Clock bias is assumed constant on each tracking channel, that is, the hardware delays are independent of which satellite is being tracked. All relevant equations can be expressed in compact vector and matrix notation as follows:

$$ \begin{aligned} {\mathbf{y}}_{{}}^{\phi ,\alpha } = \frac{1}{{\lambda_{1} }}{\varvec{G}} \cdot {\varvec{x}} - {\varvec{a}} + {\varvec{n}}_{{}}^{\phi ,\alpha } ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\varvec{n}}_{{}}^{\phi ,\alpha } \sim N\left( {{\mathbf{0}},{\varvec{Q}}_{{}}^{\phi ,\alpha } } \right) \hfill \\ {\mathbf{y}}_{{}}^{\rho ,\alpha } = \frac{1}{{\lambda_{1} }}{\varvec{G}} \cdot {\varvec{x}} + {\varvec{n}}_{{}}^{\rho ,\alpha } ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\varvec{n}}_{{}}^{\rho ,\alpha } \sim N\left( {{\mathbf{0}},{\varvec{Q}}_{{}}^{\rho ,\alpha } } \right) \hfill \\ \end{aligned} $$
(11)

where a denotes the SD carrier phase ambiguity vector and x contains the horizontal baseline components and clock bias β, and all other terms are expressed as follows:

$$ {\varvec{y}}_{{}}^{\phi ,\alpha } = \left( {\begin{array}{*{20}c} {\phi_{AB}^{1} - \frac{{ls_{U}^{1} \sin \alpha }}{{\lambda_{ 1} }}} \\ {\phi_{AB}^{2} - \frac{{ls_{U}^{2} \sin \alpha }}{{\lambda_{ 1} }}} \\ \vdots \\ {\phi_{AB}^{n} - \frac{{ls_{U}^{n} \sin \alpha }}{{\lambda_{ 1} }}} \\ \end{array} } \right),\quad {\varvec{y}}_{{}}^{\rho ,\alpha } = \left( {\begin{array}{*{20}c} {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{1} - \frac{{ls_{U}^{1} \sin \alpha }}{{\lambda_{ 1} }}} \\ {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{2} - \frac{{ls_{U}^{2} \sin \alpha }}{{\lambda_{ 1} }}} \\ \vdots \\ {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{n} - \frac{{ls_{U}^{n} \sin \alpha }}{{\lambda_{ 1} }}} \\ \end{array} } \right),\quad {\varvec{G}} \equiv \left( {\begin{array}{*{20}c} {\varvec{H}} & {\varvec{e}} \\ \end{array} } \right),\quad {\varvec{H}} = \left( {\begin{array}{*{20}c} {s_{E}^{1} } & {s_{N}^{1} } \\ {s_{E}^{2} } & {s_{N}^{2} } \\ \vdots & \vdots \\ {s_{E}^{n} } & {s_{N}^{n} } \\ \end{array} } \right),\quad {\varvec{e}} = \left( {\begin{array}{*{20}c} 1 \\ 1 \\ \vdots \\ 1 \\ \end{array} } \right) $$
(12)

The \( {\varvec{Q}}_{{}}^{\phi ,\alpha } \) and \( {\varvec{Q}}_{{}}^{\rho ,\alpha } \) matrices are the variance–covariance matrices of \( {\varvec{y}}_{{}}^{\phi ,\alpha } \) and \( {\varvec{y}}_{{}}^{\rho ,\alpha } \), which capture the relative precision contributions of the SD phase/code data and the scaled measuring error of the MEMS-based inclinometer. We assumed that SD measurements were uncorrelated because measurements from different satellites on a single receiver were independent. Due to atmospheric dispersion and antennae qualities, they may also include satellite elevation’s dependency on dispersion (Teunissen et al. 2011b). For instance, in the case of \( {\varvec{Q}}_{{}}^{\phi ,\alpha } \), the ith diagonal element can be characterized as follows:

$$ {\varvec{Q}}_{{}}^{\phi ,\alpha } \left( {i,i} \right) = 2\sigma_{\phi ,i}^{2} + \frac{{\left( {s_{U}^{i} l} \right)^{2} \sigma_{\alpha }^{2} }}{{\lambda_{1}^{2} }} $$
(13)

where \( \sigma_{\phi ,i}^{{}} \) is the standard deviation (in cycle units) of the undifferentiated single-frequency L1 phase observables of satellite i. In this study, we used the following elevation-dependent model (Teunissen et al. 2011b):

$$ \sigma_{\phi ,i}^{{}} = \frac{{\sigma_{0} }}{{\lambda_{1} }}\left( {1 + a_{0} \exp \left( {\frac{{ - \theta_{i} }}{{\theta_{0} }}} \right)} \right) $$
(14)

where \( \theta_{i} \) is the elevation angle of satellite i and \( a_{0} = 2 \), \( \theta_{0} = 10^{^\circ } \),\( \sigma_{0} = 0.007\;{\text{m}} \). In the same manner, \( {\varvec{Q}}_{{}}^{\rho ,\alpha } \) can also be obtained based on the elevation-dependent model with \( \sigma_{0} = 1.1\;{\text{m}} \).

Equation (13) suggests that extra error can be induced by the inclinometer, which is also related to baseline length l, up component \( s_{U}^{i} \), and carrier wavelength. Of course, the short baseline and highly accurate inclinometer can significantly reduce the induced error, however, too short a baseline during practical application should also be avoided since it will reduce the precision of the GPS-based attitude solution.

Under the definition \( {\varvec{G}} \equiv \left( {\begin{array}{*{20}c} {\varvec{H}} & {\varvec{e}} \\ \end{array} } \right) \) and according to Eq. (11), we can obtain the following single-difference model:

$$ \left( {\begin{array}{*{20}c} {{\varvec{y}}_{{}}^{\phi ,\alpha } } \\ {{\varvec{y}}_{{}}^{\rho ,\alpha } } \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} { - {\varvec{I}}_{m} } \\ {\varvec{0}} \\ \end{array} } \right){\varvec{a}} + \frac{1}{{\lambda_{1} }}\left( {\begin{array}{*{20}c} {\varvec{H}} \\ {\varvec{H}} \\ \end{array} } \right){\varvec{b}}_{H} + \frac{1}{{\lambda_{1} }}\left( {\begin{array}{*{20}c} {\varvec{e}} \\ {\varvec{e}} \\ \end{array} } \right)\beta + \left( {\begin{array}{*{20}c} {{\varvec{n}}_{{}}^{\phi ,\alpha } } \\ {{\varvec{n}}_{{}}^{\rho ,\alpha } } \\ \end{array} } \right) $$
(15)

Note that the original baseline vector is reduced to 2D from 3D space, so only the horizontal components given by \( {\varvec{b}}_{H} = \left( {\begin{array}{*{20}c} {b_{E} } & {b_{N} } \\ \end{array} } \right)^{\text{T}} \) should be estimated. If we consider the horizontal baseline length as an observable factor, the horizontal baseline length constraint forms a nonlinear observation equation. Equation (9) provides the approximate expression written as follows:

$$ l\cos \alpha \approx \left\| {{\varvec{b}}_{H} } \right\| - l\alpha w_{\alpha } $$
(16)

Considering the nonlinear horizontal baseline constraint above, the GPS compass model is expressed as:

$$ \begin{aligned} E\left( {\varvec{y}} \right){\varvec{ = Aa}} + {\varvec{Bb}}_{H} + {\varvec{C}}\beta ,D\left( {\varvec{y}} \right) = {\varvec{Q}}_{{\varvec{y}}} ,{\varvec{a}} \in Z^{n} \hfill \\ E(l\cos \alpha ) = \left\| {{\varvec{b}}_{H} } \right\|,D\left( {l\cos \alpha } \right) = l^{2} \alpha^{2} \sigma_{\alpha }^{2} ,{\varvec{b}}_{H} \in R^{2} \hfill \\ \end{aligned} $$
(17)

where \( n = m - 1 \). Each term is expressed as follows:

$$ {\varvec{y}} = \left( {\begin{array}{*{20}c} {{\varvec{y}}^{\phi ,\alpha } } \\ {{\varvec{y}}^{\rho ,\alpha } } \\ \end{array} } \right),\quad {\varvec{A}} = \left( {\begin{array}{*{20}c} { - {\varvec{I}}_{m} } \\ {\varvec{0}} \\ \end{array} } \right),\quad {\varvec{B}} = \frac{1}{{\lambda_{1} }}\left( {\begin{array}{*{20}c} {\varvec{H}} \\ {\varvec{H}} \\ \end{array} } \right),\quad {\varvec{C}} = \frac{1}{{\lambda_{1} }}\left( {\begin{array}{*{20}c} {\varvec{e}} \\ {\varvec{e}} \\ \end{array} } \right),\quad {\varvec{Q}}_{{\varvec{y}}} = \left[ {\begin{array}{*{20}c} {{\varvec{Q}}^{\phi ,\alpha } } & {} \\ {} & {{\varvec{Q}}^{\rho ,\alpha } } \\ \end{array} } \right] $$

The GPS compass is often equipped with a very short baseline due to land vehicle size limitation (Qin and Chen 2013), which benefits the success rate of Model (17)—first because the shorter baseline can greatly reduce the scaled inclinometer error in \( {\varvec{Q}}_{{\mathbf{y}}} \), and second because the uncertainty of the horizontal baseline length constraint is very small for the weighted model above.

To solve for the unknown parameter vectors a and b and the clock bias β of Model (17), we applied the estimation principle of least-squares (LSs) to Model (17) to create the following minimization problem:

$$ \begin{aligned} \mathop {\hbox{min} }\limits_{{{\varvec{a}},{\varvec{b}}_{H} ,\beta }} \left\| {{\varvec{y}} - {\varvec{Aa}} - {\varvec{Bb}}_{H} - {\varvec{C}}\beta } \right\|_{{{\varvec{Q}}_{{\varvec{y}}} }}^{2} \hfill \\ {\varvec{a}} \in Z^{n} ,E(l\cos \alpha ) = \left\| {{\varvec{b}}_{H} } \right\|,D\left( {l\cos \alpha } \right) = l^{2} \alpha^{2} \sigma_{\alpha }^{2} ,{\varvec{b}}_{H} \in R^{2} \hfill \\ \end{aligned} $$
(18)

To gain insight into the ILSs problem in Eq. (18), it is helpful to first apply an orthogonal decomposition to the objective function (Teunissen 2007). To do so, we wrote the objective function as a sum of four squares:

$$ \left\| {{\varvec{y}} - {\varvec{Aa}} - {\varvec{Bb}} - {\varvec{C}}\beta } \right\|_{{{\varvec{Q}}_{{\varvec{y}}} }}^{2} = \left\| {{\hat{\varvec{e}}}} \right\|_{{{\varvec{Q}}_{{\varvec{y}}} }}^{2} + \left\| {{\hat{\varvec{a}}} - {\varvec{a}}} \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{a}}}}} }}^{{\varvec{2}}} + \left\| {{\hat{\varvec{b}}}\left( {\varvec{a}} \right) - {\varvec{b}}} \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{b}}}\left( {\varvec{a}} \right)}} }}^{2} + {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \left\| {\hat{\beta }\left( {\varvec{a}} \right) - \beta } \right\|{\kern 1pt}_{{Q_{{\hat{\beta }\left( {\varvec{a}} \right)}} }} $$
(19)

where \( {\hat{\varvec{e}}} \) is the unconstrained LS residual vector, \( {\hat{\varvec{b}}}\left( {\varvec{a}} \right) \) and \( \hat{\beta }\left( {\varvec{a}} \right) \) are the LSs estimates of b and β conditioned on a, respectively, \( {\varvec{Q}}_{{{\hat{\varvec{b}}}\left( {\varvec{a}} \right)}} \) is the variance–covariance matrix of \( {\hat{\varvec{b}}}\left( {\varvec{a}} \right) \), \( {\varvec{Q}}_{{{\hat{\varvec{a}}}}} \) is the variance–covariance matrix of float ambiguity vector \( {\hat{\varvec{a}}} \), and \( {\varvec{Q}}_{{\hat{\beta }\left( {\varvec{a}} \right)}} \) is the variance of clock bias β. Note that no constraints are posed on the clock bias, therefore, the fixed clock bias (i.e., conditional to the fix ambiguity vector) solution is \( \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{\beta } \left( {\varvec{a}} \right) = \hat{\beta }\left( {\varvec{a}} \right) \) and the last term in Eq. (19) is identically null. Apart from the integer constraint on the ambiguity vector, then, only the nonlinear baseline constraint is considered and receives proper weighting in its minimization as follows:

$$ \mathop {\hbox{min} }\limits_{{{\varvec{a}} \in Z^{n} }} \left( {\left\| {{\hat{\varvec{a}}} - {\varvec{a}}} \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{a}}}}} }}^{2} + \mathop {\hbox{min} }\limits_{{{\varvec{b}}_{H} \in R^{2} }} H\left( {{\varvec{a,b}}_{H} } \right)} \right) $$
(20)

where

$$ H\left( {{\varvec{a,b}}_{H} } \right) = \left\| {{\hat{\varvec{b}}}_{H} \left( {\varvec{a}} \right) - {\varvec{b}}_{H} } \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{b}}}\left( {\varvec{a}} \right)}} }}^{2} + \frac{1}{{l^{2} \alpha^{2} \sigma_{\alpha }^{2} }}\left( {l\cos \alpha - \left\| {{\varvec{b}}_{H} } \right\|} \right)^{2} $$
(21)

This minimization problem can be resolved with the weighted constrained (WC-) LAMBDA method, which is described in detail in Teunissen’s paper (2010).

2.2 Model using horizontal constraint without inclinometer measurements

In Sect. 2.1, we made the assumption that the inclinations of land vehicles are often small. Under this assumption, by removing the inclinometer and applying a constraint of very small inclination angles, the results obtained are nearly identical without introducing any additional cost or complexity due to the inclinometer. For example, one can identify the most likely correct candidate by penalizing those baseline solutions that would result in large inclinations in the validation procedure, with the following minimization problem:

$$ {\varvec{a}} = \mathop {\hbox{min} }\limits_{{{\varvec{a}} \in \varOmega }} \left\{ {p\left( {{\hat{\varvec{b}}}\left( {\varvec{a}} \right)} \right)} \right\} $$
(22)

where \( p\left( {\varvec{b}} \right) = {{\left| {b_{U} } \right|} \mathord{\left/ {\vphantom {{\left| {b_{U} } \right|} {\sqrt {b_{E}^{2} + b_{N}^{2} } }}} \right. \kern-0pt} {\sqrt {b_{E}^{2} + b_{N}^{2} } }} \) and \( \varOmega \) is the ambiguity candidate space given by:

$$ \left\| {{\hat{\varvec{a}}} - {\varvec{a}}} \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{a}}}}} }}^{2} + \mathop {\hbox{min} }\limits_{{{\varvec{b}} \in R^{3} ,\left\| {\varvec{b}} \right\| = l}} \left\| {{\hat{\varvec{b}}}\left( {\varvec{a}} \right) - {\varvec{b}}} \right\|_{{{\varvec{Q}}_{{{\hat{\varvec{b}}}\left( {\varvec{a}} \right)}} }}^{2} \le \chi_{q}^{2} $$
(23)

where the space size \( \chi_{q}^{2} \) indicates that the number of candidates is q. In actuality, the results obtained are almost matched only for very flat geodetic planes with smooth motion—for rough roads, reliability decreases. This phenomenon is attributable to three main facts. First, there are no obvious distinctions between two candidates (or in other words, the absolute elevation values are too close.) For instance, when 4.12° and −3.93° are the elevations of the most likely potential candidates, it is difficult to identify which is correct. Reordering the candidates by elevation and choosing the one with minimum cost may also fail if there are no obvious distinctions between the costs of candidates, especially when low-cost receivers are utilized in a multipath environment. Inclinometer measurements can help identify correct candidates and reduce the effects of multiple paths on the search. Second, the horizontal approximation may not hold well for high road slopes, (e.g., when attitude determination is applied to a cross-country environment.) Third, the correct candidate can be identified using the horizontal constraint without inclinometer measurements, however, it may be limited by the search time and search space during real-time application. In other words, the chosen search space \( \chi^{2} \) must be large enough to guarantee the presence of the integer minimizer, but if too large, will result in excessive computational load. Inclinometer measurements also help reduce the search space and the time consumed by this process.

2.3 Model exploiting inclinometer measurements without horizontal constraints

Note that the proposed method limits the baseline to practically horizontal orientation, as evidenced by Eqs. (7)–(9), thus making the solution unreliable for large elevation (Sect. 2.1). A viable solution to this problem is to use the inclination measurement as an additional observation in the GPS baseline model, without the constraint on θ given in Eq. (7). In this case, Eqs. (8) and (9) can be written as:

$$ l\sin \alpha = l\sin \left[ {\theta + \left( {\alpha - \theta } \right)} \right] = b_{U} \cos \left( {\alpha - \theta } \right) + l\cos \theta \sin \left( {\alpha - \theta } \right) $$
(24)
$$ l\cos \alpha = l\cos \left[ {\theta + \left( {\alpha - \theta } \right)} \right] = \left\| {{\varvec{b}}_{H} } \right\|\cos \left( {\alpha - \theta } \right) - l\sin \theta \sin \left( {\alpha - \theta } \right) $$
(25)

By a simple mathematical derivation, then:

$$ \frac{{l\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta } \right)} \right)}}{{\cos \left( {\alpha - \theta } \right)}} = b_{U} $$
(26)
$$ \frac{l\cos \alpha }{{\cos \left( {\alpha - \theta } \right)}} + l\sin \theta \tan \left( {\alpha - \theta } \right) = \left\| {{\varvec{b}}_{H} } \right\| $$
(27)

With the equation above, the SD carrier phase measurement equation and SD code measurement equation can be modeled as follows:

$$ \begin{aligned} \left( {\phi_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta } \right)} \right)}}{{\cos \left( {\alpha - \theta } \right)}}} \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] - a_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}v_{AB}^{k} \hfill \\ \left( {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta } \right)} \right)}}{{\cos \left( {\alpha - \theta } \right)}}} \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] + \frac{1}{{\lambda_{ 1} }}\mu_{AB}^{k}\, . \hfill \\ \end{aligned}$$
(28)

Note that the true elevation \( \theta \) is required in the model above. Although it is hard to obtain directly, an approximate measurement can be given by the inclinometer. The elevation search strategy can be used in order to build an accurate \( \theta \) into the model above, under the basic principle that correct elevation results in the best matching data for the model, thus making the cost of the fixed ambiguity objective function as the global minimum. At this point, we can assume that the true elevation angle exists in the interval of \( \left[ {\alpha - \eta \cdot N\left( {\alpha ,\eta } \right),\alpha + \eta \cdot N\left( {\alpha ,\eta } \right)} \right] \), where \( \eta \) is the step size and \( N\left( {\alpha ,\eta } \right) \) is the number of sampling points in positive or negative direction for current inclination measurement. In general, \( N\left( {\alpha ,\eta } \right) \) is an empirical function that depends mainly on the performance of the inclinometer and the step size. Accordingly, for each step, the elevation candidate is given by:

$$ \theta_{j} = \alpha + j\eta , - N\left( {\alpha ,\eta } \right) \le j \le N\left( {\alpha ,\eta } \right). $$
(29)

There must be some \( \theta_{j} \) closest to the true elevation angle \( \theta \), and with bias of the closest candidate smaller than \( \frac{\eta }{2} \). Assuming that the closest candidate of \( \theta_{j} \) is \( \theta_{{j_{0} }} \), the following model is appropriate:

$$ \begin{aligned} \left( {\phi_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta_{{j_{0} }} } \right)} \right)}}{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}}} \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] - a_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}v_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}s_{U}^{k} l\gamma \hfill \\ \left( {\frac{1}{{\lambda_{ 1} }}\rho_{AB}^{k} - \frac{l}{{\lambda_{ 1} }}s_{U}^{k} \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta_{{j_{0} }} } \right)} \right)}}{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}}} \right) = \frac{1}{{\lambda_{ 1} }}\left[ {\begin{array}{*{20}c} {s_{E}^{k} } & {s_{N}^{k} } & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ \beta \\ \end{array} } \right] + \frac{1}{{\lambda_{ 1} }}\mu_{AB}^{k} + \frac{1}{{\lambda_{ 1} }}s_{U}^{k} l\gamma \hfill \\ \end{aligned} $$
(30)

where \( \gamma = \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta } \right)} \right)}}{{\cos \left( {\alpha - \theta } \right)}} - \frac{{\left( {\sin \alpha - \cos \theta \sin \left( {\alpha - \theta_{{j_{0} }} } \right)} \right)}}{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}} \approx \frac{{\left( {\theta - \theta_{{j_{0} }} } \right)\cos \left( {\theta_{{j_{0} }} } \right)}}{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}} \). Similarly, the following equation can be obtained:

$$ \frac{l\cos \alpha }{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}} + l\sin \theta_{{j_{0} }} \tan \left( {\alpha - \theta_{{j_{0} }} } \right) = \left\| {{\varvec{b}}_{H} } \right\| + l\zeta $$
(31)

where \( \zeta = \left[ {\frac{\cos \alpha }{{\cos \left( {\alpha - \theta } \right)}} + \sin \theta \tan \left( {\alpha - \theta } \right)} \right] - \left[ {\frac{\cos \alpha }{{\cos \left( {\alpha - \theta_{{j_{0} }} } \right)}} + \sin \theta_{{j_{0} }} \tan \left( {\alpha - \theta_{{j_{0} }} } \right)} \right] \approx \left( {\theta_{{j_{0} }} - \theta } \right)\sin \theta_{{j_{0} }} \).

If \( \theta_{{j_{0} }} \) is close enough to the true elevation angle \( \theta \), we can consider the noise term of the GPS baseline model as approximately normal. It is given as \( \gamma \to 0 \) and \( \zeta \to 0 \), thus making the CLAMBDA method available. If \( \theta_{j} \) is far from the true elevation angle \( \theta \), the noise term cannot be considered normal and the data vector on the left of Eq. (30) will mismatch the baseline model, and the calculation results will be incorrect. In other words, these conditions result in incorrect integer ambiguity vectors and baseline vectors. Basically, step size η should be as small as possible.

Next, we can calculate the minimum of the ambiguity objective function \( F\left( {\varvec{a}} \right) \) for each \( \theta_{j} \) to find the optimal integer ambiguity candidate:

$$ {\varvec{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{a} }}_{j} = \arg \mathop {\hbox{min} }\limits_{{{\varvec{a}} \in Z^{n} }} F\left( {{\varvec{a}}|\theta_{j} } \right). $$
(32)

The most correct ambiguity candidate can be identified by traversing all the elevation candidates. In fact, most of the optimal integer ambiguity candidates are incorrect, because they are obtained using mismatched data. Only one, which is given by one or several \( \theta_{j} \text{s} \) that are close enough to the true elevation angle, is absolutely correct. To find it, we can search for the global minimum of the fixed ambiguity objective function; that is, for each \( \theta_{j} \), compare \( F\left( {{\varvec{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{a} }}_{j} |\theta_{j} } \right) \) to determine the optimal candidate that makes the fixed ambiguity objective function as the global minimum. See the following:

$$ j_{0} = \arg {\kern 1pt} {\kern 1pt} \mathop {\hbox{min} }\limits_{j} F\left( {{\varvec{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{a} }}_{j} |\theta_{j} } \right), - N\left( {\alpha ,\eta } \right) \le j \le N\left( {\alpha ,\eta } \right). $$
(33)

Note that the imposed horizontal constraints can be removed in this model, however, the elevation search strategy requires greater computational effort related to the number of sampling points. During our experiments with the Murata SCA100T inclinometer, we used the following empirical formula:

$$ N\left( {\alpha ,\eta } \right) = \left[ {\frac{0.05\alpha + 0.01}{\eta }} \right]. $$
(34)

3 Ambiguity validation with real-time elevation constraint

Once the ambiguity vector a has been resolved successfully based on Eq. (4), all the SD carrier phase equations can be expressed in compact vector and matrix notation as follows:

$$ E\left( {{\varvec{y}}_{{}}^{\phi } + {\varvec{a}}} \right) = \frac{1}{{\lambda_{1} }}{\varvec{S}} \cdot {\varvec{x}},{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} D\left( {{\varvec{y}}_{{}}^{\phi } } \right) = {\varvec{Q}}^{\phi } $$
(35)

where each term is given as:

$$ {\varvec{y}}_{{}}^{\phi } = \left( {\begin{array}{*{20}c} {\phi_{AB}^{1} } \\ {\phi_{AB}^{2} } \\ \vdots \\ {\phi_{AB}^{n} } \\ \end{array} } \right),\quad {\varvec{S}} = \left( {\begin{array}{*{20}c} {s_{E}^{1} } & {s_{N}^{1} } & {s_{U}^{1} } & 1 \\ {s_{E}^{2} } & {s_{N}^{2} } & {s_{U}^{2} } & 1 \\ \vdots & \vdots & \vdots & \vdots \\ {s_{E}^{n} } & {s_{N}^{n} } & {s_{U}^{n} } & 1 \\ \end{array} } \right),\quad {\varvec{x}} = \left[ {\begin{array}{*{20}c} {\varvec{b}} \\ \beta \\ \end{array} } \right],\quad {\varvec{b}} = \left[ {\begin{array}{*{20}c} {b_{E} } \\ {b_{N} } \\ {b_{U} } \\ \end{array} } \right],\quad {\varvec{Q}}_{\phi }^{{}} = 2diag(\sigma_{\phi ,1}^{2} ,\sigma_{\phi ,2}^{2} , \ldots ,\sigma_{\phi ,n}^{2} ) $$

where \( \sigma_{\phi ,i}^{{}} \) is the undifferentiated phase standard deviation of satellite i in cycle units. With the resolved ambiguity vector a, the conditional LSs solution for x can be written as:

$$ {\hat{\varvec{x}}}\left( {\varvec{a}} \right) = \lambda_{1} \left( {{\varvec{S}}^{\text{T}} {\varvec{Q}}_{\phi }^{ - 1} {\varvec{S}}} \right)^{ - 1} {\varvec{S}}^{\text{T}} {\varvec{Q}}_{\phi }^{ - 1} \left( {{\varvec{y}}_{{}}^{\phi } + {\varvec{a}}} \right) $$
(36)

and the variance–covariance matrix is given by:

$$ {\varvec{Q}}_{{{\hat{\varvec{x}}}\left( {\varvec{a}} \right)}} = \lambda_{1}^{2} \left( {{\varvec{S}}^{\text{T}} {\varvec{Q}}_{\phi }^{ - 1} {\varvec{S}}} \right)^{ - 1} $$
(37)

Thus, heading \( \psi_{C}^{{}} \) and elevation \( \theta_{C} \) can be computed from the baseline coordinates b E , b N , and b U :

$$ \psi_{C}^{{}} = tan^{ - 1} \left( {\frac{{b_{E} }}{{b_{N} }}} \right),{\kern 1pt} {\kern 1pt} \quad {\kern 1pt} \theta_{C} = tan^{ - 1} \left( {\frac{{b_{U} }}{{\sqrt {b_{N}^{2} + b_{E}^{2} } }}} \right) $$
(38)

where subscript C denotes that the attitude angle is derived from the compass baseline solution. Heading and elevation accuracy can also be estimated as follows (Park et al. 1997; Chen et al. 2012):

$$ \sigma_{\delta \psi }^{2} = \frac{{\left( {\cos \psi_{C} } \right)^{2} \sigma_{E}^{2} + \left( {\sin \psi_{C} } \right)^{2} \sigma_{N}^{2} }}{{l_{{}}^{2} \left( {\cos \theta } \right)^{2} }} $$
(39)
$$ \sigma_{\delta \theta }^{2} = \frac{{\left( {\sin \psi_{C} \sin \theta_{C} } \right)^{2} \sigma_{E}^{2} + \left( {\cos \psi_{C} \sin \theta_{C} } \right)^{2} \sigma_{N}^{2} + (\cos \theta_{C} )^{2} \sigma_{U}^{2} }}{{l_{{}}^{2} }}. $$
(40)

Equations (39) and (40) imply that the accuracies of heading and elevation increase as the baseline length increases. Baseline placement can also affect GPS compass accuracy, since heading and elevation errors are related to baseline vector direction.

Note that the elevation can also be obtained from the inclinometer, for which the measurement is independent of the ambiguity vector. To some extent, once the ambiguity vector a is resolved correctly, the measured elevation of the inclinometer should be consistent with the computed elevation derived from the GPS compass. Wrongly resolved ambiguities may result in unacceptably large baseline vector errors, however, thus making inconsistent elevations possible. Although the inclination measurement already drives the ambiguity resolution process, there is no guarantee that the correct ambiguity candidate is identifiable. In order to evaluate the consistency of the two elevations, the difference should be considered:

$$ D = \theta_{C} - \alpha = \left( {\theta + \delta \theta } \right) - \left( {\theta + \varDelta + w_{\alpha } } \right) = \delta \theta - \varDelta - w_{\alpha }. $$
(41)

For land vehicle applications, the non-linearity error can be neglected. Regardless of install error, then, the variance of the elevation difference is written as follows:

$$ \sigma_{D}^{2} = \sigma_{\delta \theta }^{2} + \sigma_{\alpha }^{2}. $$
(42)

One can set a threshold with 3-sigma (3-standard error), for example, to determine whether or not the ambiguity resolution has been resolved correctly.

4 Integrated GPS/inclinometer compass system (IGICS) and experiment

4.1 IGICS design and implementation

To test the proposed method, we constructed an integrated GPS/inclinometer compass system (IGICS). In order to implement the IGICS at relatively low cost, two U-Blox LEA-6T receivers and one Murata SCA-100T-D02 inclinometer were utilized for the hardware platform. The U-Blox LEA-6T receiver provides raw measurements including carrier phase and code, is cost-effective, and is already commonly used for time service and attitude determination. The hardware of the LEA-6T module was integrated very carefully to ensure favorable performance. The LEA-6T module and single-receiver hardware board are depicted in Fig. 1.

Fig. 1
figure 1

Designed hardware board for U-Blox LEA-6T receiver

The SCA-100T-D02 is a MEMS-based dual axis inclinometer that provides instrumentation-grade performance and measuring ranges ±90° with a 0.07° digital output resolution. Dual axis inclination measurements (X and Y) assist the GPS attitude determination system (with at least two baselines) and only the X-axis measurement is necessary for the GPS compass system. Low-temperature dependency, high resolution, and low noise, together with robust sensing element design, made the SCA-100T an ideal choice for IGICS. The Murata inclinometers we used are insensitive to vibration due to their over-damped sensing elements, and can withstand mechanical shocks of up to 20,000 g.

To provide a sufficiently accurate elevation angle for IGICS, microcontrollers such as those in the STM32 family can be utilized for data communication with the serial peripheral interface of the SCA-100T-D02; the output rate of digital elevation can reach 10 Hz. Figure 2 demonstrates the Murata SCA-100T-D02 inclinometer and the hardware board we used for elevation sensing. We implemented the proposed method in C language and applied it to real-time measurements from IGICS with 1 Hz output. All raw measurements of LEA-6T receivers and SCA100T-D02 were processed by ARM Cortex-A8 processor, and for convenience, the raw data and final results were sent to the computer via a Bluetooth link. During real-time application, current GPS measurements must be combined with current inclinometer measurements—high-rate measurements helped reduce the synchronization error.

Fig. 2
figure 2

Murata SCA-100T-D02 inclinometer and the hardware board for elevation sensing

To minimize baseline length measurement error, the IGICS was equipped with two geodetic antennae fixed on two ends of a rigid pipe. Different baseline lengths were achieved by varying the length of the pipe, which contained the two GPS receivers and SCA-100T hardware board fixed on the inside. A diagram of the IGICS with 0.54 m baseline length is shown in Fig. 3. We should point out that we carefully attempted to make the baseline vector parallel to the mounting plane and calibrated the inclinometer installation error meticulously.

Fig. 3
figure 3

Integrated GPS/inclinometer compass system (54 cm baseline)

4.2 IGICS static experiments

In order to verify the performance of GPS compass attitude determination with the aid of MEMS-based inclinometer, two groups of static experiments were achieved. One was done with different elevations and the other was done with different baseline lengths.

In the first experiment, six static tests were performed in 6 days and each group of data collected over the same time span each day. The number of visible satellites was thus nearly identical for each test. To avoid any strong multipath interference, all data was collected on the roof with the baseline pointing to the northeast but at varying elevation for each test. Table 1 summarizes the experimental success rates for different elevations. During about half an hour of observation, the number of available satellites was usually eight (though a few dropped to seven or rose to nine.) The stochastic model of GPS carrier phase observables can be specified by the elevation-dependent model described in Eqs. (13) and (14).

Table 1 Comparison of ambiguity success rates for IGICS with different elevations (0.54 m baseline, the approach given by Sect. 2.1)

We assumed that \( \sigma_{\rho ,i}^{{}} = 1000\sigma_{\phi ,i}^{{}} \); this empirical value worked well in each of the tests. To satisfy weighted constraint model (18), the standard derivation of measurement for inclination white noise was 0.05°.

As shown in Table 1, the success rates of the proposed method (Sect. 2.1) declined as baseline elevation increased. In fact, the approximations of Eqs. (7)–(9) decreased as baseline placement grew farther from the plane of the local geodetic horizon, thus impacting the correctness of the model. The size of the non-linearity error, which is dependent on the tilt angle of the baseline vector, may have also contributed to these results—as mentioned above, higher tilt angle results in larger non-linearity error. Table 1 also shows where the elevation difference of the GPS compass and MEMS-based inclinometer diverged as tilt angle increased. That said, for land vehicles, the baseline often approximately lies in the plane of the local geodetic horizon and inclinometer non-linearity error can be neglected, so the application would still guarantee high success rates in practice.

For the second experiment, another six static tests were performed with the same method described above but with different baseline lengths (pointed northeast) placed in the local geodetic horizon plane for each test. Table 2 summarizes the experimental success rates for different baseline lengths, which decreased as baseline length increased. Lengthier baseline likely worsened the success rate because it increased the variance components, as described in Eq. (13), and/or because the uncertainty of the horizontal baseline length constraint significantly increased for the weighted model (17). These results reflect the fact that shorter baseline is better suited to success rate in land vehicles, however, since heading and elevation accuracies decrease as baseline length decreases, a balance should be achieved for the baseline length between success rate and accuracy.

Table 2 Comparison of ambiguity success rates for IGICS with different baselines (the approach given by Sect. 2.1)

In order to make a proper comparison between three approaches discussed in Sect. 2, we conducted two additional experiments—one using the same data listed in Table 1 (results are shown in Table 3) and another designed to compare the success rates among approaches in a case with high elevation. A new group of data were collected with different baselines and a 45-° elevation angle (results are shown in Table 4.) In both Tables 3 and 4, “Approach I” denotes the method described in Sect. 2.1, “Approach II” the method from Sect. 2.2, which uses the horizontal constraint without inclinometer measurements (with the most likely correct candidate identified by penalizing those baseline solutions that result in large inclinations, and q of Eq. (23) set to 3,) and “Approach IIIA” and “Approach IIIB” both refer to the method described in Sect. 2.3 which exploits inclinometer measurements without imposing horizontal constraints; the step size was 0.002 radians for Approach IIIA and 0.001 radians for Approach IIIB.

Table 3 Success rate comparison between the three approaches presented in Sect. 2 for the same data used in Table 1
Table 4 Success rate comparison between the three approaches presented in Sect. 2 for a 45-° elevation with different baseline lengths

Tables 3 and 4 both show where Approach III had the highest success rates. Smaller step size helped improve the success rate, especially at longer baselines. For Approach II, the results obtained almost matched Approach I, but only at small elevations. For Approach I, complexity was lower than Approach III but success rates neared those of Approach III only at short baselines and small elevations. Approach III proved better suited than other approaches to various baseline lengths and elevations, but requires complex computation. Therefore, after taking into account both the high success rate and low computational burden, a combination of Approach I and Approach III is the most viable method for practical application.

Note that the elevation angle can be measured by inclinometer, although it may introduce bias at large elevation. Approaches I and III both use an inclinometer, so we can preset a threshold value according to baseline length to control the corresponding success rates of both approaches. As an example, we set the threshold as 6° for 0.54 m baseline (Table 1) and found that if the measured elevation of the inclinometer is larger than the threshold, Approach III improves the system’s reliability—if not, Approach I can be applied to reduce the computational burden. Because land vehicles typically operate at low elevation, large computational burden is usually avoidable.

4.3 IGICS dynamic experiment

We tested the proposed method’s ability to process actual data during a dynamic experiment with the IGICS. The experiment was conducted at the Civil Aviation University of China on June 27, 2015 (GPS week 1850; TOW: 532454–533186). The IGICS with 0.54 m baseline was mounted on a rotating platform with rotational velocity of about 3 deg/s, as shown in Fig. 4, then GPS observations were collected for about 14 min with a 1 Hz sampling rate. Figure 5 demonstrates the attitude results of the GPS compass as well as the elevation measured by the inclinometer. Results showed that the periodic heading coincided with the periodic motion of the IGICS. The elevation also presented a certain periodicity due to the undulating planes, however, the elevation fluctuation amplitude of the GPS compass was much larger than that of the inclinometer because the very short baseline resulted in low accuracy, but inclinometer accuracy is not related to baseline length or placement. In order to further verify the periodicity of the baseline vector, the resolved east, north, and up baseline components were as shown in Fig. 6 during the dynamic experiment. All baseline components were resolved by Eq. (23). The constellation of satellites in the experiment was as shown in Fig. 7, and each satellite was discernible by its PRN number. The results suggest that for practical application of small-sized land vehicles, the elevation accuracy of the inclinometer is higher than that of the GPS compass—but for larger tilt angle or longer baseline, the accuracy and precision of the GPS compass is higher.

Fig. 4
figure 4

Dynamic experiment platform for IGICS

Fig. 5
figure 5

Attitude results of dynamic experiment

Fig. 6
figure 6

Resolved east, north and up baseline components for the dynamic experiment

Fig. 7
figure 7

Constellation of satellites

5 Conclusions

In this study, we developed a single-frequency, single-epoch GPS attitude determination method based on inclinometer elevation measurements for land vehicle applications. The proposed method was designed to obtain high success rates by integrating MEMS-based inclinometer measurements into the GPS compass model. The baseline elevation measured by the inclinometer, in essence, provides a necessary constraint to assist the ambiguity resolution process; under this constraint, the original baseline vector is reduced to 2D from 3D space so the ambiguity fixed solution can be resolved by weighted constrained ILSs. Experimental results showed that high success rates were indeed achievable for land vehicles equipped with very short baselines, however, reliability decreases as baseline increases at larger elevations. We proposed a solution to this problem by exploiting inclinometer measurements based on elevation search without imposing horizontal constraints. In short, combining both approaches is a viable method for practical applications.