This project implements a Non-Line-of-Sight (NLOS) detector for Global Navigation Satellite System (GNSS) signals. The detector helps identify when satellite signals are being received through reflections or obstructions rather than directly, which can significantly improve positioning accuracy in challenging environments like urban canyons.
-Learning signal characteristics: SNR, Elevation Angle, Azimuth Angle, Satellite Constellation.
-Synthetic Dataset: Simulates urban, suburban, and open-sky environments with realistic GPS signal patterns.
-Machine Learning to detect NLOS: Real-time NLOS detection using machine learning algorithms.
-Support for multiple GNSS constellations: GPS, GALILEO, GLONASS, BeiDou.
-Signal quality analysis and visualization tools
-Performance metrics for detection accuracy
- Python 3.7+
- Libraries:
numpy,pandas,scikit-learn,matplotlib,seaborn,scipy,graphviz
Install dependencies via pip:
pip install numpy pandas scikit-learn matplotlib seaborn scipy graphviz1. Generate Synthetic Dataset (Exercise 0):
python3 GenDataset.pyRun GenDataset.py to generate synthetic data. You can see over 1000 samples in the gps_nlos_dataset.csv file.
Data Exploration (Exercise 1): Visualize feature distributions, correlations, and class imbalances using pair plots, histograms, and heatmaps.
Preprocess data (one-hot encoding, train-test split, scaling).
Model Implementation (Exercise 2-5):
Exercise 2: Implement Linear Regression Model
Train and evaluate models:
python3 LinearRegress.pyImplement linear regression model for NLOS classification, evaluate the model's performanceusing mses, r2 scores, accuracy and confusion matrix. The coefficients of the linear regression model can be used to understand how each feature contributes to NLOS classification. They are analyzed and visualized in the end.
Exercise 3: Implement Logistic Regression Model
python3 LogisticReg.pyImplement Logistic regression model for NLOS classification, evaluate the model's performanceusing mses, r2 scores, accuracy and confusion matrix. The coefficients of the linear regression model can be used to understand how each feature contributes to NLOS classification. They are analyzed and visualized in the end.
Exercise 4: Implement Decision Tree
python3 DecisionTree.pyImplement Decision tree for NLOS classification, evaluate the model's performanceusing mses, r2 scores, accuracy and confusion matrix. The coefficients of the linear regression model can be used to understand how each feature contributes to NLOS classification. They are analyzed and visualized in the end.

Exercise 5: Implement SVM (Support Vector Machines) & Exercise 6: Model Comparision and Real-World Application
python3 Comparison.pyImplement SVM classifier for NLOS detection. Explore the different kernel functions and evaluate performance of SVM kernels. In the end, tune the hyperparameters.



























