# Integrated GNSS/IMU-Gyrocompass with Rotating IMU. Development and Test Results
## 4 Methods
### Filtering Algorithms Used for GNSS/IMU Gyrocompass Measurements  
Below we briefly describe the filtering algorithms used in GNSS/IMU gyrocompass referring to the block diagram presented in Figure 5. INS comprised in GNSS/IMU gyrocompass (block INS in Figure 5) uses rotation angular velocity \(\mathbf{\omega_{s}^{i,s}}\) and specific force \(\mathbf{f_{s}}\) to generate the geographic coordinates \(\mathbf{p}=\left(\varphi,\lambda,h\right)^{T}\), projections of linear velocity with respect to e-frame on n-frame \(\mathbf{V_{n}^{e}}=\left[V_{E},V_{N},V_{U}\right]^{T}\), and attitude of b-frame with respect to n-frame. Euler-Krylov angles: heading \(K\), roll \(\theta\) and pitch \(\psi\) are used as attitude parameters. Equations of INS operation are detailed in references [5; 7; 9]. To start the INS algorithms at the moment of GNSS/IMU gyrocompass turn-on, navigation solution from GNSS receivers can be used if the sufficient number of navigation satellites is observed (minimum 4 satellites of one GNSS or 5 satellites of two different GNSS). If satellite data are available, the state vector including INS errors (\(x_{INS}\)), components of inertial sensors' error models (\(x_{IMU}\)), and GNSS receiver errors (\(x_{GNSS}\)) is estimated. In this case the system state vector is given by  
\[ \begin{gathered} x=\left[\begin{array}{c}x_{INS}\\ x_{IMU}\\ x_{GNSS}\end{array}\right]\\ x_{INS}=\left[\begin{array}{cc}\alpha&\beta&\gamma&\delta\mathbf{V^{v}_{n} }^{T}&\delta\mathbf{p^{T}}\end{array}\right]^{T},\\ x_{IMU}=\left[\begin{array}{cc}\delta\mathbf{f_{0}}^{T}&\delta\mathbf{\omega_{ 0}}^{T}&\delta S_{gZ_{s}}&A_{X_{s}}&B_{X_{s}}&A_{Y_{s}}&B_{Y_{s}}\end{array} \right]^{T},\\ x_{GNSS}=\left[\delta p^{j},\delta p^{j},K^{j},\delta Cf^{j}\right]^{T}. \end{gathered}  \tag{8}\]  
Parameters generated by INS and ephemeris data are used to generate the calculated pseudorange \(\rho^{iINS}\), radial velocity \(\dot{\rho}^{iINS}\) and the first phase difference in length units for each observed i-th satellite in rotating frame \(X_{s}Y_{s}Z_{s}\)--\(L^{i}\Delta\phi^{iINS}\) determined as  
\[L^{i}\Delta\varphi^{iINS}=\left|\overrightarrow{B}\right|(\mathbf{s^{i}_{n}})^ {T}(\mathbf{C_{n,b}}\mathbf{C_{b,s}}\mathbf{b_{s}}), \tag{9}\]  
where \(L^{i}\) is the carrier wavelength; \(\mathbf{s^{i}_{n}}=\left( \begin{array}{cc}s^{i}_{E}&s^{i}_{N}&s^{i}_{UL} \end{array} \right)^{T}\) is the unit vector setting the direction to the i-th satellite in n-frame and its components; \(\mathbf{b_{s}}=\left( \begin{array}{cc}b_{X_{S}}&b_{Y_{S}}&b_{Z_{S}}\end{array}  \right)^{T}\) is the unit vector of antenna baseline in s-frame; \(\mathbf{C_{n,b}}\) is the transformation matrix from b-frame to n-frame and containing heading, pitch, and roll data; \(\mathbf{C_{b,s}}\) is the transformation matrix from s-frame to b-frame and calculated by the current rotation angle \(u\). The filtering measurements are generated as differences \(z_{pi},z_{\dot{\rho}i},z_{\Delta\phi i}\) between the calculated \(\rho^{iINS}\); \(\dot{\rho}^{iINS}\), \(L^{i}\Delta\phi^{iINS}\) and measured \(\rho^{iGNSS}\), \(\dot{\rho}^{iGNSS}\), \(L^{i}\Delta\phi^{iGNSS}\)  
\[z_{pi}=\rho^{iINS}-\rho^{iGNSS}, \tag{10}\]  
Figure 5: Block diagram of GNSS/IMU gyrocompass algorithms.