GNSS Positioning Engine (C++)
Portfolio Project — Building navigation software from scratch in modern C++17
GNSS Positioning Engine (C++)
Portfolio Project — Building navigation software from scratch in modern C++17
24-hour trajectory analysis on real BILL00USA IGS reference station data — Jan 7, 2024
I am building a from-scratch GNSS positioning engine in modern C++17 as part of a self-directed 27-week curriculum designed to transition me from academic geodesy research into navigation engineering roles in industry. The engine takes raw RINEX navigation and observation files, computes satellite positions from broadcast ephemerides, applies atmospheric and clock corrections, and produces receiver positions using iterative weighted least-squares. All code is written from first principles, validated against real IGS reference stations, and organized as a professional repository with header/source separation, CMake build system, and Git version control. Repository: github.com/HadiHShali/gnss-positioning-engine
Full standalone Single Point Positioning (SPP) processor now operates on 24 hours of real IGS reference station data:
• 5,760 epochs processed at 15-second intervals
• 95% convergence rate • ~30-40 m single-epoch 3D accuracy (typical for single-frequency SPP)
• Mean PDOP 1.98 (elite geometry)
• End-to-end pipeline from raw RINEX to trajectory CSV
• RINEX 3 NAV and OBS file parsing (multi-GNSS ready)
• GPS satellite position computation from broadcast ephemerides (IS-GPS-200 Keplerian orbit model)
• Full satellite clock correction: – Polynomial (bias + drift + drift rate) – Relativistic (Kepler-based) – TGD (Timing Group Delay)
• Earth rotation correction during signal travel (Sagnac effect)
• Elevation masking with configurable threshold (default 10°) • Ionospheric delay model: Klobuchar 8-parameter (IS-GPS-200)
• Tropospheric delay model: Saastamoinen with standard atmosphere
• Weighted iterative least-squares solver (Eigen)
• Five DOP quality metrics: GDOP, PDOP, HDOP, VDOP, TDOP • Multi-epoch processor with trajectory CSV output
• Python analysis pipeline for portfolio-quality visualization
Engineering diagnostics — PDOP distribution, temporal patterns, solver calibration, and measurement redundancy
Month 3 — Kalman-Based GPS Positioning
8-state Kalman filter (position + velocity + clock bias + clock drift)
RTS smoother for post-processing
NEES/NIS consistency validation
Target: 5–15 m filtered accuracy
Month 4 — GNSS/INS Sensor Fusion
15-state error-state Extended Kalman Filter
Strapdown IMU mechanization
Loose and tight coupling architectures
Month 5 — LEO Spacecraft Orbit Determination
J2 gravity + atmospheric drag + solar radiation pressure
Batch least-squares and EKF orbit estimators
Month 6 — ROS 2 Integration
Real-time positioning pipelines
Standard robotics interface