## 3 Methodology
### Visual Odometry
Within each zone, a Transverse Mercator projection is used. This means that the surface of the earth is projected onto a cylinder that is tangent along a meridian within the zone. UTM coordinates are typically referenced to a specific geodetic datum, such as WGS84 (World Geodetic System 1984), which provides a consistent reference surface for mapping. In the UTM system, locations on the surface of the earth are specified using easting and  
Figure 1:6 Elevation map used for this study (Figure 1). Geodetic reference data: the datum corresponds to ITRF92 epoch 1988.0, GRS80 ellipsoid, geographic coordinates. northing coordinates, measured in meters. UTM provides relatively high accuracy for mapping and navigation within a specific zone. However, the accuracy may decrease near the edges of zones due to distortion introduced by the projection. For a more detailed explanation about the UTM coordinate system, refer to [54; 55; 56; 57]. The displacement of the UAV in meters is given by  
\[\left[ \begin{array}{c}d_{x}^{(UTM)}\\ d_{y}^{(UTM)}\end{array} \right]=\left[ \begin{array}{c}sd^{(px)}\cos(\psi)\\ sd^{(px)}\sin(\psi)\end{array} \right] \tag{8}\]  
where \(d_{x}^{(UTM)}\) and \(d_{y}^{(UTM)}\) represent the displacement in meters, and \(d^{(px)}\) is the displacement between the point clouds in pixel units. \(\psi\) is the yaw angle from the magnetometer of the IMU, and \(s\) is the scale. Once we have the last real latitude/longitude coordinates in UTM (meters), we can add the displacement of the point clouds (in \(x\) and \(y\) direction), which have been already transformed into meters. Afterwards, the new UTM coordinate is converted back into latitude/longitude coordinates. Up to this point, there are several issues raised. The first one is that the scale is calculated based on the altitude of the UAV relative to the terrain. Depending on the resolution of the elevation map and the resolution of the barometer, this scale may be computed incorrectly. If the scale is incorrect, the conversion between pixels and meters will contain an error, leading to the new coordinates being calculated based on this inaccurate scale. The second problem is that this sequential algorithm relies on the previous location. If there was an error in the previous calculation, then we will be reading an incorrect elevation from the elevation map. If this reading is incorrect, then the scale for the next iteration will also have an error. In addition, if there are few keypoints, it is possible that we are computing the displacement based on some incorrect matches. In case the number of keypoints does not exceed a threshold, we will read the new yaw \(\psi\) from the magnetometer of the IMU, which is the distance between point clouds \(d^{(px)}\) that we obtained in the previous iteration (Figure 3). Figure 7 shows the behavior of the algorithm using different values of \(\delta\) to compute (6). As expected, due to the irregularity of the terrain involved in the mission of more than 17 km, there is no single optimal value for the constant \(\delta\) that is suitable for all flight segments. In Figure 7, it can be seen that \(\delta\) only escalates the same shape, which does not correspond with the actual GPS reading.