This is a software correlator for GPS. Our primary reference for FFT-based correlation was Andrew Holme's homebrew GPS receiver documentation, which we highly recommend for background.
This project is currently the focus of the 2017 ECE capstone team. The Python prototype developed will be used in conjunction with the data generator to develop revised hardware, and higher performance algorithms. Once the hardware and software perform adequately, they will be implemented into launch hardware for the rocket and OreSat.
- Python Protoype
- Generate C/A Codes
- Acquire satellite
- Acquire satellites with Doppler shifts
- Acquire all satellites in launch data
- Lock on to plain carrier signal
- Lock on to plain code signal
- Lock on to plain carrier + code signal
- Lock on to generated GPS satellite data
- Lock on to satellite signal from launch data
- Interpret almanac data
- Use TOW to calculate coarse location
- Get precise location using code phase
- Track position changes (velocity)
- Kalman filter PVT data
To learn more about the theory about how GPS and the software works, you can browse the Jupyter notebooks located in the /notebooks folder.
These are books about GPS theory that we found helpful while working on the code:
A Software-Defined GPS and Galileo Receiver: A Single-Frequency Approach by Borre, Akos et.al.: We used this book very extensively since their implementation is similar to what we are trying to do. The book comes with a DVD containing a (GPL Licensed) MATLAB receiver, and one may notice that our code is very similar in some spots to the MATLAB code.
Understanding GPS: Principles and Applications by Kaplan: This book is probably the most approachable to someone who is unfamiliar with GPS. This is our recommended starting point.
Fundamentals of Global Positioning System Receivers: A Software Approach by Tsui: An extremely helpful book that discusses software implementations of GPS receivers. Both this and Borre complement one another with their own perspectives and approaches.
Global Positioning System: Signals, Measurements, and Performance by Misra, Enge: A (physically) large book that covers a lot of material.
Global Positioning System: Theory and Applications Volume II by Parkinson, Spiker: Does not cover GPS receiver, but has many interesting applications of GPS receiver technology to different problems, including differential GPS, orbit determination, attitude determination, and several more. Very interesting if one has a custom GPS receiver available.
Also do not forget Andrew Holme's homebrew GPS receiver documentation linked above.