Full text
Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Máster Máster en Ingeniería Aeronáutica Design of a VOR-based navigation application Autor: Francisco Castro Castro Tutor: Joaquín Granado Romero Dpto. Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2024
Trabajo Fin de Máster Máster en Ingeniería Aeronáutica Design of a VOR-based navigation application Autor: Francisco Castro Castro Tutor: Joaquín Granado Romero Profesor Titular Dpto. Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2024
Trabajo Fin de Máster: Design of a VOR-based navigation application Autor: Francisco Castro Castro Tutor: Joaquín Granado Romero El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha:
Acknowledgments F irst and foremost, I would like to express my gratitude to my tutor, Joaquín Granado Romero. It has been a pleasure to work with him again following the development of my Bachelor’s Thesis. Without his support and guidance, I would not have achieved the results of this project. I am also grateful to him for introducing me to the world of signals and Python development, which will be of great help in my future as an engineer. I would also like to thank my family for their constant support, from the moment I decided to start my degree and continue with my master’s studies. Their help when I needed time to study or complete assignments, as well as their support during difficult times and celebrations during happy moments, has helped me get to where I am today. I also want to thank my friends who have been by my side throughout my degree and master’s years, always supporting and helping me. I must also express my appreciation to the friends I made in college, as together we have achieved our dreams, and I will never forget them. Thank you for being with me, for helping each other when we needed it and for the great moments during meals, group works, and the times between classes. Furthermore, I would like to thank all the professors at ETSI who have taught me at some point. I have taken something valuable from every course, and thanks to their dedication, I can be recognized as a qualified engineer from one of the most prestigious engineering schools. Finally, I want to express my deepest gratitude to my partner, who has always been by my side when I had to study and complete assignments, especially during the realization of this Master’s final project. I know that both she, as well as my family and friends, are excited about my completion of the master’s program, which has motivated me to keep going and reach this point. Thank you all from the bottom of my heart. Francisco Castro Castro Sevilla, 2024 I
Resumen Título Diseño de una aplicación de navegación basada en VOR. Resumen del trabajo Este trabajo presenta el desarrollo de una aplicación basada en Python que integra dos sistemas de ayuda a la navegación, VOR (Very High Frequency Omnidirectional Range) y GPS, para estimar el ángulo de rumbo del usuario o aeronave con respecto a cualquier estación VOR en España, según lo registrado en la Publicación de Información Aeronáutica (AIP). Aunque los sistemas VOR han sido fundamentales para la navegación aérea durante décadas, proporcionando información radial confiable con respecto a estaciones en tierra, el GPS se ha convertido en la tecnología predominante para la precisión posicional debido a su cobertura global y precisión. La aplicación desarrollada utiliza una interfaz gráfica construida con Tkinter, diseñada para ser fácil de usar, permitiendo a los usuarios ingresar parámetros, seleccionar la fuente de datos de navegación (VOR o GPS), y visualizar estimaciones del rumbo en tiempo real. La aplicación soporta varios modos, incluyendo un modo de depuración para verificar el procesamiento de señales y un modo en tiempo real para su uso en entornos operacionales. El algoritmo de procesamiento de señales VOR, previamente desarrollado en el proyecto "Procesado y Análisis de Señales de Navegación VOR", ha sido integrado en esta aplicación y mejorado para aumentar su precisión. Además, se ha implementado un nuevo algoritmo para la estimación del rumbo basado en GPS. Para optimizar la fusión de datos de ambos sistemas, se ha introducido un filtro de Kalman, que refina las estimaciones del rumbo al reducir el efecto del ruido y priorizar los datos más confiables del GPS, manteniendo los beneficios del VOR como redundancia. Las pruebas de campo de la aplicación demostraron que los resultados basados en GPS lograron una alta precisión, con errores angulares alrededor de décimas de grado, superando incluso los valores cartográficos de referencia utilizados para la validación. En contraste, el rendimiento en el modo sólo VOR o en tiempo real sin el filtro de Kalman fue menos confiable, particularmente debido a las limitaciones del dispositivo RTL-SDR utilizado para la captura de señales. A pesar de estas limitaciones, el uso del VOR sigue siendo relevante como respaldo en caso de interferencias o interrupciones de la señal GPS, ofreciendo un nivel de precisión aceptable. Este trabajo resalta la importancia de combinar la tecnología moderna de GPS con los sistemas tradicionales de VOR y presenta una herramienta versátil para futuras aplicaciones de navegación aeronáutica. Palabras clave VOR, GPS, RTL-SDR, Filtro de Kalman, Python, Aplicación, Tkinter, Desarrollo, Programación, Rumbo. III
XContents 6 Application 37 6.1 VOR Signal Receiver model 37 6.1.1 AM Signal Demodulation 38 6.1.2 FM Signal Demodulation 39 FM Demodulator - PLL 41 6.1.3 Estimated Phase Calculation 42 Cross-Correlation 42 6.2 GPS Signal Receiver Algorithm 44 6.2.1 Process of Reading GPS Coordinates 44 6.2.2 Bearing Calculation between Two Geographical Points 44 6.3 Kalman filter implementation 46 6.4 Graphical interface 47 6.4.1 Tkinter: The GUI Toolkit for Python 47 Core Functionalities of Tkinter 47 6.4.2 Tab Structure and Functionality 48 6.4.3 Interface Components 48 6.4.4 Interaction with Detection Functions 51 VOR Signal Detection 51 GPS-Based Bearing Detection 51 6.4.5 Mode Management 52 6.5 Debug mode results 52 6.5.1 Results with ideal signals 52 6.5.2 Results with Real Signals 55 6.6 Real time mode results 59 6.6.1 Setup and Test Configuration 59 6.6.2 Tests from Point 1: Carmona 60 Results Using Only GPS Mode 62 Results Using Only RTL-SDR Mode and Real-time No KF Mode 63 Results Using Real-time with KF Mode 64 6.6.3 Tests from Point 2: Parque Logístico e Industrial de Carmona 65 Results using the Only GPS mode 68 Results using the Only RTL-SDR mode 71 Results using the Real time no KF mode 73 Results using the Real time with KF mode 76 7 Conclusions and Future Directions 83 7.1 Conclusions 83 7.2 Future Directions 83 Appendix A History results 85 A.1 Results with ideal signal - Bearing of 0 degrees - Debug mode 85 A.2 Results with ideal signal - Bearing of 90 degrees - Debug mode 86 A.3 Results with ideal signal - Bearing from 20 to 50 degrees - Debug mode 86 A.4 Results with ideal signal - Bearing from 100 to 300 degrees - Debug mode 88 A.5 Results with real signal - Bearing of 311.22 degrees - Debug mode 90 A.6 Results with real signal - Bearing of 304.59 degrees - Debug mode 94 A.7 Results using Only RTL-SDR mode - Carmona Setup 97 A.8 Results using Real-time with KF mode - Carmona Setup 97 A.9 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 98 A.10 Results with the Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area 100 A.11 Results with the Real time no KF mode - Point 1 - Setup of the Carmona industrial area 100 A.12 Results with the Real time no KF mode - Point 2 - Setup of the Carmona industrial area 101 A.13 Results with the Real time no KF mode - Points 1 to 4 - Setup of the Carmona industrial area 102 A.14 Results with the Real time with KF mode - Point 1 - Setup of the Carmona industrial area 104
Contents XI A.15 Results with the Real time with KF mode - Point 2 - Setup of the Carmona industrial area 105 A.16 Results with the Real time with KF mode - Point 2 to 3 - Setup of the Carmona industrial area 105 A.17 Results with the Real time with KF mode - Point 3 to 1 - Setup of the Carmona industrial area 106 List of Figures 109 List of Tables 111 List of Codes 113 Bibliography 115
Acronyms ACC Accumulator ADC Analog-to-Digital Converter AGL Above Ground Level AIP Aeronautical Information Publication AM Amplitude-modulated API Application Programming Interface AT H Above Threshold Height BPF Band-Pass Filter BPSK Binary Phase Shift Keying C/ACoarse/Acquisition CDI Course Deviation Indicator CDMA Code Division Multiple Access COFDM Coded Orthogonal Frequency Division Multiplexing DME Distance Measuring Equipment DSP Digital Signal Processing DV B −TDigital Video Broadcasting – Terrestrial ECEF Earth-Centered Earth-Fixed ECI Earth-Centered Inertial EKF Extended Kalman Filter FM Frequency-modulated ft Feet GDOP Geometric Dilution of Precision GNSS Global Navigation Satellite System GPS Global Positioning System GUI Graphical User Interface HSI Horizontal Situation Indicator Hz Hertz I/QIn-phase and Quadrature IDE Integrated Development Environment IFR Instrument Flight Rules ILS Instrumental Landing System km Kilometer LNA Low Noise Amplifier LPF Low-Pass Filter NAV STAR Navigation Satellite Timing and Ranging NCO Numerically-Controlled Oscillator NM Nautical Miles NVCO Numerical Voltage Controlled Oscillator OBS Omni Bearing Selector OACI International Civil Aviation Organization (ICAO) PLL Phase-Locked Loop XIII
XIV Contents PpC Periods per Capture PRN Pseudo-Random Noise RF Radio Frequencies ROM Read-Only Memory rps Revolutions Per Second SBO SideBands Only SDR Software Defined Radio SMA SubMiniature Version A Connector SpP Samples per Period SpC Samples per Capture SSV Standard Service Volumes TACAN Tactical Air Navigation THD Total Harmonic Distortion TOA Time of Arrival USB Universal Serial Bus UKF Unscented Kalman Filter UTC Universal Coordinated Time VCO Voltage Controlled Oscillator VHF Very High Frequency VOR VHF Omnidirectional Radio Range WGS World Geodetic System
1 Introduction and Objectives 1.1 Introduction T he use of navigation aid systems plays a crucial role in aeronautical operations by providing accurate positional and directional information to aircraft. One of the most significant navigation aids is the VOR system, which stands for Very High Frequency Omnidirectional Range. VOR stations broadcast signals that allow aircraft to determine their radial angle or bearing relative to the station, thus enabling precise navigation along predefined routes. Although VOR systems are gradually being replaced by GNSS (Global Navigation Satellite Systems) due to their increasing precision, they remain a vital component of instrument flight rules (IFR) operations. VOR systems operate in the VHF (Very High Frequency) band, specifically within the 108 to 118 MHz frequency range, and are considered short-range navigation aids, offering a maximum effective range of approximately 200 nautical miles. Their importance in aviation is substantial, as they provide reliable backup navigation in case of GNSS outages or failures. However, accurately capturing and processing VOR signals requires specialized equipment and algorithms. On the other hand, GPS is now the primary system used in both civil and military aviation for global navigation. GPS provides accurate positional data by triangulating signals from satellites, enabling precise determination of location and heading. While GPS is highly precise, it is susceptible to certain environmental factors such as signal obstructions or jamming, making it necessary to integrate alternative navigation systems like VOR to ensure consistent performance. This project involves the development of a Python-based application that integrates both VOR and GPS to estimate the bearing of a user or aircraft relative to any VOR station located in Spain, as registered in the Aeronautical Information Publication (AIP). The application combines the use of VOR and GPS individually and employs a Kalman filter to optimize the bearing estimation when both sources are available. The Kalman filter is a powerful tool for fusing noisy measurements, allowing for the refinement of data and improving the reliability of the bearing estimation. This work aims to build on previous developments, particularly the algorithm outlined in the project titled "Processing and Analysis of VOR Navigation Signals" [9], where the foundation for VOR signal processing was established. The integration of GPS data, along with the application of the Kalman filter, offers the potential for more accurate and robust bearing estimates. 1.2 Objectives The main objectives of this project are defined as follows: 1. Development of a graphical user interface for the application: The primary task is to design and implement a user-friendly graphical interface in Python, using libraries such as Tkinter. This interface will allow users to input their parameters, choose the signal source (VOR or GPS), and view the bearing results in real-time. This application is developed for Windows, Mac, and Linux, as these systems can access some of the libraries that the Python code relies on. 1
2Chapter 1. Introduction and Objectives 2. VOR algorithm integration and improvement: The VOR signal processing algorithm developed in the previous work [9] will be integrated into the new Python application. The algorithm will be thoroughly examined and improved where necessary to enhance its accuracy and computational efficiency. 3. GPS-based bearing calculation algorithm: A new algorithm will be developed to estimate the bearing using GPS coordinates. By knowing the location of the user and the target VOR station, the algorithm will calculate the bearing based on geographic coordinates, considering the Earth’s curvature and other relevant factors. 4. Kalman filter for optimal signal fusion: A Kalman filter will be designed and implemented to optimally combine the VOR and GPS signals. The goal is to leverage the strengths of each system: the precision of GPS and the reliability of VOR in certain conditions. The filter will reduce the effect of noise in the measurements and provide a more stable bearing estimate. 5. Testing in debug mode: The application will initially be tested in a debug mode to ensure that the VOR signal demodulation and processing are functioning correctly. 6. Field tests: The final objective is to conduct field tests by collecting data from various locations and comparing the real-time performance of the application. These tests will assess the accuracy of the bearing estimates in real-world scenarios, evaluating the application’s reliability under different conditions. By achieving these objectives, this work aims to provide a robust tool for aviation navigation that can function effectively in various environments, combining traditional VOR systems with modern GPS technology. The application’s functions are diverse, extending from users who seek to orient themselves using a combination of GPS/VOR signals to aeronautical enthusiasts who aim to obtain the VOR signal. Additionally, the application is applicable in more realistic field scenarios, such as utilizing a part of the code in drones or small aircrafts with embedded Linux or Windows OS to determine the bearing angle and navigate between VOR stations and a destination.
2 VOR System T he VOR is a navigational radio aid that allows the receiver to accurately determine the angle or phase relative to magnetic north (azimuth or bearing angle) between the tuned VOR station and the VOR signal reception device itself. It is one of the most widely used navigation aid systems, as it enables the definition of routes or airways for aircraft to organize and follow, allowing for a safer and more organized use of airspace. It was developed in 1937 in the United States, and its first implementation was in 1946, becoming the standard navigation system since then [29]. There are many types of VOR installations developed and used over the years. In the context of the technology they use to generate information, there are Conventional VORs (CVOR) and Doppler VORs (DVOR), which will be detailed in Section 2.2. On the other hand, they can be classified based on the volume of airspace that can cover, known as service volume. According to Federal Aviation Administration Aeronautical Information Manual (FAA AIM), there are five standard service volumes (SSV), defined by the following specifications [8] [5]: SSV Class Designator Dimensions Figures T (terminal) From 1000 ft (305 m) above ground level (AGL) up to and including 12000 ft (3660 m) AGL at radial distances out to 25 NM (46 km). L (low altitude) From 1000 ft (305 m) AGL up to and including 18000 ft (5486 m) AGL at radial distances out to 40 NM (74 km). 3
4Chapter 2. VOR System SSV Class Designator Dimensions Figures H (high altitude) From 1000 ft (305 m) AGL up to and including 14500 ft (4420 m) AGL at radial distances out to 40 NM (74 km). From 14500 ft AGL up to and including 18000 ft (5486 m) at radial distances out to 100 NM (185 km). From 18000 ft (5486 m) AGL up to and including 45000 ft (13716 m) AGL at radial distances out to 130 NM (241 km). From 45000 ft (13716 m) AGL up to and including 60000 ft (18288 m) at radial distances out to 100 NM (185 km). VL (VOR Low) From 1000 ft (305 m) Above Threshold Height (ATH) up to but not including 5000 ft (1524 m) ATH at radial distances out to 40 NM (74 km). From 5000 ft ATH up to but not including 18000 ft (5486 m) ATH at radial distances out to 70 NM (130 km). Not available VH (VOR High) From 1000 ft (305 m) ATH up to but not including 5000 ft (1524 m) ATH at radial distances out to 40 NM (74 km). From 5000 ft ATH up to but not including 14500 ft (4420 m) ATH at radial distances out to 70 NM (130 km). From 14500 ft ATH up to and including 60000 ft (18288 m) at radial distances out to 100 NM (185 km). From 18000 ft (5486 m) ATH up to and including 45000 ft (13716 m) ATH at radial distances out to 130 NM (241 km). Not available Table 2.1 US Standard Service Volumes (SSV) from FAA AIM. Throughout this chapter, the operating principle of the system is explained, the signal generated at each station is detailed, the architecture of VOR receivers is described, and the indicators used to display VOR information in aircraft are presented. 2.1 Operating Principle The VOR (VHF Omnidirectional Range) system enables aircraft to determine their position relative to a VOR station by calculating the angle from the aircraft to the station in relation to magnetic north. This angle, known as the bearing, along with distance measurements provided by associated systems like Distance Measuring Equipment (DME), allows for the calculation of the lateral distance or Cross Track Error (XTE) between the aircraft and its intended route [23]. VOR stations often feature co-located DME or military Tactical Air Navigation (TACAN) systems, enhancing navigational capabilities. A VOR station paired with DME is referred to as VOR-DME, while a combination of VOR and TACAN is termed VORTAC. This co-location allows for an integrated approach to navigation, facilitating accurate distance measurements and azimuth determination. The VOR signal is transmitted in a horizontal polarization, where the electric field vector lies in the horizontal plane, making the magnetic vector perpendicular to it. The VOR system employs both amplitude and frequency modulation to encode the azimuth information, emiting a VHF carrier signal that consists of two components: a reference signal that is omnidirectional and oscillates at 30 Hz, and a directional signal, also at 30 Hz, whose phase varies depending on the aircraft’s position relative to the station. Measurement of the bearing is achieved by comparing the phase of these two signals. Ideally, both signals are in phase when the receiver is positioned directly north of the station. This principle is illustrated in Figure 2.1:
2.2 Ground Station: VOR Signal 5 Figure 2.1 Operating principle of the VOR system [2]. VORs operate within a frequency band of 108.0 to 117.95 MHz, with channels spaced 50 kHz apart. This band shares the lower end with the Instrument Landing System (ILS), where frequencies ending in an even 100 kHz are reserved for VOR, while those ending in an odd 100 kHz are designated for ILS [15]. The VOR’s design allows for straight-line propagation of radiofrequency signals, which defines its radials, but this characteristic also restricts operations to line-of-sight conditions, requiring that the transmitter be unobstructed from the receiver’s view. To calculate the range of a VOR station based on the Earth’s curvature, the following approximation is used: R2+d2= (R+h)2=R2+h2+2Rh ⇒d=√2Rh ≈113√h(2.1) where R is the Earth’s radius (approximately 6371 km), d is the range, and h is the altitude of the receiver. For instance, at an altitude of 10 km, a range of approximately 357.34 km is achievable, although ICAO recommends a maximum coverage of 200 km between stations to maintain reliability [7]. While VORs and ILS share similar equipment and operational principles, they serve distinct roles in navigation. When a VOR station is selected, the OBS is operational for radial selection, while selecting a localizer frequency renders the OBS (Omni Bearing Selector) non-functional, with guidance provided by a localizer converter built into the system. 2.2 Ground Station: VOR Signal The complete VOR navigation signal consists of the omnidirectional and directional signals described earlier, both amplitude-modulated (AM) onto the carrier, as well as the station identification signal, transmitted in Morse code with a 1020 Hz sub-tone, repeated several times per minute. Additionally, the audio signal, which repeats the station name, flight advisories, or flight service transmissions, may be included, though this last component is optional [23]. The operating principle is similar to that of a traditional lighthouse: the station generates the signal with a cardioid pattern rotating at a speed of 30 revolutions per second (rps), resulting in a 30 Hz directional signal.
12 Chapter 2. VOR System Figure 2.9 Horizontal Situation Indicator (HSI).
3 GPS System T he NAVSTAR GPS (Navigation Satellite Timing and Ranging Global Positioning System) or GPS for short, is a satellite navigation and positioning system, funded and controlled by the United States Department of Defense (DoD). Although it is widely used in the civilian field, the system was designed for and is controlled by the U.S. military. GPS provides encoded radio signals, sent from satellites, that, when processed by a GPS receiver, allow it to determine its position, velocity, and exact time. Signals from a minimum of 4 satellites are used to calculate three-dimensional positions and the time error in the receiver’s clock [23]. It is organized into three segments: the Ground segment determines the ephemerides of the constellation, the Orbital segment is the constellation itself, and the User segment is the receiver. The receiver computes its position using the Radial Distance Measurement by Delay technique. It operates from a constellation of 24 satellites in heliosynchronous orbits. All satellites transmit signals in the same frequency band (UHF, L band, line-of-sight transmission), with multiplexing organized using CDMA (Code Division Multiple Access). The transmission is organized as datagrams, with a timestamp at the beginning of the datagram. Each datagram contains satellite identification information (CDMA code, either C/A, Coarse/Acquisition, or P, Precise), updated orbital information (Ephemerides), operational status, date and time, and approximate orbital parameters (Almanac) [10]. 3.1 Operating Principle The GPS receiver, using the signals from the satellites, can precisely determine its instantaneous position, its velocity, and the exact coordinated time for the entire Earth (UTC, Universal Coordinated Time) [23]. Position is determined by multiple pseudorange measurements in a single round of measurement. Pseudorange measurements are used along with estimates of the satellite positions obtained from orbital data (ephemerides data) sent by each satellite. The orbital data allows the receiver to calculate the position of the satellites in three dimensions at the instant they sent their respective signals. Four satellites (normal navigation) are used to determine the three position coordinates and time. The position coordinates are calculated in the receiver in the ECEF XYZ system (Earth-Centered Earth-Fixed). The time is used to correct the receiver’s clock error, allowing it to use a simple clock (as opposed to the atomic clock of the satellites). The position of each satellite in XYZ is calculated from four pseudorange measurements, clock correction, and ephemerides data. The receiver’s position is calculated from the positions of the satellites, the measured pseudoranges (corrected with clock error data from each satellite, ionospheric delays, and relativistic effects), and an estimate of the receiver’s position (usually the last calculated position of the receiver). In the case of a perfect clock synchronization in the receiver, three satellites would be sufficient to determine the position. In practice, this is impossible, so with three satellites, only a two-dimensional position (latitude and longitude) can be calculated, assuming the altitude is known. This is possible over the sea or in aircraft equipped with altimeters. With five or more satellites, position, time, and data redundancy are obtained to correct errors. More satellites can reduce errors and allow the detection of out-of-range signals in certain circumstances. The position in ECEF XYZ is converted within the receiver to geodetic coordinates: longitude, latitude, and height above the Earth’s ellipsoid. Latitude and longitude are delivered according to the WGS 84 Earth 13
14 Chapter 3. GPS System surface model [45]. The receiver can be adjusted to convert data to geodetics according to another Earth surface model. An error of hundreds of meters can result from an incorrect surface model. The velocity is calculated from the change in position over time, from the Doppler frequencies of the satellite signals, or both. Time is calculated in Satellite Time, GPS Time, and UTC [23]. • Satellite Time is maintained in each satellite. Each satellite contains four atomic clocks (two cesium and two rubidium). The clocks of each satellite are monitored and periodically resynchronized from Mission Control to maintain synchronization within 1 millisecond of GPS Time. Each satellite message contains correction bits to resynchronize the receiver’s clock with GPS Time. Satellite Time is obtained in the receiver from the GPS signals. Data subframes are received every six seconds and are used to resolve the day of the week with an error of 6 seconds. The navigation data stream (50 Hz signal) aligns with the transitions of the C/A code, so the arrival time of each navigation data bit edge is used to calculate the pseudorange with an error of 1 millisecond. This error can be improved to a fraction of a millisecond by measuring the rising edge of the C/A code bits. By correlating the time of several satellites and a receiver position solution, the precision of Satellite Time can be adjusted to an error range of tens of microseconds. Satellite Time is transformed into GPS Time in the receiver. • GPS Time is calculated by averaging Satellite Time and the receiver clock’s time signal. GPS Time is measured in weeks and seconds from 24:00:00 on January 5, 1980, and is kept synchronized with UTC within an error of 1 ms. GPS Time does not have periodic leap seconds, so it advances by several seconds compared to UTC (which is adjusted by several seconds annually to coincide with less precise astronomical time). • UTC is calculated from GPS Time using UTC correction parameters sent in the navigation message by each satellite. It can be said that UTC is transmitted via the GPS signal. GPS is a radio positioning system using the Radial Distance Measurement by Delay method. Knowing the positions of three satellites and determining the distances between them and the receiver, based on the time taken by the RF signals to travel the respective line-of-sight paths, three spheroids are calculated whose intersection is the observer’s position in the same coordinate system as the satellite positions. Figure 3.1 GPS operating principle [11]. Receivers do not carry clocks as precise as those on the satellites, resulting in a temporal synchronization error that requires the delay measurement from a fourth satellite’s radial. The distances are then referred to as pseudoranges due to the error: Pi=Ri+Li(3.1) where Li is the equivalent distance due to the clock drift τi of the receiver and other propagation delays ei in the measurement of the i-th satellite. Li=c·τi+ei(3.2) Ri=c·(TT xi−TRxi)(3.3)
3.1 Operating Principle 15 A system of four equations with four unknowns is established, whose solution allows the observer’s position to be determined. In ECEF coordinates, with (x,y,z) the unknown position of the receiver and {(SV xi,SVyi,SVzi),i=0,...,3}the 4 positions of the 4 satellites, the result is: Pi=q(SVxi−x)2+(SV yi−y)2+(SVzi−z)2+cτ+ei,i=1,...,4(3.4) To solve the equations, they are linearized by Taylor expansion around a known or estimated position (Rx,Ry,Rz) , and the solution is iterated by least squares of the linearized system until it converges to a position vector. P=q(SV xi−x)2+ (SVyYi−y)2+(SV zi−z)2+c·τ+ei =Ri0−Dxi∆x−Dyi∆y−Dzi∆z−Dt ·c·τ+ei (3.5) Ri0=q(SV xi−Rx)2+(SVyYi−Ry)2+ (SVzi−Rz)2(3.6) ∆x=x−x0,∆y=y−y0,∆z=z−z0(3.7) A= Dxi=SVxi−Rx Ri0 Dyi=SVyi−Ry Ri0 Dzi=SVzi−Rz Ri0 Dti=−1 with i=0,...,3(3.8) where the 4x4 matrix A is called the geometry matrix. The positions of the satellites are calculated in the receiver from their ephemeris data, in ECEF coordinates (Earth-Centered, Earth-Fixed). Therefore, the positioning solution will also be expressed in ECEF coordinates. The receiver’s velocity can be calculated from the derivative of the trajectory obtained by iterating the position solution over time and also from the Doppler shift of the satellite’s received signal. (X0−X)2+(Y0−Y)2+(Z0−Z)2= (r0−cτ)2 (X1−X)2+(Y1−Y)2+(Z1−Z)2= (r1−cτ)2 (X2−X)2+(Y2−Y)2+(Z2−Z)2= (r2−cτ)2 (X3−X)2+(Y3−Y)2+(Z3−Z)2= (r3−cτ)2 (3.9) Receiver Latitude =θ=arccos √X2+Y2 |R|!(3.10) Receiver Longitude =α=arctan X Y(3.11) To determine the instantaneous position of a satellite, the receiver must solve the two-body problem. Based on the ephemeris data received in the navigation message, the algorithm is as follows: 1. Choose an ECI (Earth-Centered Inertial or Astronomical) coordinate system. The most convenient choice is to select the ECI that coincides with the ECEF coordinate system at 0:00:00 on the date of the almanac sent by the satellite in the Navigation message. 2. Use Kepler’s equation to determine which elliptical orbit corresponds to the ephemeris data. 3. Determine the satellite’s position in the orbit from the almanac data in the navigation message. 4. Transform the position in the ellipse (declination, right ascension, distance to the center of the Earth) to the ECI coordinate system. 5. Using the WGS 84 Earth surface model and UTC time, rotate the ECI coordinate system by an angle Wet , where We is the Earth’s rotation speed and t is the UTC time elapsed since 0:00:00 on the almanac date.
16 Chapter 3. GPS System None of the above five steps require the receiver’s position, so they can be performed in the receiver using the navigation message data prior to the pseudorange calculation. The ECEF position computation is repeated for each of the four located satellites. The ECEF positioning coordinates of the receiver obtained by solving the pseudorange equations are transformed into geographic coordinates for local map positioning. 3.2 GPS signal The satellites emit two signals, Link 1, or L1, at a central frequency of 1575.42 MHz, and Link 2, or L2, centered at 1227.6 MHz, both in the L band. Two signals at different frequencies are transmitted to allow for comparison and resolution of the ionospheric delay. The L1 carrier has two components: the first carries the P (Precise) pseudo-random code, while the second, shifted by 90º, carries the C/A pseudo-random code. The L2 carrier only carries the P code. Both codes are modulated with the navigation data message, a bitstream at 50 bits per second [23]. The pseudo-random codes and the navigation message are modulated onto the carrier using BPSK (Binary Phase Shift Keying). This modulation changes the carrier phase by 180ºeach time there is a state change in the codes or navigation data. The pseudo-random codes and the navigation message are a sequence of 0s and 1s (bitstream). A pseudo-random code and the navigation message are combined using the XOR operation. The resulting bitstream is converted into a sequence of 0ºor 180ºphase changes of the carrier. The equivalent representation is an amplitude modulation of ±1: SL1=A·P(t)·D(t)cos (2πfL1t+φ01)+ √2·A·C(t)·D(t)sin (2πfL1t+φ01)(3.12) SL2=A √2·P(t)·D(t)cos (2πfL2t+φ02)(3.13) where A is the carrier amplitude, P(t) and C(t) are the P and C/A codes, respectively, and D(t) is the bitstream of the navigation message. The signals SL1and SL2are not phase-coherent with each other. The code C(t) repeats completely every 1023 bits (1 ms) and serves as an identifier for each satellite. The C(t) code modulates the L1 carrier, spreading its spectrum over a 1 MHz bandwidth. The code P(t) repeats completely every seven days and uses a bitstream at 10 Mbits/s. In Selective Availability mode (SA, Selective Availability), the P(t)code is encoded with another secret code (Y code). Figure 3.2 Fundamental structure of GPS Signal [14]. The GPS positioning solution is given by a least squares problem. The accuracy of the positioning is determined by two factors: the quality of the measurement and the satellite-user geometry. The quality of the measurement is determined by the variance of the measurement error, σ2 measurement . The satellite-user
3.3 GPS Receiver 17 geometry is established by the matrix A , which, when multiplying all the measurements, generates an error (covariance matrix) that may be greater than the individual sum of the errors of each measurement. For example, if the three essential position measurements are taken in three perpendicular directions, the normalized deviation in positioning error is the same as the deviation in the distance measurement error to each satellite. On the other hand, if the distance measurements are not orthogonal or there are more than three measurements, the receiver’s position error may be slightly smaller or much larger than the error in each distance measurement. There are several ways to evaluate the relative size of the covariance matrix [23]. The simplest of these is the Geometric Dilution of Precision (GDOP) because it can be estimated simply from the positions of the satellites. Formally speaking, the GDOP error is: Estimated Geometric Error =σ2 measurement ·qTrace[(ATA)−1]≡σ2 measurement ·GDOP (3.14) It is demonstrated that the GDOP can be evaluated from the volume of a prism: The volume of the shape described (a prism) by the unit vectors from the receiver to the satellites used in positioning is inversely proportional to the GDOP. • Large GDOP: A large GDOP value comes from a small volume of the prism of unit vectors, which means that the positions of the selected satellites are similar. • Small GDOP: A small GDOP value, and therefore good accuracy, results if the selected satellites are in very different positions. • A theoretically small GDOP can become large if there is poor visibility: The theoretical GDOP is calculated from the almanacs, but the actual measurements require the satellites to be in line of sight. The actual GDOP will be large with poor visibility, even if the positions of the satellites are optimal, as the data will not be received. Figure 3.3 GDOP. There are other estimators of accumulated error due to the geometry matrix A . Among them are PDOP (Position DOP) and TDOP (Time DOP), which are components of GDOP. A= Dx0Dy0Dz0Dt0 Dx1Dy1Dz1Dt1 Dx2Dy2Dz2Dt2 Dx3Dy3Dz3Dt3 (3.15) P= (ATA)−1(3.16) GDOP =ptrace(P)(3.17) PDOP =pP00 +P11 +P22 (3.18) TDOP =pP33 (3.19) 3.3 GPS Receiver The GPS User Segment consists of GPS receivers and the user community. GPS receivers convert satellite signals into estimates of position, velocity, and time, requiring signals from four satellites to compute X, Y, Z
18 Chapter 3. GPS System coordinates, and time [23]. These receivers are used for navigation, positioning, UTC time dissemination, and various research applications, including geodetic and ionospheric studies. • Three-dimensional navigation is the primary GPS mission. Navigation receivers are used in aircraft, ships, land vehicles, and handheld devices, including mobile phones. • High-precision positioning (centimeter-level accuracy) is achievable by using GPS receivers at reference stations, which provide corrections and relative positioning data for other remote receivers. This is used in seismology and geodesy networks. • UTC time dissemination: GPS also provides UTC time and frequency standards based on atomic clocks aboard satellites, synchronized and corrected by Mission Control. These precise time and frequency signals are used in observatories, telecommunications systems, and laboratory standards. • Ionospheric research: As GPS signals pass through the ionosphere, precise models in the receiver correct for ionospheric distortion. GPS continuously monitors the ionosphere from multiple angles, making signal distortion analysis a direct method for studying it. The ionosphere is crucial for longrange communications (HF, SatComm), either as a reflective layer (HF skywave) or as a medium through which signals must pass (SatComm). A Phase Locked Loop (PLL) circuit locks onto the phase of the carrier (either in a positive or negative cycle, a biphase lock). Once phase tracking is secured, it is possible to demodulate the 50 Hz navigation message from the carrier. The same PLL circuit is used to measure and track the carrier frequency, which allows the measurement of Doppler frequency shift, useful for calculating the receiver’s velocity. Figure 3.4 Receiver Block Diagram [23]. The GPS receiver generates replicas of the C/A and/or P codes (Y code if authorized). Each pseudo-random noise (PRN) code is spectrally similar to a noise signal but is determined as a fixed and unique sequence of bits. The receiver generates the C/A code sequence for each specific satellite using a C/A code generation circuit. Modern receivers have a set of precomputed C/A codes in memory; they can also generate new C/A codes using a hardware shift register. Each C/A code generator produces a sequence of 1023 bits for each preselected phase (there are a total of 10). Code segments are generated using a shift register by adjusting the clock that controls the shift registers to the epoch corresponding to each satellite (epoch = reference instant for a given satellite). The generated codes are stored in a look-up memory (a precomputed one-entry, one-output table) for later use.
3.3 GPS Receiver 19 Figure 3.5 GPS receiver C/A code generator [23]. The starting position of the PRN code in the receiver at the moment of total correlation with the code in memory is the Time of Arrival (TOA) of the PRN code at the receiver. This TOA is a measure of the distance to the satellite plus an error (offset) determined by the delay of the receiver’s clock relative to GPS time (along with other errors). This TOA is used to calculate the pseudorange. Figure 3.6 GPS Data Bit demodulation and C/A Code Control block diagram [23]. • If the receiver compares with a PRN code different from the one sent by the satellite, the correlation is zero. • When the receiver begins to compare with the same code that was sent by the satellite, signal power starts to be detected. • If the receiver’s code and the satellite’s signal align completely, the spread-spectrum carrier signal "compresses" and the full signal power is detected. • The GPS receiver uses the detected signal power in the correlated signal to align the C/A code in the receiver with the satellite signal’s code. It usually compares again afterward to ensure proper tracking of the correlation peak.
20 Chapter 3. GPS System Figure 3.7 GPS Correlation steps [23]. 3.3.1 Commercial GPS receivers Consumer GNSS (Global Navigation Satellite System) navigation devices can be categorized into several types [10]: • Dedicated GNSS navigation devices: These devices are specifically designed for GNSS navigation and provide reliable positioning and routing information. • Modules requiring computer connection: These GNSS modules must be connected to an external device, such as a home computer, laptop, PDA, digital camera, or smartphone, to function. The connection can be established via various interfaces, including serial or USB cables, Bluetooth, CompactFlash, SD, PCMCIA, and ExpressCard. In some cases, these modules may include a wireless modem for enhanced connectivity. It is noteworthy that these devices typically do not come with pre-installed GNSS navigation software, requiring users to install or develop their own software solutions, which allows for greater customization according to individual preferences. • GNSS loggers: These devices record trip information, which can be later downloaded for analysis. GNSS loggers are particularly useful for activities such as trailblazing, mapping by hikers and cyclists, and the production of geocoded photographs. • Converged devices: In these devices, GNSS functionality is integrated as a secondary feature. Examples include satellite navigation (Satnav) phones and geotagging cameras. Converged devices may utilize assisted GNSS or operate independently (standalone), and they represent the majority of consumer GNSS devices today. However, there is ongoing debate regarding the susceptibility of consumer GNSS devices to radio frequency interference from emerging wireless data services. In terms of software, PC-based GNSS receivers often require the user to install a navigation software suite, as they do not typically come pre-installed with such software. This allows users to select software that best suits their needs. Furthermore, software modules for GNSS navigation are often more affordable
3.3 GPS Receiver 21 than standalone systems, with prices ranging from 50€to 100€. Some GNSS modules also support global mapping software, such as Google Maps, providing users with comprehensive geographical coverage. For this project, the ARCELI Vk-162 Remote Mount USB GPS is utilized, interfacing with the PC via a USB port [1]. Figure 3.8 ARCELI Vk-162 Remote Mount USB GPS. Additionally, hobbyists have developed and open-sourced designs for GNSS devices, including examples such as the Elektor GPS units, which are built around the SiRFstarIII chip. These GNSS units offer functionality comparable to commercial products, and various other chips and software implementations are available for similar purposes.
28 Chapter 4. Kalman Filter In the next sections it would be presented how the Kalman Filter smooths out the noisy measurements from the VOR and GPS systems to provide a more accurate estimate of the bearing angle. This improvement in accuracy is critical for navigation applications, where precise angle measurements are necessary for safe and efficient flight operations.
5 SDR S oftware-Defined Radios (SDRs) represent a transformative approach to communication systems, wherein hardware components take a secondary role while the core functions that dictate their operational behavior are executed through software running on a computer or embedded system [25]. This paradigm shift allows for a more adaptable radio frequency (RF) transceiver, enabling modifications in transmission or reception protocols to be implemented seamlessly without the necessity for physical replacement of hardware components. Figure 5.1 Example of an SDR device. The architecture of an SDR is defined predominantly by software, thus affording users the flexibility to modify configurations within the limitations of the existing SDR hardware. This adaptability is particularly valuable in dynamic communication environments where the requirements may frequently change. For instance, certain SDR devices can operate as both RF signal receivers and transmitters, managing multiple channels simultaneously through an advanced multitasking system. Such capabilities enhance the efficiency and versatility of SDRs, allowing users to customize the devices to meet specific operational needs. Although the concept of software-defined radio is not novel, the rapid advancement of digital electronics has made practical the implementation of processes that were once confined to theoretical frameworks. A typical SDR system may comprise a computer equipped with a sound card or another form of analogue-to- digital converter, which is preceded by a radio frequency front end. In such a configuration, significant signal processing tasks are delegated to the general-purpose processor, as opposed to relying solely on specialized hardware circuits. This results in a radio capable of receiving and transmitting a diverse range of radio protocols, based exclusively on the software employed. The utility of software-defined radios is particularly pronounced in military applications and cellular 29
30 Chapter 5. SDR communication services, both of which necessitate the ability to adapt to a wide variety of evolving radio protocols in real time. Proponents of SDR technology, such as the Wireless Innovation Forum, anticipate that software-defined radios, alongside software-defined antennas, will emerge as the dominant technology in the realm of radio communications, serving as the foundation for the development of cognitive radio systems [21]. 5.1 Types of SDR Several types of SDR devices are available today, each offering distinct features and applications to meet user needs. This section provides an overview of the most widely recognized SDR types, noting that within each category, various models exhibit slight differences in performance and specifications. 5.1.1 RTL-SDR - Receivers The RTL-SDR, originally named after RealTek Software Defined Radio, is an affordable SDR device commonly used as a radio signal receiver. With a price point of around $30, it lacks transmission capabilities but can receive frequencies from 500 kHz to 1.75 GHz depending on the model. The RTL-SDR, appearing much like a USB flash drive, connects to a computer via USB and to an antenna through an additional connector. It utilizes the Realtek RTL2832 chip, originally intended for digital video broadcast (DVB-T) reception. However, this chip can be modified through software to act as a wideband radio receiver with 8-bit decoding and I/Q baseband sampling [40]. Figure 5.2 Image of a commercial RTL-SDR device. The RTL-SDR Blog V4 model, selected for this project, stands out as a low-cost option in the SDR market. It shares many characteristics with other devices, such as Nooelec [36] and SDRPlay models [42], including similar frequency ranges and general functionality, although some differences in design and antenna compatibility exist. The device can be paired with various open-source software platforms, enabling users to experiment with signal reception across a wide range of frequencies. One notable experiment conducted with the RTL-SDR involved using it to analyze radar signals during meteor showers, showcasing its versatility for amateur radio and scientific exploration. 5.1.2 HackRF One - Receivers and Transmitters The HackRF One device is part of the HackRF project. It is an SDR device with the capability to transmit and receive radio signals in the spectrum from 1 MHz to 6 GHz. It is an open-source platform, allowing users to access and modify both the software and hardware to meet their needs [34]. Like the RTL-SDR, it connects to the computer via USB and has several ports for connecting different antennas. It also uses I/Q decoding in baseband. There are several revisions of the HackRF One hardware, from the r1-r4 versions that were the first to be marketed between 2014 and 2020, to the r10 version available since 2024. Hardware differences are minimal, involving small component changes to improve compatibility.
5.1 Types of SDR 31 Figure 5.3 Image of a commercial HackRF One device. Similar to the RTL-SDR, the HackRF One is a well-known SDR device with both reception and transmission capabilities, but there are other brands and models with similar general characteristics and differences in aesthetic design, connection capabilities, and available frequencies for transmission and reception. Some of these models include Noolec’s YARD Stick One [37], Ubertooth One [43], and USRP Bus [33]. 5.1.3 WebSDR and KiwiSDR - Browser-Based SDR Platforms WebSDR and KiwiSDR are web-based SDR platforms that allow users to remotely access radio receivers via a standard web browser. Both systems provide valuable tools for users to explore global radio frequencies without the need for physical SDR hardware [35], [44]. WebSDR was initiated by Pieter-Tjerk de Boer, offering access to multiple SDR receivers worldwide. WebSDR covers the full shortwave spectrum and enables real-time listening to various signals, including amateur radio transmissions and broadcasts across different frequencies. Researchers have utilized WebSDR to analyze signals like Chirp Transmitter emissions by leveraging the synchronized capabilities of these globally distributed receivers. Figure 5.4 Screenshot of WebSDR usage. KiwiSDR, while similar in concept, focuses on a more restricted frequency range, covering from 3 Hz to 30 MHz (ELF to HF). Despite this limitation, KiwiSDR provides detailed insights into lower frequency bands that are critical for applications such as long-distance communication and natural signal analysis. Both
32 Chapter 5. SDR platforms use advanced DSP (Digital Signal Processing) to filter and demodulate signals in real-time, with KiwiSDR supporting features such as direction-finding through GPS synchronization, which enhances the precision of signal analysis over long distances. Both WebSDR and KiwiSDR are particularly valuable for amateur radio operators and researchers who want to experiment with a variety of modulation techniques and signal types, such as morse code, amplitude modulation, frequency modulation, and digital modes like slow-scan television. They enable experimentation with new modulation methods while reducing the need for expensive hardware, making them accessible to a wider audience. 5.2 RTL-SDR Architecture Throughout its evolution, the SDR device has been presented as the future solution for RF signal reception. Its architecture is an evolution of the quadrature radio signal receiver, enhancing the role of digital processing. Figure 5.5 shows the typical architecture of these devices [27]: Figure 5.5 Internal structure of the RTL-SDR [27]. Two main areas can be distinguished: the analogue section and the digital section. Once the signal is received by the antenna, its processing begins in the analogue section. The input signal is amplified by an LNA (Low Noise Amplifier) and, using a VCO controlled by a programmable PLL at the frequency flo along with filters, is converted to an intermediate frequency (IF). Then, active gain control is applied via the tuner gain K, programmable via software. With the signal at IF, it is filtered to remove high-frequency components and passed to the digital section. An ADC with a sampling rate of 28.8MHz is used to generate the digital signal. Once at IF, the final step is to shift the signal to baseband; this is performed by the NCO, which is programmable via the sampling frequency, fS , at which the samples are desired. The NCO uses the I/Q demodulation technique, detailed below, producing output data corresponding to the captured signal as a series of complex samples encoded in 8 bits. Figure 5.6 shows the result of a signal in the radio frequency spectrum. Once captured, by specifying both fC and the bandwidth and gain K via software, the signal is converted to IF and digitized. With the NCO, it is shifted to baseband and obtained at the desired sampling frequency fS, ready for use on the computer.
5.3 SDR Hardware 33 Figure 5.6 RF signal frequency spectrum through an RTL-SDR [27]. 5.2.1 IQ Demodulation IQ demodulation is a technique where, as exemplified in the digital section of Figure 5.5, the signal captured by the antenna is independently mixed with two local oscillators that are 90◦ out of phase, resulting in the in-phase (I) and quadrature (Q) components of the received signal. The key feature of this demodulation is that the sampling rate can be reduced to half of what is needed in a simple demodulator, i.e., the Nyquist Frequency, while still obtaining the same results. This is because the I/Q demodulator collects twice the amount of information from the input data stream, allowing a device with relatively low clock performance to acquire more data and a wider bandwidth using I/Q sampling [21]. 5.3 SDR Hardware SDR technology features an open architecture based on reconfigurable and programmable radio systems. As a result, all devices of the same type have similar and simplified hardware, since the intention is for processing and problem resolution to be handled via software rather than hardware. Figure 5.7 shows the device used for captures in the study, detailing its components [26].
34 Chapter 5. SDR Figure 5.7 Hardware of the RTL-SDR device used. Below is a brief description of the components that make up the RTL-SDR shown in Figure 5.7: • SMA Female Connector: Threaded connector for coaxial cable, suitable for high frequencies. In the RTL-SDR, it is used for communication with antennas. • R828D Chip: The R828D is very similar to the R820/R860, the most common tuner chip in RTL-SDR devices, and shares much of the same circuitry. However, instead of just one input, it comes with three switchable inputs. It includes bandpass filters for intermediate frequencies and a high-pass filter to remove signal interference [41]. • RTL2832U Chip: The chip underlying SDR technology, a COFDM demodulator that samples the signal, separates it into I/Q data, and transmits it to other components [17]. • Temperature Compensated Oscillator (TCXO): A precisely tuned oscillator with minimal temperature drift. • Programmable Erasable ROM (EPROM): A type of non-volatile ROM memory that can store and erase information through electrical discharges. • Voltage Regulator: Protects other components from intense voltage fluctuations that could cause irreparable damage, shorten their lifespan, or affect their performance. •USB 2.0 Interface: USB connector that allows the device’s electronics to connect to the computer. Figure 5.5 shows the internal structure of the device and allows observation of the functionalities of the two most important and characteristic chips, the R820T (or R828D in our case) and the RTL2832U, which perform the typical operations of the RTL-SDR architecture described in Section 3.2.
5.4 SDR Software 35 5.4 SDR Software When the SDR device is plugged into the computer, and the necessary drivers or packages are installed, the system console can be used to capture signals and save them to a file for later use. In the case of study, this prompt can be used in the computer’s command window to obtain the VOR signal: 1rtl_sdr file_name.bin -f 113700000 -s 270000 -n 270e4 Code 5.1 Example of VOR signal capturing. Indicating the file where the results are stored, the central frequency (f), the sample frequency (s) and the number of captures (n). SDR users typically look for software that allows them to configure various reception/transmission parameters more conveniently once the device is connected to their computer. This includes verifying that the configuration is correct and, in the case of capturing audio signals, replaying them. There are many programs available that perform these and other functions. Some of the most commonly used programs that provide useful features for directly demodulating radio signals include: • SDR# (SDR Sharp): This is the most well-known software, developed by Airspy. Compatible with Windows, it is simple to configure and use, and is free as of today. Its interface, as shown in Figure 5.8, includes the following elements: At the top, there are options to select the frequency and adjust the signal capture process. The sidebar contains SDR configuration, demodulation options, and other settings. Finally, the central area displays the RF spectrum with the captured signal and a waterfall display of the same. Figure 5.8 SDR# application interface. It is a useful program for checking the RF signal spectrum and confirming the proper functioning of the SDR device [30]. • CubicSDR: CubicSDR is a cross-platform application available on Windows, Linux, and Mac OS, with some interface improvements compared to other similar applications. It allows users to inspect the radio spectrum and demodulate the received signal. Some of its features include AM and FM demodulation and applications for digital decoding. It is a good choice for handling real-time signal spectrum figures. It is still under development, with version v0.2.7 being the latest available as of September 2024 [32].
36 Chapter 5. SDR Figure 5.9 CubicSDR application interface. Although the aforementioned software programs are useful for demodulating conventional signals, such as audio radio signals, they are not suitable for obtaining demodulated VOR signals. Therefore, for this work, the decision was made to process the signal directly in Python. The demodulation of the VOR signal is achieved by processing the captured signal with the SDR using functions specifically designed to obtain the receiver’s phase. This enables real-time processing of the VOR signal captured by the user. To perform this capture, a Python interface called pyrtlsdr must be installed [39]. It is defined as a simple interface for devices supported by the RTL-SDR project, wrapping many of the functions available in the librtlsdr library but with an API more suitable for Python. It can be installed using the command: python setup.py install or pip install pyrtlsdr. This allows access to the various functions provided by the interface. The following example code, available on the official pyrtlsdr page [39], shows the necessary commands to obtain the signal from the RTL-SDR: 1from rtlsdr import * 2 3sdr = RtlSdr() 4 5# configure device 6sdr.sample_rate = 2.4e6 7sdr.center_freq = 95e6 8sdr.gain = 4 9 10 samples = sdr.read_samples(256*1024) 11 sdr.close() 12 Code 5.2 Example of using SDR in Python. The sample rate, center frequency, and gain can be adjusted as needed by the user. It is necessary to specify the number of samples to be obtained, as shown in line 10. This setup provides the basics for obtaining the VOR signal with the SDR device and processing it directly from Python. The subsequent sections of the report presents the application and discuss the results obtained.
6 Application I n this chapter, the receiver model used to demodulate the VOR signal in Python is briefly explained, the same model that was utilized in the development of the bachelor’s thesis Processing and Analysis of VOR Navigation Signals [9], as well as the algorithm for obtaining the azimuth angle using GPS. Following that, the development of the graphical interface in Python is described, and all its functionalities are discussed. Finally, the program’s performance is tested, first with generated ideal signals and then with real signals captured during field tests, highlighting the results obtained in each case. It should be mentioned that this application was later generated as an executable thanks to Python’s "Auto PY to EXE" package [31]. In this way, no external software is required to run the program from a computer with Windows, Linux or Mac, as long as Python is already installed. The creation of an Android application was also considered, but the incompatibilities with certain dependencies resulted in its unfeasibility. 6.1 VOR Signal Receiver model This section of the project report explains the models used to accurately calculate the phase with respect to the North once a VOR signal is obtained. To this end, the proposed receiver model is described in detail, discussing each block and the parameters considered in its development to obtain the AM and FM signals. With both signals demodulated, the comparison of their phases provides the desired receiver angle, and the method used for its calculation will be discussed. The receiver has been designed following the structure of Figure 6.1: once the signal is obtained — which, as previously stated, is provided in baseband as the module of the IQ components from the RTL-SDR — it is processed in two different paths to obtain the AM and FM signals. The figure shows the various blocks that need to be designed in software for the correct demodulation of both signals. 37
44 Chapter 6. Application where the estimated phase, EstPhase, is given in degrees within the range [0, 360]. The parameter SpP stands for Samples per Period, which indicates the number of signal samples per complete cycle of the processed signal. The term CalPhi represents a calibration angle that corrects the phase estimation by accounting for the combined delay introduced by both the analog and digital stages of the signal processing chain. In theory, when the receiver is aligned exactly north of a VOR station, both the FM and AM components of the VOR signal should be synchronized, exhibiting a phase alignment (i.e., zero phase offset). However, during practical implementation, signal demodulation through the RTL-SDR hardware and subsequent digital filtering stages impose delays. This delay leads to a phase offset, or “phase lag,” between the FM and AM components, which must be corrected to obtain an accurate bearing measurement. To determine CalPhi, a calibration procedure is conducted under controlled conditions, where the system is exposed to a known and stable signal configuration. This controlled setup allows for precise measurement and quantification of the phase lag introduced by each stage, both analog and digital, thus enabling the calculation of CalPhi. This correction term is then incorporated into the estimation formula to adjust EstPhase to align with the expected phase in idealized conditions where the true phase at North is 0◦ . The resulting estimation thus reflects a realistic approximation of the phase, accounting for inherent signal processing delays. 6.2 GPS Signal Receiver Algorithm The objective of this section is to detail the development of the algorithm used to calculate the bearing between two geographical points, using coordinates obtained from a GPS receiver and those of a fixed station. This algorithm takes as inputs the GPS coordinates of the reference station (latitude and longitude) and the current position coordinates of the user. The result is the angle of orientation relative to geographic north, expressed in degrees and adjusted to fall within the range of 0 to 360 degrees. 6.2.1 Process of Reading GPS Coordinates To obtain GPS coordinates, a receiver connected to the system’s serial port is used. The code developed for data retrieval follows a simple flow: the serial port is opened, NMEA data is read, and the latitude and longitude are extracted from the GPGGA message, one of the standard messages that provides positional information. The code that performs this reading is as follows: 1def read_gps_data(self): 2serial_port = self.gps_serial # Previously defined 3baudrate = 9600 4ser = serial.Serial(serial_port, baudrate=baudrate, timeout=1) 5 6while True: 7data = ser.readline() 8if data.startswith(b’$GPGGA’): 9msg = pynmea2.parse(data.decode(’utf-8’)) 10 latitude = msg.latitude 11 longitude = msg.longitude 12 return latitude, longitude Code 6.1 Code for processing the GPS data in Python. This block of code ensures that the received message is of type GPGGA, decodes it, and finally returns the latitude and longitude in decimal degrees. This information is used later in the bearing calculation. 6.2.2 Bearing Calculation between Two Geographical Points To calculate the bearing between the fixed station and the current position of the receiver, the geodesic bearing formula is used. This calculation involves converting the coordinates from degrees to radians, calculating the difference in longitudes, and applying the appropriate trigonometric functions [4]. The bearing formula is as follows:
6.2 GPS Signal Receiver Algorithm 45 θ=atan2(sin(∆long)·cos(lat2),cos(lat1)·sin(lat2)−sin(lat1)·cos(lat2)·cos(∆long)) (6.3) Where: •lat1and lon1are the latitude and longitude of the initial position (the station). •lat2and lon2are the latitude and longitude of the final position (the GPS receiver). •∆long =lon2−lon1. The following Python code implements this formula: 1def gps_bearing(lat1, lon1, lat2, lon2): 2# Convert coordinates from degrees to radians 3lat1 = np.radians(float(lat1)) 4lon1 = np.radians(float(lon1)) 5lat2 = np.radians(float(lat2)) 6lon2 = np.radians(float(lon2)) 7 8# Difference in longitude 9delta_lon = lon2 - lon1 10 11 # Geodesic bearing formula 12 x = np.sin(delta_lon) * np.cos(lat2) 13 y = np.cos(lat1) * np.sin(lat2) - (np.sin(lat1) * np.cos(lat2) * np.cos(delta_lon)) 14 initial_bearing = np.arctan2(x, y) 15 16 # Convert from radians to degrees 17 initial_bearing = np.degrees(initial_bearing) 18 19 # Adjust the result to be in the range [0, 360] degrees 20 gps_bearing = (initial_bearing + 360) % 360 21 22 return gps_bearing Code 6.2 Bearing calculation with coordinates in Python. This code performs the following steps: 1. Coordinate conversion: The latitude and longitude of both points are converted from degrees to radians, as Python’s trigonometric functions (sin, cos, atan2) operate in this unit system. 2. Difference in longitudes: The difference between the longitudes of both points is calculated, necessary for determining the directional variation. 3. Bearing calculation: Using the coordinate differences, the geodesic bearing formula is applied, obtaining the initial angle in radians. 4. Conversion to degrees: The result in radians is converted to degrees for easier interpretation. 5. Result adjustment: Finally, the angle is adjusted to be in the 0 to 360-degree range, the format commonly used in navigation. It should be taken into account that with this formula the angle with respect to geographical north is obtained, whereas with the VOR the result with respect to magnetic north is obtained. For this, it is necessary to correct the result shown with the magnetic declination, obtained from the National Geographic Institute [22]. For the date and area where the tests were carried out, the declination had a value of −0.05◦ , which is added to the result of the bearing angle with respect to geographic north to obtain the result with respect to magnetic north. θMagn =θGeog +Dec (6.4)
46 Chapter 6. Application 6.3 Kalman filter implementation The Kalman filter, explained in the chapter 4, is implemented in the algorithm in order to combine and improve the results obtained separately by the GPS and the VOR signal. Along this section, it is presented the justification of its parameters and the programming in Python. The state transition model is described by the state transition matrix F , which assumes a constant velocity model. The equations governing the state transition are given by: xk=Fxk−1+wk−1(6.5) where xk represents the state vector at time k , and wk−1 is the process noise, typically modeled as a zero-mean Gaussian noise with covariance Q . The state vector in the chosen model corresponds to the bearing angle and its derivative, which is the angular velocity. For this implementation, the state transition matrix is defined as follows: F=1dt 0 1 (6.6) where dt represents the time interval between measurements. The observation model is captured by the observation matrix H: zk=Hxk+vk(6.7) Here, zk denotes the measurement vector, and vk is the measurement noise, which is also modeled as a zero-mean Gaussian noise with covariance R . In this implementation, the observation matrix is simplified to: H=1 0(6.8) This implies that the observed measurement corresponds solely to the bearing. The Kalman filter is initialized with a state estimate of zero and an initial state covariance represented by an identity matrix: x0=0 0,P0=I(6.9) The process noise covariance matrix is set as follows: Q=0.1 0 0 0.1(6.10) The observation noise covariance is adjusted based on the source of the measurement. For the VOR measurements, an observation covariance of 16 (corresponding to a standard deviation error of ±4◦ ) is employed, while for GPS measurements, a covariance of 0.0001 (reflecting a standard deviation error of ±0.01◦ ) is utilized. These settings are crucial for accurately updating the state estimates based on the respective sources of data. The Kalman filter update equations involve two main steps: prediction and correction. The equations of these steps are presented in sections 4.1.1 and 4.1.2. In this implementation, the angular velocity is computed but does not contribute to the filter as it is not included in the observation matrix. The updated state, therefore, consists solely of the bearing estimate, with the angular velocity being a derived quantity for potential analysis rather than a direct input to the Kalman filter. The Python code encapsulating this Kalman filter implementation is outlined below: 1from pykalman import KalmanFilter 2import numpy as np 3 4# Initialization of the Kalman Filter 5dt = np.divide(1, float(sample_freq)) # Time interval between measurements 6kalman_filter = KalmanFilter( 7transition_matrices=[[1, dt], [0, 1]], # State transition matrix 8observation_matrices=[[1, 0]], # Observation matrix 9initial_state_mean=[0, 0], # Initial state
6.4 Graphical interface 47 10 initial_state_covariance=np.eye(2), # Initial covariance 11 observation_covariance=np.array([[0.0001]]), # Measurement variance for GPS 12 transition_covariance=np.eye(2) * 0.1 # Process covariance 13 ) 14 15 kalman_state = [0, 0] # Initial state: [bearing, angular velocity] 16 kalman_covariance = np.eye(2) # Initial covariance 17 last_bearing = None # For angular velocity calculation 18 last_gps_bearing = None # For angular velocity calculation 19 20 ... 21 # After obtaining of the VOR bearing estimation 22 # Update the Kalman Filter with VOR observation 23 if Mode==’rtl_sdr_gps’: 24 if last_bearing is not None: 25 delta_bearing = synch_obj.estimated_phase - last_bearing 26 delta_bearing = (delta_bearing + 180) % 360 - 180 # Normalize to [-180, 180] 27 velocity = delta_bearing / dt 28 else: 29 velocity = 0 30 31 last_bearing = synch_obj.estimated_phase 32 33 # Update the Kalman Filter with VOR measurement 34 kalman_state, kalman_covariance = kalman_filter.filter_update( 35 kalman_state, 36 kalman_covariance, 37 observation=[synch_obj.estimated_phase], 38 observation_covariance=np.array([[4**2]]) # High covariance for VOR 39 ) 40 bearing_estimated_VOR = kalman_state[0] 41 velocity_estimated_VOR = kalman_state[1] 42 ... 43 # After obtaining of the GPS bearing estimation 44 # Update the Kalman Filter with GPS observation 45 kalman_state, kalman_covariance = kalman_filter.filter_update( 46 kalman_state, 47 kalman_covariance, 48 observation=[gps_bearing], 49 observation_covariance=np.array([[0.01**2]]) # Low covariance for GPS 50 ) 51 52 bearing_estimated_GPS = kalman_state[0] 53 velocity_estimated_GPS = kalman_state[1] This implementation effectively utilizes the Kalman filter’s capabilities to integrate measurements from both VOR and GPS sources, yielding improved estimates of the bearing with the specified noise characteristics. 6.4 Graphical interface Tkinter provides a robust and platform independent windowing toolkit. It is one of the most used package for implementig interfaces with Python [13]. During this section, the package and its functions are described, and the structure and configuration of the interface that has been developed is described so the user can be familiar with it. 6.4.1 Tkinter: The GUI Toolkit for Python Tkinter is the standard GUI (Graphical User Interface) toolkit for Python, providing a powerful and flexible way to create desktop applications. As a thin object-oriented layer on top of the Tcl/Tk GUI toolkit, Tkinter simplifies the process of developing graphical interfaces by offering a range of widgets and tools [13]. Core Functionalities of Tkinter Tkinter includes several key widgets and functionalities that are essential for creating interactive and visually appealing applications. Some of the ones used in the application development are described below: •Canvas: The Canvas widget is used to draw shapes, display images, and create custom graphics. It is highly versatile and allows for dynamic updates of graphical elements. In the application, the Canvas
48 Chapter 6. Application is utilized to display the bearing estimation on a compass background, where a red line represents the estimated bearing angle. • Label: The Label widget is used to display text or images. It is ideal for static content such as titles, descriptions, and informational text. In the application, Labels are employed to provide textual information about the current state of the application and to describe various control elements. • Button: The Button widget allows users to trigger actions when clicked. It is used for interactive elements such as starting or stopping the detection process, selecting files, and interacting with the application. Buttons in the application include ’Start’, ’Select File’, and ’Calibrate’. • Combobox: The Combobox widget provides a drop-down list of options from which users can select. It is useful for presenting choices such as VOR station frequencies, RTL-SDR devices, and GPS devices. This widget helps streamline the user experience by offering a predefined set of options. • Filedialog: The Filedialog module is used to open file dialogs that allow users to select files from their file system. This is particularly useful for loading pre-recorded VOR signal data files in debug mode. The Filedialog is accessed through the ’Select File’ button in the application. • Text Terminal: The History tab includes a text terminal to display the cascade of results from every estimation. This terminal dynamically updates with each new bearing estimation and allows users to review previous values. Scrollbars are included for easy navigation. • Messagebox: The Messagebox module is used to display popup messages to the user. It is typically used for alerts, confirmations, and error messages. In the application, Messagebox can be used to notify users of issues such as file selection errors or invalid inputs. The Tkinter interface is designed to enhance usability and provide a clear view of the application’s functionality. 6.4.2 Tab Structure and Functionality The interface is divided into three main tabs, each designed to handle a specific aspect of the application: • Main Tab: The central interface where the canvas displays the bearing estimations. It includes controls to start the detection and display the real-time bearing angle. • Config Tab: This tab provides configuration options for selecting RTL-SDR and GPS devices, entering VOR station frequencies, and choosing operational modes. Users can also set calibration angles for the bearing calculations and select files for the debug mode utilization. • History Tab: This tab shows the historical results of the bearing estimations in a text-based terminal format. It allows users to review past estimates, which are updated each time a new estimation is made. 6.4.3 Interface Components The application’s interface is structured to provide a user-friendly environment for setting up and managing the detection process. The elements on the main tab include: • Canvas: This is the primary visual element where the bearing estimation is displayed. The canvas is initialized with a background image representing a compass. A red line is drawn on the canvas to indicate the estimated bearing angle. This line is updated dynamically based on the phase estimation received from the VOR or GPS detection functions. • Start Button: Initiates the detection process based on the selected parameters and mode. It toggles between starting and stopping the detection.
6.4 Graphical interface 49 Figure 6.8 Main tab of the interface. On the other hand, on the config tab, the following elements are presented: • RTL-SDR Selector: This combobox lists available RTL-SDR devices for signal reception. Users can select their RTL-SDR device from this list, which will be used for capturing the VOR signal. • GPS Selector: Similar to the RTL-SDR selector, this combobox allows users to choose the GPS device for obtaining positional data. • Frequency Selector: A combobox allows users to select the VOR station frequency. This combobox lists all the VOR stations placed in Spain, and once selected, the frequecies (along with the coordinates of each station) is obtained by Python to process the data. • Calibration Angle Box: This box includes a label where the user can specify a number, and a button which sends this angle to Python to process data. It allows the user to change the angle CalPhi for the RTL-SDR processing in case it changes from the one registered by the author. • Mode Selector: A combobox provides options for different operational modes, including "Real time with KF", "Real time no KF", "RT Only GPS", "RT Only RTL-SDR" and "Debug". The selected mode determines how the application processes the incoming signals. • Select File Button: Opens a file dialog for users to select a MATLAB file containing pre-recorded VOR signal data. This is used in debug mode for testing with captured signals.
50 Chapter 6. Application Figure 6.9 Configuration tab of the interface. Finally, a third tab, called history, presents a text terminal where all the estimations that have been accomplished are registered and presented in order to see all of the bearing angles obtained in the process. It allows to scroll and copy the results into another text file if needed.
6.4 Graphical interface 51 Figure 6.10 History tab of the interface. 6.4.4 Interaction with Detection Functions The application operates by interacting with two primary functions: detect for processing VOR signals and gps_detect for GPS-based bearing calculations. The interaction with these functions is managed through asynchronous tasks, which allow the application to handle real-time data efficiently. VOR Signal Detection The detect function is responsible for processing the VOR signal captured by the RTL-SDR device. This function performs several key tasks: • Signal Capture: Captures the VOR signal using the RTL-SDR device. The signal is processed in chunks, and each chunk is analyzed to determine the bearing angle. • Demodulation: The captured signal is demodulated to extract AM and FM components. This is essential for determining the phase information. • Phase Estimation: The phase of the VOR signal is estimated using synchronization algorithms. This phase estimation is converted to a bearing angle, which is then updated on the canvas. The function updates the canvas with the estimated bearing angle by calling the update_estimation method. This method recalculates the position of the red line on the canvas to reflect the current bearing angle. GPS-Based Bearing Detection The gps_detect function provides bearing information based on GPS coordinates. This function operates as follows: •GPS Data Reading: Continuously reads GPS coordinates from the selected GPS device. • Bearing Calculation: Computes the bearing angle between the user’s current location (obtained from GPS) and the selected VOR station location using the formula reflected in 6.3.
52 Chapter 6. Application • Kalman Filtering: Applies a Kalman filter to smooth the bearing estimate and reduce noise, if the correct mode is selected. Similar to the VOR detection process, the estimated bearing from the GPS is used to update the canvas through the update_estimation method. 6.4.5 Mode Management The application supports different operational modes, which affect how the detection functions are invoked: • Real Time with KF Mode: Both VOR and GPS detections are performed simultaneously. The bearing estimation is updated in real time using the Kalman filter, which combines both signals (VOR with RTL-SDR and GPS) for a more accurate estimation. • Real Time no KF Mode: Both VOR and GPS detections are performed simultaneously. The bearing estimation is updated in real time by averaging both signals without applying the Kalman filter. • Real Time Only GPS: Only GPS-based detection is performed. The VOR signal is ignored in this mode. •Real Time Only RTL-SDR: Only VOR signal detection is active. GPS data is not processed. •Debug Mode: Pre-recorded VOR signal data from a MATLAB file is used for testing purposes. This mode is useful for debugging and validating the application’s signal processing algorithms. The selected mode is applied through the start_detect method, which configures the detection functions according to the user’s choice. 6.5 Debug mode results Moving on to the results of the debug mode, this simple mode allows to check the bearing angle result with a previously captured or generated VOR signal. Based on this, in this section, it will be verified that the expected result is obtained using the interface, starting with ideal signals generated in MATLAB, following the structure outlined in the previous section 2.2. In all cases in this section, the result is checked solely for the demodulation of VOR signals, either ideal or real ones captured with RTL-SDR, since the application’s debug mode is configured only for this and cannot demodulate the GPS signal in offline mode. The results with real modes will show the behavior with GPS, the joint implementation with the VOR signal, and the Kalman filter used. However, the goal of this section is to verify that the result with RTL-SDR mode is similar to that obtained in the thesis [9]. 6.5.1 Results with ideal signals First, the results are verified with signals generated in MATLAB, following the formula 2.3. Two signals were generated: the first with both sinusoidal signals in phase, corresponding to a bearing angle of 0 degrees, and the second with a phase shift corresponding to a bearing angle of 90 degrees. These signals present no disturbances or errors, which makes it easier for the program to demodulate and process them. The following figures show the signals in both the time and frequency domains.
6.5 Debug mode results 53 10 10.05 10.1 10.15 10.2 10.25 10.3 10.35 Tiempo (s) 0.4 0.6 0.8 1 1.2 1.4 1.6 Señal VOR Señal VOR generada 0 2 4 6 8 10 12 Frequency (kHz) -120 -100 -80 -60 -40 -20 0 20 Power/frequency (dB/Hz) Welch Power Spectral Density Estimate X 0.030024 Y -6.03174 Figure 6.11 Example of ideal signal generated in the time and frequency domain. In these ideal signals, the CalPhi angle has been modified from the default value (which corresponds to the phase shift when using RTL-SDR). Once properly calibrated, the results obtained are presented below in Figures 6.12 and 6.13. Figure 6.12 Results with ideal signal - Bearing of 0 degrees.
60 Chapter 6. Application Figure 6.21 Example of use for GPS verification with U-center 2. Once the above steps are completed, the tests can be carried out. It should be noted that these tests are conducted outdoors. Figure 6.22 shows how the tests were conducted with the laptop placed on top of the car, with the RTL-SDR antenna at a higher position, and the GPS device positioned so that it has approximately the same bearing angle as the antenna. Figure 6.22 Setup for field testing. With the setup explained, the following subsections address the results obtained from two points of interest, analyzing what happens when using the different modes available in the application. 6.6.2 Tests from Point 1: Carmona The tests presented in this subsection were conducted in the town of Carmona (Seville), near El Almendral park, in one of the highest areas of the town with visibility towards the field where the Seville VOR station is located. This is approximately 11 km in a straight line from the VOR station, as shown in Figure 6.23.
6.6 Real time mode results 61 Figure 6.23 Test location and distance to the station - Carmona Setup. The site was chosen for its strategic position for testing, as it meets the visibility requirements. Additionally, knowing how the VOR signal is transmitted, as shown in Table 2.1, it was logical to assume that higher altitudes would yield better signal capture results due to the increased range. However, when checking the signal status with SDR#, the following was obtained. Figure 6.24 Verification of the VOR signal with SDR# - Carmona Setup. It can be observed that the signal obtained is very weak, barely able to capture the FM modulated signal, so the results using the VOR signal algorithm are expected to be poor. On the other hand, Figures 6.25 and 6.26 show that the GPS works correctly, accurately obtaining the position. Therefore, the results using only the GPS mode and the mode that integrates the VOR signal with the GPS are expected to be better.
62 Chapter 6. Application Figure 6.25 Verification of the GPS signal with U-center 2 - Carmona Setup. Figure 6.26 Graphical verification of the capture location - Carmona Setup. Google Maps confirms that the coordinates are correct, and the bearing angle relative to the VOR is approximately 69.75◦ . It is important to remember that this angle is relative to true north, while the one sought by the application is relative to magnetic north. Therefore, taking into account the magnetic declination of −0.05◦stated before, the graphical approximation results in 69.7◦. Results Using Only GPS Mode First, the results are checked using the GPS algorithm only. It is observed that it takes only a few estimates to reach the final bearing angle, and it barely varies once reached. The result obtained can be seen in Figure 6.27.
6.6 Real time mode results 63 Figure 6.27 Results using Only GPS mode - Carmona Setup. It is found that the result obtained is practically identical to the one expected with the graphical approximation, with even greater accuracy (as the graphical approximation cannot determine exact decimal values). Therefore, it can be concluded that the error using the only GPS mode is practically zero, which was previously verified, and serves to determine the standard deviation for the Kalman filter with an standard deviation of ±0.01◦and 0 mean error. Results Using Only RTL-SDR Mode and Real-time No KF Mode Next, the results are checked using only the demodulation of the VOR signal with the RTL-SDR. It should be remembered that the signal was very weak, as shown in Figure 6.24. The results obtained are presented both in the interface and in the history (see A.7).
64 Chapter 6. Application Figure 6.28 Results using Only RTL-SDR mode - Carmona Setup. As expected, the result using this mode is not good, as the antenna is not able to correctly detect the FM-modulated signal, and therefore cannot calculate the phase shift between it and the AM-modulated signal. For this reason, the signal must be strong enough to be able to use this mode. On the other hand, the Real-time No KF mode, where the GPS signal value and the VOR signal value are averaged, also presents a similar outcome. It becomes impossible for the application to reach a reliable azimuth estimation, making this test invalid for correctly characterizing these modes. Therefore, after these tests, it is recommended not to use the mentioned modes unless it is ensured that the VOR signal can be correctly received in the area. Results Using Real-time with KF Mode Finally, the result using the mode that combines the outputs of both sources through a Kalman filter is evaluated. The filter is configured so that once a GPS bearing angle estimate is obtained, it updates the filter with an error of ±0.01◦ , while when a bearing estimate is obtained with the VOR signal, it updates with an error of ±4◦ , giving higher priority to the GPS due to its better accuracy in previous tests. The results obtained are shown below and discussed afterward.
6.6 Real time mode results 65 Figure 6.29 Results using Real-time with KF mode - Carmona Setup. A much better result than the previous one can be observed, with an average error of 0.41◦ , and an error deviation that does not exceed 1◦ . Therefore, whenever there is uncertainty about the reliability of the VOR signal, it is recommended to use this mode. 6.6.3 Tests from Point 2: Parque Logístico e Industrial de Carmona This subsection presents the new data obtained from another location. Seeing that the result with the VOR signal from Carmona was very poor, the tests were moved to the Parque Logístico e Industrial de Carmona, which is located just 2 km from the VOR station. Figure 6.30 Test location and distance to the station - Setup of the Carmona industrial area.
66 Chapter 6. Application Figure 6.31 Image of the VOR station from the test location - Setup of the Carmona industrial area. From this location, tests were conducted from several points, including moving tests which are discussed throughout this subsection. In all of them, it was verified with SDR# that the result of obtaining the VOR signal was as expected, see figure 6.32. Figure 6.32 Verification of the VOR signal with SDR# - Setup of the Carmona industrial area. Moreover, as mentioned, tests were conducted from 4 different points. At each one, the location obtained with U-center 2 was stored, and the results and graphical estimates of their bearing angles are presented below.
6.6 Real time mode results 67 Figure 6.33 Verification of the GPS signal with U-center 2 and graphical verification - Point 1 - Setup of the Carmona industrial area. Figure 6.34 Verification of the GPS signal with U-center 2 and graphical verification - Point 2 - Setup of the Carmona industrial area. Figure 6.35 Verification of the GPS signal with U-center 2 and graphical verification - Point 3 - Setup of the Carmona industrial area.
68 Chapter 6. Application Figure 6.36 Verification of the GPS signal with U-center 2 and graphical verification - Point 4 - Setup of the Carmona industrial area. With this, the following data is collected for later comparison with the application results. Table 6.5 Bearing with respect to geographic and magnetic north - Setup of the Carmona industrial area. Point Bearing with respect to geographic north Bearing with respect to magnetic north 1 318 317.95 2 304.8 304.75 3 307.6 307.55 4 314.9 314.85 Once the above has been seen, the results obtained with the different modes of the application for validation are presented and discussed throughout this subsection. Results using the Only GPS mode To begin, the results using the mode that only utilizes the GPS signal to obtain the bearing angle of the receiver are presented. The results collected at the different points are detailed below.
6.6 Real time mode results 69 Figure 6.37 Results with the Only GPS mode - Point 1 - Setup of the Carmona industrial area. Figure 6.38 Results with the Only GPS mode - Point 2 - Setup of the Carmona industrial area.
76 Chapter 6. Application Figure 6.49 Results with the Real time no KF mode - Points 1 to 4 - Setup of the Carmona industrial area. In these results, it can be observed that initially, while in motion, the algorithm is unable to achieve a satisfactory estimate of the angle, although it stabilizes as it progresses and eventually gets somewhat closer to the correct result at point 4 (see A.13). However, this reveals that, combined with interference effects and the fact that the algorithm, due to RTL-SDR, requires time to stabilize, the frequency component added by the non-zero angular velocity of the receiver is an additional source of errors when demodulating the VOR signal. Therefore, this mode should not be used when the bearing is changing. Results using the Real time with KF mode Finally, the results with the mode that combines the angle obtained via GPS and the angle obtained via VOR using a Kalman filter are presented. First, the data obtained from captures at a fixed point will be shown, followed by the results from captures in motion between the points of interest.
6.6 Real time mode results 77 Figure 6.50 Results with the Real time with KF mode - Point 1 - Setup of the Carmona industrial area. Figure 6.51 Results with the Real time with KF mode - Point 2 - Setup of the Carmona industrial area. In the following table, the results of the mean error and maximum deviation of the error from the tests are presented. In this case, the initial estimates are not omitted as they are sufficiently close to the actual bearing angle.
78 Chapter 6. Application Table 6.8 Mean error and maximum deviation - Real time with KF mode - Setup of the Carmona industrial area. Point Mean Error [◦] Maximum Deviation [◦] 1 -0.13 0.49 2 -0.1 0.36 Similarly, the errors discussed in each of the estimates are graphically presented along with their histograms. Figure 6.52 Errors and histogram - Real time with KF mode - Point 1 - Setup of the Carmona industrial area. Figure 6.53 Errors and histogram - Real time with KF mode - Point 2 - Setup of the Carmona industrial area. It can be observed that, by using this mode, the error committed improves significantly, with a mean of around 0.1◦and not exceeding 0.5◦at any time. Noticing that the results with this mode are very good, some tests in motion are conducted to verify if the algorithm can accurately trace the path. The tests are performed between points 2 and 3 and points 3 and 1. The results are presented and commented on afterwards.
6.6 Real time mode results 79 Figure 6.54 Results with the Real time with KF mode - Point 2 to 3 - Setup of the Carmona industrial area. Figure 6.55 Results with the Real time with KF mode - Point 3 to 1 - Setup of the Carmona industrial area. Before commenting on them, the results are graphically presented for better visualization.
80 Chapter 6. Application Figure 6.56 Drawing of the obtained trajectory - Point 2 to 3 - Setup of the Carmona industrial area. Figure 6.57 Drawing of the obtained trajectory - Point 3 to 1 - Setup of the Carmona industrial area. Both results are very good, accurately depicting the trajectory followed by the computer without encountering significant errors. In these tests, it is not possible to present either the exact error of each estimation or its histogram, as the position at each point was not precisely recorded while in motion and with the GPS in use by the algorithm. However, it can be determined from both the history (see A.16 and A.17) and the Figures 6.56 and 6.57 that the errors made are very similar to those in the static tests, with the negative effects mentioned in the Real time no KF mode test being overcome in this case. The following table includes as a summary the results presented in this setup:
6.6 Real time mode results 81 Table 6.9 Summary of results by mode and point - Setup of the Carmona industrial area. Mode Point Mean Error [◦] Maximum Deviation [◦] Only GPS 1 0 0.01 Only GPS 2 0 0.01 Only RTL-SDR 1 1.76 40.12 Only RTL-SDR 2 -1.34 44.99 Real time No KF 1 -0.28 21.06 Real time No KF 2 9.08 26.65 Real time with KF 1 -0.13 0.49 Real time with KF 2 -0.10 0.36 Therefore, this section concludes that the Kalman filter significantly improves the results compared to the other modes, excluding the Only GPS mode, and that its implementation was correct, helping the user to obtain an accurate estimation of their azimuth concerning any Spanish VOR station.
7 Conclusions and Future Directions 7.1 Conclusions This project has successfully developed a Python-based application capable of estimating the bearing of the user relative to any VOR station listed in Spain’s AIP. The application integrates both VOR and GPS signals, and their combination is further enhanced by a Kalman filter, which optimizes the estimation process. The graphical user interface was designed using Tkinter to offer a user-friendly experience, providing multiple configuration options and modes for both real-time operation and debugging purposes. Moreover, a history log feature was implemented, allowing users to visualize the progression of bearing estimations throughout the data capture process. The performance of the GPS-based bearing estimation was found to be highly accurate, with errors in the range of tenths of degrees, significantly surpassing the cartographic references used for validation. Additionally, the time required to present the results to the user was minimal, reinforcing the robustness of the GPS data for bearing calculations. In contrast, the results obtained using only the RTL-SDR for VOR signal processing were less reliable. This was particularly evident when the application was run in the "Real time no KF" mode, where no Kalman filtering was applied. The RTL-SDR, while affordable and versatile, introduces various inaccuracies due to external interference, including weather conditions, physical obstructions such as vehicles, and unintended signal interception. These factors diminish the reliability of the demodulation process, though improvements were achieved compared to previous work [9]. Specifically, manual calibration of the fixed-angle offset, CalPhi, improved the accuracy of the bearing estimation from VOR signals. However, it was not feasible to determine the value of CalPhi under laboratory conditions by injecting a VOR signal with a known phase offset and observing the steady-state error. Without this baseline calibration, the CalPhi parameter could not be accurately adjusted to account for phase shifts inherent to the RTL-SDR hardware and processing filters. Manual calibration of the CalPhi offset contributed to a partial improvement in bearing accuracy; however, the inability to perform a comprehensive laboratory calibration likely limited the achievable accuracy in estimating the bearing angle from VOR signals. The Kalman filter yielded excellent results by assigning greater weight to the more accurate GPS signal. This approach significantly reduced the overall error, producing precise bearing estimates regardless of whether the user was stationary on a VOR radial or moving between radials. Nonetheless, the inclusion of VOR signals remains crucial. GPS, while highly precise, is vulnerable to jamming and is subject to potential service interruptions, as it is operated by the U.S. government. In such scenarios, the VOR system provides a valuable backup, offering a sufficiently accurate estimation of the user’s bearing relative to the VOR station. 7.2 Future Directions Several avenues for future work have been identified throughout this project to further improve the developed application. First, it is recommended to explore the use of more robust devices for VOR signal reception, which may offer better performance than the RTL-SDR despite being more expensive. The limitations of the RTL-SDR, including susceptibility to interference and external factors, suggest that more advanced receivers could significantly enhance the reliability of VOR signal processing. 83
84 Chapter 7. Conclusions and Future Directions Additionally, there is room for further refinement of the VOR signal demodulation algorithm. Future research could focus on reducing the impact of external interference, ensuring that the bearing estimation from VOR signals becomes more reliable, especially in the modes that rely on VOR data alone or in combination with GPS. A further area for improvement is the optimisation of the VOR signal demodulation algorithm. The current implementation of the signal processing in Python imposes a notable limitation on the application, as the relatively slow processing time hinders performance, especially when the user is non-steady. This latency is of particular importance in modes that rely solely on VOR data or a VOR-GPS combination without Kalman filtering, where real-time accuracy is essential for bearing estimation. To address this issue, the signal processing components could be migrated from Python to a lower-level language, such as C, which would reduce processing time and enhance the overall speed and efficiency of the application. The choice of antenna used for signal reception is also a critical factor that was not fully explored in this project due to the unavailability of equipment capable of generating low-frequency signals. Since the VOR signal has a 30 Hz component, the development and testing of appropriate antennas could yield improvements in signal reception and overall accuracy. This remains an important area for future investigation. Moreover, while efforts were made to develop the application for use on mobile devices, certain Python packages, such as pyrtlsdr, have dependencies that are not currently supported on mobile platforms. The development of Python for Android and iOS is still in its early stages, but significant progress is expected in the coming years. It is anticipated that in the future, the application could be successfully ported to mobile devices, offering greater flexibility and accessibility for users. In conclusion, future research should prioritize the exploration of higher-quality VOR reception devices, refinement of the demodulation algorithm, and the study of suitable antennas. Additionally, advancements in Python mobile development may eventually enable the seamless use of this application on smartphones and tablets.
Appendix A History results A.1 Results with ideal signal - Bearing of 0 degrees - Debug mode 1Estimated angle: 230.88 2Estimated angle: 42.88 3Estimated angle: 33.56 4Estimated angle: 25.56 5Estimated angle: 33.56 6Estimated angle: 41.56 7Estimated angle: 33.56 8Estimated angle: 25.56 9Estimated angle: 17.56 10 Estimated angle: 16.56 11 Estimated angle: 15.6 12 Estimated angle: 14.68 13 Estimated angle: 13.8 14 Estimated angle: 12.96 15 Estimated angle: 12.16 16 Estimated angle: 11.4 17 Estimated angle: 10.68 18 Estimated angle: 10.0 19 Estimated angle: 9.0 20 Estimated angle: 8.04 21 Estimated angle: 7.12 22 Estimated angle: 6.24 23 Estimated angle: 5.4 24 Estimated angle: 4.6 25 Estimated angle: 3.84 26 Estimated angle: 3.12 27 Estimated angle: 2.44 28 Estimated angle: 1.8 29 Estimated angle: 1.36 30 Estimated angle: 0.96 31 Estimated angle: 0.6 32 Estimated angle: 0.28 33 Estimated angle: 0.56 34 Estimated angle: 0.8 35 Estimated angle: 0.6 36 Estimated angle: 0.44 37 Estimated angle: 0.56 38 Estimated angle: 0.48 39 Estimated angle: 0.32 40 Estimated angle: 0.44 41 Estimated angle: 0.52 42 Estimated angle: 0.48 43 Estimated angle: 0.44 44 Estimated angle: 0.4 45 Estimated angle: 0.44 46 Estimated angle: 0.48 47 Estimated angle: 0.52 48 Estimated angle: 0.56 85
92 Chapter A. History results 116 Estimated angle: 310.76 117 Estimated angle: 311.32 118 Estimated angle: 310.8 119 Estimated angle: 310.32 120 Estimated angle: 310.76 121 Estimated angle: 310.36 122 Estimated angle: 310.0 123 Estimated angle: 310.32 124 Estimated angle: 310.6 125 Estimated angle: 309.96 126 Estimated angle: 309.36 127 Estimated angle: 309.92 128 Estimated angle: 310.44 129 Estimated angle: 310.92 130 Estimated angle: 310.48 131 Estimated angle: 310.08 132 Estimated angle: 310.44 133 Estimated angle: 310.76 134 Estimated angle: 310.48 135 Estimated angle: 311.04 136 Estimated angle: 311.56 137 Estimated angle: 311.08 138 Estimated angle: 311.52 139 Estimated angle: 311.92 140 Estimated angle: 311.56 141 Estimated angle: 311.24 142 Estimated angle: 311.52 143 Estimated angle: 311.76 144 Estimated angle: 311.56 145 Estimated angle: 311.36 146 Estimated angle: 311.52 147 Estimated angle: 311.64 148 Estimated angle: 311.56 149 Estimated angle: 311.6 150 Estimated angle: 311.64 151 Estimated angle: 311.6 152 Estimated angle: 311.56 153 Estimated angle: 311.6 154 Estimated angle: 311.64 155 Estimated angle: 311.08 156 Estimated angle: 310.56 157 Estimated angle: 310.08 158 Estimated angle: 310.52 159 Estimated angle: 310.92 160 Estimated angle: 310.56 161 Estimated angle: 310.24 162 Estimated angle: 310.52 163 Estimated angle: 310.28 164 Estimated angle: 310.08 165 Estimated angle: 310.48 166 Estimated angle: 310.12 167 Estimated angle: 309.8 168 Estimated angle: 310.08 169 Estimated angle: 310.32 170 Estimated angle: 310.52 171 Estimated angle: 310.68 172 Estimated angle: 310.56 173 Estimated angle: 310.48 174 Estimated angle: 310.52 175 Estimated angle: 310.92 176 Estimated angle: 311.28 177 Estimated angle: 311.6 178 Estimated angle: 311.32 179 Estimated angle: 311.56 180 Estimated angle: 311.76 181 Estimated angle: 311.6 182 Estimated angle: 311.48 183 Estimated angle: 311.56 184 Estimated angle: 311.6 185 Estimated angle: 311.84 186 Estimated angle: 311.64
A.5 Results with real signal - Bearing of 311.22 degrees - Debug mode 93 187 Estimated angle: 311.48 188 Estimated angle: 311.6 189 Estimated angle: 311.68 190 Estimated angle: 311.64 191 Estimated angle: 311.68 192 Estimated angle: 311.72 193 Estimated angle: 311.68 194 Estimated angle: 311.72 195 Estimated angle: 311.92 196 Estimated angle: 311.76 197 Estimated angle: 311.64 198 Estimated angle: 311.72 199 Estimated angle: 311.76 200 Estimated angle: 311.72 201 Estimated angle: 311.68 202 Estimated angle: 311.72 203 Estimated angle: 311.76 204 Estimated angle: 311.72 205 Estimated angle: 312.16 206 Estimated angle: 311.76 207 Estimated angle: 311.4 208 Estimated angle: 311.72 209 Estimated angle: 312.0 210 Estimated angle: 312.24 211 Estimated angle: 312.04 212 Estimated angle: 311.88 213 Estimated angle: 311.76 214 Estimated angle: 311.84 215 Estimated angle: 312.12 216 Estimated angle: 311.88 217 Estimated angle: 312.08 218 Estimated angle: 312.24 219 Estimated angle: 312.12 220 Estimated angle: 312.2 221 Estimated angle: 312.24 222 Estimated angle: 312.28 223 Estimated angle: 312.24 224 Estimated angle: 312.2 225 Estimated angle: 312.72 226 Estimated angle: 313.2 227 Estimated angle: 312.76 228 Estimated angle: 313.16 229 Estimated angle: 313.52 230 Estimated angle: 313.2 231 Estimated angle: 312.92 232 Estimated angle: 312.68 233 Estimated angle: 312.88 234 Estimated angle: 313.04 235 Estimated angle: 312.64 236 Estimated angle: 312.28 237 Estimated angle: 311.96 238 Estimated angle: 312.24 239 Estimated angle: 312.48 240 Estimated angle: 312.28 241 Estimated angle: 312.44 242 Estimated angle: 312.56 243 Estimated angle: 312.48 244 Estimated angle: 312.52 245 Estimated angle: 312.8 246 Estimated angle: 312.56 247 Estimated angle: 312.36 248 Estimated angle: 312.52 249 Estimated angle: 312.4 250 Estimated angle: 312.32 251 Estimated angle: 312.36 252 Estimated angle: 312.32 253 Estimated angle: 312.28 254 Estimated angle: 312.24 255 Estimated angle: 312.56 256 Estimated angle: 312.84 257 Estimated angle: 312.6
94 Chapter A. History results 258 Estimated angle: 312.4 259 Estimated angle: 312.24 260 Estimated angle: 312.36 261 Estimated angle: 312.44 262 Estimated angle: 312.48 263 Estimated angle: 312.44 264 Estimated angle: 312.4 265 Estimated angle: 312.2 266 Estimated angle: 312.36 267 Estimated angle: 312.24 268 Estimated angle: 312.16 Code A.5 Results with real signal - Bearing of 311.22 degrees. A.6 Results with real signal - Bearing of 304.59 degrees - Debug mode 1Estimated angle: 262.35 2Estimated angle: 270.35 3Estimated angle: 278.35 4Estimated angle: 270.35 5Estimated angle: 278.35 6Estimated angle: 286.35 7Estimated angle: 294.35 8Estimated angle: 295.35 9Estimated angle: 296.31 10 Estimated angle: 297.23 11 Estimated angle: 298.11 12 Estimated angle: 297.27 13 Estimated angle: 296.47 14 Estimated angle: 297.23 15 Estimated angle: 297.95 16 Estimated angle: 297.27 17 Estimated angle: 296.27 18 Estimated angle: 297.23 19 Estimated angle: 298.15 20 Estimated angle: 299.03 21 Estimated angle: 299.87 22 Estimated angle: 299.07 23 Estimated angle: 299.83 24 Estimated angle: 300.55 25 Estimated angle: 301.23 26 Estimated angle: 301.87 27 Estimated angle: 300.87 28 Estimated angle: 301.83 29 Estimated angle: 302.75 30 Estimated angle: 301.87 31 Estimated angle: 302.71 32 Estimated angle: 301.91 33 Estimated angle: 301.15 34 Estimated angle: 300.43 35 Estimated angle: 301.11 36 Estimated angle: 300.47 37 Estimated angle: 301.47 38 Estimated angle: 302.43 39 Estimated angle: 303.35 40 Estimated angle: 304.23 41 Estimated angle: 303.39 42 Estimated angle: 302.59 43 Estimated angle: 303.35 44 Estimated angle: 304.07 45 Estimated angle: 303.39 46 Estimated angle: 304.03 47 Estimated angle: 305.03 48 Estimated angle: 304.07 49 Estimated angle: 303.15 50 Estimated angle: 302.27 51 Estimated angle: 303.11
A.6 Results with real signal - Bearing of 304.59 degrees - Debug mode 95 52 Estimated angle: 302.31 53 Estimated angle: 303.07 54 Estimated angle: 302.35 55 Estimated angle: 303.03 56 Estimated angle: 303.67 57 Estimated angle: 302.83 58 Estimated angle: 303.63 59 Estimated angle: 302.87 60 Estimated angle: 302.15 61 Estimated angle: 301.47 62 Estimated angle: 300.83 63 Estimated angle: 301.43 64 Estimated angle: 301.99 65 Estimated angle: 301.47 66 Estimated angle: 301.95 67 Estimated angle: 302.95 68 Estimated angle: 303.91 69 Estimated angle: 302.99 70 Estimated angle: 303.87 71 Estimated angle: 303.03 72 Estimated angle: 302.23 73 Estimated angle: 302.99 74 Estimated angle: 302.27 75 Estimated angle: 301.59 76 Estimated angle: 300.95 77 Estimated angle: 301.95 78 Estimated angle: 300.99 79 Estimated angle: 301.91 80 Estimated angle: 302.79 81 Estimated angle: 303.63 82 Estimated angle: 302.83 83 Estimated angle: 302.07 84 Estimated angle: 302.79 85 Estimated angle: 303.47 86 Estimated angle: 304.11 87 Estimated angle: 303.11 88 Estimated angle: 304.07 89 Estimated angle: 303.15 90 Estimated angle: 304.03 91 Estimated angle: 304.87 92 Estimated angle: 304.07 93 Estimated angle: 303.31 94 Estimated angle: 304.03 95 Estimated angle: 304.71 96 Estimated angle: 305.35 97 Estimated angle: 305.91 98 Estimated angle: 305.39 99 Estimated angle: 305.87 100 Estimated angle: 305.43 101 Estimated angle: 305.03 102 Estimated angle: 305.39 103 Estimated angle: 305.07 104 Estimated angle: 304.79 105 Estimated angle: 304.55 106 Estimated angle: 304.35 107 Estimated angle: 303.55 108 Estimated angle: 304.31 109 Estimated angle: 305.03 110 Estimated angle: 305.71 111 Estimated angle: 306.35 112 Estimated angle: 305.75 113 Estimated angle: 306.31 114 Estimated angle: 306.83 115 Estimated angle: 306.35 116 Estimated angle: 305.91 117 Estimated angle: 306.91 118 Estimated angle: 307.87 119 Estimated angle: 306.95 120 Estimated angle: 306.07 121 Estimated angle: 305.23 122 Estimated angle: 304.43
96 Chapter A. History results 123 ... 124 Estimated angle: 306.31 125 Estimated angle: 307.19 126 Estimated angle: 308.03 127 Estimated angle: 308.83 128 Estimated angle: 308.07 129 Estimated angle: 307.35 130 Estimated angle: 308.03 131 Estimated angle: 308.67 132 Estimated angle: 308.07 133 Estimated angle: 307.07 134 Estimated angle: 306.11 135 Estimated angle: 305.19 136 Estimated angle: 306.07 137 Estimated angle: 306.91 138 Estimated angle: 306.11 139 Estimated angle: 305.35 140 Estimated angle: 306.07 141 Estimated angle: 306.75 142 Estimated angle: 306.11 143 Estimated angle: 305.11 144 Estimated angle: 304.15 145 Estimated angle: 303.23 146 Estimated angle: 304.11 147 Estimated angle: 304.95 148 Estimated angle: 305.75 149 Estimated angle: 304.99 150 Estimated angle: 305.71 151 Estimated angle: 306.39 152 Estimated angle: 305.75 153 Estimated angle: 306.75 154 Estimated angle: 305.79 155 Estimated angle: 304.87 156 Estimated angle: 305.75 157 Estimated angle: 306.59 158 Estimated angle: 305.79 159 Estimated angle: 305.03 160 Estimated angle: 304.31 161 Estimated angle: 304.99 162 Estimated angle: 305.63 163 Estimated angle: 306.31 164 Estimated angle: 305.67 165 Estimated angle: 306.27 166 Estimated angle: 306.83 167 Estimated angle: 307.35 168 Estimated angle: 306.87 169 Estimated angle: 307.31 170 Estimated angle: 307.71 171 Estimated angle: 307.35 172 Estimated angle: 307.67 173 Estimated angle: 306.67 174 Estimated angle: 305.71 175 Estimated angle: 304.79 176 Estimated angle: 305.67 177 Estimated angle: 306.51 178 Estimated angle: 307.31 179 Estimated angle: 306.55 180 Estimated angle: 307.27 181 Estimated angle: 306.59 182 Estimated angle: 305.95 183 Estimated angle: 306.95 184 Estimated angle: 305.99 185 Estimated angle: 306.91 186 Estimated angle: 307.79 187 Estimated angle: 306.95 188 Estimated angle: 306.15 189 Estimated angle: 305.39 190 Estimated angle: 304.67 191 Estimated angle: 305.35 192 Estimated angle: 304.71 193 Estimated angle: 305.71
A.7 Results using Only RTL-SDR mode - Carmona Setup 97 194 Estimated angle: 306.67 195 Estimated angle: 305.75 196 Estimated angle: 306.63 Code A.6 Results with real signal - Bearing of 304.59 degrees. A.7 Results using Only RTL-SDR mode - Carmona Setup 1Estimated angle: 238.28 2Estimated angle: 246.28 3Estimated angle: 58.28 4Estimated angle: 32.48 5Estimated angle: 204.48 6Estimated angle: 336.04 7Estimated angle: 66.2 8Estimated angle: 21.4 9Estimated angle: 193.4 10 Estimated angle: 186.0 11 Estimated angle: 178.0 12 Estimated angle: 177.0 13 Estimated angle: 222.0 14 Estimated angle: 230.0 15 Estimated angle: 42.0 16 Estimated angle: 11.4 17 Estimated angle: 3.4 18 Estimated angle: 100.08 19 Estimated angle: 171.32 20 Estimated angle: 170.32 21 Estimated angle: 215.32 22 Estimated angle: 207.32 23 Estimated angle: 199.32 24 Estimated angle: 191.32 25 Estimated angle: 183.32 26 Estimated angle: 355.32 27 Estimated angle: 342.0 28 Estimated angle: 154.0 29 Estimated angle: 128.92 30 Estimated angle: 120.92 Code A.7 Results using Only RTL-SDR mode - Carmona Setup. A.8 Results using Real-time with KF mode - Carmona Setup 1Estimated angle: 69.64 2Estimated angle: 70.53 3Estimated angle: 69.64 4Estimated angle: 70.48 5Estimated angle: 69.64 6Estimated angle: 70.43 7Estimated angle: 69.64 8Estimated angle: 70.38 9Estimated angle: 69.64 10 Estimated angle: 70.33 11 Estimated angle: 69.64 12 Estimated angle: 70.32 13 Estimated angle: 69.64 14 Estimated angle: 70.24 15 Estimated angle: 69.64 16 Estimated angle: 70.55 17 Estimated angle: 69.64 18 Estimated angle: 70.5 19 Estimated angle: 69.64
98 Chapter A. History results 20 Estimated angle: 70.46 21 Estimated angle: 69.64 22 Estimated angle: 70.41 23 Estimated angle: 69.64 24 Estimated angle: 70.36 25 Estimated angle: 69.64 26 Estimated angle: 70.4 27 Estimated angle: 69.64 28 Estimated angle: 70.4 Code A.8 Results using Real-time with KF mode - Carmona Setup. A.9 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 1Estimated angle: 238.28 2Estimated angle: 246.28 3Estimated angle: 254.28 4Estimated angle: 262.28 5Estimated angle: 270.28 6Estimated angle: 278.28 7Estimated angle: 286.28 8Estimated angle: 294.28 9Estimated angle: 302.28 10 Estimated angle: 303.28 11 Estimated angle: 304.24 12 Estimated angle: 305.16 13 Estimated angle: 260.16 14 Estimated angle: 268.16 15 Estimated angle: 276.16 16 Estimated angle: 284.16 17 Estimated angle: 276.16 18 Estimated angle: 268.16 19 Estimated angle: 276.16 20 Estimated angle: 284.16 21 Estimated angle: 292.16 22 Estimated angle: 300.16 23 Estimated angle: 301.16 24 Estimated angle: 302.12 25 Estimated angle: 301.2 26 Estimated angle: 346.2 27 Estimated angle: 347.2 28 Estimated angle: 346.24 29 Estimated angle: 355.32 30 Estimated angle: 347.32 31 Estimated angle: 339.32 32 Estimated angle: 331.32 33 Estimated angle: 330.32 34 Estimated angle: 331.28 35 Estimated angle: 286.28 36 Estimated angle: 294.28 37 Estimated angle: 295.28 38 Estimated angle: 250.28 39 Estimated angle: 258.28 40 Estimated angle: 266.28 41 Estimated angle: 274.28 42 Estimated angle: 282.28 43 Estimated angle: 290.28 44 Estimated angle: 282.28 45 Estimated angle: 274.28 46 Estimated angle: 282.28 47 Estimated angle: 290.28 48 Estimated angle: 298.28 49 Estimated angle: 299.28 50 Estimated angle: 254.28 51 Estimated angle: 262.28
A.9 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 99 52 Estimated angle: 270.28 53 Estimated angle: 278.28 54 Estimated angle: 286.28 55 Estimated angle: 294.28 56 Estimated angle: 295.28 57 Estimated angle: 296.24 58 Estimated angle: 297.16 59 Estimated angle: 298.04 60 Estimated angle: 297.2 61 Estimated angle: 296.4 62 Estimated angle: 297.16 63 Estimated angle: 296.44 64 Estimated angle: 341.44 65 Estimated angle: 333.44 66 Estimated angle: 325.44 67 Estimated angle: 317.44 68 Estimated angle: 316.44 69 Estimated angle: 315.48 70 Estimated angle: 316.4 71 Estimated angle: 315.52 72 Estimated angle: 314.68 73 Estimated angle: 313.88 74 Estimated angle: 314.64 75 Estimated angle: 313.92 76 Estimated angle: 358.92 77 Estimated angle: 350.92 78 Estimated angle: 342.92 79 Estimated angle: 341.92 80 Estimated angle: 359.64 81 Estimated angle: 351.64 82 Estimated angle: 343.64 83 Estimated angle: 335.64 84 Estimated angle: 327.64 85 Estimated angle: 326.64 86 Estimated angle: 11.64 87 Estimated angle: 3.64 88 Estimated angle: 355.64 89 Estimated angle: 347.64 90 Estimated angle: 339.64 91 Estimated angle: 347.64 92 Estimated angle: 339.64 93 Estimated angle: 331.64 94 Estimated angle: 339.64 95 Estimated angle: 331.64 96 Estimated angle: 323.64 97 Estimated angle: 322.64 98 Estimated angle: 321.68 99 Estimated angle: 320.76 100 Estimated angle: 321.64 101 Estimated angle: 322.48 102 Estimated angle: 321.68 103 Estimated angle: 320.92 104 Estimated angle: 320.2 105 Estimated angle: 319.52 106 Estimated angle: 320.52 107 Estimated angle: 319.56 108 Estimated angle: 318.64 109 Estimated angle: 319.52 110 Estimated angle: 320.36 111 Estimated angle: 319.56 112 Estimated angle: 318.8 113 Estimated angle: 318.08 114 Estimated angle: 317.4 115 Estimated angle: 318.04 116 Estimated angle: 319.04 117 Estimated angle: 318.08 118 Estimated angle: 3.08 119 Estimated angle: 355.08 120 Estimated angle: 347.08 121 Estimated angle: 355.08 122 Estimated angle: 347.08
100 Chapter A. History results 123 Estimated angle: 339.08 124 Estimated angle: 331.08 125 Estimated angle: 323.08 126 Estimated angle: 322.08 127 Estimated angle: 323.04 128 Estimated angle: 322.12 Code A.9 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area. A.10 Results with the Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area 1Estimated angle: 238.28 2Estimated angle: 246.28 3Estimated angle: 254.28 4Estimated angle: 262.28 5Estimated angle: 270.28 6Estimated angle: 278.28 7Estimated angle: 286.28 8Estimated angle: 278.28 9Estimated angle: 277.28 10 Estimated angle: 322.28 11 Estimated angle: 314.28 12 Estimated angle: 306.28 13 Estimated angle: 298.28 14 Estimated angle: 306.28 15 Estimated angle: 307.28 16 Estimated angle: 306.32 17 Estimated angle: 305.4 18 Estimated angle: 306.28 19 Estimated angle: 305.44 20 Estimated angle: 304.64 21 Estimated angle: 303.88 22 Estimated angle: 304.6 23 Estimated angle: 259.6 Code A.10 Results with the Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area. A.11 Results with the Real time no KF mode - Point 1 - Setup of the Carmona industrial area 1Estimated angle: 278.09 2Estimated angle: 282.09 3Estimated angle: 286.09 4Estimated angle: 290.09 5Estimated angle: 294.09 6Estimated angle: 298.09 7Estimated angle: 302.09 8Estimated angle: 306.09 9Estimated angle: 306.59 10 Estimated angle: 306.11 11 Estimated angle: 328.61 12 Estimated angle: 324.61 13 Estimated angle: 320.61 14 Estimated angle: 320.11 15 Estimated angle: 338.61 16 Estimated angle: 334.61 17 Estimated angle: 330.61 18 Estimated angle: 326.61 19 Estimated angle: 322.61 20 Estimated angle: 318.61
A.12 Results with the Real time no KF mode - Point 2 - Setup of the Carmona industrial area 101 21 Estimated angle: 318.11 22 Estimated angle: 318.59 23 Estimated angle: 318.13 24 Estimated angle: 317.69 25 Estimated angle: 318.11 26 Estimated angle: 318.51 27 Estimated angle: 318.13 28 Estimated angle: 318.49 29 Estimated angle: 318.83 30 Estimated angle: 318.33 31 Estimated angle: 317.85 32 Estimated angle: 317.39 33 Estimated angle: 317.83 34 Estimated angle: 318.25 35 Estimated angle: 318.65 36 Estimated angle: 319.03 37 Estimated angle: 318.67 38 Estimated angle: 319.01 39 Estimated angle: 319.33 40 Estimated angle: 296.83 41 Estimated angle: 300.83 42 Estimated angle: 304.83 43 Estimated angle: 308.83 44 Estimated angle: 309.33 45 Estimated angle: 308.85 46 Estimated angle: 309.31 47 Estimated angle: 309.75 Code A.11 Results with the Real time no KF mode - Point 1 - Setup of the Carmona industrial area. A.12 Results with the Real time no KF mode - Point 2 - Setup of the Carmona industrial area 1Estimated angle: 271.42 2Estimated angle: 275.42 3Estimated angle: 279.42 4Estimated angle: 283.42 5Estimated angle: 279.42 6Estimated angle: 283.42 7Estimated angle: 287.42 8Estimated angle: 291.42 9Estimated angle: 295.42 10 Estimated angle: 295.92 11 Estimated angle: 296.4 12 Estimated angle: 295.94 13 Estimated angle: 296.38 14 Estimated angle: 296.8 15 Estimated angle: 297.2 16 Estimated angle: 297.58 17 Estimated angle: 297.94 18 Estimated angle: 297.6 19 Estimated angle: 298.1 20 Estimated angle: 297.62 21 Estimated angle: 297.16 22 Estimated angle: 296.72 23 Estimated angle: 297.14 24 Estimated angle: 296.74 25 Estimated angle: 319.24 26 Estimated angle: 315.24 27 Estimated angle: 311.24 28 Estimated angle: 315.24 29 Estimated angle: 311.24 30 Estimated angle: 307.24 31 Estimated angle: 311.24 32 Estimated angle: 315.24 33 Estimated angle: 311.24
108 Chapter A. History results 125 Estimated angle: 317.92 126 Estimated angle: 317.92 127 Estimated angle: 317.92 128 Estimated angle: 317.92 129 Estimated angle: 317.92 130 Estimated angle: 317.92 131 Estimated angle: 317.92 132 Estimated angle: 317.92 133 Estimated angle: 317.92 134 Estimated angle: 317.91 Code A.17 Results with the Real time with KF mode - Point 3 to 1 - Setup of the Carmona industrial area.
List of Figures 2.1 Operating principle of the VOR system [2] 5 2.2 Complete VOR Signal in the Frequency Domain 6 2.3 Radiation Pattern of a CVOR Transmitter 7 2.4 Cardioid Radiation Pattern 8 2.5 CVOR Station 8 2.6 DVOR Station 9 2.7 Block Diagram of the VOR Receiver [23] 10 2.8 Classic VOR Indicator 11 2.9 Horizontal Situation Indicator (HSI) 12 3.1 GPS operating principle [11] 14 3.2 Fundamental structure of GPS Signal [14] 16 3.3 GDOP 17 3.4 Receiver Block Diagram [23] 18 3.5 GPS receiver C/A code generator [23] 19 3.6 GPS Data Bit demodulation and C/A Code Control block diagram [23] 19 3.7 GPS Correlation steps [23] 20 3.8 ARCELI Vk-162 Remote Mount USB GPS 21 4.1 General Process Flow of the Kalman Filter [20] 23 4.2 Kalman Filter Cycle: Prediction and Update Phases [46] 25 5.1 Example of an SDR device 29 5.2 Image of a commercial RTL-SDR device 30 5.3 Image of a commercial HackRF One device 31 5.4 Screenshot of WebSDR usage 31 5.5 Internal structure of the RTL-SDR [27] 32 5.6 RF signal frequency spectrum through an RTL-SDR [27] 33 5.7 Hardware of the RTL-SDR device used 34 5.8 SDR# application interface 35 5.9 CubicSDR application interface 36 6.1 Diagram of the VOR Receiver Model 38 6.2 VOR Signal in Baseband in the Frequency Domain 38 6.3 Bode Diagram - Frequency Response of the LPF Filter - AM Demodulation [9] 39 6.4 Diagram of the VOR Receiver - FM Demodulation Section 40 6.5 Bode Diagram - Frequency Response of the BPF Filter - FM Demodulation [9] 40 6.6 Schematic of the PLL used in FM demodulation 41 6.7 Flowchart of the calculation of Delay and the Estimated Phase 43 6.8 Main tab of the interface 49 6.9 Configuration tab of the interface 50 6.10 History tab of the interface 51 109
110 List of Figures 6.11 Example of ideal signal generated in the time and frequency domain 53 6.12 Results with ideal signal - Bearing of 0 degrees 53 6.13 Results with ideal signal - Bearing of 90 degrees 54 6.14 Results with ideal signal - Bearing from 20 to 50 degrees 54 6.15 Results with ideal signal - Bearing from 100 to 300 degrees 55 6.16 Example of a real signal captured in the time and frequency domain 56 6.17 Results with real signal - Bearing of 311.22 degrees 57 6.18 Results with real signal - Bearing of 304.59 degrees 58 6.19 Effect of the automatic gain adjustment of the RTL-SDR 58 6.20 Example of use for signal verification with SDR# 59 6.21 Example of use for GPS verification with U-center 2 60 6.22 Setup for field testing 60 6.23 Test location and distance to the station - Carmona Setup 61 6.24 Verification of the VOR signal with SDR# - Carmona Setup 61 6.25 Verification of the GPS signal with U-center 2 - Carmona Setup 62 6.26 Graphical verification of the capture location - Carmona Setup 62 6.27 Results using Only GPS mode - Carmona Setup 63 6.28 Results using Only RTL-SDR mode - Carmona Setup 64 6.29 Results using Real-time with KF mode - Carmona Setup 65 6.30 Test location and distance to the station - Setup of the Carmona industrial area 65 6.31 Image of the VOR station from the test location - Setup of the Carmona industrial area 66 6.32 Verification of the VOR signal with SDR# - Setup of the Carmona industrial area 66 6.33 Verification of the GPS signal with U-center 2 and graphical verification - Point 1 - Setup of the Carmona industrial area 67 6.34 Verification of the GPS signal with U-center 2 and graphical verification - Point 2 - Setup of the Carmona industrial area 67 6.35 Verification of the GPS signal with U-center 2 and graphical verification - Point 3 - Setup of the Carmona industrial area 67 6.36 Verification of the GPS signal with U-center 2 and graphical verification - Point 4 - Setup of the Carmona industrial area 68 6.37 Results with the Only GPS mode - Point 1 - Setup of the Carmona industrial area 69 6.38 Results with the Only GPS mode - Point 2 - Setup of the Carmona industrial area 69 6.39 Results with the Only GPS mode - Point 3 - Setup of the Carmona industrial area 70 6.40 Results with the Only GPS mode - Point 4 - Setup of the Carmona industrial area 70 6.41 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 71 6.42 Results with the Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area 72 6.43 Errors and histogram - Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 73 6.44 Errors and histogram - Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area 73 6.45 Results with the Real time no KF mode - Point 1 - Setup of the Carmona industrial area 74 6.46 Results with the Real time no KF mode - Point 2 - Setup of the Carmona industrial area 74 6.47 Errors and histogram - Real time No KF mode - Point 1 - Setup of the Carmona industrial area 75 6.48 Errors and histogram - Real time No KF mode - Point 2 - Setup of the Carmona industrial area 75 6.49 Results with the Real time no KF mode - Points 1 to 4 - Setup of the Carmona industrial area 76 6.50 Results with the Real time with KF mode - Point 1 - Setup of the Carmona industrial area 77 6.51 Results with the Real time with KF mode - Point 2 - Setup of the Carmona industrial area 77 6.52 Errors and histogram - Real time with KF mode - Point 1 - Setup of the Carmona industrial area 78 6.53 Errors and histogram - Real time with KF mode - Point 2 - Setup of the Carmona industrial area 78 6.54 Results with the Real time with KF mode - Point 2 to 3 - Setup of the Carmona industrial area 79 6.55 Results with the Real time with KF mode - Point 3 to 1 - Setup of the Carmona industrial area 79 6.56 Drawing of the obtained trajectory - Point 2 to 3 - Setup of the Carmona industrial area 80 6.57 Drawing of the obtained trajectory - Point 3 to 1 - Setup of the Carmona industrial area 80
List of Tables 2.1 US Standard Service Volumes (SSV) from FAA AIM 4 6.1 Configuration of the AM Demodulation LPF Filter 39 6.2 Configuration of the FM Demodulation Filters 40 6.3 Configuration of the LPF in the PLL 41 6.4 VCO Configuration of the PLL 42 6.5 Bearing with respect to geographic and magnetic north - Setup of the Carmona industrial area 68 6.6 Mean error and maximum deviation - Only RTL-SDR mode - Setup of the Carmona industrial area 72 6.7 Mean error and maximum deviation - Real time No KF mode - Setup of the Carmona industrial area 75 6.8 Mean error and maximum deviation - Real time with KF mode - Setup of the Carmona industrial area 78 6.9 Summary of results by mode and point - Setup of the Carmona industrial area 81 111
List of Codes 5.1 Example of VOR signal capturing 35 5.2 Example of using SDR in Python 36 6.1 Code for processing the GPS data in Python 44 6.2 Bearing calculation with coordinates in Python 45 A.1 Results with ideal signal - Bearing of 0 degrees 85 A.2 Results with ideal signal - Bearing of 90 degrees 86 A.3 Results with ideal signal - Bearing from 20 to 50 degrees 87 A.4 Results with ideal signal - Bearing from 100 to 300 degrees 88 A.5 Results with real signal - Bearing of 311.22 degrees 90 A.6 Results with real signal - Bearing of 304.59 degrees 94 A.7 Results using Only RTL-SDR mode - Carmona Setup 97 A.8 Results using Real-time with KF mode - Carmona Setup 97 A.9 Results with the Only RTL-SDR mode - Point 1 - Setup of the Carmona industrial area 98 A.10 Results with the Only RTL-SDR mode - Point 2 - Setup of the Carmona industrial area 100 A.11 Results with the Real time no KF mode - Point 1 - Setup of the Carmona industrial area 100 A.12 Results with the Real time no KF mode - Point 2 - Setup of the Carmona industrial area 101 A.13 Results with the Real time no KF mode - Points 1 to 4 - Setup of the Carmona industrial area 102 A.14 Results with the Real time with KF mode - Point 1 - Setup of the Carmona industrial area 104 A.15 Results with the Real time with KF mode - Point 2 - Setup of the Carmona industrial area 105 A.16 Results with the Real time with KF mode - Point 2 to 3 - Setup of the Carmona industrial area 105 A.17 Results with the Real time with KF mode - Point 3 to 1 - Setup of the Carmona industrial area 106 113
Bibliography [1] ARCELI Vk-162 Remote Mount USB GPS - Amazon.url:https:// www.amazon.es/ ARCELI-Vk-162- Remote-Mount-USB/ dp/ B07MY2VD3H. [2] Lenard Banks. VOR Navigation brent crow. 2015th ed. 2015. [3] Butterworth filter - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Butterworth_filter. [4] Calculate distance, bearing and more between Latitude/Longitude points - Movable Type Scripts.url: https:// www.movable-type.co.uk/ scripts/ latlong.html. [5] CFI Brief: VOR Service Volume. 2015. url:http:// learntoflyblog.com/ 2015/ 03/ 12/ cfi-brief-vor- service-volumes/ . [6] Cross-correlation - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Cross-correlation. [7] EUROPEAN and NORTH ATLANTIC OFFICE. EUR FREQUENCY MANAGEMENT MANUAL for Aeronautical Mobile and Aeronautical Radio Navigation Services. 2021st ed. EUR Doc 011, 2013. [8] Federal Aviation Administration. Aeronautical Information Manual. 1st ed. FAA, 2014. url:https: // www.faa.gov. [9] Tutor: Joaquín Granado Romero Francisco Castro Castro. TFG - Procesado y análisis de señales de navegación VOR. 1st ed. Universidad de Sevilla, 2022. [10] Global Positioning System - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Global_Positioning_ System. [11] GNSS Positioning Principles - Dealmoon. 2024. url:https:// www.dealmoon.com/ guide/ 978435. [12] Javier Rivero González. Design of DDS: Digital Direct Synthesizers. 1st ed. 2013. [13] Graphical User Interfaces with Tk - Docs Python.url:https:// docs.python.org/ 3/ library/ tk.html. [14] Arif Hussain et al. “The Effects of Using Variable Lengths for Degraded Signal Acquisition in GPS Receivers”. In: International Journal of Electrical and Computer Engineering 11 (Jan. 2021). doi: 10.11591/ ijece.v11i4.pp%25p. [15] Instrument landing system - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Instrument_landing_ system. [16] Francisco Rafael Gavilán Jimenez. Notes on Fundamentals of Air Navigation. Year 2019/2020. 2020. [17] Tutor: Joaquín Granado Romero Jonathan Majada Costas. TFG - Caracterización de dispositivos RTL-SDR para medida de señales aeronáuticas. 1st ed. Universidad de Sevilla, 2020. [18] Kalman Filter - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Kalman_filter. [19] Lissajous curve - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Lissajous_curve. [20] Vijayaraja Loganathan et al. “Development of a Compact IoT-Enabled Device to Monitor Air Pollution for Environmental Sustainability”. In: Engineering Proceedings 58.1 (2023). issn: 2673-4591. doi: 10.3390/ ecsa-10-15996.url:https:// www.mdpi.com/ 2673-4591/ 58/ 1/ 18. [21] Paul Lutus. arachnoid - Software-Defined Radios. 2019. url:https:// arachnoid.com/ software_ defined_radios/ . 115
116 Bibliography [22] Instituto Geográfico Nacional. Calculation of magnetic declination on the Peninsula and Balearic Islands.url:https:// www.ign.es/ web/ gmt-declinacion-magnetica. [23] Dr. Francisco Rogelio Palomo Pinto. Navigational Aids System Notes. Year 2021/2022. 2021. [24] PLL - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Phase-locked_loop. [25] Software-defined radio - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ Software-defined_radio. [26] M B Sruthi et al. “Low cost digital transceiver design for Software Defined Radio using RTL-SDR”. In: 2013 International Mutli-Conference on Automation, Computing, Communication, Control and Compressed Sensing (iMac4s). 2013, pp. 852–855. doi:10.1109/ iMac4s.2013.6526525. [27] Robert W Stewart et al. Software defined radio using MATLAB & Simulink and the RTL-SDR. 2015. [28] Dr. Rafael Vázquez Valenzuela. Spacecraft Dynamics Notes. Year 2022/2023. 2023. [29] VHF omnidirectional range - Wikipedia. 2024. url:https : / / en . wikipedia . org / wiki / VHF _ omnidirectional_range. [30] Web Airspy - SDRSharp.url:https:// airspy.com/ quickstart/ . [31] Web Auto PY to EXE.url:https:// pypi.org/ project/ auto-py-to-exe/ . [32] Web CubicSDR - What is CubicSDR? url:https:// cubicsdr.com/ ?page_id=70. [33] Web Ettus Research - USRP Bus.url:https:// www.ettus.com/ product-categories/ usrp-bus-series/ . [34] Web HackRF One - HackRF documentation.url:https:// hackrf.readthedocs.io/ en/ latest/ hackrf_one. html. [35] Web KiwiSDR.url:http:// kiwisdr.com. [36] Web Nooelec - NESDR Series.url:https:// support.nooelec.com/ hc/ en-us/ articles/ 360005805834- NESDR-Series. [37] Web Noolec - YARD Stick One.url:https:// www.nooelec.com/ store/ yard-stick-one-bundle.html. [38] Web pykalman - Pykalman’s documentation.url:https:// pykalman.github.io. [39] Web pyrtlsdr - pyrtlsdr’s documentation.url:https:// pyrtlsdr.readthedocs.io/ en/ latest/ . [40] Web RTL-SDR - About RTL-SDR.url:https:// www.rtl-sdr.com/ about-rtl-sdr/ . [41] Web RTL-SDR - Chip R82T2.url:https:// www.rtl-sdr.com/ rtl-sdr-blog-v4-dongle-initial-release/ . [42] Web SDRplay - Products.url:https:// www.sdrplay.com/ products/ . [43] Web Ubertooth One.url:https:// greatscottgadgets.com/ ubertoothone/ . [44] Web WebSDR.url:http:// websdr.org. [45] World Geodetic System - Wikipedia. 2024. url:https:// en.wikipedia.org/ wiki/ World_Geodetic_ System#WGS84. [46] Zhihao yu, Ruituo Huai, and Linjing Xiao. “State-of-Charge Estimation for Lithium-Ion Batteries Using a Kalman Filter Based on Local Linearization”. In: Energies 8 (July 2015), pp. 7854–7873. doi: 10.3390/ en8087854.