# Satellite-Based Localization of IoT Devices Using Joint Doppler and Angle-of-Arrival Estimation
## 6 Experiment and Results
### Localization Simulation and Performance  
In the simulation, we studied low-Earth orbit satellites in a Walker-star constellation at an altitude of 833 km. The constellation was modeled using the _Satellite Communications toolbox_ by MATLAB, with orbits created as indicated in Section 3.1. The simulated period is one complete orbit. We extracted the true AoA from the geometric model, introduced a random error to represent the AoA measurements, and computed the true Doppler measurements by differentiating the geometric slant range and introduced a random error accordingly. Furthermore, Figure 15 shows an example snapshot of the constellation as seen by a ground IoT device; the satellites that are in use for localization is labeled as a green dot, where the elevation angles threshold of \(15^{\circ}\) is used. This threshold is set to ensure the emulation of a practical scenario, where near-horizon signals would typically incur much higher atmospheric absorption and shadowing [39]. Furthermore, we demonstrate the beginning and ending points of the contributing satellite in the localization as depicted in Figure 16.  
Figure 14: Block diagram of Doppler measurements and the sources of error. To visualize that the derived joint likelihood function has a maximum value at the actual position of the ground IoT device, we plot the log likelihood function as shown in Figure 17. This is achieved by computing the likelihood for all of the points ranging from the latitude of \(-39.8^{\circ}\) to \(-25^{\circ}\) and longitude of \(143.5^{\circ}\) to \(149.5^{\circ}\). From the plot, it is evident that the derived likelihood function has a high likelihood at the ground truth. It is important to note that in the actual localization process presented in the next subsection,  
Figure 16: Satellite orbits that are above the elevation threshold and the corresponding location at the beginning and end of the utilized segment for signal measurements in the localization algorithm. Figure 15: An example snapshot of the contributing satellites that are above the \(15^{\circ}\) elevation threshold with respect to a ground IoT device. The collected measurements from these satellites are used in the localization. Non-contributing satellites that are below the threshold are marked by red triangles. we used the stochastic optimizer rather than calculating the likelihood by brute force, as the latter is much more computationally costly. We applied a stochastic optimizer, namely simulated annealing (SA), to search for a state that efficiently maximizes the likelihood function. SA was chosen due to its performance compared to the other optimizers such as the genetic algorithm (GA), surrogate optimizer (SO), and particle swarm (PSW). The SA optimizer is developed from the physical process of changing material structure by firstly heating the material to its annealing temperature then allowing it to cool gradually. The physical process attempts to achieve the minimum possible internal energy naturally. At high temperatures, the algorithm explores the solution space extensively, thus allowing for uphill moves of the cost function gradient. As the temperature decreases, the algorithm becomes more selective. It starts favoring downhill moves, but still allows for occasional uphill jumps with a certain probability [40]. The SA optimizer follows this physical process to optimize the parameters in a model, which in our case, minimizes the cost function. In contrast, the PSW optimizer uses a swarm of particles to explore the solution space where each particle represents a potential solution. Each particle adjusts its position based on its own experience and the collective knowledge of the swarm. However, it is crucial to tune the parameters such as inertia weight, cognitive and social coefficients, and swarm size to obtain an effective PSW optimizer [41]. Due to this, PSW may face challenges like premature convergence where the algorithm is stuck in a local optima.