# An Improved Single-Epoch Attitude Determination Method for Low-Cost Single-Frequency GNSS Receivers
## 3 CLAMBDA-Search Model
### An Improved Method for Single-Frequency Single-Epoch Attitude Determination  
For vehicle three-antenna attitude determination applications, wrong ambiguity fixing is hard to avoid for one or two baselines with poor-quality data in the CLAMBDA method. In order to solve this problem and improve the applicability of low-cost receiver attitude determination, this paper proposes a Euler angle search and single degree of freedom in an unfixed direction method called CLAMBDA-search, which adopts the CLAMBDA method to fix the ambiguity and then the attitude parameters. The three-antenna layout is shown in Figure 1, and wrong fixing of baseline two is taken as an example. When baseline one is correctly fixed, and baseline two cannot be fixed or incorrectly fixed, we can apply the method proposed in this study. However, when baseline one fails to fix, that is, when baseline two becomes the primary baseline, the angle determination method is slightly different. We will discuss this situation later. Here, baseline one is set as the primary baseline. Given the baseline vector, as follows:  
\[ \begin{array}{l}\overset{-n}{b}_{1}=\ (e_{1}\ n_{1}\ u_{1}),\ \overset{b}{b}_{2}=\ (e_{2}\ n_{2}\ u_{2}),\\ b_{1}^{b}=\ (0\ l_{1}\ 0),\ \overset{b}{b}_{2}=\ (l_{2}\sin\ a\ l_{2}\cos\alpha\ 0) \end{array}  \tag{14}\]  
where \(\overset{\sim n}{b}_{1}\) is the fixed vector of baseline one in the local frame, \(\overset{b}{b}_{2}^{n}\) is the float vector of baseline two; and \(b_{1}^{b}\) and \(b_{2}^{b}\) are the known coordinates in the carrier coordinate system, which can be obtained in advance by some other technologies such as total station, static GNSS continuous observation, etc. According to the first two terms in (14), we can obtain the ambiguity-fixed yaw (\(\overset{\sim}{\psi}\)) and pitch (\(\overset{\sim}{\theta}\)), along with the ambiguity-float roll (\(\hat{\gamma}_{0}\)). So far, we have obtained two ambiguity-fixed angles and one remaining unfixed angle. With these three angles, we construct an Euler angle \(E_{0}=(\ \overset{\sim}{\psi}\ \ \ \overset{\sim}{\theta}\ \ \ \ \ \hat{\gamma}_{0}\ \ )\). We set a searching region for the roll (\(\hat{\gamma}_{0}\)) angle and carry out the searching process as follows:  
\[\hat{\gamma}_{0},\hat{\gamma}_{0}-\eta,\hat{\gamma}_{0}+\eta,\hat{\gamma}_{0}- 2\eta,\hat{\gamma}_{0}+2\eta,\cdots \tag{15}\]  
where \(\eta\) is the searching step. Obviously, the step size is a trade-off between searching accuracy and searching efficiency. We will discuss this topic in the next sub-section. This searching strategy was proposed independently, by [PERSON] and [PERSON] [PERSON] and [PERSON] (1999). For any value in the searching region, the corresponding direction cosine matrix is represented as \(C_{b}^{n}(k)\). Then, it is expressed as follows:  
\[\overset{\sim n}{b}_{2}(k)=C_{b}^{n}(k)b_{2}^{b} \tag{16}\]  
Substituting \(\overset{\sim n}{b}_{2}(k)\) into the observation equation, the observation equation can be expressed as follows:  
\[\mathit{q}_{DD}{}^{2}=\hat{N}_{DD}{}^{2}+G(\overset{\sim n}{b}_{2}(k))\overset {2\sim n}{b}_{2}(k)+\overset{\varphi}{p}_{DD}{}^{2} \tag{17}\]where \(\varphi_{DD}{}^{2}\) is the double-differenced carrier phase observation; \(\hat{N}_{DD}{}^{2}\) is the float ambiguity; \(G(\overset{\sim}{b}_{2}(k)){}^{2}\) is the construction matrix based on \(\overset{\sim}{b}_{2}^{n}(k)\); and \(v_{DD}^{p}{}^{2}\) is the residual vector. All the superscripts of two represent the second baseline of the corresponding part of the matrix. We can derive the sole fixed ambiguity \(\hat{N}_{DD}{}^{2}\) whose error \(\delta_{\hat{N}_{DD}{}^{2}}\) conforms to the same distribution of \(v_{DD}^{\varphi}{}^{2}\).