# Fault Detection of Resilient Navigation System Based on GNSS Pseudo-Range Measurement
## 2 Methods
### Fault Detection and Isolation Method  
It is urgent to improve the fault detection and isolation effect and location accuracy of autonomous vehicles under interference or fluctuations. We need to detect sensor faults in a timely way and prevent the measurement information of fault navigation sensors from polluting the state of a navigation system in the fault environment. With the development of GNSS receiver autonomous integrity monitoring (RAIM), the multiple solution separation (MSS) method effectively extends the concept of \"RAIM\" to the INS/GNSS integrated navigation system. The Chi-square method is used as the basic detection method in this paper. The linear discrete time-varying system model can be described as  
\[\left\{ \begin{array}{c}X_{k}=f(X_{k-1})+W_{k-1}\\ Z_{k}=h(X_{k})+V_{k}\end{array} \right. \tag{9}\]  
where \(X_{k}\) is the states vector. \(f()\) and \(h()\) are the states functions and measurement model functions. \(Z_{k}\) represents the measurement vector. \(W_{k}\) is the process noise, and \(V_{k}\) is the measurement noise. They are all assumed to be zero-mean Gaussian white noise. State m-step prediction equation is  
\[\hat{X}_{k/k-m}=\prod_{j=k-m}^{k-1}f_{j}(\hat{X}_{k-\mathrm{m}}) \tag{10}\]  
The residual vector is  
\[r_{k}=Z_{k}-h(\hat{X}_{k/k-m}) \tag{11}\]  
where \(r_{k}\) is the residual. Furthermore, the covariance of \(r_{k}\) is  
\[A_{k}=H_{k}P_{k/k-m}H_{k}^{\mathrm{T}}+R_{k} \tag{12}\]  
where \(H_{k}\) is the Jacobian matrix of measurement equation. \(R_{k}\) is the variance matrix of measurement noise. \(P_{k|k-m}\) is the m step prediction mean square error equation. It is recursively obtained from the prediction mean square error matrix in the previous step, as follows  
\[P_{k/k-m}=\Phi_{k/k-1}P_{k-1/k-m}\Phi_{k/k-1}^{\mathrm{T}}+Q_{k-1} \tag{13}\]  
where \(\Phi_{k/k-1}\) is the Jacobian matrix of state equation, and \(\frac{\partial f(\hat{X}_{k-1})}{\partial X}=\Phi_{k/k-1}\). \(Q_{k-1}\) is the variance matrix of system noise. Therefore, whether the system fails can be determined by testing the residual \(r_{k}\). Then, the fault detection function is  
\[\lambda(k)=r_{k}^{\mathrm{T}}A_{k}^{-1}r_{k} \tag{14}\]  
The filter framework of the proposed method is shown as MSS in Figure 3. The main filter is used to process all received satellite pseudo-range data. After the fault is detected by the main filter, each sub-filter analyzes and processes the data, deducting the pseudo-range of a satellite. For the framework mentioned above, the main filter \(F_{00}\) detects fault based on all satellite pseudo-range measurements. The sub-filter \(F_{00}\) detects fault based on all satellite pseudo-range measurements except the \(n\)th satellite pseudo-range. If \(n\)th satellite fails, without removing the pseudo-range of the \(n\)th satellite, the fusion result of the main filter will be polluted. The position, velocity, attitude, gyro random constant, gyro random noise, accelerometer random noise, pseudo-range and pseudo-range rate are all important in aviation applications. Therefore, by comparing the fault detection results of the main filter and the sub-filter, it can be decided which satellite has a fault in the pseudo-range. \[d\hat{\lambda}_{0n}^{+}(k)=\hat{\lambda}_{00}^{+}(k)-\hat{\lambda}_{0n}^{+}(k) \tag{15}\]  
\(\hat{\lambda}_{00}^{+}(k)\) is the result of the main fault detection filter, and \(\hat{\lambda}_{0n}^{+}(k)\) is the fault detection result of the sub-filter \(F_{00}\). It can be determined whether there is a fault by applying the following hypothesis test  
\[\left\{ \begin{array}{ll}H_{0},\text{no failure}&:\forall n\in\{1,N\},\big{|} \big{|}d\lambda^{+}_{0n}(k)\big{|}\big{|}<D_{0n}\\ H_{1},\text{ failure detection}&:\exists n\in\{1,N\},\ \big{|}\big{|}d\lambda^{+}_{0n}(k) \big{|}\big{|}\geq D_{0n}\end{array} \right. \tag{16}\]  
where \(D_{0n}\) is a detection threshold that is related to the false alarm probability \(P_{fa}\). The effect of FDI is determined by the preset threshold.