# Multi-Sensor Fusion for Aerial Robots in Industrial GNSS-Denied Environments
## 3 Results
### Flight Test  
Out of the intensive validation campaign that was carried out at the indoor testbed, in this section, we present the results from one of the most relevant flights, to show the performance of the localization algorithm. Since the robot odometry was beyond the scope of our work, we decided to use the ground truth localization but degraded it by adding a drift in position (see Figure 7-up), in order to highlight the benefits of our algorithm. In this way, it is possible to verify that the algorithm compensates for this drift and can estimate the correct pose of the robot thanks to the robust multi-sensor fusion.  
To check the possible variants of our multi-sensor fusion approach, several possibilities have been considered by modifying the \(\alpha\) parameter defined in Section 2. If this parameter is zero, only UWB measurements are taken into account, while if the value is one, only 3D  
Figure 5: Three-dimensional map of the indoor testbed at CATEC.  
Table 4 shows the computation load of the onboard i7 processor at different times during the test flight. As expected, there is an increase when using 500 particles, but this is not proportional to the additional amount of particles. To visually observe the progress of the computational load along the evolution of the algorithm, Figure 10 is provided.  
The results show that our proposed algorithm can accurately locate an aerial robot in a GNSS-denied environment, even by introducing drift in the input odometry. The expected results were that the higher the number of particles, the better the results in terms of accuracy. According to Tables 2 and 3, this would not be entirely true. Such tables take into account the whole flight, and at the beginning of the flight, the particle cloud is scattered; hence, errors are higher. The algorithm converges faster to the true pose when more particles are used, as can be seen in Figures 8 and 9. It can be noted that the errors are smaller by the end of the flight, especially in the \(Z\) axis.  
Figure 7: (**a**) Input odometry with artificial drift. (**b**) Results provided by the algorithm in XY.  
\begin{table}
\begin{tabular}{c c c c} \hline \hline  & \multicolumn{3}{c}{**Computational Load**} \\ \cline{2-3}
**Time (s)** & **100 Particles (\%)** & **500 Particles (\%)** & **Increase (\%)** \\ \hline
5 & 16.1875 & 18.9625 & 2.775 \\
10 & 15.6125 & 18.1625 & 2.55 \\
15 & 16.8625 & 18.1 & 1.2375 \\
20 & 17.325 & 18.175 & 0.85 \\
25 & 18.1625 & 19.1125 & 0.95 \\ \hline \hline \end{tabular}
\end{table}
Table 4: Computational load with \(\alpha=0.5\) during the test execution  
Figure 8: Error plots using 100 particles: (a) errors in X, (b) errors in Y, (c) errors in Z, (d) errors in yaw.  
Therefore, it is worth comparing it with the algorithm proposed in [25]. For this reason, both Table 5 with the RMS values and the corresponding Figure 11 with the flight  
Figure 10: Computational load graph.  
Figure 9: Error plots using 500 particles: **(a)** errors in X, **(b)** errors in Y, **(c)** errors in Z, **(d)** errors in yaw.  
performed are attached. As can be observed, there is an improvement in the location in all axes and in the yaw.