## 4 Experiment Setup and Result Analysis
### Result Analysis  
#### 4.2.1 Simulation Test  
Considering that the possibility of simultaneous multiple satellite faults in real life is very small, so only one satellite is injected with fault in the simulation test, and the fault will persist until the end of simulation. The injected faults are classified into two types: one is the gradual fault with the abnormal values increasing gradually, and the other is the abrupt fault with a step error appearing at a certain time. The measurements are the only input of navigation filter, thus the appropriate object of fault injection is pseudo-range error, which is a component of the measurements. GPS data are collected outdoors in a static situation. A ramp error of slope 0.2 m/s is added in the pseudo-range error of satellite 14 to simulate the gradual fault. The start time of fault injection is 150 s. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Parameter Name** & **Accelerometer** & **Gyro** \\ \hline bias error (in-run) & \(\pm\)40 ugal & 100 \({}^{\circ}\)/h \\ bias error (initial) & \(\pm\)2 mgal & \(\pm\)0.25 \({}^{\circ}\)/s \\ scale factor stability & \(\pm\)0.05\% & \(\pm\)0.05\% \\ output frequency & 100 Hz & 100 Hz \\ sampling rate & 30 kHz & 30 kHz \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Parameters of Micro-Electro-Mechanical System (MEMS). Figure 6: Experimental equipment. In Figure 6(a), position errors in a three-dimensional direction are within the normal range before fault injection. However, after 150 s, position errors gradually deviate, and the deviations from the correct position are getting larger and larger. However, in Figure 6(b), even after a long time, there are not obvious deviations in the position errors after fault injection. The results show that, under the adjustment of the expansion factor, the adverse effect of fault information on the positioning results is basically eliminated. The variances of position error \(\delta p\left(\delta p=\sqrt{\delta x^{2}+\delta y^{2}+\delta z^{2}}\right)\) corresponding to different methods are shown in Table 3. The function Huber only has a configurable parameter \(d\), which is a constant ranging from 1.0 to 1.5. For the robust algorithm based on Huber, different variances are obtained by changing the value of parameter \(d\), indicating that the parameter value should be set carefully. Moreover, the parameter value is limited to a small range, which also restricts the performance of Huber. However, the robust algorithm based on CNN is more flexible without the limitation of parameter range. In addition, the proposed robust algorithm is proved to be effective by the result that its variance is close to that without fault. However, CNN has a complex structure and many convolutional operations, so its computation is time-consuming. Both the robust algorithm based on CNN and Huber are tested on a desktop computer equipped with the CPU Intel i5-2400. When processing the same dataset with size of 2 \(\times\) 40,000, CNN spends 36.21 s, but Huber spends 0.85 s. Moreover, due to processing one data block at a time, CNN may be unable to respond to data changes in time. The larger the data block, the more data processing time it takes. Thus, CNN is not suitable for the applications with high real-time requirement. Figure 7(a) shows the code phase errors of eight receiving channels. One satellite corresponds to one receiving channel, and satellite 14 corresponds to channel 2. Starting from 150 s, different deviations gradually occur in the code phase errors of all eight satellites. This phenomenon shows that the fault information of channel 2 has spread to the other receiving channels. Considering the results \begin{table}
\begin{tabular}{c c} \hline \hline
**Method** & **Variance (m)** \\ \hline No fault & 1.802 \\ CNN & 2.070 \\ Huber (\(d=1\)) & 2.517 \\ Huber (\(d=1.25\)) & 2.358 \\ Huber (\(d=1.5\)) & 2.832 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Variance of position error corresponding to gradual fault.