# Adaptive Navigation Based on Multi-Agent Received Signal Quality Monitoring Algorithm
## 3 Methodology
### RSQM Model Design and Implementation  
The GNSS receiver initiates the process by acquiring and processing the satellite signal. This involves filtering out interference and amplifying the weak satellite signal. If enough satellites are being tracked (no. of satellites (SV) > 7), the process proceeds to the next step. If not, it likely indicates limited satellite visibility due to factors like obstructions or challenging environments (urban areas), and it attempts to reacquire the signals. Once a signal is acquired and tracked, a fuzzy inference system is employed to assess the overall quality of the GNSS signal based on the extracted parameters (CCD, CNR, and RR). Fuzzy logic can handle uncertainties and incorporate human-like reasoning, making it suitable for tasks where precise signal quality thresholds might be difficult to define. The complete flow chart is shown in Figure 6.  
The fuzzy inference system likely requires initialization, which involves quality testing based on the processed GNSS signal and the established criteria. Based on the fuzzy inference system's output, the signal quality is categorized as either LOS or NLOS. An LOS signal suggests a direct path between the GNSS receiver and the satellite. If the signal is classified as LOS, the process proceeds to calculate the position and velocity of the GNSS receiver using standard GNSS positioning techniques, while NLOS indicates that the signal has bounced off obstacles before reaching the receiver, potentially affecting accuracy. The classification process of the fuzzy inference system is illustrated in Figure 7. Figure 7 depicts a fuzzy inference system (FIS) designed to evaluate the quality of GNSS signals. Fuzzy logic offers a framework for evaluating GNSS signal quality, which can be inherently imprecise due to factors like signal strength variations and environmental conditions. The input variables are then converted from a numerical value into a fuzzy degree of membership in various fuzzy sets. These fuzzy sets represent linguistic terms like \"Low,\" \"Medium,\" or \"High\" for CNR or RR, and \"Fast,\" \"Medium,\" or \"Slow\" for CCD. The membership functions define the degree of membership for each input value within these fuzzy sets. After that, membership functions are determined through trapezoidal and triangular functions based on the Mamdani method [41] and fed to knowledge base, which consists of a set of fuzzy IF-THEN rules that relate the input fuzzy sets to an output fuzzy set representing the GNSS signal quality. For instance, a rule might be \"IF CCD is Low AND CNR is High AND RR is low, THEN Signal Quality is High\". The specific rules and their weightage determine how the system interprets the combination of input signals. All the fuzzy rules are aggregated to determine the overall fuzzy output representing the GNSS signal quality. The aggregated fuzzy output as a quality factor is converted back into a numerical value (e.g., a quality factor between 0 and 1), which represents the inferred GNSS signal quality. This value can be used for the classification of LOS/NLOS (Lineof-Sight/Non-Line-of-Sight). Overall, the fuzzy inference system provides a flexible and robust approach to GNSS signal quality assessment. It can handle uncertainties in the input measurements and incorporate expert knowledge through the fuzzy rules, ultimately contributing to improved positioning accuracy in dynamic environments. Figure 8a-c show the membership functions for the input variables that represent GNSS signal quality metrics. These functions determine the degree to which an input value belongs to fuzzy sets like \"low,\" \"medium,\" or \"high\". Figure 8d depicts the membership functions for the output variable, quality factor (QF). The five triangles are employed for quality factor (QF), with overlapping regions between adjacent triangles. These overlaps are the key characteristic of fuzzy logic, allowing for smooth transitions between fuzzy sets.